博文結構圖如下:
一、環境描述以及注意事項
1.1 環境簡介
|
IP |
系統 |
Oracle版本 |
OGG版本 |
源端 |
172.16.10.16/36 |
RHEL6.5 |
oracle11204 |
12.1 |
目標端 |
172.16.10.154 |
RHEL6.5 |
oracle11204 |
12.1 |
同步用戶為:hr。
1.2 OGG網絡帶寬規划
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
1.3 OGG安裝注意事項
1、盡量避免OGG 雙向同步,ogg雙活安裝需要業務避免更改同一行記錄。
2、配置Extract,為了避免數據丟失,在啟動extract 之前,必須確保所有open 的事務都已經完成。(或者在配置時,停止所有中間件以及監聽業務)
3、特別大的表,或者操作太頻繁的表,建議單獨拆成多組抽取,還原進程。
4、TRAIL是否壓縮,以及到期時間,字符集設置,ogg管理密碼是否加密。
5、自動過濾重復時段的數據沖突,用於不能停機執行初始化,打開該參數后不會將數據錯誤報到discard文件中。
6、rac ogg 需要安裝到共享目錄上。
7、源庫和目標庫設置參數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、安裝的所有主機盡量時間保持一直。
9、使用TRANLOGOPTIONS參數與DBLOGREADER選項參數文件如果RDBMS是Oracle 11.1.0.7或Oracle 11.2.0.2或更高版本11g R2版本。
10、DDL 數據庫版本高於10G,不需要關閉回收站。
1.4 關於經典抽取模式
在經典捕獲模式下,Oracle GoldenGate Extract進程從源庫上的Oracle重做或歸檔日志文件或備庫上的歸檔日志中捕獲數據更改。
經典捕捉完全支持大多數Oracle數據類型,對復雜數據類型提供有限的支持。經典捕獲是最初的Oracle GoldenGate捕獲方法。對於Oracle GoldenGate支持的任何源Oracle RDBMS,您可以使用經典捕獲,但多租戶容器數據庫除外。
經典捕獲來支持以下內容:
- UDT,
NOLOGGING
VARRAY,源數據庫兼容性設置在11.2.0.0.0以下的LOB。 - 透明數據加密支持,源數據庫兼容性設置在11.0.0.0.0以下。
SECUREFILE
源數據庫兼容性設置為低於11.2.0.0.0的LOB支持。NOLOGGING
源數據庫兼容性設置為低於11.2.0.0.0的LOB支持。
1.5 關於集成抽取模式
在集成捕獲模式下,Oracle GoldenGate Extract進程直接與數據庫登錄服務器進行交互,以邏輯更改記錄(LCR)的形式接收數據更改。圖顯示了集成捕獲模式下的提取配置。
與經典捕捉相比,集成捕捉支持更多的數據和存儲類型,支持更加透明。
以下是集成捕獲的一些額外好處:
- 由於集成捕獲與數據庫完全集成,因此不需要其他設置即可與Oracle RAC,ASM和TDE配合使用。
- 集成捕獲使用數據庫登錄服務器來訪問Oracle重做流,其優點是能夠自動在歸檔日志的不同副本或在線日志的不同鏡像版本之間切換。因此,集成捕獲可以透明地處理由於磁盤損壞,硬件故障或操作員錯誤導致的日志文件的缺失(假設存檔和在線日志的附加副本可用
- 集成捕捉可以更快地過濾表格。
- 集成的捕獲能夠更有效地處理時間點恢復和RAC集成。
- 集成的捕捉功能集成日志管理。Oracle Recovery Manager(RMAN)會自動保留“抽取”所需的歸檔日志。
- 集成捕獲是支持從多租戶容器數據庫捕獲的唯一模式。One Extract可以挖掘多租戶容器數據庫中的多個可插拔數據庫。
- 對於版本11.2.0.4源數據庫及更高版本(源兼容性設置為11.2.0.4或更高版本),DDL的捕獲由登錄服務器異步執行,不需要安裝特殊的觸發器,表或其他數據庫對象。可以在不停止用戶應用程序的情況下執行Oracle GoldenGate升級。當Extract處於集成模式下時,需要使用DDL觸發器和支持對象,而Oracle 11g源數據庫早於版本11.2.0.4。
- 由於集成捕獲和集成應用程序都是數據庫對象,因此對象的命名遵循與其他Oracle數據庫對象相同的規則。
集成捕獲支持的數據庫版本
完全支持:為了支持所有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在直接模式下應用以下功能:
- DDL操作
- 序列操作
SQLEXEC
參數TABLE
或MAP
參數EVENTACTIONS
處理- UDT請注意,如果提取用於
USENATIVEOBJSUPPORT
捕獲UDT,則集成的Replicat將將其應用於入站服務器,否則將由Replicat直接處理。
集成復制要求
要使用集成的Replicat:
- 目標Oracle數據庫必須是Oracle 11.2.0.4或更高版本。
- 必須在源數據庫上啟用補充日志記錄以支持計算表之間的依賴關系以及在目標上同時執行事務調度。有關啟用所需日志記錄的說明。此日志記錄可以在任何時候啟用Oracle GoldenGate進程,但在此之前啟用。
- 完全支持:為了支持所有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)。
- 集成捕獲是支持從多租戶容器數據庫捕獲的唯一模式。One Extract可以挖掘多租戶容器數據庫中的多個可插拔數據庫。
1.6 關於非整合復制
在非集成模式下,Replicat進程使用標准SQL將數據直接應用到目標表。在這種模式下,Replicat的操作如下:
閱讀Oracle GoldenGate跟蹤。
執行數據過濾,映射和轉換。
構造代表源數據庫DML或DDL事務的SQL語句(按提交順序)。
通過Oracle調用接口(OCI)將SQL應用於目標。
1.7 決定使用哪種應用方法
使用不同的捕獲和應用模式,可以一起使用以下捕捉和應用模式:
經典捕獲(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數據類型,並保持源事務完整性。您可以根據需要將並行度設置調整到所需的應用性能級別。
二、OGG安裝要求
2.1環境環境要求
磁盤空間要求: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環境要求:
1、將Oracle GoldenGate Manager流程(和唯一的管理器)注冊為集群管理的資源, Manager必須唯一的Oracle GoldenGate進程,即集群管理軟件啟動停止,因為它是管理所有其他進程的父進程,將Oracle GoldenGate集成到集群中
2、如果集群使用一個虛擬IP地址(如Oracle Clusterware),您可能需要為管理程序獲取可用的固定IP地址。VIP必須公共子網上的一個可用的IP地址,不能確定通過DHCP。在提取數據泵的參數文件中,指定其中的VIP遠程管理器作為RMTHOST參數的輸入值。其他的
訪問Manager的GoldenGate產品也應該使用VIP。
3、確保集群中的所有節點具有相同的兼容參數
設置。
4、當您配置管理器時,添加AUTOSTART和AUTORESTART參數該管理器將自動啟動復制過程。在需要的時候,可以控制提取、復制和其他Oracle GoldenGate進程GoldenGate用戶界面。
5、只在一個節點上安裝共享驅動器。這阻止了進程的存在開始另一個節點。在所有節點上使用相同的掛載點。
6、可以專門為OGG 添加一個服務。
2.2 OGG支持的數據類型
OGG 12.1支持的類型:
2.2.1 ANYDATA 類型
■ 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
2.2.2 Numeric 類型
■ NUMBER up to the maximum size permitted by Oracle
■ BINARY FLOAT
■ BINARY DOUBLE
2.2.3 Character類型
■ CHAR
■ VARCHAR2
■ LONG
■ NCHAR
■ NVARCHAR2
2.2.4 Multi-byte 類型
■ NCHAR and NVARCHAR2 multi-byte character data types
■ Multi-byte data stored in CHAR and VARCHAR2 columns
2.2.5 Binary 類型
■ RAW
■ LONG RAW
2.2.6 Date and Timestamp 類型
■ DATE
■ TIMESTAMP
注意:
Oracle GoldenGate不支持負的日期。
■間隔一天,間隔年只是如果目標大小的支持列等於或大於源的列。
■Oracle GoldenGate支持捕獲和時間戳和時間復制帶為UTC偏移(timestamp 2011-01-01 8:00:00 - 8”)。
■時間戳和時區的TZR(區域ID)是復制支持數據的變化,而不是初始荷載,為返回,或操作的地方必須從數據庫中提取列。在這些情況下,區域id是當選定列時,由數據庫轉換為時間偏移量。復制將時間戳復制為具有時間偏移值的日期和時間數據。
2.2.7 Large Object 類型
■ CLOB
■ NCLOB
■ BLOB
■ SECUREFILE and BASICFILE
Oracle GoldenGate不支持過濾、列映射,或操縱大於4K的大對象。
2.2.8 XML Data Types
支持以下XML類型:
■集成捕獲模式,Oracle GoldenGate支持XMLType列XMLType表存儲為XML CLOB,XML和XML二進制對象關系。
■經典的捕獲模式,Oracle GoldenGate支持XMLType列存儲XML和XML二進制字符
2.2.9用戶定義或抽象類型
用戶定義或抽象類型
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
2.3 DML支持的對象和操作
2.3.1 Tables, Views, Materialized Views
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支持每個表的最大列數由數據庫支持。
2.3.2 GoldenGate支持分區屬性的表
– Range partitioning
– Hash Partitioning
– Interval Partitioning
– System Partitioning
– Composite Partitioning
– Virtual Column-Based Partitioning
– Reference Partitioning
– List Partitioning
2.3.3 Oracle GoldenGate支持僅包含一列的表
不包括以下類型的表(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
2.4 DDL支持的對象和操作
當源數據庫是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.
2.4.1 支持的DML對象
– 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觸發器。
2.4.2 支持的DML操作
■GoldenGate支持DDL操作4 MB的大小。GoldenGate用字節來度量DDL語句的大小,而不是字符。這大小限制包括包、過程和函數。實際的大小限制DDL的支持是近似的,因為大小不僅包括語句文本,但也包括Oracle GoldenGate的維護開銷對象名稱的長度、DDL類型和其他特征在內部保存DDL記錄。
■GoldenGate支持全局臨時表(GTT)DDL操作要清晰可見,這樣它們就可以被復制。您必須設置DDLOPTIONS允許這個操作的參數,因為它不是默認設置的
2.5 OGG不支持的數據類型和對象
集成和經典的捕獲模式
2.5.1 不支持的Oracle數據類型
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。
2.5.2 不支持索引組織表
索引組織表的不支持限制,這些適用於經典拍攝模式。
■啟用密鑰壓縮的IOT(由COMPRESS關鍵字指示key_compression子句)在經典捕獲模式下不受支持,但是支持集成捕獲模式。
2.5.3 不支持的視圖
不支持的視圖,這些限制適用於集成和經典的捕獲模式。
■GoldenGate支持捕獲從一個視圖提取初始載荷模式(直接從源視圖獲取,而不是重做日志)。
■GoldenGate不捕獲變更數據從一個視圖,但是它支持從視圖的底層表中捕獲。
■GoldenGate可以復制到一個視圖可更新,只要視圖是固有的。源表的結構和目標視圖必須是相同的
2.5.4 不支持物化視圖
在經典的和集成的模式中得到了物化視圖
以下的局限性。
■物化視圖不支持創建ROWID。
對Oracle DML中對象和操作的支持細節為Oracle數據庫安裝和配置Oracle GoldenGate
■可以創建物化視圖日志與ROWID。
■源表必須有一個主鍵。
■截斷的物化視圖不支持。您可以使用DELETE FROM聲明。
■DML(但不是DDL)從一個完整的刷新物化視圖的支持。如果DDL
需要支持此特性,打開Oracle GoldenGate支持案例。
■為Replicat Create MV命令必須包括更新條款
■物化視圖可以被復制或底層基表(s),但不是兩者都有
2.5.5 不支持集群表
不支持的集群表:
在集成和經典的捕獲模式中支持索引集群,在兩種模式中都不支持散列集群。在經典的捕獲模式下:
■加密和壓縮群集表不支持在經典的捕捉。
■提取在經典的捕獲模式捕獲DML更改索引集群表,如果集群因子大小保持不變。任何導致集群大小的DDL增加或減少可能導致提取到該表上的后續DML不正確。
2.5.6 不支持的序列
不支持的序列,這些適用於集成和經典的捕獲模式。
■GoldenGate不支持復制的序列值active - active雙向配置。
■緩存大小和源和目標序列的增量區間必須的是相同的。緩存可以是任何大小,包括0(NOCACHE)。
■序列可以設置為循環周期,但源和目標數據庫必須以同樣的方式設置。
2.6 DML不支持的對象和操作
2.6.1 DML不支持的對象和操作
如下DML在經典或集成捕獲模式中都不支持:
■REF
■序列值在一個active - active雙向配置
■Database Replay
■創建外部表
■無形的列不支持通過經典或綜合提取。
2.6.2 經典模式不支持對象和操作
以下是經典捕獲模式中不支持:
■Exadata混合柱狀壓縮
■捕獲與OLTP表壓縮表
■捕獲與壓縮的表空間和表創建或修改
■捕獲從加密和壓縮群集表
■無形的列
■分布式事務。在Oracle版本11.1.0.6和更高版本中,可以捕獲這些事務如果您通過以下方式使它們不分布命令,要求重新啟動數據庫。
改變系統設置_CLUSTERWIDE_GLOBAL_TRANSACTIONS = FALSE;
■RAC分布式XA和PDML分布式事務
■enabled-tables版本
■標識列
2.7 DDL不支持的對象和操作
2.7.1 DDL不支持的對象和操作(經典和集成模式)
"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
2.7.2 DDL不支持的對象和操作(其它類)
■ 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)支持大小寫敏感性。
2.8 查看OGG不支持的模式
2.8.1 查延遲約束的類型和對象
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';
2.8.2 沒有主鍵和唯一鍵的表
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);
2.8.3 不支持的字段,類型
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');
2.8.4 不支持壓縮表
select owner,table_name from dba_tables where compression='ENABLED';
或者按用戶查找:
select owner,table_name from dba_tables where owner in ('HR') and compression='ENABLED';
2.8.5 不支持物化視圖
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';
三、OGG12.1的OUI的安裝
注釋:源庫和目標庫都安裝。
相關目錄,並把安裝軟件上傳上去:
官方建議軟件安裝到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
3.1 OGG安裝步驟(源,目標庫)
3.2 OGG目錄的說明
以上所創建的目錄的作用:
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 |
當事物所需要的內存超過已分配內存時,默認存儲在這個目錄 |
四、OGG 數據庫准備工作
4.1 數據庫級別最下附加日志
查看以及修改語句如下(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;
4.2 確認表級附加日志添加
1、確認所有表的狀態是否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.
2、打開表級附加日志
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;
3、確認已經打開標記附加日志。
select owner,table_name from dba_tables where owner in ('HR') and logging='NO';
4.3 數據庫啟用goldengate
注意:
Oracle 11.2.0.4 以及之后版本數據庫,源庫以及目標庫必須開啟參數。
ENABLE_GOLDENGATE_REPLICATION
1、啟用參數 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;
2、設置閃回查詢
如果源庫需要開啟閃回查詢,建議增大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;
3、需要注意的參數
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
4.4 創建管理用戶
4.4.1創建管理用戶ogg
注意:要按照實際情況分配大小(目標庫、源庫執行以下操作)。
創建表空間是為了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;
4.5 OGG DDL 的配置
來自(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 捕獲方法一起使用。
4.5.1 基於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安裝).
4.5.2 重置DDL環境
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.
4.5.4 刪除DDL環境:
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.
4.5.4 支持sequence
查看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 classical 模式源庫的配置(cdc和initload配合)
5.1 添加supplement log
查看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.*)
5.2 MGR進程配置
使用語法,說明來自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
5.3 全局參數的設置
參數說明來自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,使得配置生效。
5.4 創建檢查點
參數說明來自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檢查點表在生產庫配置完成。
5.5 其他一些參數說明
5.5.1 通配符排除參數
參數 |
說明 |
EXCLUDEWILDCARDOBJECTSONLY |
強制包含指定的非通配符的源對象在表或映射參數中,當一個排除參數包含一個通配符,否則將排除該對象。 |
MAPEXCLUDE |
從映射語句中排除源對象。 |
TABLEEXCLUDE |
從表語句中排除源對象。 |
CATALOGEXCLUDE |
將源對象排除在指定的源容器中來自Oracle GoldenGate配置的目錄容器或目錄名使用通配符來指定表或映射語句。 |
SCHEMAEXCLUDE |
不包括由指定源擁有的源對象所有者(如模式)來自Oracle GoldenGate配置當通配符用於指定表或映射表中的所有者。 |
5.5.2 DEFGEN參數
DEFGEN為源表或目標表創建具有數據定義的文件。數據定義當源表和目標表有不同的定義時,是否需要數據庫有不同的類型。
參數 |
說明 |
CATALOGEXCLUDE |
從通配符中排除指定的源容器或目錄規范。 |
CHARSET |
指定進程使用的多字節字符集,而不是讀取參數文件時操作系統默認。 |
DEFSFILE |
標識出DEFGEN寫定義的文件的名稱。 |
NAMECCSID |
為i CCSID指定一個DB2,如果SQL目錄中的對象名稱是與系統不同的CCSID。 |
NOCATALOG |
防止容器或目錄名被包含在其中元數據 |
SCHEMAEXCLUDE |
從通配符規范中排除指定的源模式。 |
SOURCEDB |
將數據源指定為登錄信息的一部分 |
TABLE for DEFGEN |
標識要捕獲定義的表 |
USERIDALIAS |
指定數據庫連接信息。 |
5.5.3 DDL參數
這些參數控制Oracle GoldenGate DDL支持。其他參數可以需要使用DDL支持,但是這里的這些是專門處理DDL特性的。
參數 |
說明 |
DDL |
啟用DDL支持和過濾DDL。 |
DDLERROR |
處理DDL復制期間發生的錯誤。 |
DDLOPTIONS |
除了過濾和過濾之外,還配置DDL復制的各個方面字符串替換。 |
DDLSUBST |
允許在DDL操作中替換字符串。 |
DDLTABLE |
指定DDL歷史表的替代名稱。 |
GGSCHEMA |
指定包含對象的模式的名稱支持DDL復制 |
PURGEDDLHISTORY 或 PURGEDDLHISTORYALT |
控制DDL歷史表的大小。 |
PURGEMARKERHISTORY |
控制DDL mark的大小 |
5.6 創建抽取進程
使用語法,說明來自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/'
5.7、增長pump進程
傳輸進程要配置的參數:
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
六、目標庫配置
6.1 MGR進程配置
具體設置如下:
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
6.2 全局參數的設置
具體操作:
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,使得配置生效。
6.3 創建檢查點
或者直接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檢查點表在目標庫配置完成。
6.4、初始化同步
6.4.1 生產端查詢相關信息
--生產端查詢表格所在表空間
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
6.4.2 檢查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 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;
6.4.3 生產端查詢SCN
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
2159117
6.4.4 確認長事務情況
在使用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;
6.4.5 DATAPUMP方式初始化
檢查源庫對象下表的具體行數:
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;
/
6.4.6備份庫相關操作
英文:
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');
6.5、創建replicat進程
參數說明來自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;