首页 > 数据库 > Oracle > Goldengate容灾系统实施方案
|
2. Goldengate容灾系统实施方案 如果goldengate安装在unix或者linux操作系统下,则建议以oracle系统用户进行安装。如果使用其他用户进行安装,则需要确保该用户在dba组中,以确保该用户具备读取redo和归档日志的系统权限; 注: 1) Goldengate软件建议安装在服务器Server的/goldengate路径下,该目录的属主为oracle:dba,权限为775; 2)/goldengate目录一般是建立在共享存储上,这样实际上goldengate的软件和相应的文件如参数文件,队列文件等都是在共享存储上的。这样做的好处是,例如在RAC环境下,如果一台服务区宕机,则可以将/goldengate mount到另外一个正常的rac节点上,启动goldengate各个进程就可以了,不需要做任何其他的动作。 2.1. GG软件的安装 1) 使用Oracle用户(如非此用户,请自行取代,下同)通过ftp上传GGS软件并解压缩: tar zxvf *.gz 或者分两步解压: gunzip *.gz 或 gzip –d *.gz tar xvf *.gz 2) 创建子目录 在数据库服务器上创建文件系统:/goldengate(小写), GoldenGate安装目录统一为:/goldengate(小写) 3) 队列文件存放目录为/goldengate/dirdat 4) 在/goldengate目录下运行GGS命令行控制界面: ./ggsci 5) 在GGS命令行界面下创建子目录: GGSCI> create subdirs 2.2. 容灾中心GG软件安装 1) 使用Oracle用户(如非此用户,请自行取代,下同)通过ftp上传GGS软件并解压缩: tar zxvf *.gz 或者分两步解压: gunzip *.gz 或 gzip –d *.gz tar xvf *.gz 2) 创建子目录 在数据库服务器上创建文件系统:/goldengate(小写), GoldenGate安装目录统一为:/goldengate(小写) 3) 队列文件存放目录为/goldengate/dirdat 4) 在/goldengate目录下运行GGS命令行控制界面: ./ggsci 5) 在GGS命令行界面下创建子目录: GGSCI> create subdirs 2.3. 源端配置 2.3.1. 设置数据库为归档模式 数据库是否处于归档模式: Select log_mode from v$database; 开启归档模式: shutdown immediate; startup mount; alter database archivelog; alter database open; 2.3.2. 开启数据库附加日志 2.3.2.1. 检查附加日志情况 使用以下sql语句检查数据库附加日志的打开状况: Select SUPPLEMENTAL_LOG_DATA_MIN ,SUPPLEMENTAL_LOG_DATA_PK ,SUPPLEMENTAL_LOG_DATA_UI ,SUPPLEMENTAL_LOG_DATA_FK ,SUPPLEMENTAL_LOG_DATA_ALL from v$database; 2.3.2.2. 打开数据库附加日志 打开附加日志并切换日志(保证Online redo log和Archive log一致) alter database add supplemental log data ; alter database add supplemental log data (primary key, unique,foreign key) columns; alter system switch logfile; 回退操作:如果出现问题,可以通过以下语句进行回退: alter database drop supplemental log data ; alter database drop supplemental log data (primary key, unique,foreign key) columns; 2.3.2.3. 确认附加日志情况 使用以下sql语句检查数据库附加日志的打开状况: Select SUPPLEMENTAL_LOG_DATA_MIN ,SUPPLEMENTAL_LOG_DATA_PK ,SUPPLEMENTAL_LOG_DATA_UI ,SUPPLEMENTAL_LOG_DATA_FK ,SUPPLEMENTAL_LOG_DATA_ALL from v$database; 注:确保最小附加日志,pk,uk,fk附加日志打开。而all columns的附加日志关闭; 如果all columns的附加日志打开的话,则需要使用以下语句予以关闭: alter database drop supplemental log data (ALL) columns; 2.3.3. 开启数据库强制日志模式 Alter database force logging 注:该模式的打开需要和业务部门进行相关确认和讨论;如果数据库不能打开到force logging的模式下,则no logging的表无法进行同步; 如果需要进行回退,关闭强制日志模式,请使用以下sql: Alter database no force logging 2.3.4. 创建运行GoldenGate的用户 1) 在源端采用ORACLE用户运行GoldenGate 2) 安装位置:/goldengate 3) 创建GoldenGate数据库用户goldengate --create tablespace create tablespace goldengate datafile '/xx/goldengate01.dbf' size 10240M ; -- Create the user create user goldengate identified by "XXXXX" default tablespace goldengate; -- Grant role privileges grant resource, connect, dba to goldengate; 2.3.5. 关闭数据库的recyclebin (仅实施DDL时进行配置) 查询当前recyclebin的参数值: SQL> show parameter recyclebin NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ recyclebin string OFF SQL> 如不是off,需要关闭recyclebin: SQL>alter system set recyclebin=off scope=both; 如果需要回退,打开recyclebin的话,可以使用以下语句: SQL>alter system set recyclebin=off scope=both; 2.3.6. 添加变量(以linux操作系统为例) export GG_HOME=/goldengate export LD_LIBRARY_PATH=$ORACLE_HOME/lib 以下为一些不同操作系统,对LIBRARY path 环境变量的不同名称: IBM AIX LIBPATH IBM z/OS LIBPATH HP-UX SHLIB_PATH Sun Solaris LD_LIBRARY_PATH HP Tru64 (OSF/1) LD_LIBRARY_PATH LINUX LD_LIBRARY_PATH 2.3.7. 编辑GLOBALS参数文件 这里直接建立在goldengate用户下: Ggsci>EDIT PARAMS ./GLOBALS --在该文件中添加以下内容 GGSCHEMA goldengate --指定的进行DDL复制的数据库用户 2.3.11. 停止数据库的所有Session OGG的DDL对象安装时不能有运行的sessoin存在,请DBA执行停机清理或者杀死所有数据库中的Session。 建议有条件先执行停止业务,并关闭Oracle的Listener。 注:时间大约需要30分钟左右,在这段时间内,需要完成2.3.12与2.3.13两个小节的所有操作步骤。此后的所有步骤,都可以在业务正常运行时进行操作。 2.3.12. 建立OGG的DDL对象 sqlplus "/ as sysdba" SQL> @marker_setup.sql Enter GoldenGate schema name:goldengate SQL> @ddl_setup.sql Enter GoldenGate schema name:goldengate SQL> @role_setup.sql Grant this role to each user assigned to the Extract, Replicat, GGSCI, and Manager processes, by using the following SQL command: GRANT GGS_GGSUSER_ROLE TO where 注意这里的提示:需要手工将这个GGS_GGSUSER_ROLE指定给extract所使用的数据库用户(即参数文件里面通过userid指定的用户),可以到sqlplus下执行类似的sql: GRANT GGS_GGSUSER_ROLE TO goldengate; 注:这里的goldengate是extract使用的用户。如果你有多个extract,使用不同的数据库用户,则需要重述以上过程全部赋予GGS_GGSUSER_ROLE权限。 运行以下脚本,使触发器生效 SQL> @ ddl_enable.sql 2.3.13. 安装提升性能工具 本步骤为可选步骤,一般情况下建议运行该步骤。 为了提供OGG的DDL复制的性能,可以将ddl_pin脚本加入到数据库启动的脚本后面,该脚本需要带一个OGG的DDL用户(即安装DDL对象的用户,本例中是goldengate)的参数: SQL> @ddl_pin 注:如果因为业务问题,开启DDL以后,对性能的影响比较大的话,需要临时禁用DDL触发器的话,可以运行以下语句: SQL> @ ddl_disable.sql 2.3.14. 添加抽取/传输进程与队列文件 根据事先规划好的进程个数、进程名称,执行以下命令,添加相应的进程和队列文件: GGSCI>add ext extxx,tranlog ,begin now GGSCI>add exttrail ./dirdat/xx,ext extxx,megabytes 200 GGSCI>add ext dpexx,exttrailsource ./dirdat/xx GGSCI>add rmttrail ./dirdat/xx,ext dpeea,megabytes 200 2.4. 数据初始化 2.4.1. RMAN初始化方案 本方案在初始化过程中,不需要源数据库停机。 步骤如下: 生产端=============================================== 1) 源端和目标端安装OGG软件,并启动manager 2) 源端配置OGG的Extract及DataPump 3) 源端启动Extract进程,并且人工记录抽取进程启动的时间点,例如:“2011-05-03 11:20:55” ,将此时间点作为在下一步中查找长事务的一个判断条件;可以在数据库中查询该时间点:”select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual” 4) 长事务处理:在V$TRANSACTION中查找当前正在运行的事务(RAC环境下,查看gv$transaction),并找出相应的长事务。在执行rman备份之前,确保这些长事务已经完成,或者被kill掉(需要得到dba或者相关管理人员的确认)。 Select start_time from gv$transaction where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss') 5) 使用oracle用户登录,执行rman备份 --备份数据库: $rman target / Rman> run { ALLOCATE CHANNEL ch00 TYPE DISK MAXPIECESIZE 20G; ALLOCATE CHANNEL ch01 TYPE DISK MAXPIECESIZE 20G; CROSSCHECK BACKUPSET; DELETE NOPROMPT EXPIRED BACKUPSET; sql 'alter system archive log current'; BACKUP AS BACKUPSET SKIP INACCESSIBLE; TAG hot_db_bk_level0 FORMAT '/bakdir/data/bk_%s_%p_%t'; FULL DATABASE; RELEASE CHANNEL ch00; RELEASE CHANNEL ch01; } --备份归档和控制文件:(如果有三个日志文件组,可以按照以下方式进行切换,如果更多,则对应增加切换的次数即可); run { ALLOCATE CHANNEL ch00 TYPE DISK MAXPIECESIZE 20G; ALLOCATE CHANNEL ch01 TYPE DISK MAXPIECESIZE 20G; sql 'alter system switch logfile'; sql 'alter system switch logfile'; sql 'alter system switch logfile'; sql 'alter system archive log current'; BACKUP ARCHIVELOG ALL FORMAT '/bakdir/data /ARCH_%U'; BACKUP CURRENT CONTROLFILE FORMAT /bakdir/data /bk_controlfile'; RELEASE CHANNEL ch00; RELEASE CHANNEL ch01; } 在源机执行 SQL>set line 200 SQL>select * from Gv$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 23 104857600 1 NO CURRENT 218512 01-DEC-10 2 1 22 104857600 1 YES ACTIVE 218422 01-DEC-10 3 2 17 104857600 1 NO CURRENT 218503 01-DEC-10 4 2 16 104857600 1 YES INACTIVE 218412 01-DEC-10 (*) 获取不活动的已归档日志的最后一个SCN号,如果有多个已归档的INACTIVE的组,取最大的FIRST_CHANGE#,这里取218412 记录该SCN号(在“第10歩”目标端恢复数据库时使用),将备份文件,FTP到目标机 ======================================== hpux2:/u01/oracle$ ftp 192.168.1.27 Connected to 192.168.1.27. 220 hpux_dr FTP server (Revision 4.0 Version wuftpd-2.6.1 Wed Jun 18 07:11:14 GMT 2008) ready. Name (192.168.1.27:oracle): oracle 331 Password required for oracle. Password: 230 User oracle logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /u01/oracle/rmanbk 250 CWD command successful. ftp> lcd /u01/oracle/rmanbk Local directory now /u01/oracle/rmanbk ftp> bin 200 Type set to I. ftp> prompt Interactive mode off. ftp> mput hp* 容灾端=============================================== 6) 使用oracle用户登录目标机执行恢复 ? 在目标机建立相同的目录结构,并正确设置:ORACLE_BASE,ORACLE_HOME,ORACLE_SID环境变量。 ? 拷贝源机init{ORACLE_SID}.ora文件到目标机 ? cp $ORACLE_HOME/dbs/initorcl.ora 目标机对应目录 ? 生成口令文件或者copy $ORACLE_HOME/dbs/PWD{ORACLE_SID} 7) 启动数据库到nomount状态 sqlplus '/ as sysdba' SQL>startup nomount 8) 启动RMAN恢复控制文件 rman target / RMAN>restore controlfile from '/u01/oracle/rmanbk/hpdb_ctlfile_757366280381.dbf'; 9) 将数据库更改为mount状态 sqlplus '/ as sysdba' SQL>alter database mount; 10) 启动RMAN恢复数据库 rman target / RMAN>restore database; RMAN> run { set archivelog destination to '/u01/arch'; SET UNTIL SCN 218412; --在第5歩源端记录下的scn号 RECOVER DATABASE; } 11) 使用以下SQL语句查找目标端数据库的SCN号:(得到该SCN号之后,在2.5.8章节中启动复制进程时,使用该SCN号。) SQL> SELECT CHECKPOINT_CHANGE#,CHECKPOINT_TIME FROM V$DATAFILE_HEADER; CHECKPOINT_CHANGE# CHECKPOIN ------------------ --------- 218412 28-MAY-11 218412 28-MAY-11 218412 28-MAY-11 218412 28-MAY-11 218412 28-MAY-11 注: a) 如果目标端数据库在“第10歩”操作之后,又额外追加了源数据库rman备份后的归档日志,导致目标端数据库的SCN号大于“第10歩”中SCN号。所以必须以目标端数据库当前的SCN为主,从而避免数据重复。 b) 如果目标端数据库在“第10歩”操作之后,没有额外追加源数据库rman备份后的归档日志,则“第11歩”中得到的SCN号应该与“第10歩”中的SCN号相等; 12) (备选)如果源端为RAC,目标端为单机,需将目标机改为单机模式 删除多余的redolog group SQL> select THREAD#, STATUS, ENABLED from v$thread; THREAD# STATUS ENABLED ---------- ------ -------- 1 OPEN PUBLIC 2 CLOSED PRIVATE SQL> select group# from v$log where THREAD#=2; GROUP# ---------- 4 5 6 SQL> alter database disable thread 2; Database altered. SQL> alter database drop logfile group 4; alter database drop logfile group 4 ERROR at line 1: ORA-00350: log 4 of instance racdb2 (thread 2) needs to be archived ORA-00312: online log 4 thread 2: '/u01/oracle/oradata/ractest/log/redo04.log' SQL> alter database clear unarchived logfile group 4; Database altered. SQL> alter database drop logfile group 4; Database altered. SQL> alter database drop logfile group 5; Database altered. SQL> alter database drop logfile group 6; Database altered. SQL> select THREAD#, STATUS, ENABLED from v$thread; THREAD# STATUS ENABLED ---------- ------ -------- 1 OPEN PUBLIC 删除多余UNDO表空间 SQL> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1 SQL> select tablespace_name from dba_tablespaces where contents='UNDO'; TABLESPACE_NAME ------------------------------ UNDOTBS1 UNDOTBS2 SQL> drop tablespace UNDOTBS2 including contents and datafiles; Tablespace dropped. 如果源数据库为Oracle9i,因为RMAN时不备份TEMP表空间,需重新创建TEMP表空间 SQL> create temporary tablespace TEMP tempfile '/u01/temp.dbf' size 500M; Tablespace created. SQL> alter database default temporary tablespace TEMP; Database altered. 13) 目标端打开数据库 alter database open resetlogs; 2.4.2. Oracle EXPDP/IMPDP初始化方案 在数据初始化的过程中,不需要源数据库停机。 1) 源端和目标端安装OGG软件,并启动manager 2) 源端配置OGG的Extract及DataPump 3) 源端启动Extract进程以及DataPump进程,并且人工记录抽取进程启动的时间点,例如:“2011-05-03 11:20:55” ,将此时间点作为在下一步中查找长事务的一个判断条件; 4) 长事务处理:在V$TRANSACTION中查找当前正在运行的事务(RAC环境下,查看gv$transaction),并找出相应的长事务。在执行rman备份之前,确保这些长事务已经完成,或者被kill掉(需要得到dba或者相关管理人员的确认)。 Select start_time from gv$transaction where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss') 5) 创建directory用于执行数据泵操作 --directory path for store dump file CREATE OR REPLACE DIRECTORY DATA_PUMP AS 'E:\OGG\data'; grant read ,write on DIRECTORY DATA_PUMP to ggs ; --users to execute expdp grant read ,write on DIRECTORY DATA_PUMP to sglaw ; 6) 源端获取数据库当前的SCN SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER ------------------------ 3079975 7) 源端数据导出 在源端OS系统中执行数据导出,导出用户名、dmp文件名自行修改,导出完成后ftp至目标端datapump目录 expdp sglaw/sglaw directory=DATA_PUMP dumpfile= --以下操作在目标端执行 8) 创建directory用于执行数据泵操作,同时给ggs以及导入用户赋权 --directory path for store dump file CREATE OR REPLACE DIRECTORY DATA_PUMP AS '/goldengate/data'; grant read ,write on DIRECTORY DATA_PUMP to ggs ; grant read ,write on DIRECTORY DATA_PUMP to sglaw; 9) 目标端导入数据 --- 以下操作在OS中执行,具体用户名与导入dmp文件名视具体情况而定 impdp sglaw/sglaw DUMPFILE=DATA_PUMP:DP_SGLAW.DMP 2.5. 目标端配置 2.5.1. 创建运行GoldenGate的用户 1) 在目标端采用goldengate 用户运行GoldenGate 2) 安装位置: /goldengate 3) 创建GoldenGate数据库用户goldengate create tablespace goldengate datafile '/xx/goldengate01.dbf' size 1000M; -- Create the user create user goldengate identified by "hljorarz" default tablespace goldengate temporary tablespace TEMP; -- Grant/Revoke role privileges grant dba to goldengate; 2.5.2. 安装GoldenGate 通过ftp上传GoldenGate软件包道安装目录/goldengate,并解压缩 gzip –d *.gz tar -xvf *.tar 在ggsci环境下创建GoldenGate子目录, create subdirs 2.5.3. 添加变量 export GG_HOME=/goldengate export LD_LIBRARY_PATH=$ORACLE_HOME/lib 2.5.4. 修改数据库 2.5.4.1. 禁用触发器 declare v_sql varchar2(2000); CURSOR c_trigger IS SELECT 'alter trigger '||owner||'.'||trigger_name||' disable' from dba_triggers where owner in ('EMP_HLJ','EPC_HLJ','EPSA_HLJ','FLOW_HLJ','EPM_DE_HLJ','XEPMA_HLJ','EPM_LOADC_HLJ','EPM_HIS_HL','EPM_RPT_HLJ','SYSODM','EPM_CP','EPM_BANK_HLJ','EPM_IC_HLJ','EPM_SEC'); BEGIN OPEN c_trigger; LOOP FETCH c_trigger INTO v_sql; EXIT WHEN c_trigger%NOTFOUND; execute immediate v_sql; end loop; close c_trigger; end; / 2.5.4.2. 禁用外键 declare v_sql varchar2(2000); CURSOR c_trigger IS SELECT 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name from dba_constraints where constraint_type='R' and owner in ('EMP_HLJ','EPC_HLJ','EPSA_HLJ','FLOW_HLJ','EPM_DE_HLJ','XEPMA_HLJ','EPM_LOADC_HLJ','EPM_HIS_HL','EPM_RPT_HLJ','SYSODM','EPM_CP','EPM_BANK_HLJ','EPM_IC_HLJ','EPM_SEC'); BEGIN OPEN c_trigger; LOOP FETCH c_trigger INTO v_sql; EXIT WHEN c_trigger%NOTFOUND; execute immediate v_sql; end loop; close c_trigger; end; / 2.5.4.3. 禁用带有DML操作的JOB 1) 在dba_jobs中,有些job/schedule,会在复制对象中产生DML的操作,必须禁用掉,否则会造成DML语句在目标端的重复执行; 2) 在dba_schedule_jobs中的有些job,会在复制对象中产生DML操作,必须禁用掉,否则会造成DML语句在目标端的重复执行; 注:在目标端恢复的时候,可以在pfile文件中将job_queue_processes设置为0,然后将带有dml的job停掉以后,再修改job_queue_processes参数至正常值,如job_queue_processes=10; 2.5.5. GLOBALS配置 GGSCI> EDIT PARAMS ./GLOBALS CHECKPOINTTABLE goldengate.ggschkpt 2.5.8. 启动复制进程 Start replicat repxx , aftercsn 218412 注:该scn号是3.4.1小节的第11歩得到的; 3. 附录1—禁用触发器和级联删除的脚本 容灾端去掉trigger及cascade delete/update的脚本: 4. 附录2—开启DDL复制(在实施DML复制之后) 如果系统当前已经完成了Goldengate的DML复制实施(请确保DML实施遵循了本实施规范,打开的是数据库一级的PK,UI,FK,而不是在表一级实行add trandata的操作),并且正在运行,想在此基础上打开DDL复制,则需要按照本节介绍的步骤进行相应的操作。 4.1. 准备工作 1) 明确在配置DML时所创建的golengate的用户名,密码,表空间以及权限等信息;参考本文档的2.3.4小节部分内容。 2) 在配置DDL时,停止目前正在运行的goldengate所有进程,如mgr,extract,datapump,以及目标端的replicat进程 3) 在配置DDL时,生产端的数据库所有的session连接都应该退出(强烈建议); 4.2. 卸载DDL配置(可选) 如果之前曾经安装过ddl,需要重新进行安装,则需要先将ddl的一些组件卸载掉,然后再重新安装: 依次在OGG的根目录执行 1) 切换到Goldengate安装目录下,并且按照顺序以SYS用户依次执行以下脚本: 2) SQLPLUS SYS/ORACLE@ORCL @./ddl_disable.sql 3) SQL>/goldengate/ddl_remove.sql 4) SQL>/goldengate/marker_remove.sql 注:在执行上述脚本的时候,会提示输入安装时所指定的schema名称。 4.3. 配置数据库级别的附加日志 以下脚本用以查询和开启数据库级别的附加日志信息, conn /as sysdba SQL>Select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_FK from v$database; SQL>alter database add supplemental log data; SQL>alter database add supplemental log data (PRIMARY KEY,FOREIGN KEY,UNIQUE) columns; --附加日志打开以后,正常需要执行一次归档操作,以使附加日志即时生效: SQL>ALTER SYSTEM ARCHIVE LOG CURRENT; --ALL COLUMNS的附加日志不建议开启: SQL>alter database add supplemental log data (ALL) columns; --以下为取消数据库级别附加日志的方法: SQL>alter database drop supplemental log data; SQL>alter database drop supplemental log data (PRIMARY KEY,FOREIGN KEY,UNIQUE) columns; SQL>alter database drop supplemental log data (ALL) columns; 注:正常需要切换一次redo,以确保附加日志即时生效 4.4. 删除表级别的附加日志 如果在实施DML操作时,曾经添加过表级别的附加日志信息,如: --在ggsci的界面中运行: Ggsci>add trandata scott.table1; --或者在sql界面中执行以下sql语句: SQL>alter table scott.t1 add supplemental log data (primary key, unique, foreign key) columns; 都是在表一级打开的附加日志信息。 因为已经开启了数据库级别的附加日志信息,所以对表级别的附加日志配置进行清除,使用以下脚本可以生成批量可执行的sql语句: Conn / as sysdba Sql>set line 200 Sql>set head off Sql>Spool droptrandata.sql Sql>select 'alter table '||owner|| '.' ||table_name|| ' drop supplemental log group '|| log_group_name||';' from dba_log_groups where dba_log_groups.owner in (’SAPSR3’,’xxx’); Sql>spool off --确认脚本保存路径,如/home/oracle --在sys用户下运行droptrandata.sql脚本,清除表级别的附加日志信息: Sql>@/home/oracle/droptrandata.sql 4.5. 编辑GLOBALS参数文件 这里直接建立在goldengate用户下: Ggsci>EDIT PARAMS ./GLOBALS GGSCHEMA goldengate 4.6. 关闭数据库的recyclebin SQL> show parameter recyclebin NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ recyclebin string OFF --如不是off,需要关闭recyclebin: SQL>alter system set recyclebin=off scope=both; 4.7. 停止数据库的所有Session OGG的DDL对象安装时不能有运行的sessoin存在,请DBA执行停机清理或者杀死所有数据库中的Session。 建议有条件先执行停止业务,并关闭Oracle的Listener。 4.8. 建立OGG的DDL对象 sqlplus "/ as sysdba" SQL> @marker_setup.sql Enter GoldenGate schema name:goldengate SQL> @ddl_setup.sql Enter GoldenGate schema name:goldengate SQL> @role_setup.sql Grant this role to each user assigned to the Extract, Replicat, GGSCI, and Manager processes, by using the following SQL command: GRANT GGS_GGSUSER_ROLE TO where 注意这里的提示:它需要你手工将这个GGS_GGSUSER_ROLE指定给你的extract所使用的数据库用户(即参数文件里面通过userid指定的用户),可以到sqlplus下执行类似的sql: GRANT GGS_GGSUSER_ROLE TO goldengate; 这里的goldengate是extract使用的用户。如果你有多个extract,使用不同的数据库用户,则需要重述以上过程全部赋予GGS_GGSUSER_ROLE权限。 4.9. 安装提升性能工具 本步骤为可选步骤。 为了提供OGG的DDL复制的性能,可以将ddl_pin脚本加入到数据库启动的脚本后面,该脚本需要带一个OGG的DDL用户(即安装DDL对象的用户,本例中是goldengate)的参数: SQL> @ddl_pin 4.10. 配置OGG进程中DDL参数 GoldenGate的data pump进程和replicat的ddl开关默认是打开的,只有主extract是默认关闭的,所以DDL的配置要在extract进程中配置;同时因为replicat进程默认是所有DDL都复制,如果有多个replicat进程,如果在参数中不进行复制范围限制,必然引起DDL的重复复制,所以在replicat进程中也需要进行配置。 Extract中需要添加的配置参数: DDL & INCLUDE MAPPED OBJTYPE 'table' & INCLUDE MAPPED OBJTYPE 'index' & EXCLUDE OPTYPE COMMENT DDLOPTIONS NOCROSSRENAME REPORT Replicat中需要添加的配置参数: DDL include mapped DDLOPTIONS report 4.11. MGR的配置(只需配置源端) 另外,在mgr里面加入自动purge ddl中间表的参数: PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7 PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7 4.12. 删除系统已有的OGG进程和队列,重新添加 GGSCI>delete er * 进入dirdat目录,删除里面的所有队列文件,进入dirrpt目录,删除里面的所有日志文件 GGSCI>add ext extea,tranlog ,begin now GGSCI>add exttrail ./dirdat/ea,ext extea,megabytes 200 GGSCI>add ext dpeea,exttrailsource ./dirdat/ea GGSCI>add rmttrail ./dirdat/ea,ext dpeea,megabytes 200 GGSCI>alter repea,extseqno 0,extrba 0 GGSCI>alter repeb,extseqno 0,extrba 0 GGSCI>alter repec,extseqno 0,extrba 0 4.13. 启动OGG DDL捕捉的trigger 在sqlplus里面执行ddl_enable.sql脚本启用ddl捕捉的trigger。 说明:ddl捕捉的trigger与OGG的extract进程是相互独立的,它并不依赖于extract进程存在。即使OGG的extract进程不存在或者没有启动,但是trigger已经启用了,那么捕捉ddl的动作就一直延续下去。如想彻底停止捕捉DDL捕捉,需要禁用ddl的trigger,此时需要执行ddl_disable.sql 1) 启动OGG的ext数据抽取进程,等抽取进程开始工作后,进行系统数据库热备份,具体方法参考数据库热备方案。 2) 在容灾中心的数据库上禁用外键、触发器、级联删除、带有dml操作的JOB,参考本文档的2.5.4部分。 3) 启动OGG所有进程 注意:启动容灾中心的REP进程的时候,使用如下的启动命令 GGSCI>start repea,aftercsn GGSCI>start repeB,aftercsn GGSCI>start repeC,aftercsn GGSCI>start repeD,aftercsn |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/196700/viewspace-1163218/ ,如需转载,请注明出处,否则将追究法律责任。