LINUX ORACLE OGG12C整合模式安裝(二)

夢夕林1992發表於2023-01-18

生產庫安裝 DDL 相關元件

若生產庫資料庫版本在11204 後則不需要安裝DDL 相關元件

查詢資料庫的COMPATIBLE 引數,若為11204 或高版本則支援透過資料庫日誌挖掘伺服器捕獲DDL 。此方法稱為DDL 捕獲(也成為無觸發器DDL 捕獲)。

 

若生產庫資料庫版本在11204 前,則需要手工安裝DDL 元件

確定DDL SCHEMA

需要配置在GLOBALS 中:GGSCHEMA odc

 

授予odc 讀寫作業系統上的文字檔案許可權

GRANT EXECUTE ON UTL_FILE TO odc;

 

退出所有ORACLE 會話,不允許新會話產生

 

sqlplus "/as sysdba"            ---- 必須sysdba 連入

在這之前要先進入到odc 目錄下再開啟sql

 

要使基於觸發器的 DDL 複製能夠將 Oracle 不可見索引識別為唯一識別符號,請在引數中將以下引數設定為 TRUE params.sql 指令碼 :

define allow_invisible_index_keys = 'TRUE'

 

@marker_setup

  -- 該指令碼安裝marker 系統,這部分為啟用DLL 支援所必備,執行該指令碼時會提示輸入GoldenGate 管理帳戶schema 名。

 

@ddl_setup

  -- 執行該指令碼要確認關閉掉所有ORACLE 會話,未被關閉的會話會以列表形式顯示,執行過程中會要求希望物件屬主,並選擇安裝模式。如果是初次安裝就選擇“INITIALSETUP ”,該模式假設當前沒有任何GoldenGate DDL 物件存在,如果存在則會刪除並重建。如果是重新安裝,則應該選擇“NORMAL .

   提示輸入DDL SCHEMA

   若提示選擇安裝型別:INITIALSETUP (不一定)

 

@role_setup

-- 該操作會重建DDL 同步所需的許可權,授予GoldenGate 中的DDL 物件以DML 許可權。

提示你執行一條GRANT 語句,執行即可!

GRANT GGS_GGSUSER_ROLE TO odc;

       

 @ddl_enable.sql

  -- 啟用DDL 觸發器,以捕獲DDL 操作。

 

 @ddl_pin.sql odc

要提高DDL 觸發器的效能,可以透過ddl_pin 指令碼,該指令碼會將觸發器使用的包載入到記憶體,以此提高效率。該指令碼執行時需要引用dbms_shared_pool 系統包,因此在使用ddl_pin 指令碼前需要確保dbms_shared_pool 可用。執行ddl_pin 指令碼需要指定GoldenGate 管理員schema 名稱.

 

檢視ddl 的狀態

@ddl_status.sql

 

注意!!!

後續剷除ogg 時,要把觸發器給關掉

@ddl_disable

特別是GGS_DDL_TRIGGER_BEFORE  這個觸發器

alter trigger GGS_DDL_TRIGGER_BEFORE disable;

 

建立抽取程式

抽取程式要配置的引數:

引數

閥值

定義

extract

sm_ext

指定程式名和型別 

setenv

(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

配置系統環境變數

userid/ password

odc

指定OGG 連線資料庫的使用者名稱和密碼

USERIDALIAS

tiger1

使用12c 新特性的別名,提高安全性

MININGUSERALIAS


如果使用下游採礦資料庫上的登入採礦伺服器,則指定其連線資訊。

INTEGRATEDPARAMS


可選,將引數傳遞給包含資料庫日誌挖掘伺服器的Oracle 資料庫。僅用於更改日誌挖掘伺服器引數的預設設定.

LOGALLSUPCOLS


將所有補充記錄的列寫入跟蹤,包括衝突檢測和解決所需的列,以及支援整合Replicat 所需的排程列

UPDATERECORDFORMAT

[FULL | COMPACT]

可以控制抽取程式相容更新操作的前映象和後映象資訊並寫入到一個trail 檔案中

ENCRYPTTRAIL

AES128 | AES192 | AES256

加密本地蹤跡。

exttrail

./dirdat/cr

指定寫入到本地的哪個佇列

tranlogoptions


指定在解析資料庫日誌時所需要的特殊引數

altarchivelogdest

/oradata/oradata/smkdb/archive

指定歸檔路徑

FETCHOPTIONS


指定ogg 獲取資料的方式

FETCHPKUPDATECOLS


複製程式出現丟失update 記錄(missing update )並且更新的是主鍵,update 將轉換成insert ( 當使用了HANDLECOLLISIONS 時,請使用該引數。)

ddl

include objname  UCR_CRM1.* exclude objtype 'TRIGGER'

使用DDL 引數,指定DDL 的支援和過濾DDL 操作。

table

UCR_CRM1.*

定義需要複製的表,後面需以; 結尾 

具體引數設定如下:

DBLOGIN USERIDALIAS tiger1

REGISTER EXTRACT sm_ext DATABASE [CONTAINER (container[, ...])] [SCN system_change_number]

group Extract 組的名稱。

CONTAINER (CONTAINER[ ,…]) 指定多租戶容器資料庫中的一個可插資料庫(PDB) ,或者一個用逗號分隔的PDB 列表。在執行REGISTER 命令之前,指定的pdb 必須已經存在。Extract 將只從該命令中列出的pdb 中捕獲。若沒有則不寫該引數。

 

ADD EXTRACT sm_ext, INTEGRATED TRANLOG, BEGIN NOW

ADD EXTTRAIL /odc/dirdat/sm, EXTRACT sm_ext

 

注:

INTEGRATED :表示整合模式

tranlog :表示資料抓取的來源是資料庫的redo 資料。

begin now :表示我們在啟動這個抓取程式的就去抓取資料。

./dirdat :表示trail 檔案的目錄

sm trail 檔案的字首

extract sm_ext :值指定給那個程式用的(sm_ext )。

 

檢視資料庫字符集對應設定環境變數

SQL> SELECT * FROM nls_database_parameters WHERE PARAMETER = 'NLS_CHARACTERSET';

 

ggsci>edit param sm_ext

引數:

extract sm_ext

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

--userid odc password odc

USERIDALIAS tiger1

--TRANLOGOPTIONS MININGUSERALIAS tiger2 

TRANLOGOPTIONS INTEGRATEDPARAMS (MAX_SGA_SIZE 164, & 

   DOWNSTREAM_REAL_TIME_MINE y)

LOGALLSUPCOLS

UPDATERECORDFORMAT COMPACT

--ENCRYPTTRAIL AES192

exttrail ./dirdat/sm

tranlogoptions altarchivelogdest /oracle/odc/data       

--RAC  TranlogOptions DBLOGREADER 

FETCHOPTIONS FETCHPKUPDATECOLS

ddl include objname test1.* exclude objtype 'TRIGGER'

DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 

table test1.*;

 

 

 

--PDB 環境

DDL INCLUDE MAPPED SOURCECATALOG pdb1 INCLUDE MAPPED SOURCECATALOG pdb2

SOURCECATALOG pdb1

TABLE schema*.tab*;

或者可以直接table pdb1.schema.table

 

 

 

建立傳輸程式

傳輸程式要配置的引數:

引數

閥值

定義

extract

dmpucr

指定程式名和型別 

userid/ password

odc

指定OGG 連線資料庫的使用者名稱和密碼

USERIDALIAS

tiger1

使用12c 新特性的別名,提高安全性

ENCRYPTTRAIL

AES128 | AES192 | AES256

加密本地蹤跡。

rmthost

132.151.15.10

指定目標端主機IP

mgrport

7809

指定管理程式埠號

rmttrail

./dirdat/cr

指定目標端儲存佇列檔案的目錄

passthru


採用pass-through 模式處理表

table

UCR_CRM1.*

定義需要複製的表,後面需以; 結尾 

具體引數如下:

ggsci>add extract sm_dmp EXTTRAILSOURCE ./dirdat/sm

ggsci>ADD RMTTRAIL ./dirdat/sm, EXTRACT sm_dmp

 

注:

EXTTRAILSOURCE :指定提取檔案作為資料來源

ADD RMTTRAIL :在目標資料庫上建立一個trail

 

ggsci>edit param sm_dmp

 

引數:

extract sm_dmp

--userid odc,password odc

USERIDALIAS tiger1

rmthost 192.168.31.139, mgrport 7809 

--ENCRYPT AES192, KEYNAME securekey2          

rmttrail ./dirdat/sm

passthru

table test1.*;

 

--CDB 環境

SOURCECATALOG pdb1

TABLE test1.*;

備份建立使用者

SQL> create tablespace odc_tps datafile '/oradata/orcl/odc01.dbf' size 100M autoextend on;

 

SQL> create user odc identified by odc default tablespace odc_tps;

 

GRANT CONNECT TO odc;

GRANT ALTER ANY TABLE TO odc;

GRANT ALTER SESSION TO odc;

GRANT CREATE SESSION TO odc;

GRANT FLASHBACK ANY TABLE TO odc;

GRANT SELECT ANY DICTIONARY TO odc;

GRANT SELECT ANY TABLE TO odc;

GRANT RESOURCE TO odc;

GRANT DBA TO odc;

 

初始化同步

生產端查詢相關資訊

-- 生產端查詢表格所在表空間

select distinct tablespace_name from dba_tables where owner in ('UCR_CRM1',’UCR_CRM2’,’UCR_CEN1’);

select distinct tablespace_name from dba_tab_partitions where table_owner in ('UCR_CRM1',’UCR_CRM2’,’UCR_CEN1’);

 

-- 備份端查詢是否存在以上表空間,若沒有則建立,如果不想建立,在後面的impdp 中需要配置remap_tablespace 引數。

 

-- 生產端索引所在表空間

select distinct tablespace_name from dba_indexes where owner in ('UCR_CRM1',’UCR_CRM2’,’UCR_CEN1’);

 

select distinct tablespace_name from dba_ind_partitions where index_owner in ('UCR_CRM1',’UCR_CRM2’,’UCR_CEN1’);

 

-- 生產端使用者預設臨時表空間:

select distinct temporary_tablespace from dba_users

 

檢查undo 保留時間及表空間大小

SQL> select file_name,tablespace_name,bytes/1024/1024/1024,AUTOEXTENSIBLE,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='UNDOTBS1';

SQL> show parameter undo

SQL> select tablespace_name,sum(bytes/1024/1024/1024) from dba_data_files group by tablespace_name; 

SQL> select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name;

 

SQL> alter system set undo_retention=172800;

 

SQL> ALTER tablespace UNDOTBS1 RETENTION GUARANTEE;

 

生產端查詢SCN

SQL> select to_char(current_scn) from v$database;

14569604987950

 

生產端匯出

$ expdp odc/odc schemas=UCR_CRM1,UCR_CRM2,UCR_CEN1 directory=expdp flashback_scn=14569604987950  dumpfile=UCRexp.dmp logfile=UCRexp.log

 

目標端匯入

$ impdp odc/odc schemas= UCR_CRM1,UCR_CRM2,UCR_CEN1  directory=expdp  dumpfile=UCRexp.dmp logfile=UCRimp.log

 

-- 匯入前檢查目標端表空間的大小

select segment_type,count(*),sum(bytes/1024/1024) from dba_segments  where owner in (‘UCR_CRM1’,’UCR_CRM2’,’UCR_CEN1’) group by segment_type;

 

備份庫相關操作

備份庫禁用觸發器

select 'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where owner in (‘UCR_CRM1’,’UCR_CRM2’,’UCR_CEN1’) and status='ENABLED';

 

移除JOB

select job,log_user,schema_user,next_date,broken from dba_jobs;

exec dbms_job.remove(<that job id>);

exec dbms_ijob.remove(21);

exec dbms_job.broken(186,true)

 

select * from dba_scheduler_jobs where owner in (‘UCR_CRM1’,’UCR_CRM2’,’UCR_CEN1’);

禁用:

DBMS_SCHEDULER.DISABLE('job1, job2, job3, sys.jobclass1, sys.jobclass2');

或刪除:

DBMS_SCHEDULER.DROP_JOB (job_name => 'my_job1');

 

建立應用程式

應用程式要配置的引數:

引數

閥值

定義

replicat

repucr

指定程式名和型別 

setenv

(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

配置系統環境變數

userid/ password

odc

指定OGG 連線資料庫的使用者名稱和密碼

USERIDALIAS

tiger1

使用12c 新特性的別名,提高安全性

INTEGRATEDPARAMS


該引數適用於一體化模式的Replicat 。它為入站伺服器指定可選引數。

ASSUMETARGETDEFS


源端和目標端資料庫型別一致,無需生成資料定義檔案

ALLOWNOOPUPDATES


允許執行無實際變化的updata

DBOPTIONS

DEFERREFCONST

約束延遲設定。在複製程式的事物被提交之前,延遲級聯刪除、級聯更新時的校驗和實施。

HANDLETPKUPDATE


定義即使目標資料庫環境中存在資料完整性問題,replicat  程式仍然能夠繼續處理 trail  中的資料。

ddlerror

955 ignore

定義來處理被找到的物件錯誤

DISCARDFILE

/odc/dirrpt/cr.dsc

定義discardfile 檔案位置,如果處理中油記錄出錯會寫入到此檔案中

APPEND


discardfile 檔案中如果已經包含記錄的話,在後面繼續追加,不刪除之前的記錄。

megabytes

20

定義discardfile 檔案大小

DISCARDROLLOVER

on Sunday

定義檔案過期設定,為了防止discard file 被寫滿

map  target


用於指定源端和目標端表的對映關係

 

具體引數如下:

ggsci>dblogin userid odc password odc

ggsci>add replicat sm_rep,  INTEGRATED, exttrail ./dirdat/sm

 

ggsci>edit param sm_rep

 

引數:

replicat sm_rep

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

DBOPTIONS INTEGRATEDPARAMS(parallelism 6)

--userid odc, password odc

USERIDALIAS tiger2

--handlecollisions

ASSUMETARGETDEFS                      

-- 如果源表和目標表沒有相同的結構,那麼使用SOURCEDEFS 引數而不是ASSUMETARGETDEFS    

ALLOWNOOPUPDATES               

DBOPTIONS DEFERREFCONST

HANDLETPKUPDATE

--batchsql

ddlerror 955 ignore

ddlerror 1917 ignore

ddlerror 24344 ignore

ddlerror 1031 ignore

ddl include mapped

DISCARDFILE /oracle/odc/dirrpt/sm.dsc, APPEND megabytes 20

DISCARDROLLOVER on sunday

--DISCARDROLLOVER

map xjm.* target test1.*;

 

USERIDALIAS tiger2

ASSUMETARGETDEFS

MAP hr.*, TARGET hr2.*;

 

--PDB 環境

SOURCECATALOG pdb1

MAP schema*.tab*, TARGET *1.*;

或者

MAP pdb1.schema*.tab*, TARGET *1.*;

 

 

啟動

ggsci>start sm_rep aftercsn 14569604987950

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29956245/viewspace-2932704/,如需轉載,請註明出處,否則將追究法律責任。

相關文章