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部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-1163218/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料容災實施方案
- 不同於傳統容災災備的雲容災解決方案
- 容災方案
- 淺談容災與容災方案設計薦
- 資料容災技術及容災方案分類
- vivo 推送系統的容災建設與實踐
- goldengate部署實施Go
- goldengate實施文件Go
- goldengate部署實施案例Go
- GoldenGate實施參考Go
- Oracle GoldenGate容災專案初始化調研模板OracleGo
- 異地容災系統技術概述(轉載)
- GoldenGate實施故障彙總Go
- ACK One 構建應用系統的兩地三中心容災方案
- 阿里雲高可用-容災解決方案阿里
- 容災演練月報 | 紹興銀行四大業務系統完成容災切換演練
- GoldenGate實施相關問題Go
- 前端容災前端
- Windows作業系統kill Oracle執行緒的實施方案Windows作業系統Oracle執行緒
- GoldenGate “單連通” 實施日誌Go
- oracle goldengate專案實施結束OracleGo
- 實施aix系統備份AI
- (原)實施在系統外
- 某行XX系統DB2資料庫遷移實施方案DB2資料庫
- 人臉識別門禁系統搭建,智慧小區實施方案
- 最大的基礎資訊系統設計與實施方案研究
- 容災演練月報 | 雅安市商業銀行四大業務系統完成容災切換演練
- MSHA x Chaos 容災高可用實踐
- GoldenGate schema級複製 實施過程Go
- 專案實施方案
- 實施在系統外(原創)
- K8S容災方案的五個關鍵點K8S
- 本地IDC機房資料庫容災解決方案資料庫
- 資料庫容災、複製解決方案全分析(轉)資料庫
- 一文了解資料庫高可用容災方案的設計與實現資料庫
- IT 災備:系統管理員對抗自然災害
- 雲容災最佳實踐!美創DBRA助力包頭醫學院第二附屬醫院核心系統容災建設
- 在RAC環境下安裝實施GoldenGateGo