goldengate配置DDL複製
需額外安裝元件,主要如下
1
建立新使用者DDLuser並執行grant execute on utl_file to schema
為其專門分配一個表空間且autoextend=on,用於儲存ggs_ddl_hist/ggs_marker表;
編輯globals檔案edit params ./globals,新增GGSCHEMA DDLuser
2
初始化指令碼
位於OGG安裝目錄
以sysdba登陸oracle,執行marker_setup.sql/ddl_setup.sql/role_setup.sql,如果表空間被其他使用者共享第2個指令碼會失敗,第3個指令碼執行完將新建的role賦給DDLuser, grant ggs_ggsuser_role to DDLuser;
執行ddl_enable.sql啟動DDL trigger
可選:執行ddl_pin.sql,將trigger用到的PL/SQL包pin到記憶體
3
預設extract不支援而replicat支援DDL,因此需要為Extract配置DDL引數
4
開啟schema supplemental log:用於DDL replication,執行add schematrandata schema
限制
1
DDL可以被對映或過濾,但不能由datapump處理;
Datapump—對使用DDL的物件的DML操作配置passthru模式,將PASSTHRU引數放在候選表之前;不可對datapump使用DDL引數;
2
Rename table會被轉換成alter table rename,後者支援schema字首,但rename view/sequence不能被轉換,即source/target必須為同一object;
3
對於lob欄位,redo只記錄被更改的部分內容,可透過閃回查詢從基表讀取整個行;
DDL會導致閃回查詢失敗,因此執行DDL前需注意以下幾點
暫停該表所有的DML;
等待extract讀完剩餘的redo並replicat將其應用,info replicat group;
執行DDL;
恢復DML;
4
DDL只能用於like-to-like配置,故replicat必須指定assumetargetdefs引數,如果使用sourcedefs引數replicat會abend
5
Initial load期間須禁用ddl extract/replicat,完成後須將所有source sequence均執行一次nextval
6
按位元組衡量DDL語句的長度,最大約為2M,超過則會跳過並將其存入marker表;
可透過ddl_ddl2file.sql 將DDL以文字檔案儲存於user_dump_dest;
引數
DDL
不可用於datapump程式
[
{INCLUDE | EXCLUDE}
[, MAPPED | UNMAPPED | OTHER | ALL]
[, OPTYPE
[, OBJTYPE ‘
[, OBJNAME
[, INSTR ‘
[, INSTRCOMMENTS ‘
[, STAYMETADATA]
[, EVENTACTIONS (
]
DDLERROR
extract
DDLERROR [RESTARTSKIP
replicat
DDLERROR
{
{INCLUDE
[IGNOREMISSINGOBJECTS | ABENDONMISSINGOBJECTS]
DDLOPTIONS
DDLOPTIONS
[, ADDTRANDATA [ABEND | RETRYOP
[, DEFAULTUSERPASSWORDPASSWORD
[ENCRYPTKEY DEFAULT | ENCRYPTKEY
[, GETAPPLOPS | IGNOREAPPLOPS]
[, GETREPLICATES | IGNOREREPLICATES]
[, IGNOREMAPPING]
[, MAPDERIVED | NOMAPDERIVED]
[, MAPSCHEMAS]
[, MAPSESSIONSCHEMA]
[, PASSWORD ENCRYPTKEY [DEFAULT | ENCRYPTKEY
[, REMOVECOMMENTS {BEFORE | AFTER}]
[, REPLICATEPASSWORD | NOREPLICATEPASSWORD]
[, REPORT | NOREPORT]
[, UPDATEMETADATA]
[, USEOWNERFORSESSION]
DDLTABLE
指定DDL歷史表名,預設為GGS_DDL_HIST
alter table move OGG DDL support of ALTER TABLE MOVE or DBMS_REDEFINITION [ID 1265554.1]
OGG不支援線上重定義,V11.2.1.0.3之前不支援
如果source db需要執行相應操作,應採用如下方法:
1 停止基表上的所有操作
2 確保extract/replicat沒有lag然後stop
3 為extract新增tranlogoptions excludeuser
4 啟動extract/replicat
注:該方法過濾使用者
針對DDL object操作引發 ORA-01502 [ID 1358765.1]
對DDL字典表執行DDL時須先disable DDL trigger,相當拗口的一句話
比如
SQL> connect ggs/ggs
SQL> alter table ggs_marker move tablespace test;
Table altered.
SQL> connect hr/hr
SQL> create table x (a number);
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01502: index 'GGS.SYS_C0011956' or partition of such index is in unusable state
ORA-06512: at line 993
解決方案
先禁止DDL trigger,重建失效索引;
具體步驟
1 停止extract程式,確保沒有其他會話正在執行DDL,禁止DDL trigger
SQL> @ddl_disable.sql
2 重建索引
3 啟用DDL trigger
SQL> @ddl_enable.sql
4 重啟extract
資料庫升級前最好先禁止ddl trigger,完成後再開啟ID 971222.1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-762694/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用python生成oracle goldengate複製配置檔案PythonOracleGo
- GoldenGate異種資料庫之間的複製Go資料庫
- mysql複製--主從複製配置MySql
- MySQL 8 複製(五)——配置GTID複製MySql
- Postgres 流複製配置
- MySQL 8 複製(九)——組複製聯機配置MySql
- GoldenGate的基本配置流程Go
- 16.1.3 使用GTID 配置複製
- mysql5.5.20複製配置MySql
- 如何在不相容的DDL命令後修復MySQL複製MySql
- MYSQL主從複製製作配置方案MySql
- MYSQL主從複製配置(整理)MySql
- MySQL8.0.11 組複製配置MySql
- 5-5配置Mysql複製 基於日誌點的複製MySql
- 如何配置 pglogical | PostgreSQL 的流複製SQL
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- MySQL 主從複製安裝部署配置MySql
- Docker 教程十五配置MySQL 主從複製DockerMySql
- Mariadb之半同步複製叢集配置
- Redis replication主從複製原理及配置Redis
- Java引用複製、淺複製、深複製Java
- MySQL高可用之組複製技術(3):配置多主模型的組複製MySql模型
- MySQL高可用之組複製技術(2):配置單主模型的組複製MySql模型
- JS物件複製:深複製和淺複製JS物件
- 複製和引用複製
- Dcoker教程之九配置Redis主從複製Redis
- MySQL主從複製配置心跳功能介紹MySql
- poi操作excel,複製sheet,複製行,複製單元格,複製styleExcel
- 淺複製與深複製
- GoldenGate抽取Informix資料庫安裝及配置GoORM資料庫
- MySQL 8 複製(三)——延遲複製與部分複製MySql
- Mysql Master-slave複製簡單配置記錄MySqlAST
- mysql主從複製配置與問題解決MySql
- Mongodb 配置複製集,並啟用安全校驗MongoDB
- python 淺複製、深複製坑Python
- python 深複製和淺複製Python
- JavaScript 淺複製和深複製JavaScript
- Oracle GoldenGate Veridata 12.2.1.4安裝配置使用全手冊OracleGo
- 複製