### GoldenGate 12 for Oracle 11g 测试知识点详解
#### 一、环境准备与配置
**1. 用户配置文档编辑**
- **命令行操作**:`[oracle@enmo ~]$ vi .bash_profile`
- 这一步是通过`vi`编辑器来编辑用户的`.bash_profile`文件,目的是为了配置Oracle GoldenGate相关的环境变量。
**2. 创建GoldenGate安装目录**
- **命令行操作**:`[oracle@enmo u01]$ mkdir ogg12`
- 此步骤是创建一个名为`ogg12`的目录用于安装GoldenGate软件。`u01`通常代表的是一个挂载点,用于存储大型应用或数据,以避免占用根目录的空间。
**3. 安装软件**
- **命令行操作**:`./runInstaller`
- 使用`runInstaller`脚本来安装GoldenGate。这是一个典型的Oracle产品安装过程,可能涉及到多个步骤,包括许可协议接受、安装路径选择等。
**4. GGSCI 配置**
- **简介**:GGSCI (GoldenGate Shell Command Interpreter) 是GoldenGate提供的命令行工具,用于管理GoldenGate环境。
- **操作**:
- 创建用户空间,分配用户权限
- 例如:`create user space USER_SPACE_1 directory '/u01/oracle/gg/USER_SPACE_1'`
- 开启辅助日志
- 例如:`ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;`
- 配置Manager服务端口
- 例如:`manager start port=7809`
#### 二、GoldenGate 数据捕获与复制
**1. 源端配置**
- **Extract 进程配置**
- `EXTRACT`进程负责捕捉源数据库的事务变化。
- 配置示例:
```plaintext
EXTRACT ext1,
BEGIN AT TIMESTAMPTO_DATE('20230501000000', 'YYYYMMDDHH24MISS'),
SQL*PLUS "LOGMNR(DBA, 'LOGMNR_SCHEMA')",
TRANDATA,
WHEN COMMITTED;
```
- 注释:`sourceIsTable` 表示直接从源表捕获数据并传输到目标表。
- 在11g R2及以上版本中,需要设置`enable_goldengate_replication`参数为`true`以支持GoldenGate复制功能。
**2. 目标端配置**
- **Replicat 进程配置**
- `REPLICAT`进程负责将捕获的数据应用于目标数据库。
- 配置示例:
```plaintext
REPLICAT rpl1,
SOURCEFILE ('/u01/oracle/gg/USER_SPACE_1'),
TTR,
ASSUMETARGETDEFS,
DISCARDFILE '/u01/oracle/gg/discard.rin',
WHEN UNTIL COMMITTED;
```
- 注释:`ASSUMETARGETDEFS` 假设源端和目标端表结构完全一致,如果不同则使用`sourcedefs`和`targetdefs`。
**3. 实时数据复制配置**
- **Pump 进程配置**
- `PUMP`进程负责将本地捕获的文件复制到远程目标端。
- 示例:`PUMP pump1, SOURCEFILE ('/u01/oracle/gg/USER_SPACE_1'), REMOTEHOST ('target_host'), REMOTEPORT (7809);`
- **EINIPP 参数配置**
- `EINIPP` 参数用于指定在数据复制过程中是否检查表定义的一致性。
- 示例:`EINIPP PASSTHRU` 表示不检查表定义一致性,适用于表结构相同的场景。
**4. 其他配置**
- **Handle Collisions 设置**
- 该设置允许`REPLICAT`进程在遇到数据完整性问题时继续处理数据。
- 示例:`HANDLECOLLISIONS INSERT UPDATE DELETE`
#### 三、验证与维护
**1. 数据验证**
- **源端插入数据,目标端查看**
- 插入数据到源端数据库后,在目标端数据库中查看是否正确复制了数据。
- 示例:`SELECT * FROM test_table;`
**2. DDL 同步**
- **DDL 同步配置**
- 配置用户权限和全局参数,确保DDL语句也能被正确复制。
- 示例:`ALTER SESSION SET CURRENT_SCHEMA = gguser;`
- 执行安装脚本:
```plaintext
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
@ddl_enable.sql
```
- 修改相关参数文件,重新启动`EXTRACT`和`REPLICAT`进程。
#### 四、总结
本文详细介绍了如何使用GoldenGate 12 for Oracle 11g进行数据捕获、复制以及验证的过程。从环境配置到数据复制的具体操作,再到DDL同步的实现,每一个环节都至关重要。通过这些步骤,我们可以实现实时的数据复制和同步,这对于提高数据可用性和构建高可用架构具有重要意义。