博文結構圖以下:算法
|
IPsql |
系統數據庫 |
Oracle版本數組 |
OGG版本緩存 |
源端安全 |
172.16.10.16/36服務器 |
RHEL6.5網絡 |
oracle11204session |
12.1架構 |
目標端 |
172.16.10.154 |
RHEL6.5 |
oracle11204 |
12.1 |
同步用戶爲:hr。
GoldenGate數據同步所需的網絡帶寬是目前各類技術中最低的,複製全庫數據時,一般GoldenGate隊列文件大小與數據庫日誌大小的比例爲1:4,GoldenGate網絡傳輸壓縮比例爲1:8,TCP/IP網絡傳輸效率最高爲0.7;
–根據以上數據估算,以業務高峯期每小時產生50GB數據庫日誌爲例,GoldenGate維持秒級數據
同步延遲的帶寬要求爲:
50 * 1024 (MB/小時) * 8 (每字節8位) / 3600 (秒/小時) / 4 (隊列/日誌比例)
/ 8 (傳輸壓縮比例) / 0.7 (網絡傳輸效率) = 5.08 Mbps
一、儘可能避免OGG 雙向同步,ogg雙活安裝須要業務避免更改同一行記錄。
二、配置Extract,爲了不數據丟失,在啓動extract 以前,必須確保全部open 的事務都已經完成。(或者在配置時,中止全部中間件以及監聽業務)
三、特別大的表,或者操做太頻繁的表,建議單獨拆成多組抽取,還原進程。
四、TRAIL是否壓縮,以及到期時間,字符集設置,ogg管理密碼是否加密。
五、自動過濾重複時段的數據衝突,用於不能停機執行初始化,打開該參數後不會將數據錯誤報到discard文件中。
六、rac ogg 須要安裝到共享目錄上。
七、源庫和目標庫設置參數ENABLE_GOLDENGATE_REPLICATION 爲true
(In Oracle 11.2.0.4 you will need to set ENABLE_GOLDENGATE_REPLICATION to TRUE in the init.ora parameter file for any source or target database)。
8、安裝的全部主機儘可能時間保持一直。
九、使用TRANLOGOPTIONS參數與DBLOGREADER選項參數文件若是RDBMS是Oracle 11.1.0.7或Oracle 11.2.0.2或更高版本11g R2版本。
十、DDL 數據庫版本高於10G,不須要關閉回收站。
在經典捕獲模式下,Oracle GoldenGate Extract進程從源庫上的Oracle重作或歸檔日誌文件或備庫上的歸檔日誌中捕獲數據更改。
經典捕捉徹底支持大多數Oracle數據類型,對複雜數據類型提供有限的支持。經典捕獲是最初的Oracle GoldenGate捕獲方法。對於Oracle GoldenGate支持的任何源Oracle RDBMS,您可使用經典捕獲,但多租戶容器數據庫除外。
NOLOGGING
VARRAY,源數據庫兼容性設置在11.2.0.0.0如下的LOB。SECUREFILE
源數據庫兼容性設置爲低於11.2.0.0.0的LOB支持。NOLOGGING
源數據庫兼容性設置爲低於11.2.0.0.0的LOB支持。
在集成捕獲模式下,Oracle GoldenGate Extract進程直接與數據庫登陸服務器進行交互,以邏輯更改記錄(LCR)的形式接收數據更改。圖顯示了集成捕獲模式下的提取配置。
與經典捕捉相比,集成捕捉支持更多的數據和存儲類型,支持更加透明。
如下是集成捕獲的一些額外好處:
徹底支持:爲了支持全部Oracle數據和存儲類型,源數據庫的兼容性設置必須至少爲11.2.0.3,集成解壓縮11.2.x(My Oracle Support文檔ID 1557031.1Opens a new window)的11.2.0.3數據庫特定捆綁軟件修補程序。
要在不安裝DDL支持對象的狀況下支持DDL捕獲,源數據庫必須至少爲Oracle 11.2.0.4或更高版本。對於較早的數據庫版本,須要DDL支持對象。
有限的支持:能夠在11.2.0.3下挖掘數據庫上對兼容性小於11.2.0.3的源數據庫使用集成捕獲,但在此模式下,SECUREFILELOB,XML列,透明數據加密和UDT基於數據庫版本和兼容性。數據庫必須具備適用於集成提取11.2.x(Doc ID 1557031.1Opens a new window)的11.2.0.3數據庫特定捆綁軟件修補程序。數據庫必須與源數據庫版本相同(或更高)的數據庫版本(最低爲11.2.0.3)。
Integrated Replicat異步應用事務。不具備相互依賴性的事務能夠安全地執行並按順序執行,以實現快速吞吐量。具備依賴關係的事務保證以與源上相同的順序應用。
入站服務器中的讀取器進程根據目標數據庫中定義的約束(主鍵,惟一外鍵)計算工做負載中事務之間的依賴關係。障礙事務和DDL操做也是自動管理的。協調員進程協調多個事務並在應用服務器之間維護訂單。
若是入站服務器不支持配置的功能或列類型,則Replicat與入站服務器分離,等待入站服務器在其隊列中完成事務,而後經過OCI 以直接應用模式將事務應用於數據庫。應用直接事務後,複製器在集成模式下恢復處理。
Replicat在直接模式下應用如下功能:
SQLEXEC
參數TABLE
或MAP
參數EVENTACTIONS
處理USENATIVEOBJSUPPORT
捕獲UDT,則集成的Replicat將將其應用於入站服務器,不然將由Replicat直接處理。
要使用集成的Replicat:
在非集成模式下,Replicat進程使用標準SQL將數據直接應用到目標表。在這種模式下,Replicat的操做以下:
閱讀Oracle GoldenGate跟蹤。
執行數據過濾,映射和轉換。
構造表明源數據庫DML或DDL事務的SQL語句(按提交順序)。
經過Oracle調用接口(OCI)將SQL應用於目標。
使用不一樣的捕獲和應用模式,能夠一塊兒使用如下捕捉和應用模式:
經典捕獲(Oracle或非Oracle源)和非集成的Replicat
經典捕捉(Oracle或非Oracle源)和集成的Replicat
集成捕獲和非集成複製
集成捕獲和集成Replicat
您能夠在同一個源Oracle GoldenGate實例內同時使用集成的捕獲和經典捕獲,而且能夠在同一個目標Oracle GoldenGate實例內同時使用集成的Replicat和非集成的Replicat。此配置須要仔細將對象放置在相應的進程組中,由於在經典和集成捕捉模式之間以及在非集成和集成的Replicat模式之間沒有DDL或DML的協調。每一個提取組必須根據表數據類型和屬性處理適合處理模式的對象。一個Extract中沒有對象能夠對另外一個Extract中的對象具備DML或DDL依賴性。Replicat配置必須應用相同類型的隔離。
Oracle版本支持的推薦Oracle GoldenGate配置是在Oracle源上使用一個集成捕獲,在Oracle目標上使用每一個源數據庫上的一個集成Replicat。集成捕獲比傳統捕獲更全面地支持某些數據類型。一個集成的Replicat配置經過入站服務器支持全部Oracle數據類型,或者在必要時經過切換直接應用來支持全部Oracle數據類型,並保持源事務完整性。您能夠根據須要將並行度設置調整到所需的應用性能級別。
磁盤空間要求:Linux 12c 須要至少 521M 磁盤空間 OUI安裝;rac OCFS 官方建議支持自動faliover。
內存要求:oracle官方建議在大多數狀況下,用戶不須要更改默認的內存管理配置Oracle GoldenGate。(In most cases, users need not change the default Oracle GoldenGate memory management configuration.)
網絡要求:帶寬多大參考1.2;Oracle GoldenGate須要一些毫無保留的和不受限制的TCP / IP端口的,它的數量取決於OGG的進程的數量和類型。
操做系統用戶權限要求:安裝在Unix操做系統下,安裝Oracle GoldenGate的用戶必須
在Oracle GoldenGate安裝目錄的寫權限。Oracle GoldenGate提取,複製,和經理必須操做過程有權限讀取、寫入和刪除文件的操做系統用戶。
數據庫要求:ORACLE 數據庫必須爲歸檔模式。
RAC環境要求:
一、將Oracle GoldenGate Manager流程(和惟一的管理器)註冊爲集羣管理的資源, Manager必須惟一的Oracle GoldenGate進程,即集羣管理軟件啓動中止,由於它是管理全部其餘進程的父進程,將Oracle GoldenGate集成到集羣中
二、若是集羣使用一個虛擬IP地址(如Oracle Clusterware),您可能須要爲管理程序獲取可用的固定IP地址。VIP必須公共子網上的一個可用的IP地址,不能肯定經過DHCP。在提取數據泵的參數文件中,指定其中的VIP遠程管理器做爲RMTHOST參數的輸入值。其餘的
訪問Manager的GoldenGate產品也應該使用VIP。
三、確保集羣中的全部節點具備相同的兼容參數
設置。
四、當您配置管理器時,添加AUTOSTART和AUTORESTART參數該管理器將自動啓動複製過程。在須要的時候,能夠控制提取、複製和其餘Oracle GoldenGate進程GoldenGate用戶界面。
五、只在一個節點上安裝共享驅動器。這阻止了進程的存在開始另外一個節點。在全部節點上使用相同的掛載點。
六、能夠專門爲OGG 添加一個服務。
OGG 12.1支持的類型:
■ BINARY_DOUBLE
■ BINARY_FLOAT
■ CHAR
■ DATEINTERVAL DAY TO SECOND
■ INTERVAL YEAR TO MONTH
■ NCHAR
■ NUMBER
■ NVARCHAR2
■ RAW
■ TIMESTAMP
■ TIMESTAMP WITH TIME ZONE
■ TIMESTAMP WITH LOCAL TIMEZONE
■ UDTs
■ VARCHAR/VARCHAR2
■ NUMBER up to the maximum size permitted by Oracle
■ BINARY FLOAT
■ BINARY DOUBLE
■ CHAR
■ VARCHAR2
■ LONG
■ NCHAR
■ NVARCHAR2
■ NCHAR and NVARCHAR2 multi-byte character data types
■ Multi-byte data stored in CHAR and VARCHAR2 columns
■ RAW
■ LONG RAW
■ DATE
■ TIMESTAMP
注意:
Oracle GoldenGate不支持負的日期。
■間隔一天,間隔年只是若是目標大小的支持列等於或大於源的列。
■Oracle GoldenGate支持捕獲和時間戳和時間複製帶爲UTC偏移(timestamp 2011-01-01 8:00:00 - 8」)。
■時間戳和時區的TZR(區域ID)是複製支持數據的變化,而不是初始荷載,爲返回,或操做的地方必須從數據庫中提取列。在這些狀況下,區域id是當選定列時,由數據庫轉換爲時間偏移量。複製將時間戳複製爲具備時間偏移值的日期和時間數據。
■ CLOB
■ NCLOB
■ BLOB
■ SECUREFILE and BASICFILE
Oracle GoldenGate不支持過濾、列映射,或操縱大於4K的大對象。
支持如下XML類型:
■集成捕獲模式,Oracle GoldenGate支持XMLType列XMLType表存儲爲XML CLOB,XML和XML二進制對象關係。
■經典的捕獲模式,Oracle GoldenGate支持XMLType列存儲XML和XML二進制字符
用戶定義或抽象類型
Oracle GoldenGate支持用戶定義類型(UDT)或抽象數據類型(ADT)
源和目標對象具備相同的結構。 模式名稱能夠是
不一樣。
支持的通常限制 - 集成和經典捕獲模式
■基於重作的支持大多數屬性類型,但能夠從源代碼提取
當UDT包含表時:
– Nested Table
– SDO_TOPO_GEOMETRY
– SDO_GEORASTER
■ Fetch-based does not support UDT that contains:
– ANYDATA
– TIMESTAMP WITH TIMEZONE
– TIMESTAMP WITH LOCAL TIMEZONE
– INTERVAL YEAR TO MONTH
– INTERVAL DAY TO SECOND
– BINARY FLOAT
– BINARY DOUBLE
■ Oracle GoldenGate GG does not support UDTs that contain:
Details of Support for Oracle Data Types
System Requirements and Preinstallation Instructions 1-17
– CFILE
– BFILE
– REF
– OPAQUE (with exception of XMLType and ANYDATA
Oracle GoldenGate支持對常規表進行的如下DML操做,
索引組織表,彙集表和實例化視圖。
■插入
■更新
■刪除
■關聯交易控制操做
提示:您可使用DBA_GOLDENGATE_SUPPORT_MODE數據字典
查看以顯示有關Oracle GoldenGate級別的信息捕獲數據庫中的表的進程支持。
Oracle GoldenGate支持包含任意數量行的表。
■一行長度最多可達4 MB。若是Oracle GoldenGate配置爲包含
在其處理範圍內的列的先後圖像,爲4 MB最大長度適用於完整的圖像加長度的總長度
的後圖像。例如,若是列上有UPDATE操做被用做行標識符,處理先後圖像
總共不能超過4 MB。列以前和以後的圖像也是必需的這不是行標識符,而是用做衝突的比較列檢測和分辨率(CDR)。容許超過4 KB數據的列,例如LOB和LONG,只有前4 KB的數據存儲在行和有助於最大行長4MB。
■Oracle GoldenGate支持每一個表的最大列數由數據庫支持。
– Range partitioning
– Hash Partitioning
– Interval Partitioning
– System Partitioning
– Composite Partitioning
– Virtual Column-Based Partitioning
– Reference Partitioning
– List Partitioning
不包括如下類型的表(Oracle GoldenGate supports tables that contain only one column, except when the column contains one of the following data types)
– LOB
– LONG
– Nested table
– UDT
– VARRAY
– XMLType
當源數據庫是Oracle 11.2.0.4或更高版本的時候,提取操做是集成的模式,DDL捕獲支持集成到數據庫日誌挖掘服務器中不須要使用DDL觸發器。必須設置數據庫參數11.2.0.4.0兼容性。在集成捕獲模式中,提取支持DDL包括基於密碼的列加密。
--注意: Password-based column encryption in DDL is not supported in classic capture mode.
– clusters
– directories
– functions
– indexes
– packages
– procedure
– tables
– tablespaces
– roles
– sequences
– synonyms
– triggers
– types
– views
– materialized views
– users
Oracle editionbased Redefinition(EBR)數據庫複製的Oracle DDL是
支持如下Oracle數據庫對象的集成提取:
– functions
– library
– packages (specification and body)
– procedure
– synonyms
– types (specification and body)
– views
EBR不支持使用DDL觸發器。
■GoldenGate支持DDL操做4 MB的大小。GoldenGate用字節來度量DDL語句的大小,而不是字符。這大小限制包括包、過程和函數。實際的大小限制DDL的支持是近似的,由於大小不只包括語句文本,但也包括Oracle GoldenGate的維護開銷對象名稱的長度、DDL類型和其餘特徵在內部保存DDL記錄。
■GoldenGate支持全局臨時表(GTT)DDL操做要清晰可見,這樣它們就能夠被複制。您必須設置DDLOPTIONS容許這個操做的參數,由於它不是默認設置的
集成和經典的捕獲模式
Oracle GoldenGate不支持如下數據類型。
■對於不具備VARRAYS的數據類型,基於ANYDATA fetch的列支持
包括嵌入在這些數據類型中的命名集合和VARRAYS
■ANYDATASET
■ANYTYPE
■BFILE
■MLSLABEL
■ORDDICOM
■TIMEZONE_ABBR
■URITYPE
■包含不受支持的Oracle數據類型的UDT
■Oracle GoldenGate不支持標識列數據的複製或有效時間時間列數據。
以及calssical不支持的capture 類型,如:LONG VARCHAR,XML columns stored as
Object-Relational,Basic Compression, OLTP-Compression, Exadata Hybrid Columnar
Compression,Invisible(隱形)columns。
索引組織表的不支持限制,這些適用於經典拍攝模式。
■啓用密鑰壓縮的IOT(由COMPRESS關鍵字指示key_compression子句)在經典捕獲模式下不受支持,可是支持集成捕獲模式。
不支持的視圖,這些限制適用於集成和經典的捕獲模式。
■GoldenGate支持捕獲從一個視圖提取初始載荷模式(直接從源視圖獲取,而不是重作日誌)。
■GoldenGate不捕獲變動數據從一個視圖,可是它支持從視圖的底層表中捕獲。
■GoldenGate能夠複製到一個視圖可更新,只要視圖是固有的。源表的結構和目標視圖必須是相同的
在經典的和集成的模式中獲得了物化視圖
如下的侷限性。
■物化視圖不支持建立ROWID。
對Oracle DML中對象和操做的支持細節爲Oracle數據庫安裝和配置Oracle GoldenGate
■能夠建立物化視圖日誌與ROWID。
■源表必須有一個主鍵。
■截斷的物化視圖不支持。您可使用DELETE FROM聲明。
■DML(但不是DDL)從一個完整的刷新物化視圖的支持。若是DDL
須要支持此特性,打開Oracle GoldenGate支持案例。
■爲Replicat Create MV命令必須包括更新條款
■物化視圖能夠被複制或底層基表(s),但不是二者都有
不支持的集羣表:
在集成和經典的捕獲模式中支持索引集羣,在兩種模式中都不支持散列集羣。在經典的捕獲模式下:
■加密和壓縮羣集表不支持在經典的捕捉。
■提取在經典的捕獲模式捕獲DML更改索引集羣表,若是集羣因子大小保持不變。任何致使集羣大小的DDL增長或減小可能致使提取到該表上的後續DML不正確。
不支持的序列,這些適用於集成和經典的捕獲模式。
■GoldenGate不支持複製的序列值active - active雙向配置。
■緩存大小和源和目標序列的增量區間必須的是相同的。緩存能夠是任何大小,包括0(NOCACHE)。
■序列能夠設置爲循環週期,但源和目標數據庫必須以一樣的方式設置。
以下DML在經典或集成捕獲模式中都不支持:
■REF
■序列值在一個active - active雙向配置
■Database Replay
■建立外部表
■無形的列不支持經過經典或綜合提取。
如下是經典捕獲模式中不支持:
■Exadata混合柱狀壓縮
■捕獲與OLTP表壓縮表
■捕獲與壓縮的表空間和表建立或修改
■捕獲從加密和壓縮羣集表
■無形的列
■分佈式事務。在Oracle版本11.1.0.6和更高版本中,能夠捕獲這些事務若是您經過如下方式使它們不分佈命令,要求從新啓動數據庫。
改變系統設置_CLUSTERWIDE_GLOBAL_TRANSACTIONS = FALSE;
■RAC分佈式XA和PDML分佈式事務
■enabled-tables版本
■標識列
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External OGGI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
Special schemas:
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
■ DDL on nested tables.
■ DDL on invisible columns.
■ DDL on identity columns
更改數據庫和更改系統(這些不被認爲是DDL)使用集成字典,您能夠複製ALTER DATABASE默認版本更改可插入數據庫的默認版本。全部其餘的改變(PLUGABLE)數據庫命令將被忽略。
■備用數據庫的DDL。
■數據庫連接DDL。
■DDL建立表的閃回存檔條款和DDL建立,alters,或者刪除flashback數據歸檔自己。DML在表中閃回支持檔案。
■經典捕獲模式不支持DDL,包括密碼列加密。
Oracle對象名稱在默認狀況下是不敏感的,可是能夠區分大小寫,使用雙引號。(GoldenGate)支持大小寫敏感性。
col CONSTRAINT_NAME for a30
select owner,table_name,CONSTRAINT_TYPE,DEFERRED from dba_constraints where DEFERRED='DEFERRED';
按照用戶同步可以使用以下語句:
col CONSTRAINT_NAME for a30
select owner,table_name,CONSTRAINT_TYPE,DEFERRED from user_constraints where DEFERRED='DEFERRED';
col TABLE_NAME for a50
SELECT owner, TABLE_NAME,CONSTRAINT_TYPE FROM dba_constraints t WHERE NOT EXISTS(SELECT table_name FROM dba_constraints c WHERE constraint_type in('P','U') AND t.table_name=c.table_name);
按照用戶同步可以使用以下語句:
col TABLE_NAME for a50
SELECT owner, TABLE_NAME,CONSTRAINT_TYPE FROM user_constraints t WHERE NOT EXISTS(SELECT table_name FROM User_constraints c WHERE constraint_type in('P','U') AND t.table_name=c.table_name);
set lin 150
set pages 100
col table_name for a30
col owner for a10
col column_name for a30
select owner,table_name,column_name,data_type from dba_tab_columns where owner in ('XXX') and data_type in ('ANYDATA','ANYDATASET','ANYTYPE','BFILE','MLSLABEL','ORDDICOM','REFs','TIMEZONE_ABBR','URITYPE','UDT');
或者:
select owner,table_name,column_name,data_type from dba_tab_columns where data_type in ('ANYDATA','ANYDATASET','ANYTYPE','BFILE','MLSLABEL','ORDDICOM','REFs','TIMEZONE_ABBR','URITYPE','UDT');
select owner,table_name from dba_tables where compression='ENABLED';
或者按用戶查找:
select owner,table_name from dba_tables where owner in ('HR') and compression='ENABLED';
COL OBJECT_NAME FOR A30
select object_name,owner from dba_objects where object_type='MATERIALIZED VIEW';
或者按照用戶查找:
COL OBJECT_NAME FOR A30
select object_name,owner from dba_objects where owner in('hr') and object_type='MATERIALIZED VIEW';
註釋:源庫和目標庫都安裝。
相關目錄,並把安裝軟件上傳上去:
官方建議軟件安裝到Oracle Cluster File System (OCFS)卷,而不是安裝到本地直接目錄。
[root@ogg1 ~]# cd /ogg/
[root@ogg1 ogg]# mkdir home
[root@ogg1 ogg]# mkdir ogginstall
[root@ogg1 ogg]# chown -R oracle:oinstall /ogg/
注意:ogg安裝目錄要爲空。
LINUX 環境下運行runInstaller
以上所建立的目錄的做用:
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 |
當事物所須要的內存超過已分配內存時,默認存儲在這個目錄 |
查看以及修改語句以下(12.1 ogg官方安裝文檔54頁):
SELECT supplemental_log_data_min, force_logging FROM v$database;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE FORCE LOGGING;
SELECT supplemental_log_data_min, force_logging FROM v$database;
ALTER SYSTEM SWITCH LOGFILE;
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES -------------若不是YES,須要打開
打開語句:
SQL> alter database add supplemental log data;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> select force_logging from v$database;
FOR
---
YES
SQL> ALTER DATABASE FORCE LOGGING;
一、確認全部表的狀態是否logging,把nologing變成logging。
select owner,table_name from dba_tables where owner in ('HR') and logging='NO';
OWNER TABLE_NAME
------------------------------ ------------------------------
HR DEPARTMENTS
HR REGIONS
HR JOBS
HR EMPLOYEES
HR JOB_HISTORY
HR LOCATIONS
6 rows selected.
二、打開表級附加日誌
select 'alter table '||owner||'.'||table_name||' logging;' from dba_tables where owner in ('HR') and logging='NO';
'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'LOGGING;'
--------------------------------------------------------------------------------
alter table HR.DEPARTMENTS logging;
alter table HR.REGIONS logging;
alter table HR.JOBS logging;
alter table HR.EMPLOYEES logging;
alter table HR.JOB_HISTORY logging;
alter table HR.LOCATIONS logging;
三、確認已經打開標記附加日誌。
select owner,table_name from dba_tables where owner in ('HR') and logging='NO';
注意:
Oracle 11.2.0.4 以及以後版本數據庫,源庫以及目標庫必須開啓參數。
ENABLE_GOLDENGATE_REPLICATION
一、啓用參數 ENABLE_GOLDENGATE_REPLICATION
alter system set enable_goldengate_replication=true;
SQL> show parameter gold
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_goldengate_replication boolean FALSE
SQL> alter system set enable_goldengate_replication=true;
二、設置閃回查詢
若是源庫須要開啓閃回查詢,建議增大undo 表空間的大小以及保留時間。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
例如:
alter system set undo_retention=1800 scope=both;
alter tablespace UNDOTBS1 add datafile '+datadg' size 2048m;
GRANT FLASHBACK ANY TABLE TO db_user
GRANT FLASHBACK ON schema.table TO db_user;
三、須要注意的參數
STREAMS_POOL_SIZE,MAX_SGA_SIZE,PARALLELISM
GoldenGate默認狀況下,一個完整的採集提取請求的服務器運行日誌挖掘max_sga_size 1GB和平行度2。所以,若是您運行三個提取在同一數據庫實例中的集成捕獲模式中,至少須要3 GB的分配給流池的內存。做爲最佳實踐,保留25%的流
池。例如,若是在集成捕獲模式中有三個提取,則設置
streams_pool_size如下:
3 GB +(3 GB×0.25)= 3.75 GB
注意:要按照實際狀況分配大小(目標庫、源庫執行如下操做)。
建立表空間是爲了DDL同步,以及OGG查詢。
create tablespace ogg datafile '+DATADG' size 2048M autoextend on next 200m;
create user ogg identified by ogg default tablespace ogg;
SQL> create tablespace ogg datafile '+DATADG' size 2048M autoextend on next 200m;
SQL> create user ogg identified by ogg default tablespace ogg;
--受權,DBA權限在安裝成功後能夠收回:
11.2.0.3 以後的受權(參照OGG12.1安裝文檔63頁):
GRANT CONNECT TO ogg;
GRANT ALTER ANY TABLE TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT LOCK ANY TABLE TO ogg;
GRANT RESOURCE TO ogg;
GRANT DBA TO ogg;
GRANT SELECT ANY TRANSACTION TO ogg;
exec dbms_goldengate_auth.grant_admin_privilege('ogg');
GRANT UNLIMITED TABLESPACE TO ogg;
GRANT CONNECT TO ogg;
GRANT ALTER ANY TABLE TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT LOCK ANY TABLE TO ogg;
GRANT RESOURCE TO ogg;
GRANT DBA TO ogg;
GRANT SELECT ANY TRANSACTION TO ogg;
exec dbms_goldengate_auth.grant_admin_privilege('ogg');
--Capture from Data Vault,Capture from Virtual Private
Database, Capture redacted data
sys.dbms_internal_clkm 複製Oracle Transparent Data Encryption (TDE)時須要.
--安裝成功後能夠收回dba權限,可是要授予UNLIMITED TABLESPACE權限。
GRANT UNLIMITED TABLESPACE TO ogg;
或者alter user ogg quota unlimited on users;
--在ddl_setup時報錯,經過授予如下權限解決。
grant create any table to ogg;
grant create any view to ogg;
grant create any procedure to ogg;
grant create any sequence to ogg;
grant create any index to ogg;
grant create any trigger to ogg;
grant create any view to ogg;
來自(OGG 12.1 官方文檔131頁13.7)
啓用 ddl 支持
默認狀況下, ddl 複製支持的狀態以下:
源庫中:默認狀況下禁用oracle GoldenGate ddl 支持。必須使用 ddl 參數配置提取以捕獲 ddl。
目標庫上,:默認狀況下啓用 ddl 支持, 以維護複製的事務性數據。默認狀況下, Replicat 將處理全部 ddl跟蹤所包含的操做。若是須要, 可使用 ddl 參數來配置 Replicat 以忽略或篩選 ddl 操做。
■ just DDL changes
■ just DML changes
■ both DDL and DML
什麼時候使用基於 ddl 捕獲,必須使用基於 ddl 捕獲時, 提取將在如下操做配置:
提取操做的經典捕獲模式對任何版本的 oracle 數據庫。提取操做以集成模式對 oracle 數據庫版本11.2.0.3 或早.若是提取將在集成模式下運行11.2.0.4 或更高版本的 oracle數據庫, 則不須要 ddl 觸發器。默認狀況下, 將處理 ddl 捕獲透明地經過數據庫 logmining 服務器。若是提取將從多容器數據庫捕獲, 集成捕獲模式必須與本機 ddl 捕獲方法一塊兒使用。
classcial 模式安裝DDL對象(OGG 安裝文檔222,223頁):
註釋:從OGG 安裝目錄下執行以下腳本。
1.肯定DDL SCHEMA
須要配置在GLOBALS中:GGSCHEMA ogg
2.授予ogg讀寫操做系統上的文本文件權限
GRANT EXECUTE ON UTL_FILE TO ogg;
3.準備表空間
爲ogg_DDL_HIST、 ogg_MARKER等表準備表空間,若是空間不足,會致使數據庫沒法進行DDL,從而影響業務。
SQL> alter user ogg default tablespace ogg;
4.退出全部ORACLE會話,不容許新會話產生。退出全部Oracle會話,包括那些SQL * Plus,那些業務應用程序,Oracle GoldenGate進程的應用程序,以及任何其餘應用程序使用Oracle的軟件。 防止任何新會話的開始。
5.sqlplus "/as sysdba" ----必須sysdba連入 ,運行SQL * Plus並以具備SYSDBA權限的用戶身份登陸。 這個特權是須要在SYS模式中安裝DDL觸發器,這是Oracle須要的。
6.@marker_setup
--該腳本安裝marker系統,這部分爲啓用DLL支持所必備,執行該腳本時會提示輸入GoldenGate管理賬戶schema名。
7. @ddl_setup
執行該腳本要確認關閉掉全部ORACLE會話,以及提交相應問提交的事物。
注意:若是ddl_setup.sql將失敗此模式的表空間由任何其餘用戶共享,可是,若是不行,那不會失敗默認表空間沒有將AUTOEXTEND設置爲ON,建議使用設置。
8. @role_setup
--該操做會重建DDL同步所需的權限,授予GoldenGate中的DDL對象以DML權限。
提示你執行一條GRANT語句,執行便可!
GRANT GGS_GGSUSER_ROLE TO ogg;
9. @ddl_enable.sql
--啓用DDL觸發器,以捕獲DDL操做。
10. @ddl_pin.sql ogg
先執行@?/rdbms/admin/dbmspool.sql (DDL 性能工具)
要提升DDL觸發器的性能,能夠經過ddl_pin腳本,該腳本會將觸發器使用的包加載到內存,以此提升效率。該腳本執行時須要引用dbms_shared_pool系統包,所以在使用ddl_pin腳本前須要確保dbms_shared_pool可用。執行ddl_pin腳本須要指定GoldenGate管理員schema名稱.
11. @ddl_status.sql
驗證是否由該對象建立的每一個對象Oracle GoldenGate DDL支持特性的存在和存在正常運做。(Oracle安裝).
1. Run GGSCI.
2. STOP EXTRACT <group>
3. STOP REPLICAT <group>
4. Run SQL*Plus and log in as a user that has SYSDBA privileges.
5. Run the ddl_disable script.
6. Run the ddl_remove script,
7. Run the marker_remove script.
8. Run the marker_setup script.
9. Run the ddl_setup script.
10. Run the role_setup script.
11. Grant the role to all Oracle GoldenGate users
12. Run the ddl_enable.sql script.
1. Run GGSCI.
2. STOP EXTRACT <group>
3. STOP REPLICAT <group>
4. Run SQL*Plus and log in as a user that has SYSDBA privileges.
5. Run the ddl_disable script .
6. Run the ddl_remove script
7. Run the marker_remove script.
查看OGG 12.1.2 官方安裝文檔102-103頁。
在 Source 和 target 都得執行,
grant dba to ogg;
ggsci
EDIT PARAMS ./GLOBALS --後面參數配置
GGSCHEMA ogg
SQL> @sequence.sql
在 source 系統裏
GRANT EXECUTE on DDLuser.updateSequence TO DBLOGINuser;
GRANT EXECUTE on ogg.updateSequence TO ogg;
在 target 系統裏
GRANT EXECUTE on DDLuser.replicateSequence TO Replicatuser;
GRANT EXECUTE on ogg.replicateSequence TO ogg;
源庫執行以下:
ALTER TABLE sys.seq$ ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
DDL 支持配置完畢,就能夠支持 sequences (CREATE, ALTER, DROP, RENAME)
操做的複製的,但若是隻是單純的想複製 sequence 的話,能夠不配置 DDL 支持,
只須要 sequence 參數就 行。
GGSCI> dblogin userid ogg@source,password ogg
FLUSH SEQUENCE <owner.sequence> 或者 wildcard
在 initial synchronization 以後,必須執行的就是在 target 上對沒一個
sequence 至少取一次 nextval
參照OGG安裝文檔154頁。
注意:在容許新的DDL或者DML將發行的同一對象(S)做爲原始DDL,讓原來的DDL時間要複製到遠程系統,而後再由提取該系統。這將確保操做到達正確的複製對原系統,防止DML元數據不一致形成的錯誤。
在一個級聯配置傳播DDL EXT進程配置。
DDLOPTIONS GETREPLICATES, IGNOREAPPLOPS
序列複製中的問題:
Cycle的影響
達到maxvalue後,會切換成minvalue值,可是有序列源和目標端算法限制,目標端進程必須在一直執行nextval,直到maxvalue,因此表象就是replicat一直hang的狀態,checkpoint不向前移動。
此時建議:
複製排除recycle的序列或者臨時忽略sequence的複製。
或者加參數DBOPTIONS _MAXSEQUENCEDISTANCE <n> n – 源端和目標端seq的值相差多少能夠ignore;
現有的目標上(已經配置了序列複製)同時又配置了extract(配置了ddl setup),extract會很
慢,建議修改seq的cache大小,或者配置DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH來
減小ALTER SEQUENCE CYCLE|NOCYCLE的產生。
查看OGG 12.1.2 官方安裝文檔52-53頁
登錄選項 |
GGSCI命令 |
做用 |
用例 |
模式級補充無條件登陸全部支持的日誌記錄列 |
ADD SCHEMATRANDATA with ALLCOLS option |
無條件啓用補充記錄全部的表中的列, 對於全部的表在一個模式(用戶)。 |
用於集成複製當並行性>1, 源和目標有不一樣調度列。 |
模式級補充記錄,最小設置 |
ADD SCHEMATRANDATA with NOSCHEDULINGCOLS option |
無條件啓用補充記錄主鍵和全部有效的惟一索引模式中的表。 |
僅用於非集成Replicat。 這是最低要求模式級日誌記錄。 |
表級補充內置日誌記錄支持綜合Replicat |
ADD TRANDATA |
無條件啓用補充記錄主鍵和有條件補充記錄惟一鍵和外鍵表。全部這些鍵一塊兒被稱爲調度列。 |
全部Oracle都須要GoldenGate 用例除非模式級別補充記錄是用過的。 |
表級補充無條件登陸全部支持的日誌記錄列 |
ADD TRANDATA with ALLCOLS option |
無條件啓用補充記錄全部的表的列。 |
用於集成複製當並行性更大時比1和源和 目標有所不一樣調度列。 |
表級補充記錄,最小設置 |
ADD TRANDATA with NOSCHEDULINGCOLS option |
無條件啓用補充記錄主鍵和全部表的有效惟一索引。 |
僅用於非集成Replicat。 這是最低要求表級日誌記錄。 |
ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]
schema
要爲其添加補充鍵信息的架構。不要使用通配符。要在多租戶容器數據庫的多個可插拔數據庫中爲模式發出ADD SCHEMATRANDATA,請使用DBLOGIN單獨登陸到每一個可插入數據庫,而後發出ADD SCHEMATRANDATA。有關詳細信息,請參閱DBLOGIN。
■ALLCOLS
可用於啓用無條件的所有日誌記錄的表的列,並適用於全部當前和將來的表給定模式。用於在源和目標時支持集成的Replicat表有不一樣的調度列。 (計劃列是主要的鍵,惟一鍵和外鍵。)
■NOSCHEDULINGCOL
僅記錄主鍵的值而且所有有效稍後添加的模式和新表中的現有表的惟一索引。這是架構級日誌記錄的最低要求級別,僅適用於
以非整合模式複製。
在如下示例中,該命令啓用默認的補充日誌記錄
finance模式。
ADD SCHEMATRANDATA finance
在如下示例中,該命令僅啓用補充日誌記錄
hr模式的主鍵和有效的惟一索引。
ADD SCHEMATRANDATA hr NOSCHEDULINGCOLS
ADD TRANDATA command.
ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS |
NOSCHEDULINGCOLS]
■ALLCOLS
能夠對全部列進行無條件的補充記錄的表。用於在源和目標時支持集成的Replicat表有不一樣的調度列(計劃列是主要的鍵,惟一鍵和外鍵)。
■NOSCHEDULINGCOLS
僅在非集成模式下對Replicat有效。它問題具備ADD補充日誌數據的ALTER TABLE命令
子句適用於爲其定義的惟一約束類型沒有惟一約束的表或全部列。這個命令知足Oracle GoldenGate的基本表級日誌記錄要求不會使用模式級日誌記錄。
■COLS
列記錄KEYCOLS子句所需的非鍵列用於過濾和操縱。括號是必需的。這些列除了主鍵以外,還將被記錄,除非NOKEY選項也是當下。
■NOKEY
防止記錄主鍵或惟一鍵。須要一個TABLE和MAP參數中的KEYCOLS子句和ADD中的COLS子句TRANDATA命令記錄備用KEYCOLS列。
4.若是將ADD TRANDATA與COLS選項一塊兒使用,則爲其建立惟一索引
目標上的列以優化行檢索。若是您正在記錄這些列
做爲KEYCOLS子句的替代鍵,請注意將KEYCOLS子句添加到
配置Oracle GoldenGate時的TABLE和MAP語句流程。
ggsci>dblogin userid ogg,password ogg(或者dblogin userid ogg@ogg1,password ogg)
ggsci>add SCHEMATRANDATA HR (按照用戶添加)
ggsci>info trandata HR.*
ggsci>info schematrandata HR
add trandata:不會自動更新trandata信息(create table,update附加日誌列信息等操做時)
add schematrandata 命令格式:add schematrandata <schemaname>(不要用schemaname.*)
使用語法,說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 202-203頁
Syntax for Windows, UNIX, and Linux
mgr paramfile parameter_file
[cd directory]
[pauseatend | nopauseatend]
[port portnum]
[reportfile report_file]
[usesubdirs | nousesubdirs]
參數說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 208-209頁
參數 |
使用說明 |
CHARSET |
在讀取參數文件時,指定要使用的進程的多字節字符集,而不是操做系統默認值。 |
COMMENT 或者 -- |
容許在參數文件中插入註釋。 |
SOURCEDB |
指定數據源名稱做爲登陸信息的一部分。 |
USERIDALIAS |
爲Manager須要訪問數據庫時提供登陸信息。 |
SYSLOG |
過濾寫入系統的Oracle GoldenGate消息的類型在Windows或UNIX系統上記錄或IBM上的SYSOPR消息隊列個人系統。 |
DYNAMICPORTLIST |
指定Collector能夠動態分配的端口。 |
PORT |
創建管理員偵聽請求的TCP / IP端口號。 |
AUTORESTART |
指定管理器在失敗後從新啓動的進程。 |
AUTOSTART |
指定啓動Manager時啓動的進程。 |
BOOTDELAYMINUTES |
肯定系統重啓時間後MGR延遲多長時間進行主要進程活動。 此參數支持視窗。 |
UPREPORT |
肯定過程心跳消息的報告頻率。 |
DOWNCRITICAL |
報告正常或異常中止的進程。 |
DOWNREPORT |
控制報告中止進程的頻率。 |
LAGCRITICAL |
指定一個被認爲是關鍵的滯後閾值併產生一個警告到錯誤日誌。 |
LAGINFO |
指定信息性消息報告給錯誤日誌的滯後(LAG)閾值。 |
LAGREPORT |
設置報告延遲時間到錯誤日誌的間隔。 |
CHECKMINUTES |
肯定MGR週期進行維護活動的頻率。 |
PURGEDDLHISTORY 或者 PURGEDDLHISTORYALT |
清除從Oracle DDL歷史記錄表中行他們再也不須要的。 |
PURGEMARKERHISTORY |
清除再也不是Oracle標記錶行須要。 |
PURGEOLDEXTRACTS for Extract and Replicat |
按期清理抽取出的過時文件,能夠被設置在Manager, Extract, and Replicat參數文件中,oracle建議設置在Manager中. |
PURGEOLDTASKS |
清除指定時間後Extract 和 Replicat任務的時間。 |
STARTUPVALIDATIONDELAY[CSECS] |
設置一個延遲時間,以後Manager會檢查它進程啓動後仍在運行。 |
port 7809
DYNAMICPORTLIST 7800-7810
AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 30
LAGREPORTHOURS 1
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 10
PURGEOLDEXTRACTS /ogg/ogginstall/dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12
userid ogg@ogg1,password ogg
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 30
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 30
註釋:
具體保留時間時間建議根據評價天天歸檔量大小/4,計算須要的空間。
如下參數相關說明:
在如下示例中,Manager會嘗試三次啓動全部Extract進程在一小時內發生故障,並在每次嘗試前等待五分鐘。
AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
要指定一個端口範圍加個別端口,請在該端口之間加一個逗號範圍和我的端口號。 例:
DYNAMICPORTLIST 7820-7830, 7833, 7835
狀態:TRAIL文件存在AA000000,AA000001和AA000002。 複製已中止四個小時,沒有完成處理任何文件。 MGR參數包括:
PURGEOLDEXTRACTS / ggs / dirdat / AA *,USECHECKPOINTS,MINKEEPHOURS 2
結果:超過文件必須保留的時間,但不會有文件被清除,由於檢查點代表Replicat沒有完成處理。
使用LAGINFOSECONDS,LAGINFOMINUTES或LAGINFOHOURS參數指定一個基本滯後閾值 若是LAG超過指定值,Oracle GoldenGate報告lag信息到錯誤日誌。 若是lag超過了指定的值LAGCRITICAL參數,MGR報告LAG相當重要; 不然報告
LAG做爲信息消息。 零(0)的值強制在頻率處的消息用LAGREPORTMINUTES或LAGREPORTHOURS參數指定。
LAGINFOSECONDS seconds | LAGINFOMINUTES minutes | LAGINFOHOURS hours
LAGINFOSECONDS秒
設置基本滯後閾值(秒)。
LAGINFOMINUTES分鐘
設置基本滯後閾值(以分鐘爲單位)。
LAGINFOHOURS小時
設置基本滯後閾值(小時)。
使用LAGCRITICALSECONDS,LAGCRITICALMINUTES或LAGCRITICALHOURS參數指定被認爲是關鍵的lag閾值,並強制發出警告消息達到閾值時的錯誤日誌。 此參數影響提取和在本地系統上覆制進程。
LAGCRITICALSECONDS秒
以秒爲單位設置臨界滯後閾值。
LAGCRITICALMINUTES分鐘
以分鐘爲單位設置臨界滯後閾值。
LAGCRITICALHOURS小時
以小時爲單位設置臨界滯後閾值。
如下示例保留在過去三天內還沒有修改的全部行,並在至少五天內未修改時將其刪除。該
清除頻率爲30分鐘。(清除從Oracle DDL歷史記錄表中行他們再也不須要的。)
PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
如下示例保留在過去三天內還沒有修改的全部行,並在至少五天內未修改時將其刪除。該
清除頻率爲30分鐘。(清除再也不是Oracle標記錶行須要。)
PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
具體設置以下:
ggsci> edit param mgr
輸入:
port 7809
DYNAMICPORTLIST 7800-7810
AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 30
LAGREPORTHOURS 1
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 10
PURGEOLDEXTRACTS /ogg/ogginstall/dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12
userid ogg@ogg1,password ogg
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
設置好後,重啓MGR
ggsci>start mgr
參數說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 207-208頁
參數 |
使用說明 |
TRAILBYTEORDER |
指定使用EXTFILE,RMTFILE,EXTTRAIL或RMTTRAIL參數建立的文件的字節順序(字節順序)。 |
CHARMAP |
指定字符映射文件覆蓋字符代碼點映射。 |
CHARSET |
在讀取參數文件時,指定要使用的進程的多字節字符集,而不是操做系統默認值。 |
CHECKPOINTTABLE |
指定一個默認檢查點表。 |
CREDENTIALSTORELOCATION |
指定存儲登陸憑據的Oracle GoldenGate憑據存儲的位置。 |
DDLTABLE |
指定支持的DDL歷史表的非默認名稱Oracle的DDL同步。 |
ENABLECATALOGNAMES |
支持SQL / MX數據庫的三部分名稱。 |
ENABLEMONITORING |
使Oracle GoldenGate Monitor能夠查看和監視Oracle GoldenGate實例。 |
EXCLUDEWILDCARDOBJECTSONLY |
當TABLEEXCLUDE,SCHEMAEXCLUDE或CATALOGEXCLUDE參數包含通配符時,包含非通配符源表 |
GGSCHEMA |
指定包含數據庫對象的模式的名稱支持Oracle的DDL同步。 |
MARKERTABLE |
指定支持的DDL標記表的非默認名稱Oracle的DDL同步。 |
MAXGROUPS |
指定能夠在其中運行的最大進程組數Oracle GoldenGate實例。(默認25,協調的MAXTHREADS選項的值ADD REPLICAT命令(默認值爲25),加上其餘Replicat的數量在Oracle GoldenGate實例中提取組不能超過MAXGROUPS值,或ADD REPLICAT返回錯誤)。 |
MGRSERVNAME |
指定Manager做爲窗口服務安裝時的名稱。 |
NAMECCSID |
若是SQL目錄中的對象名稱爲DB2,則指定DB2 CCSID 與系統不一樣的CCSID。 |
NODUPMSGSUPPRESSION |
防止重複信息的自動抑制警告消息。 |
OUTPUTFILEUMASK |
指定Oracle GoldenGate進程可使用的umask來建立跟蹤文件和丟棄文件。 |
USEANSISQLQUOTES 或 NOUSEANSISQLQUOTES |
爲引用的對象名稱和文字啓用SQL-92規則。 |
SYSLOG |
過濾寫入到的GoldenGate消息的類型系統日誌。 |
TRAILCHARSET |
當路徑是不存儲源字符集的舊版本時,指定源數據的字符集,或者覆蓋存儲在路徑中的字符集。 |
UPREPORT |
指定Manager報告「提取」的頻率複製正在運行的進程。每次進程之一開始或中止,生成事件。 |
USEIPV4 |
強制Oracle GoldenGate使用IPv4進行TCP / IP鏈接。 |
USEIPV6 |
強制Oracle GoldenGate使用Ipv6進行TCP / IP鏈接。 |
WALLETLOCATION |
指定主鑰匙錢包的位置。 |
具體操做:
GGSCI (ogg1 as ogg@ogg1) 6> dblogin userid ogg@ogg1,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg1) 7> EDIT PARAMS ./GLOBALS
GGSCHEMA ogg
CHECKPOINTTABLE OGG.ggschkpt
配置GLOBAL文件後,須要經過推出並從新登陸ggsci,使得配置生效。
參數說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 261頁。
在GLOBALS參數文件中使用CHECKPOINTTABLE參數來指定名稱全部Replicat組能夠在一個或多箇中使用的默認檢查點表Oracle GoldenGate實例。全部使用ADD REPLICAT建立的Replicat組命令將默認爲此表,除非它被覆蓋該命令的CHECKPOINTTABLE選項。
要建立檢查點表,請使用GGSCI中的ADD CHECKPOINTTABLE命令。作不針對以集成模式配置的Replicat使用檢查點表一個Oracle目標數據庫。在該模式下不須要它,將被忽略。
有關更多信息,請參閱管理適用於Windows和UNIX的Oracle GoldenGate建立一個檢查點表。
使用語法:
Syntax
CHECKPOINTTABLE [container. | catalog.] owner.table
[container. | catalog.]owner.table
The owner and name of the checkpoint table. Additionally, for an Oracle container
database, specify the correct pluggable database (container). For a SQL/MX database,
specify the correct catalog.
Example
CHECKPOINTTABLE finance.ggs.chkpt
或者直接GGSCI中的ADD CHECKPOINTTABLE命令。
GGSCI (ogg1) > dblogin userid ogg@ogg1,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg1) 4> ADD CHECKPOINTTABLE
No checkpoint table specified. Using GLOBALS specification (OGG.ggschkpt)
Successfully created checkpoint table OGG.ggschkpt。
Oracle GoldenGate檢查點表在生產庫配置完成。
參數 |
說明 |
EXCLUDEWILDCARDOBJECTSONLY |
強制包含指定的非通配符的源對象在表或映射參數中,當一個排除參數包含一個通配符,不然將排除該對象。 |
MAPEXCLUDE |
從映射語句中排除源對象。 |
TABLEEXCLUDE |
從表語句中排除源對象。 |
CATALOGEXCLUDE |
將源對象排除在指定的源容器中來自Oracle GoldenGate配置的目錄容器或目錄名使用通配符來指定表或映射語句。 |
SCHEMAEXCLUDE |
不包括由指定源擁有的源對象全部者(如模式)來自Oracle GoldenGate配置當通配符用於指定表或映射表中的全部者。 |
DEFGEN爲源表或目標表建立具備數據定義的文件。數據定義當源表和目標表有不一樣的定義時,是否須要數據庫有不一樣的類型。
參數 |
說明 |
CATALOGEXCLUDE |
從通配符中排除指定的源容器或目錄規範。 |
CHARSET |
指定進程使用的多字節字符集,而不是讀取參數文件時操做系統默認。 |
DEFSFILE |
標識出DEFGEN寫定義的文件的名稱。 |
NAMECCSID |
爲i CCSID指定一個DB2,若是SQL目錄中的對象名稱是與系統不一樣的CCSID。 |
NOCATALOG |
防止容器或目錄名被包含在其中元數據 |
SCHEMAEXCLUDE |
從通配符規範中排除指定的源模式。 |
SOURCEDB |
將數據源指定爲登陸信息的一部分 |
TABLE for DEFGEN |
標識要捕獲定義的表 |
USERIDALIAS |
指定數據庫鏈接信息。 |
這些參數控制Oracle GoldenGate DDL支持。其餘參數能夠須要使用DDL支持,可是這裏的這些是專門處理DDL特性的。
參數 |
說明 |
DDL |
啓用DDL支持和過濾DDL。 |
DDLERROR |
處理DDL複製期間發生的錯誤。 |
DDLOPTIONS |
除了過濾和過濾以外,還配置DDL複製的各個方面字符串替換。 |
DDLSUBST |
容許在DDL操做中替換字符串。 |
DDLTABLE |
指定DDL歷史表的替代名稱。 |
GGSCHEMA |
指定包含對象的模式的名稱支持DDL複製 |
PURGEDDLHISTORY 或 PURGEDDLHISTORYALT |
控制DDL歷史表的大小。 |
PURGEMARKERHISTORY |
控制DDL mark的大小 |
使用語法,說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 197頁(能夠配置多組抽取進程)
Syntax for Windows, UNIX, and Linux
extract paramfile parameter_file
[atcsn CSN | aftercsn CSN]
[initialdataload]
[pauseatend | nopauseatend]
[processid PID]
[reportfile report_file]
[usesubdirs | nousesubdirs]
參數說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 213-215頁。
參數 |
操做說明 |
RECOVERYOPTIONS |
控制提取的恢復進程處理。 |
SOURCEDB |
指定數據源做爲登陸的一部分信息。 |
TCPSOURCETIMER或 NOTCPSOURCETIMER |
當這些系統反映不一樣時間時,調整傳輸到其餘系統的記錄的時間戳。 |
UPDATERECORDFORMAT |
控制圖像以前和以後是否存儲在一個軌跡記錄或兩個記錄中。 |
DSOPTIONS |
當使用Teradata訪問模塊(TAM)時,指定提取處理選項。
|
EXTRACT |
將抽取組定義爲在線進程 |
GETAPPLOPS或 IGNOREAPPLOPS |
控制來自除Replicat以外的全部進程的操做是否寫入跟蹤或文件。 |
GETREPLICATES或 IGNOREREPLICATES |
控制是否經過同一系統上的「提取」捕獲複製操做。 |
PASSTHRU 或NOPASSTHRU |
控制表是否由數據泵處理是以直通模式提取仍是須要數據定義。 |
PASSTHRUMESSAGES或 NOPASSTHRUMESSAGES |
控制是否將正在以直通模式處理的表寫入消息提取到「提取」報告文件。 |
RMTTASK |
在遠程系統上建立一個處理任務。 |
SOURCEISTABLE |
從源表中提取整個記錄。 |
VAM |
表示正在使用Teradata訪問模塊(TAM)向事務處理提供事務數據。 |
COMPRESSDELETES 或 NOCOMPRESSDELETES |
控制Oracle GoldenGate是否僅將關鍵字或所有列寫入跟蹤以進行刪除操做。 |
COMPRESSUPDATES 或 NOCOMPRESSUPDATES |
僅致使主鍵列和更改了要更新的列 |
EXCLUDETAG |
將Replicat或數據泵更改指定爲從路徑文件中排除。 |
FETCHOPTIONS |
控制Oracle GoldenGate獲取數據的方式的某些方面 |
LOGALLSUPCOLS 或NOLOGALLSUPCOLS |
記錄所需的列支持衝突檢測和解決和集成複製。 |
SEQUENCE |
指定同步序列。 |
TABLE | MAP |
指定提取和控件的表列映射和轉換。 |
TABLEEXCLUDE |
從提取中排除源表處理。 |
TARGETDEFS |
指定包含目標表的文件位於NonStop平臺上的目標數據庫的定義。 |
TRAILCHARSETASCII |
指定數據的ASCII字符集在z / OS上從DB2捕獲,當二者兼容時存在ASCII和EBCDIC表。 |
TRAILCHARSETEBCDIC |
指定數據的EBCDIC字符集在z / OS上從DB2捕獲,當二者兼容時存在ASCII和EBCDIC表。 |
EXTFILE |
指定提取數據寫入本地系統的提取文件 |
EXTTRAIL |
指定提取的數據寫入遠程系統的TRAIL文件。指定TRAIL的數據寫入本地系統的路徑。 |
RMTFILE |
指定提取的數據寫入遠程系統的提取文件。 |
RMTHOST |
指定目標系統和管理端口號。 |
RMTTRAIL |
指定提取的數據寫入遠程系統的路徑。 |
FORMATASCII |
之外部ASCII格式格式提取數據。 |
FORMATSQL |
將數據提取到等效的SQL語句中。 |
FORMATXML |
將提取的數據格式化爲等效的XML語法。 |
NOHEADERS |
防止記錄標題被寫入小徑。 |
BR |
控制提取的有界恢復功能。 |
CACHEMGR |
控制虛擬內存緩存管理器。 |
FLUSHSECS 或 FLUSHCSECS |
肯定記錄數據保留的時間量緩衝後被寫入小徑。 |
LOBMEMORY |
控制內存量和臨時磁盤空間可用於緩存包含LOB的事務。 |
RMTHOSTOPTIONS |
指定被動提取組使用的TCP / IP鏈接的主機信息之外的鏈接屬性。 |
THREADOPTIONS |
控制Extract在Oracle RAC中運行的方式。 |
TRANLOGOPTIONS |
支持捕獲進程選項。指定在解析數據庫日誌時所須要的特殊參數 |
TRANSMEMORY |
控制內存量和臨時磁盤空間可用於緩存未提交的交易數據。 |
WARNLONGTRANS |
定義一個長時間運行的事務並控制其頻率檢查並報告。 |
ROLLOVER |
指定跟蹤文件的老化方式。 |
DECRYPTTRAIL |
當Extract用做數據時,須要解密數據泵而且必須對數據進行處理。 |
ENCRYPTTRAIL或 NOENCRYPTTRAIL |
控制跟蹤或提取文件中數據的加密。 |
參照OGG 12.1 官方安裝文檔41頁
注意:建議多組抽取進程,爲緩解OGG日誌抽取壓力。
Group 1:
EXTRACT ora9a
SETENV (ORACLE_HOME = "/home/oracle/ora/product")
SETENV (ORACLE_SID = "oraa")
USERIDALIAS tiger1
RMTHOST sysb
RMTTRAIL /home/ggs/dirdat/rt
TABLE hr.emp;
TABLE hr.salary;
注意:
使用TRANLOGOPTIONS參數與DBLOGREADER選項參數文件若是RDBMS是Oracle 11.1.0.7或Oracle 11.2.0.2或更高版本11g R2版本。
使用HANDLECOLLISIONS(該參數依賴於表的主鍵進行邏輯判斷,無主鍵表使用該參數會致使重複記錄出現)
具體參數設置以下(可按照實際狀況添加,能夠大表拆分等,僅供參考):
ggsci> dblogin userid ogg@ogg1,password ogg
ggsci> add extract sa_ext tranlog threads 2 begin now (RAC)
add extract sa_ext tranlog threads 2 scn 4072415 –按照SCN加
單機: add extract sa_ext tranlog begin now
ggsci>add extract sb_ext tranlog threads 2 begin now
ggsci>add exttrail /ogg/install/dirdat/sa extract sa_ext, megabytes 100
ggsci>add exttrail /ogg/ogginstall/dirdat/sb extract sb_ext, megabytes 100
注:
tranlog:表示數據抓取的來源是數據庫的redo數據。
threads 2:表示咱們數據庫有多少個threads,單實例基本上是1或者不設,rac就本身設置了。
begin now:表示咱們在啓動這個抓取進程的就去抓取數據。
./dirdat:表示trail文件的目錄
sm:trail文件的前綴
extract sm_ext:值指定給那個進程用的(sm_ext)。
ggsci>edit param sa_ext
參數:
extract sa_ext
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
--SETENV (ORACLE_SID = "ogg1")
userid ogg@ogg1,password ogg
TRANLOGOPTIONS DBLOGREADER
exttrail /ogg/ogginstall/dirdat/sa
TRANLOGOPTIONS LOGRETENTION DISABLED
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS ALTARCHIVELOGDEST +ARCHDG/ORCL/ARCHIVELOG
--歸檔路徑能夠不用設置,OGG可以識別
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT "arch_%t_%s_%r.arc"
--歸檔路徑能夠不用設置,OGG可以識別
DISCARDFILE /ogg/ogginstall/dirdat/sa_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
FETCHOPTIONS MISSINGROW ABEND
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 10m
DYNAMICRESOLUTION
FETCHOPTIONS FETCHPKUPDATECOLS
--DDLSUBST '/ora10g/oradata/src/' with '/ora11g/oradata/trg/' -- Create tablespace是能夠複製的,能夠支持複製到不一樣文件目錄;
ddl include objname HR.* include objtype 'TRIGGER'
table HR.*;
ggsci>edit param sb_exti:
參數:
extract sb_ext
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
--SETENV (ORACLE_SID = "ogg1")
userid ogg@ogg1,password ogg
TRANLOGOPTIONS DBLOGREADER
exttrail /ogg/ogginstall/dirdat/sb
TRANLOGOPTIONS LOGRETENTION DISABLED
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS ALTARCHIVELOGDEST +ARCHDG/ORCL/ARCHIVELOG
--歸檔路徑能夠不用設置,OGG可以識別
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT "arch_%t_%s_%r.arc"
--歸檔路徑能夠不用設置,OGG可以識別
DISCARDFILE /ogg/ogginstall/dirdat/sb_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
FETCHOPTIONS MISSINGROW ABEND
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 10m
DYNAMICRESOLUTION
FETCHOPTIONS FETCHPKUPDATECOLS
ddl include objname HR.* include objtype 'TRIGGER'
table HR.*;
ggsci>start sa_ext
ggsci>start sb_ext
重要參數說明:
TRANLOGOPTIONS:使用TRANLOGOPTIONS參數來控制抽取與之交互的方式事務日誌或使用傳遞事務數據的API,具體取決於數據庫或捕獲模式。您可使用多個TRANLOGOPTIONS語句一樣的參數文件,也能夠在相同的範圍內指定多個選項若是容許的話,可使用TRANLOGOPTIONS語句。只對數據庫或數據庫使用給定的TRANLOGOPTIONS選項的意圖。
LOGRETENTION [ENABLED [DAYS n] | SR | DISABLED]:指定Oracle恢復管理器(RMAN)是否保留日誌文件提取需求恢復。當您使用寄存器提取命令時,日誌根據當前數據庫,是否保留了發出命令的時間視交叉上核。保留日誌直到手動刪除。此參數不啓用或在數據庫內部禁用RMAN。
ALLOWUNUSEDCOLUMN | NOALLOWUNUSEDCOLUMN: 對Oracle的提取有效。控制在遇到未使用的列的表時提取異常。
DBOPTIONS 默認值是ALLOWUNUSEDCOLUMN。提取時遇到未使用的表列,它繼續處理並生成一個警告。使用這個參數時,在目標或源定義文件中必須有相同的未使用的列該表必須指定爲複製,以便正確的元數據映射能夠執行。NOALLOWUNUSEDCOLUMN致使提取到未使用的列上。
DISCARDFILE | NODISCARDFILE:
若是一個進程從GGSCI中的START命令開始,則生成一個丟棄文件
默認以下:
■文件命名建立它的過程當中,與一個。dsc擴展。若是進程是一個協調的副本,每一個線程生成一個文件。每一個文件的名字是附加了相應線程的線程ID。
■dirrpt子目錄中的文件建立的Oracle GoldenGate安裝目錄。
■最大文件大小是50 mb。
■在啓動時,若是丟棄文件存在,它是寫新數據以前清除。若是一個進程是從操做系統的命令行開始的,不要生成默認的丟棄文件。
DISCARDROLLOVER:使用丟棄drollover參數爲老化丟棄文件設置一個時間表。長時間或者連續運行,設置一個老化的時間表,防止丟棄文件被填滿而且使這個過程結束,它提供了一個能夠預見的檔案集
在你的存檔程序中加入。
REPORTROLLOVER: 使用REPORTROLLOVER參數強制報告文件按正常的時間進行,
而不是在一個過程開始的時候。對於長時間或連續的運行,設置一個老化進度控制活動報告文件的大小,並提供一個更可預測的集合能夠包含在您的存檔程序中的存檔。
查看抽取進程運行報告,以及隊列文件,正常,繼續後面的操做
若是有長事物,能夠設置一下參數:
BR:默認4小時。 BR BRINTERVAL 20M, BRDIR BR (20M表示檢查間隔是20分鐘)
場景:長事務還未結束,日誌文件被刪除;無需還原日誌文件,收到commit後,直接從BR目錄下的文件寫入trial
文件。
Create tablespace是能夠複製的,能夠支持複製到不一樣文件目錄;
樣例: DDLSUBST '/ora10g/oradata/src/' with '/ora11g/oradata/trg/'
傳輸進程要配置的參數:
ggsci>add extract sa_dmp EXTTRAILSOURCE /ogg/ogginstall/dirdat/sa
ggsci>add extract sb_dmp EXTTRAILSOURCE /ogg/ogginstall/dirdat/sb
ggsci>ADD RMTTRAIL /ogg/ogginstall/dirdat/sa, EXTRACT sa_dmp
ggsci>ADD RMTTRAIL /ogg/ogginstall/dirdat/sb, EXTRACT sb_dmp
注:
EXTTRAILSOURCE:指定提取文件做爲數據源
ADD RMTTRAIL:在目標數據庫上建立一個trail
ggsci>edit param sa_dmp
參數:(注意IP 建議是rac vip )
EXTRACT sa_dmp
PASSTHRU
DYNAMICRESOLUTION
RMTHOST 172.16.0.111, MGRPORT 7809
--RMTHOST 172.16.0.111, MGRPORT 7809, COMPRESS, compressthreshold 750
rmttrail /ogg/ogginstall/dirdat/sa
DISCARDFILE /ogg/ogginstall/dirdat/sa_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
TABLE HR.*;
ggsci>edit param sb_dmp
參數:
EXTRACT sb_dmp
PASSTHRU
DYNAMICRESOLUTION
RMTHOST 172.16.0.111, MGRPORT 7809
rmttrail /ogg/ogginstall/dirdat/sb
DISCARDFILE /ogg/ogginstall/dirdat/sb_ext.dsc, APPEND, MEGABYTES 100
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS, RATE
TABLE HR.*;
ggsci>start sa_dmp
ggsci>start sb_dmp
具體設置以下:
ggsci>edit param mgr
輸入:
port 7809
DYNAMICPORTLIST 7800-7810
AUTORESTART replicat *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 30
LAGREPORTHOURS 1
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 10
PURGEOLDEXTRACTS /ogg/ogginstall/dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12
userid ogg@ogg,password ogg
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 24
設置好後,重啓MGR
ggsci>start mgr
具體操做:
GGSCI (ogg1 as ogg@ogg2) 6> dblogin userid ogg@ogg2,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg2) 7> EDIT PARAMS ./GLOBALS
GGSCHEMA ogg
CHECKPOINTTABLE OGG.ggschkpt
配置GLOBAL文件後,須要經過推出並從新登陸ggsci,使得配置生效。
或者直接GGSCI中的ADD CHECKPOINTTABLE命令。
GGSCI (ogg1) > dblogin userid ogg@ogg2,password ogg
Successfully logged into database.
GGSCI (ogg1 as ogg@ogg1) 4> ADD CHECKPOINTTABLE
No checkpoint table specified. Using GLOBALS specification (OGG.ggschkpt)
Successfully created checkpoint table OGG.ggschkpt。
Oracle GoldenGate檢查點表在目標庫配置完成。
--生產端查詢表格所在表空間
select distinct tablespace_name from dba_tables where owner='HR';
select distinct tablespace_name from dba_tab_partitions where table_owner='HR';
--備份端查詢是否存在以上表空間,若沒有則建立,若是不想建立,在後面的impdp中須要配置remap_tablespace參數。
--生產端索引所在表空間
select distinct tablespace_name from dba_indexes where owner in ('HR');
select distinct tablespace_name from dba_ind_partitions where index_owner in ('HR');
--生產端用戶默認臨時表空間:
select distinct temporary_tablespace from dba_users
注意:檢查操做可選。
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 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;
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
2159117
在使用DATAPUMP工具導出前,須要在生產庫確保GoldenGate抽取進程啓動的時間點前的事務已經結束。
確認長事務狀況,可經過下述命令實現:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
col event for a30
col OSUSER for a10
col USERNAME for a10
col PROGRAM for a35
SELECT s.sid,s.serial#,s.status,s.username,t.start_time,s.WAIT_TIME, s.osuser, s.sql_id, s.program,START_DATE FROM gv$session s,gv$transaction t WHERE s.INST_ID=t.INST_ID and s.saddr=t.ses_addr order by t.start_time desc;
檢查源庫對象下表的具體行數:
set serveroutput on size 1000000
set pages 50000
spool /tmp/hr_old.txt
DECLARE
v_cnt number;
BEGIN
FOR rec in (select 'HR.' || TABLE_NAME AS tanme from dba_tables where owner='HR' order by 1)
LOOP
execute immediate 'select count(*) from '||rec.tanme into v_cnt;
dbms_output.put_line(rpad(rec.tanme,40,'-')||v_cnt);
END LOOP;
END;
/
導出操做:
mkdir -p /ogg/expdp
chown -R oracle:oinstall /ogg/expdp
create or replace directory dir_dp as '/ogg/expdp';
Grant read,write on directory dir_dp to ogg;
nohup expdp ogg/ogg schemas=HR directory=dir_dp flashback_scn=2159117 dumpfile=HR.dmp logfile=HR.log &
目標端導入:
create or replace directory dir_dp as '/ogg/expdp';
Grant read,write on directory dir_dp to ogg;
nohup impdp ogg/ogg schemas=HR directory=dir_dp dumpfile=HR.dmp logfile=HR.log &
(須要建立)
--導入前檢查目標端表空間的大小
select segment_type,count(*),sum(bytes/1024/1024) from dba_segments where owner='HR' group by segment_type;
檢查目標庫對象下表的具體行數:
set serveroutput on size 1000000
set pages 50000
spool /tmp/hr_target.txt
DECLARE
v_cnt number;
BEGIN
FOR rec in (select 'HR.' || TABLE_NAME AS tanme from dba_tables where owner='HR' order by 1)
LOOP
execute immediate 'select count(*) from '||rec.tanme into v_cnt;
dbms_output.put_line(rpad(rec.tanme,40,'-')||v_cnt);
END LOOP;
END;
/
英文:
Constraints must be disabled in nonintegrated Replicat mode because Oracle GoldenGate replicates DML that results from the firing of a trigger or a cascade constraint. If the same trigger or constraint gets activated on the target table, it becomes redundant because of the replicated version, and the database returns an error.
約束必須禁用的非集成的複製模式由於Oracle GoldenGate複製DML從觸發和級聯約束。若是在目標表上激活相同的觸發器或約束,則因爲複製的版本而變得冗餘,數據庫返回錯誤。
備份庫禁用觸發器
select 'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where owner='HR' and status='ENABLED';
官方文檔是:
exec dbms_ddl.set_trigger_firing_property('HR','UPDATE_JOB_HISTORY',false);
alter session set constraint=deferred;
對於表的主鍵列進行更新時,若是更新語句爲set x=x+n或者更新過程當中涉及到主鍵值的偏移,這種事務在源端能夠正常執行,由於更新操做是在同一個語句中完成的。而對於目標端來講,可能會把源端的一個更新語句轉換爲多個更新語句如;
alter session set constraint = deferred;
經過10046跟蹤能夠獲得goldengate應用進程在執行對pk的update先後會執行下面的兩個語句。執行更新操做前它會把constraint設置爲deferred狀態,更新完成以後,再設置成immediate狀態。
alter session set constraint = immediate;
Oracle 11gR2 11.2.0.2後來的版本,你可使用dboptions參數
與延遲級聯的檢查和執法deferrefconst選項
更新和級聯刪除約束,直到事務提交的複製。
■其餘Oracle版本,您必須禁用觸發器和完整性約束
改變手動忽略複製的數據庫用戶。
Oracle11.2.0.2以後中的存儲過程DBMS_XSTREAM_GG.ENABLE_TDUP_WORKSPACE能夠解決這個問題,使用這個存儲過程再也不須要對錶的主鍵狀態進行修改,也不須要在Goldengate的參數文件中使用handletpkupdate參數。
begin
dbms_xstream_gg.enable_tdup_workspace();
end;
/
若是禁用:
begin
dbms_xstream_gg.disable_tdup_workspace();
end;
/
移除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= 'HR';
禁用:
DBMS_SCHEDULER.DISABLE('job1, job2, job3, sys.jobclass1, sys.jobclass2');
或刪除:
DBMS_SCHEDULER.DROP_JOB (job_name => 'my_job1');
禁用外鍵:
SELECT 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';' from dba_constraints where constraint_type='R' and owner in ('HR');
參數說明來自OGG 12.1.2 (Reference for Oracle GoldenGate for Windows and UNIX)12c 215-216頁
參數說明:
參數 |
參數說明 |
TARGETDB |
將數據源指定爲登陸信息的一部分。 |
HAVEUDTWITHNCHAR |
在utf - 8中進行復制以鏈接到utf - 8,以防止數據丟失被處理的記錄是具備用戶定義的類型NCHAR / NVARCHAR2屬性。 |
BEGIN |
指定複製處理的起點。SPECIALRUN時須要都是肯定的。 |
BULKLOAD |
將數據直接加載到Oracle SQL * Loader實用程序的接口中。 |
END |
指定複製處理的中止點。須要使用時SPECIALRUN。 |
GENLOADFILES |
生成與數據庫負載兼容的運行和控制文件 實用程序。 |
REPLICAT |
指定在線更改同步的複製組。 |
SPECIALRUN |
用於一次性處理,不須要從運行中進行檢查點 來運行。 |
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES |
強制使用全部的不操做更新集合中的列和WHERE子句。 |
APPLYNOOPUPDATES | NOAPPLYNOOPUPDATES |
強制執行一個無操做的更新,在設置和WHERE子句中使用全部列。 |
ASSUMETARGETDEFS |
假設源表和目標表具備相同的列結構。 |
INSERTALLRECORDS |
爲記錄的每個變動操做插入一個新的記錄到目標表中。 |
INSERTDELETES | NOINSERTDELETES |
將刪除插入。 |
INSERTMISSINGUPDATES | NOINSERTMISSINGUPDATES |
當目標行不存在時,將更新轉換爲插入。 |
INSERTUPDATES | NOINSERTUPDATES |
將更新插入 |
TABLE | MAP |
指定一個或多個源表和目標表之間的關係,並控制列映射和轉換。 |
MAPEXCLUDE |
將源表排除在映射語句中提供的通配符規範中。 |
PRESERVETARGETTIMEZONE |
覆蓋默認的還原會話時區。 |
REPLACEBADNUM |
指定映射數列時遇到的無效數字數據的全局替代值。 |
SOURCECHARSET |
控制源字符集是否將其轉換爲目標字符集。 |
SOURCETIMEZONE |
指定用於將副本用做會話時區的源數據庫的時區。 |
SPACESTONULL | NOSPACESTONULL |
控制只包含空格的目標列是否轉換爲空。 |
TABLE for Replicat |
指定一個表或表,當一行知足給定的篩選條件時,將執行哪些事件操做。 |
UPDATEINSERTS | NOUPDATEINSERTS |
轉換insert操做,以更新在參數文件中指定的全部映射語句的操做。 |
UPDATEDELETES | NOUPDATEDELETES |
將刪除,更新。 |
UPDATEDELETES | NOUPDATEDELETES |
將插入,更新。 |
USEDEDICATEDCOORDINATIONTHREAD |
當副本處於協調模式時,指定用於屏障事務的專用線程。 |
EXTFILE |
在包含數據的本地系統中定義提取文件的名稱 複製。用於一次性處理。 |
EXTTRAIL |
定義包含要複製的數據的路徑。用於一次性處理。 |
HANDLECOLLISIONS | NOHANDLECOLLISIONS |
處理重複和缺失的錯誤記錄。 |
HANDLETPKUPDATE |
防止與複製臨時主鍵更新相關的約束錯誤。 |
OVERRIDEDUPS | NOOVERRIDEDUPS |
在現有的目標記錄上覆蓋複製的插入記錄複製記錄發生錯誤。 |
RESTARTCOLLISIONS | NORESTARTCOLLISIONS |
控制是否在Oracle以後應用handlecolli劑邏輯 由於有衝突,金酸鹽已經減小了。 |
REPERROR |
決定複製的響應數據庫錯誤。 |
REPFETCHEDCOLOPTIONS |
肯定須要對來自源數據庫的fetch進行操做的副本如何響應。 |
SHOWSYNTAX |
致使複製它的SQL語句報告文件。 |
SQLDUPERR |
指定顯示重複記錄的數據庫錯誤編號。使用 OVERRIDEDUPS |
WARNRATE |
經過將相似的SQL語句安排到數組中,並以加速的速度應用它們,能夠提升複製處理的吞吐量。 |
BATCHSQL |
經過將相似的SQL語句安排到數組中,並以加速的速度應用它們,能夠提升複製處理的吞吐量。 |
COORDSTATINTERVAL |
協調器線程嚮應用程序線程發送請求的時間間隔。 |
COORDTIMER |
協調器線程等待應用程序啓動的時間量。 |
DEFERAPPLYINTERVAL |
指定在將複製操做應用到目標數據庫以前等待複製的時間長度。 |
GROUPTRANSOPS |
控制將被分組到複製事務中的記錄的數量。 |
INSERTAPPEND | NOINSERTAPPEND |
控制Replicat是否使用Oracle APPEND提示INSERT語句。 |
MAXDISCARDRECS |
限制報告的丟棄記錄的數量丟棄文件。 |
MAXSQLSTATEMENTS |
控制準備的SQL語句的數量能夠被Replicat使用。 |
MAXTRANSOPS |
將大型源事務劃分爲較小的事務目標系統。 |
NUMFILES |
控制內存的初始分配用於存儲關於表的信息 由GoldenGate處理 |
TRANSACTIONTIMEOUT |
指定一個時間間隔,以後複製將會提交它的開放目標事務並回滾任何它包含的不完整的源事務,保存當整個源事務就緒時,它們就會出現 被應用。 |
具體參數以下:
ggsci>dblogin userid ogg@ogg2,password ogg
ggsci>add replicat sa_rep exttrail /ogg/ogginstall/dirdat/sa
ggsci>add replicat sb_rep exttrail /ogg/ogginstall/dirdat/sb
ggsci> edit param sa_rep
replicat sa_rep
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1" )
--SETENV (ORACLE_SID = "ogg2")
userid ogg@ogg,password ogg
SQLEXEC "ALTER SESSION SET CONSTRAINTS=DEFERRED"
--HANDLECOLLISIONS
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
NUMFILES 3000
REPERROR DEFAULT, DISCARD
DISCARDFILE /ogg/ogginstall/dirdat/sa_rep.dsc, append megabytes 50
BATCHSQL OPSPERBATCH 5000
GROUPTRANSOPS 100
MAXTRANSOPS 1000
CHECKSEQUENCEVALUE
DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
GETTRUNCATES --12.2ogg 經測試,默認支持truncate 表
--NOCOMPRESSUPDATES --DB2平臺
--map user.table target user.table, filter (@GETENV("transaction","csn") > number);
--MAP NQ_RUN.EXECINDEXSHOWJOUR, TARGET NQ_RUN.EXECINDEXSHOWJOUR, KEYCOLS (INIT_DATE, SERIAL_NO); --虛擬主鍵應用方式。
--MAPEXCLUDE USER.TABLE;
MAP HR.*, TARGET HR.*;
ggsci> edit param sb_rep
replicat sb_rep
setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1" )
--SETENV (ORACLE_SID = "ogg2")
userid ogg@ogg,password ogg
SQLEXEC "ALTER SESSION SET CONSTRAINTS=DEFERRED"
--HANDLECOLLISIONS
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
NUMFILES 3000
REPERROR DEFAULT, DISCARD
DISCARDFILE /ogg/ogginstall/dirdat/sb_rep.dsc, append megabytes 50m
BATCHSQL OPSPERBATCH 5000
GROUPTRANSOPS 100
MAXTRANSOPS 1000
CHECKSEQUENCEVALUE
DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
GETTRUNCATES
--NOCOMPRESSUPDATES --DB2平臺
--map NQ_RUN_HIS.HIS_EXECINDEXSHOWJOUR, target NQ_RUN_HIS.HIS_EXECINDEXSHOWJOUR, filter (@GETENV("transaction","csn") > 5144447346);
--MAP NQ_RUN.EXECINDEXSHOWJOUR, TARGET NQ_RUN.EXECINDEXSHOWJOUR, KEYCOLS (INIT_DATE, SERIAL_NO);
--MAPEXCLUDE USER.TABLE;
MAP HR.*, TARGET HR.*;
注:
oracle 11204不支持replicat進程中的DBOPTIONS DEFERREFCONST參數,若是要使這個參數正常生效必須在數據庫中配置ENABLE_GOLDENGATE_REPLICATION = TRUE。
即:ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
注意:沒法使用HANDLECOLLISIONS(該參數依賴於表的主鍵進行邏輯判斷,無主鍵表使用該參數會致使重複記錄出現)。
ggsci>start sa_rep atcsn 2159117
ggsci>start sb_rep atcsn 2159117
請根據本身的狀況進行相應的DDL,DML等測試。
例如:
create table hr.t2 as select object_id from dba_objects;
commit;
select count(*) from hr.t2;
create table hr.t3(id int);
begin
for i in 90000..100000
loop
insert into hr.t3 values(i);
commit;
end loop;
end;
/
select count(*) from hr.t3;