OGG19.1 oracle12c到oracle12c經典模式配置實施
- 2020 年 7 月 17 日
- 筆記
OGG19.1 oracle12c到oracle12c經典和集成模式配置實施
-
目的說明
本文提供Oracle GoldenGate在Oracle db到Oracle db的數據複製安裝配置指導,適用於入門練習使用,生產環境配置,在關鍵步驟和重要參數設置需要小心對待。
OGG19.1 oracle12c到oracle12c經典和集成模式配置實施 —- 支援DDL複製配置。 -
參考文檔
《叱吒風雲GoldenGate企業級運維實戰》
Oracle GoldenGate Document 12.3.0/19.1.0 -
準備系統
準備好兩套已經裝好Oracle db和Oracle GoldenGate for Oracle的環境。
— 安裝步驟略
— //docs.oracle.com/en/middleware/goldengate/core/19.1/installing/installing-classic-architecture.html
— ./runInstaller -silent -responseFile /tmp/trace/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp
— /orabin/oraInventory/logs/installActions2020-07-06_04-46-55PM.log
—
source db:
ip:192.168.6.20
db type:Oracle db 12.2.0.1.0
target db:
ip:192.168.6.20
db type:Oracle db 12.2.0.1.0
GoldenGate:
ogg type:GoldenGate for Oracle 19.1.0.0.4
-
配置source db
4.1 配置source db參數
source db的配置主要是歸檔模式修改、附加日誌的添加、強制日誌和–ddl語句的支援。--#源端DB開啟歸檔模式和最小附加日誌 --4.1.1 源端DB開啟歸檔模式 archive log list --#啟用主動歸檔 -- 關閉並mount資料庫 shutdown immediate startup mount -- 開啟歸檔日誌 alter database archivelog; -- 設置本地歸檔路徑 alter system set log_archive_dest_1='location=/oradata/oggsdb/archive' scope=spfile; -- 設置歸檔日誌文件名格式 show parameter log_archive_format ----default %t_%s_%r.dbf alter system set log_archive_format='oggsdb_%t_%s_%r.arc' scope=spfile; --關閉資料庫,再啟動資料庫 ,使參數 log_archive_dest_1生效 shutdown immediate startup --檢查配置和參數生效 archive log list show parameter log_archive_dest_1 show parameter log_archive_format -- 4.1.2 強制日誌變更 alter database force logging; --實時生效 強制日誌 --ALTER DATABASE NO FORCE LOGGING; -- 4.1.3 開啟最小附加日誌 和 查看最小附加日誌 alter database add supplemental log data; --實時生效 最小附加日誌 --alter database drop supplemental log data; --查看source db歸檔、附加日誌和強制日誌: select supplemental_log_data_min from v$database; select db.LOG_MODE, db.SUPPLEMENTAL_LOG_DATA_MIN, db.FORCE_LOGGING from v$database db; select db.NAME, db.LOG_MODE, db.FLASHBACK_ON, db.FORCE_LOGGING, db.supplemental_log_data_min, db.supplemental_log_data_pk, db.supplemental_log_data_ui, db.supplemental_log_data_ui, db.supplemental_log_data_fk, db.supplemental_log_data_all, db.supplemental_log_data_pl from v$database db; -- 4.1.4 修改GoldenGate參數 show parameter enable_goldengate_replication alter system set enable_goldengate_replication = true scope = both; show parameter enable_goldengate_replication -- 4.1.5 創建GoldenGate用戶 create tablespace ogg_data datafile '/oradata/oggsdb/ogg_data01.dbf' size 50M autoextend on next 8M; create user ogg identified by Password123 default tablespace ogg_data quota unlimited on ogg_data; 授權GoldeGate用戶 : grant connect, resource to ogg; grant alter any table, alter system,alter user, create session, alter session to ogg; grant select any dictionary, SELECT ANY TRANSACTION,select any table,flashback any table to ogg; --grant DBA to ogg; -- DDL and sequence support --GRANT FLASHBACK ANY TABLE TO db_user --GRANT FLASHBACK ON schema.table TO db_user --11.2.0.4 or later需要執行以下package 許可權 : begin dbms_goldengate_auth.grant_admin_privilege(grantee => 'OGG', privilege_type => 'CAPTURE', grant_select_privileges => TRUE, do_grants => TRUE); END; / /*----此包dbms_goldengate_auth.grant_admin_privilege授予許可權如下18個許可權: -- Grant/Revoke object privileges grant execute on LOGMNR$COL_GG_TABF_PUBLIC to OGG; grant execute on LOGMNR$GSBA_GG_TABF_PUBLIC to OGG; grant execute on LOGMNR$KEY_GG_TABF_PUBLIC to OGG; grant execute on LOGMNR$SEQ_GG_TABF_PUBLIC to OGG; grant execute on LOGMNR$TAB_GG_TABF_PUBLIC to OGG; grant insert on LOGMNR_RESTART_CKPT$ to OGG; -- Grant/Revoke role privileges grant select_catalog_role to OGG; -- Grant/Revoke system privileges grant alter any table to OGG; grant alter session to OGG; grant create evaluation context to OGG with admin option; grant create job to OGG; grant create rule to OGG with admin option; grant create rule set to OGG with admin option; grant dequeue any queue to OGG with admin option; grant execute any rule set to OGG with admin option; grant flashback any table to OGG; grant logmining to OGG; grant select any table to OGG; */ --4.1.6 配置DDL語句支援 ( Support for DDL Capture in Classic Capture Mode ) --Classic capture mode requires the use of the Oracle GoldenGate DDL trigger to --capture DDL from an Oracle Database. Native DDL capture is not supported by classic capture mode. --授權GoldeGate用戶 :(除以上 4.1.5 授權部分外,還需要 DBA 許可權 支援 DDL and sequence 捕獲) --a. --創建存放ddl資訊的GoldenGate用戶: ( 如上 共用 ogg 用戶 ) --create tablespace ogg_data datafile '/oradata/oggsdb/ogg_data01.dbf' size 50M autoextend on next 8M; --create user ogg identified by Password123 default tablespace ogg_data quota unlimited on ogg_data; --b. 此可暫時忽略 -- (Optional)To cause user DDL activity to fail when the DDL tablespace fills up, edit the params.sql script -- and set the ddl_fire_error_in_trigger parameter to TRUE. As a best practice, make certain to size the tablespace appropriately in the first place. #params.sql內容 define the ddl_fire_error_in_trigger = 'TRUE' define allow_invisible_index_keys = 'TRUE' #To enable trigger-based DDL replication to recognize Oracle invisible indexes as #unique identifiers, set the following parameter to TRUE in the params.sql script: --c. 此可暫時忽略 --#at the root of the Oracle GoldenGate directory. Do not alterthe file name or location. EDIT PARAMS ./GLOBALS # 內容 GGSCHEMA schema_name ##Save and close the GLOBALS file and the params.sql file. --d. grant dba to ogg ; GRANT EXECUTE ON utl_file TO ogg; #Change directories to the Oracle GoldenGate installation directory. # ----The specific location is: oggma_install_home/lib/sql/legacy. #Exit all Oracle sessions. Prevent the start of any new sessions. 進入GoldenGate目錄,調用SQL腳本: cd $OGG_HOME sqlplus / as sysdba SQL> @marker_setup.sql; #輸入準備好的用戶ogg SQL> @ddl_setup.sql; #輸入準備好的用戶ogg SQL> @role_setup.sql; #輸入準備好的用戶ogg #Grant the role that was created (default name is GGS_GGSUSER_ROLE) to all Oracle GoldenGate Extract users. #根據上面執行結果的提示授權角色給ogg用戶 SQL> grant GGS_GGSUSER_ROLE to ogg; SQL> @ddl_enable.sql; ##To Install and Use the Optional Performance Tool SQL> @ddl_pin ogg 至此,ddl語句的支援配置完成。 #驗證DDL安裝 --運行marker_status.sql校驗DDL的狀態 SQL> @marker_status.sql ------------------------------------ -- Removing the DDL Objects from the System -- 卸載 DDL 複製 支援 -- cd $OGG_HOME -- ggsci -- ggsci> STOP EXTRACT group1 -- ggsci> STOP REPLICAT group1 -- -- sqlplus / as sysdba -- SQL> @ddl_disable.sql; -- SQL> @ddl_remove.sql -- SQL> @marker_remove.sql
4.2 配置source db manager進程
–EXTRACT exoggs
–SETENV (ORACLE_HOME=”/orabin/product/12.2.0.1″)
–SETENV (ORACLE_SID = “OGGSDB”)
進入GoldenGatean安裝目錄,創建工作區目錄:
cd $OGG_HOME
./ggsci
GGSCI (dbserver) 1> create subdirs
Creating subdirectories under current directory /oradata/ogg
Parameter file /oradata/ogg/dirprm: created.
Report file /oradata/ogg/dirrpt: created.
Checkpoint file /oradata/ogg/dirchk: created.
Process status files /oradata/ogg/dirpcs: created.
SQL script files /oradata/ogg/dirsql: created.
Database definitions files /oradata/ogg/dirdef: created.
Extract data files /oradata/ogg/dirdat: created.
Temporary files /oradata/ogg/dirtmp: created.
Credential store files /oradata/ogg/dircrd: created.
Masterkey wallet files /oradata/ogg/dirwlt: created.
Dump files /oradata/ogg/dirdmp: created.
GGSCI (dbserver) 2>
–創建數據目錄(可在dirdat目錄下為 oggsdb的抽取進程創建一個單獨數據存放目錄 )
–cd $OGG_HOME
–oracle[/oradata/ogg]$mkdir -p dirdat/oggsdb
—- /oradata/ogg/dirdat/oggsdb
編輯配置manager參數文件 :
GGSCI > edit params mgr
添加以下內容
PORT 7809
DYNAMICPORTLIST 7800-7900
ACCESSRULE, PROG , IPADDR 192.168.6.20, ALLOW
ACCESSRULE, PROG SERVER, ALLOW
–PURGEOLDEXTRACTS ./dirdat/oggsdb/ex, usecheckpoints, minkeephours 12 #### 參數 minkeepdays 2
PURGEOLDEXTRACTS ./dirdat//, usecheckpoints, minkeepdays 2 #### 同一台主機,源和目標庫共用一個MGR
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2, RESETMINUTES 60
lagreporthours 1
laginfominutes 30
lagcriticalminutes 45
*/
對需要的表添加trandata
cd $OGG_HOME
./ggsci
GGSCI > dblogin userid ogg@oggsdb password Password123
Successfully logged into database.
GGSCI > add trandata scott.emp
–info trandata scott.emp
–select * from DBA_LOG_GROUPS
4.3 配置source db extract進程
–select * from nls_database_parameters
添加一個extract進程 :
GGSCI > add extract exggsdb,tranlog,begin now —-, threads 2
編輯extract參數文件:
GGSCI (dbserver) 13> edit params exggsdb
添加以下內容
extract exggsdb
setenv (ORACLE_SID = “OGGSDB”)
setenv (NLS_LANG = “AMERICAN_AMERICA.AL32UTF8”)
userid ogg@oggsdb, password Password123
TRANLOGOPTIONS DBLOGREADER
reportcount every 30 minutes, rate
discardrollover at 3:00
warnlongtrans 2h, checkinterval 300
exttrail /oradata/ogg/dirdat/oggsdb/ex
discardfile /oradata/ogg/dirdat/exggsdb.dsc, append, megabytes 100
–gettruncates —- DDL support parameter
getupdatebefores
nocompressdeletes
nocompressupdates
–LOGALLSUPCOLS
dboptions allowunusedcolumn
fetchoptions nousesnapshot
fetchoptions fetchpkupdatecols
table SCOTT.EMP;
創建本地trail文件 :
GGSCI > add exttrail /oradata/ogg/dirdat/oggsdb/ex, extract exggsdb
EXTTRAIL added.
4.4 配置source db pump進程
添加一個pump進程(本質上也是extract進程),並指定遠程trail文件:
GGSCI > add extract ppggsdb,exttrailsource /oradata/ogg/dirdat/oggsdb/ex
EXTRACT added.
編輯pump參數文件:
GGSCI (dbserver) 16> edit params ppggsdb
添加以下內容
extract ppggsdb
passthru
rmthost 192.168.6.20, mgrport 7809 —- target db主機ip,管理進程埠號 ##共用同一台主機的mgr進程 測試
rmttrail /oradata/ogg/dirdat/oggtdb/pp
–ddl — DDL support parameter
table scott.emp;
指定遠程trail文件:
GGSCI > add rmttrail /oradata/ogg/dirdat/oggtdb/pp, extract ppggsdb
RMTTRAIL added.
4.5 啟動source進程
查看extrac進程,啟動進程後注意查看ggserr.log的日誌資訊,確認無警告錯誤,啟動pump進程需先啟動target db的mgr進程,否則會報錯無法啟動:
開一個命令行:
cd $OGG_HOME
tail -f 50 ggserr.log
再開一個命令行:
cd $OGG_HOME
./ggsci
GGSCI > info all
GGSCI > start mgr
GGSCI > start exggsdb
GGSCI > start ppggsdb
GGSCI > info all
##########同一台主機,兩個oracle資料庫測試(source –> target), 可以共用OGG MGR 進程?!
##########若 源資料庫 和 目標資料庫 在不同主機,目標端也需要安裝OGG ,並配置OGG 數據目錄。
- 配置target db
5.1 配置target db參數
5.1.1 創建GoldenGate用戶
創建GoldenGate用戶
create tablespace ogg_data datafile ‘/oradata/oggtdb/ogg_data01.dbf’ size 50M autoextend on next 8M;
create user ogg identified by Password123 default tablespace ogg_data quota unlimited on ogg_data;
設置enable_goldengate_replication參數為true
alter system set enable_goldengate_replication = true scope = both;
授權GoldeGate用戶 :
grant connect, resource to ogg;
grant alter any table, alter system,alter user, create session, alter session to ogg;
grant select any dictionary, SELECT ANY TRANSACTION,select any table,flashback any table to ogg;
授權GoldeGate用戶 :
grant dba to ogg; ---- 支援DDL replicate配置
5.1.2 添加checkpoint表
GGSCI> edit params ./GLOBALS
添加以下內容
ggschema ogg
checkpointtable ogg.checkpoint
登陸target db添加checkpoint表
export ORACLE_SID=OGGTDB
./ggsci
GGSCI > dblogin userid ogg@OGGTDB, password Password123
Successfully logged into database.
GGSCI (dbserver as ogg@OGGTDB) > add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.checkpoint.
5.1 配置target db manager進程
—-編輯manager參數文件: —- 同一台主機,兩個oracle資料庫,可以共用同一個 MGR
—-GGSCI (dbserver as ogg@orcl) > edit params mgr
—-#添加以下內容
—-PORT 7809
—-DYNAMICPORTLIST 7800-7900
—-ACCESSRULE, PROG , IPADDR 192.168.6.20, ALLOW
—-PURGEOLDEXTRACTS ./dirdat/oggtdb/, usecheckpoints, minkeepdays 2 #### 參數 minkeepdays 2 #minkeephours 12
—-AUTORESTART ER *, RETRIES 5, WAITMINUTES 2, RESETMINUTES 60
—-lagreporthours 1
—-laginfominutes 30
—-lagcriticalminutes 45
5.2 配置target db replicat進程
添加一個replicat進程 :
GGSCI (dbserver) 2>
GGSCI (dbserver) 2>
GGSCI (dbserver as ogg@oggtdb) 4> add replicat repggtdb,exttrail /oradata/ogg/dirdat/oggtdb/pp
編輯replicat參數文件:
GGSCI (dbserver as ogg@oggtdb) 6> edit params repggtdb
添加以下內容
replicat repggtdb
setenv (ORACLE_SID = “OGGTDB”)
setenv (NLS_LANG = “AMERICAN_AMERICA.AL32UTF8”)
userid ogg@oggtdb, password Password123
dboptions deferrefconst
gettruncates
report at 06:00
reportcount every 30 minutes, rate
reportrollover at 02:00
–reperror default, abend
REPERROR DEFAULT,DISCARD
DBOPTIONS NOSUPPRESSTRIGGERS
–handlecollisions
allownoopupdates
–assumetargetdefs
discardfile /oradata/ogg/dirdat/oggtdb/repggtdb.dsc, append, megabytes 100
discardrollover at 02:00
–DDL
map scott.emp, target scott.emp;
—-啟動 MGR 和 REPLICATE 進程。
-
故障排查trouble shooting
-
測試case