OGG19.1 oracle12c到oracle12c經典模式配置實施


OGG19.1 oracle12c到oracle12c經典和集成模式配置實施

  1. 目的說明
    本文提供Oracle GoldenGate在Oracle db到Oracle db的數據復制安裝配置指導,適用於入門練習使用,生產環境配置,在關鍵步驟和重要參數設置需要小心對待。
    OGG19.1 oracle12c到oracle12c經典和集成模式配置實施 ---- 支持DDL復制配置。

  2. 參考文檔
    《叱吒風雲GoldenGate企業級運維實戰》
    Oracle GoldenGate Document 12.3.0/19.1.0

  3. 准備系統
    准備好兩套已經裝好Oracle db和Oracle GoldenGate for Oracle的環境。
    -- 安裝步驟略
    -- https://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

  1. 配置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 數據目錄。

  1. 配置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 進程。

  1. 故障排查trouble shooting

  2. 測試case


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM