Oracle GoldenGate安裝(三)
目標端安裝軟體
目標端建立管理使用者
建立管理使用者,授予的許可權和源端的不同
SQL> create tablespace odc_tps datafile '/oradata/smkdb/odc01.dbf' size 100M autoextend on;
Tablespace created.
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;
配置library 環境變數
不同作業系統不同的環境變數配置:
HP-UX : SHLIB_PATH
AIX : LIBPATH
LINUX : LD_LIBRARY_PATH
例如:
export LD_LIBRARY_PATH =$ORACLE_HOME/lib:$LD_LIBRARY_PATH
安裝軟體
1. 將對應作業系統資料庫版本的介質複製到源端後,建立安裝目錄或檔案系統
例如 /odc
# su - oracle
$ mkdir /odc
2. 解壓軟體安裝包
$ cd /odc
$ tar xf ggs_LINUX_ppc_ora11g_64bit_v11_1_1_0_11_001.tar
注:如果是 windows ,需要單獨安裝服務
執行cmd ,cd 到安裝軟體目錄下,執行:
C:\odc> install addservice
3. 建立子工作目錄
解壓並解包成功後在/odc 目錄執行
$ ./ggsci
ggsci>create subdirs
以上所建立的目錄的作用:
Name |
purpose |
|
dirchk |
Checkpoint files |
用來存放檢查點(checkpoint) 檔案, 次檢查點是ogg 自己的檢查點與例項不同 |
dirdat |
GoldenGate trails |
用來存放TRAIL 檔案 |
dirdef |
Data definition files |
用來存放透過DEFGEN 工具生成的源或目標端資料定義檔案 |
dirprm |
Parameter files |
用來存放配置引數檔案 |
dirpcs |
Process status files |
用來存放程式狀態檔案 |
dirrpt |
Report files |
用來存放程式報告檔案 |
dirsql |
SQL script files |
用來存放SQL 指令碼檔案 |
dirtmp |
Temporary files |
當事物所需要的記憶體超過已分配記憶體時, 預設儲存在這個目錄 |
4. 建立管理程式
建立管理程式所需引數:
引數 |
閥值 |
定義 |
port |
7809 |
mgr 程式使用的TCP/IP 埠偵聽請求,預設埠為7809 |
DYNAMICPORTLIST |
7800-7810 |
指定可用動態 TCP/IP 埠列表,用於源端與目標端程式通訊的繫結,最大支援256 個埠 |
PURGEOLDEXTRACTS |
./dirdat/sm* |
定期清理抽取出的過期檔案,可以被設定在Manager, Extract, and Replicat 引數檔案中,oracle 建議設定在Manager 中 |
USECHECKPOINTS |
|
根據任何MINKEEP 規則,允許清除那些已經被Extract 和Replicat 程式檢測過的,保證資料不丟失。 |
MINKEEPHOURS |
24 |
trail 檔案的保留時間,超過這個時間則刪除 |
autorestart |
replicat* |
指定程式失敗時自動重啟 |
retries |
10 |
指定嘗試重新啟動程式的次數(預設嘗試2 次) |
waitminutes |
10 |
指定重新啟動程式的等待時間,直到必要資源變得可用或一些其他的事件發生。預設的延遲時間為2 分鐘。 |
具體設定如下:
ggsci>edit param mgr
輸入:
port 7809
DYNAMICPORTLIST 7800-7810
PURGEOLDEXTRACTS ./dirdat/sm*, USECHECKPOINTS, MINKEEPHOURS 24
autorestart replicat* retries 10 waitminutes 10
autostart RE *
ggsci>edit param ./GLOBALS
輸入:
GGSCHEMA odc
CHECKPOINTTABLE odc.ggs_checkpoint --- 儲存退出
ggsci>start mgr
5. 建立 checkpoint table :
cd /odc
$ sqlplus odc/odc@smkdb
SQL> @chkpt_ora_create.sql
DROP TABLE ggs_checkpoint
*
ERROR at line 1:
ORA-00942: table or view does not exist
Table created.
(以同構oracle 資料庫為例)
源端查詢相關資訊
源端端查詢表格所在表空間
SQL> select distinct tablespace_name from dba_tab_partitions where table_owner='OGGTEST ';
目標端端查詢是否存在以上表空間,若沒有則建立,如果不想建立,在後面的impdp 中需要配置remap_tablespace 引數。
源端索引所在表空間:
SQL> select distinct tablespace_name from dba_indexes where owner in ('OGGTEST ');
SQL> select distinct tablespace_name from dba_ind_partitions where index_owner in ('OGGTEST ');
源端使用者預設臨時表空間:
SQL> 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> select file_name,tablespace_name,bytes/1024/1024/1024,AUTOEXTENSIBLE,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='UNDOTBS2';
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=172800sid='*';
SQL> ALTER tablespace UNDOTBS1 RETENTION GUARANTEE;
SQL> ALTER tablespace UNDOTBS2 RETENTION GUARANTEE;
SQL> ALTER tablespace UNDOTBS1 RETENTION NOGUARANTEE;
SQL> ALTER tablespace UNDOTBS2 RETENTION NOGUARANTEE;
如果空間不夠則新增:
SQL> ALTER tablespace UNDOTBS1 add datafile ' +MCDATA/ora11g/undotbs103.ora' size 3g autoextend on;
SQL> ALTER tablespace UNDOTBS2 add datafile ' +MCDATA/ora11g/undotbs03.ora' size 3g autoextend on;
源端查詢SCN
SQL> select to_char(current_scn) from v$database;
14569604987950
9i 資料庫:
SQL> select to_char(dbms_flashback.get_system_change_number) from dual;
14644839175132
源端匯出
$ export NLS_LANG=american_america.zhs16gbk
$
目標端匯入
$ nohup impdpodc/odcschemas=OGGTESTdirectory=expdpdumpfile=OGGTEST.dmp logfile=OGGTEST.log&
匯入前檢查目標端表空間的大小
select segment_type,count(*),sum(bytes/1024/1024) from dba_segments where owner='OGGTEST' group by segment_type;
目標端相關操作
備份庫禁用觸發器
select 'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where owner='OGGTEST' and status='ENABLED';
e.g.
alter trigger ZJHIS4.TRI_ZY_DETAIL_CHAREGE disable;
alter trigger EMR4.TRI_BL_BINGCHENGBCJL disable;
alter trigger ZJHIS4.TRI_LAB_TEST_MASTER_ZY disable;
移除JOB :
select job,log_user,schema_user,next_date,broken from dba_jobs;
select 'exec dbms_job.remove('||JOB||');' 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= 'OGGTEST';
禁用:
DBMS_SCHEDULER.DISABLE('job1, job2, job3, sys.jobclass1, sys.jobclass2');
或刪除:
DBMS_SCHEDULER.DROP_JOB (job_name => 'my_job1');
注意:要在當前使用者下執行(sys 使用者不用管)
程式
應用程式要配置的引數:
引數 |
閥值 |
定義 |
replicat |
sm_rep |
指定程式名和型別 |
setenv |
(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK") |
配置系統環境變數 |
userid/ password |
odc |
指定OGG 連線資料庫的使用者名稱和密碼 |
ASSUMETARGETDEFS |
|
源端和目標端資料庫型別一致,無需生成資料定義檔案 |
ALLOWNOOPUPDATES |
|
允許執行無實際變化的updata |
DBOPTIONS |
DEFERREFCONST |
約束延遲設定。在複製程式的事物被提交之前,延遲級聯刪除、級聯更新時的校驗和實施。 |
HANDLETPKUPDATE |
|
定義即使目標資料庫環境中存在資料完整性問題,replicat 程式仍然能夠繼續處理 trail 中的資料。 |
ddlerror |
955 ignore |
定義來處理被找到的物件錯誤 |
DISCARDFILE |
/odc/dirrpt/sm.dsc |
定義discardfile 檔案位置,如果處理中油記錄出錯會寫入到此檔案中 |
APPEND |
|
discardfile 檔案中如果已經包含記錄的話,在後面繼續追加,不刪除之前的記錄。 |
megabytes |
20 |
定義discardfile 檔案大小 |
DISCARDROLLOVER |
on sunday |
定義檔案過期設定,為了防止discard file 被寫滿 |
map target |
map OGGTEST.* target OGGTEST.*; |
用於指定源端和目標端表的對映關係 |
具體引數如下:
ggsci>dblogin userid odc password odc
ggsci>add replicat sm_rep exttrail ./dirdat/sm
ggsci>edit param sm_rep
引數:
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
--setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid odc, password odc
--handlecollisions
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
DBOPTIONS DEFERREFCONST
SOURCEDEFS /odc/dirdef/sm.def
map oggtest.t2,target oggtest.t2,colmap(USEDEFAULTS col1=cola,col2=colb2,col3=colc);
-- ( 表結構不同時,要加以上引數)
sql
ddlerror 955 ignore
ddlerror 1917 ignore
ddlerror 24344 ignore
ddlerror 1031 ignore
ddl include mapped
ddlerror 10655 ignore
ddlerror 10636 ignore
ddlerror 942 ignore
ddlerror 1435 ignore
REPERROR (1843, DISCARD)
ddlerror 4063 ignore
ddlerror 4043 ignore
ddlerror 2019 ignore
DISCARDFILE /odc/dirrpt/sm.dsc, APPEND megabytes 20
DISCARDROLLOVER on sunday
--DISCARDROLLOVER
--ddlerror 942 ignore
map OGGTEST.* target OGGTEST.*;
4043 物件不存在
2019 連線串不存在
注 1 : oracle 11.2.0.4 不支援 replicat 程式中的 DBOPTIONS DEFERREFCONST 引數,如果要使這個引數正常生效必須在資料庫中配置 ENABLE_GOLDENGATE_REPLICATION ,即:
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
引數介紹:
Colmap 引數
語法結構:
MAP <table spec>, TARGET <table spec>,COLMAP ([USEDEFAULTS, ] <target column> = <source expression>);
USEDEFAULTS
:源端的列名與目標端的列名相同,使用
USEDEFAULTS
target column:
目標列
source expression
:源端表示式或列
當使用 COLMAP 為源端與目標端的表的結構不相同的時候,必須使用 defgen 生成定義檔案。
當使用 COLMAP 為源端與目標端的表的結構相同的時候,僅使用 COLMAP 進行其他的功能例如轉換等,不需要定義檔案,但是必須使用 ASSUMETARGETDEFS 引數。
例如:
map oggtest.t1,target oggtest.t2,colmap(USEDEFAULTS col1=col2,col2=colb3,col3=col1);
Handlecollisions 引數
HANDLECOLLISIONS 是我們使用 goldengate 過程中常有的一個 REPLICAT 引數,該引數依賴於主鍵或唯一索引處理衝突資料,常用於初始化階段。對於無主鍵或唯一索引的表無法處理衝突,且可能導致重複記錄。注意開啟此引數則所有資料錯誤不管 reperror 如何配置均不再寫 discard 檔案,即所有資料衝突資訊被預設規則處理,沒有任何日誌 ( 則會忽略 error mapping 資料錯誤,而且不會報告到 discard 檔案 ) ,因此日常複製不建議使用該引數;可予以考慮的特殊場景為只需新增資料,無需複製歷史資料。 使用 HANDLECOLLISIONS 的幾個場景:
l target 丟失 delete 記錄 (missing delete) ,忽略該問題並不記錄到 discardfile
l target 丟失 update 記錄 (missing update)
² 更新的鍵值是主鍵 = 》 update 轉換成 INSERT ,預設情況下插入記錄不完整
² 更新的鍵值是非主鍵 = 》 忽略該問題並不記錄到 discardfile
l 重複插入已存在的主鍵值到 target 表中,這將被 replicat 轉換為 UPDATE 現有主鍵值的行的其他非主鍵列
另:該引數僅處理資料本身的 Insert/Delete 衝突,如果出現兩端對映或其它結構性問題 Replicat 程式依然會 abend ,不能被忽略 此外對於主鍵的更新操作,若在 target 使用 HANDLECOLLISIONS 且該 update 丟失,在會轉換為 INSERT 該主鍵的操作,注意預設情況下插入的記錄不完整, FETCHOPTIONS FETCHPKUPDATECOLS 將捕獲完整的 redo image 映象到 trail 中,這保證把 primary key 的更新透過 HANDLECOLLISIONS 轉換為對 target 的一個完整記錄的插入。
我們可以透過 send 命令動態取消 HANDLECOLLISIONS :
GGSCI (XIANGBLI-CN) 29> send rep2, NOHANDLECOLLISIONS
Sending NOHANDLECOLLISIONS request to REPLICAT REP2 ...
REP2 NOHANDLECOLLISIONS set for 1 tables and 0 wildcard entries
引數
語法結構:
DISCARDFILE ./dirrpt/sm.dsc, APPEND megabytes 20
表示該 discard 檔案在 ogg 安裝目錄的 dirrpt 檔案下,檔名為 sm.dsc ,該檔案的最大大小為 20M ,當該檔案達到 20M ,且還沒到清理時間時, ogg 應用會報錯:
處理方法:
Ø 清理 discard 檔案後重啟程式( ./dirrpt/sm.dsc ) ;
修改該引數,將大小改為合適的值後重啟程式。
ggsci> 14569604987950
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547506/viewspace-2926357/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle GoldenGate安裝(一)OracleGo
- Oracle GoldenGate安裝(二)OracleGo
- Oracle GoldenGate Veridata 12.2.1.4安裝配置使用全手冊OracleGo
- ORACLE GoldenGate Initial LoadOracleGo
- About the Oracle GoldenGate TrailOracleGoAI
- Oracle GoldenGate 18.1釋出OracleGo
- Oracle GoldenGate 11g官方文件Administrator’s Guide續三OracleGoGUIIDE
- GoldenGate抽取Informix資料庫安裝及配置GoORM資料庫
- Oracle GoldenGate常用引數詳解OracleGo
- Step by Step Data Replication Using Oracle GoldenGateOracleGo
- oracle安裝配置Oracle
- Oracle RUR 安裝Oracle
- Linux安裝oracleLinuxOracle
- golang oracle 安裝GolangOracle
- 使用GoldenGate 遷移Oracle到PostgreSQL/LightDBGoOracleSQL
- 11. Oracle for Linux安裝和配置—11.3. Oracle安裝和配置—11.3.1. Oracle軟體安裝OracleLinux
- 「Oracle」Oracle 資料庫安裝Oracle資料庫
- GoldenGate 12.3 MA架構介紹系列(5) - 靜默安裝Go架構
- oracle 19c 安裝、解除安裝Oracle
- 使用Oracle Grid配置Goldengate或其他第三方應用高可用OracleGo
- Oracle案例13—— OGG-01163 Oracle GoldenGate Delivery for Oracle, reprpt01.prmOracleGo
- 靜默方式安裝、升級oracle(一): 安裝oracle軟體Oracle
- oracleLinux下安裝oracleOracleLinux
- ubuntu下安裝oracleUbuntuOracle
- Oracle 12.2 OJVM安裝OracleJVM
- Docker中安裝OracleDockerOracle
- windows下oracle安裝WindowsOracle
- 安裝centOS版本oracleCentOSOracle
- Oracle靜默安裝Oracle
- Oracle Payment Interface安裝Oracle
- Oracle GoldenGate 18.1 支援的DB和OS列表OracleGo
- ORACLE GoldenGate 使用技巧-容錯處理等OracleGo
- Oracle Goldengate 12c打pus補丁OracleGo
- Oracle 11G RAC叢集安裝(3)——安裝OracleOracle
- 11. Oracle for Linux安裝和配置—11.3. Oracle安裝和配置—11.3.3. Oracle net配置OracleLinux
- Oracle OCP(35):Database 安裝OracleDatabase
- Docker-ORACLE11安裝DockerOracle
- Oracle 12C安裝Oracle