標籤:情況下 force htm database 防止 target code eui lock
瞭解如何為Oracle GoldenGate準備資料庫,包括如何配置串連和日誌記錄,如何在資料庫中啟用Oracle GoldenGate,如何設定閃回查詢以及如何管理伺服器資源。
- 為整合進程配置串連
- 配置日誌記錄屬性
- 在資料庫中啟用Oracle GoldenGate
- 設定閃回查詢
- 管理伺服器資源
2.1 為整合進程配置串連
如果您將使用整合捕獲和整合Replicat,則每個都需要tnsnames.ora檔案中的專用伺服器串連。當您配置這些進程時,您可以指示進程在Extract and Replicat參數檔案中使用這些串連,並使用USERID或USERIDALIAS參數。
以下是整合捕獲(Extract)和整合Replicat所需的專用連線樣本。
TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521)) )(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) ))
以下是在Extract或Replicat參數檔案中指定連接字串的安全選項。
密碼加密方式:
USERID intext@test, PASSWORD mypassword
憑證儲存方法:
USERIDALIAS ext
對於USERIDALIAS,別名ext將使用實際的連接字串儲存在Oracle GoldenGate憑證儲存中,如下例所示:
GGSCI> INFO CREDENTIALSTORE DOMAIN supportDomain: Support Alias: ext Userid: intext@test
有關在參數檔案中指定資料庫連接資訊的更多資訊,參閱管理Oracle GoldenGate
2.2 配置日誌記錄屬性
Oracle GoldenGate依靠重做日誌來捕獲複製源事務所需的資料。在啟動Oracle GoldenGate處理之前,必須正確配置源系統上的Oracle重做日誌。
由於此次需要的日誌記錄,重做量增加。您可以等到準備好啟動Oracle GoldenGate處理以啟用日誌記錄。
本節介紹適用於Oracle GoldenGate的以下日誌記錄層級。您使用的記錄層級取決於您正在使用的Oracle GoldenGate功能。
- 啟用最小資料庫級補充日誌
- 啟用schema級補充日誌
- 啟用table級補充日誌
此表顯示了不同日誌記錄屬性的Oracle GoldenGate用例。
Logging option |
GGSCI command |
What it does |
Use case |
Forced logging mode |
無;通過資料庫啟用 |
強制記錄所有事務和負載日誌 |
強烈建議所有Oracle GoldenGate使用案例。 |
Minimum database-level supplemental logging |
無;通過資料庫啟用 |
啟用最少的補充日誌記錄以將行鏈資訊添加到重做日誌。 |
所有Oracle GoldenGate用例均需要 |
Schema-level supplemental logging, default setting 參閱啟用schema級補充日誌 |
ADD SCHEMATRANDATA |
啟用主鍵的無條件補充記錄以及模式中所有表的唯一鍵和外鍵的有條件補充記錄。 所有這些鍵一起被稱為調度列。 |
啟用schema中所有當前和將來表的日誌記錄。 如果源和目標的主鍵,唯一鍵和外鍵列不相同,請使用ALLCOLS。使用DDL支援時需要。 |
schema級補充日誌記錄對所有支援的列進行無條件日誌記錄。 (有關不支援的列類型,請參閱啟用schema層級補充日誌記錄) |
ADD SCHEMATRANDATA with ALLCOLS option |
對模式中的所有表啟用無條件補充記錄資料表中的所有列。 |
用於在嘗試執行更新或刪除時檢查所有列值的雙向和主動 - 主動配置,而不僅僅是更改的列。 儘管允許即時資料驗證的最進階別並因此檢測衝突,但這需要更多的資源。 當源和目標的主鍵,唯一鍵和外鍵不相同或在源和目標之間不斷變化時,也可以使用它。 |
schema級補充日誌記錄,最小設定 |
ADD SCHEMATRANDATA with NOSCHEDULINGCOLS option |
啟用schema中主鍵和所有表的所有有效唯一索引的無條件補充日誌記錄。 |
僅用於非整合Replicat。這是所需的最低schema級日誌記錄。 |
表級補充日誌,內建了對整合Replicat的支援 (請參閱啟用表層級補充日誌) |
ADD TRANDATA |
啟用對錶的唯一鍵和外鍵的主鍵和條件輔助日誌記錄的無條件補充記錄。 所有這些鍵一起被稱為調度列。 |
除非使用模式層級的補充日誌記錄,否則所有Oracle GoldenGate用例都需要該用例。 如果源和目標的主鍵,唯一鍵和外鍵列不相同,請使用ALLCOLS。 |
對所有支援的列使用無條件日誌記錄的表級補充日誌記錄。 (請參閱啟用表層級補充日誌記錄,查看不支援的列類型) |
ADD TRANDATA with ALLCOLS option |
啟用無條件補充記錄資料表中的所有列 |
用於在嘗試執行更新或刪除時檢查所有列值的雙向和主動 - 主動配置,而不僅僅是更改的列。 儘管允許即時資料驗證的最進階別並因此檢測衝突,但這需要更多的資源。 當源和目標的主鍵,唯一鍵和外鍵不相同或在源和目標之間不斷變化時,也可以使用它。 |
表級補充日誌記錄,最小設定 |
ADD TRANDATA with NOSCHEDULINGCOLS option |
啟用表的主鍵和所有有效唯一索引的無條件補充日誌記錄 |
僅用於非整合Replicat。這是所需的最低表層級日誌記錄。 |
2.2.1啟用最小資料庫級補充記錄
Oracle強烈建議將Oracle來源資料庫置於強制日誌記錄模式。強制日誌記錄模式強制記錄所有事務和負載,相反,覆蓋任何使用者或儲存設定。這確保了Extract配置中的來源資料不會被錯過。
此外,使用Oracle GoldenGate時,Oracle來源資料庫還需要最少的補充日誌記錄(資料庫級選項)。這會將行鏈資訊(如果存在)添加到重做日誌以進行更新操作。
強烈建議不要使用資料庫級主鍵(PK)和唯一索引(UI)日誌記錄,因為它會在複製外的表上建立額外的額外開銷。除非需要這些日誌記錄選項才能用於業務目的,否則只需在資料庫層級啟用最少的補充日誌記錄和Oracle GoldenGate強制日誌記錄。
執行以下步驟來驗證和啟用(如有必要)最小補充日誌記錄和強制日誌記錄。
- 以具有ALTER SYSTEM特權的使用者身份登入到SQL * Plus。
- 發出以下命令以確定資料庫是處於補充日誌記錄模式以及處於強制記錄模式。如果兩個查詢的結果均為“是”,則資料庫符合Oracle GoldenGate要求。
SELECT supplemental_log_data_min, force_logging FROM v$database;
- 如果兩個或兩個屬性的結果為NO,請繼續執行以下步驟以根據需要啟用它們:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;SQL> ALTER DATABASE FORCE LOGGING;
- 發出以下命令以驗證現在是否啟用了這些屬性。
ELECT supplemental_log_data_min, force_logging FROM v$database;
- 切換記錄檔。
SQL> ALTER SYSTEM SWITCH LOGFILE;
2.2.2 啟用schema級補充記錄
Oracle GoldenGate支援schema級補充日誌記錄。使用Oracle GoldenGate DDL複製功能時,Oracle來源資料庫需要schema級日誌記錄。In all other use cases, it is optional, but then you must use table-level logging instead(請參閱啟用表層級補充日誌記錄)。
預設情況下,schema層級日誌記錄會自動啟用主鍵的無條件補充日誌記錄以及模式中所有表的唯一鍵和外鍵的有條件補充日誌記錄。選項使您可以根據需要變更記錄檔記錄。
Oracle強烈建議使用模式級日誌記錄而不是表級日誌記錄,因為它確保添加到模式中的任何新表在滿足萬用字元規範時都會被捕獲。
在源系統上執行以下步驟以啟用schema級補充日誌記錄。
- 如果版本早於11.2.0.2,則將Oracle Patch 13794550應用於源Oracle資料庫。
- 在源系統上運行GGSCI。
- 使用有權啟用schema級補充日誌記錄的憑證儲存區中的使用者別名發出DBLOGIN命令。
DBLOGIN USERIDALIAS alias
有關USERIDALIAS和其他選項的更多資訊,請參閱Oracle GoldenGate參考中的USERIDALIAS。
- 對每個想要使用Oracle GoldenGate捕獲資料更改的模式發出ADD SCHEMATRANDATA命令。
ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]
Where:
1)如果沒有選項,則ADD SCHEMATRANDATA模式允許在主鍵源系統上進行無條件補充日誌記錄,並有條件地補充給定模式中所有當前表和未來表的所有唯一鍵和外鍵。無條件日誌記錄強制將主索引值寫入日誌,無論在當前操作中鍵是否已更改。條件日誌記錄會記錄外鍵或唯一鍵的所有列值(如果其中至少有一個在當前操作中已更改)。對於支援非整合Replicat,預設設定是可選的,但是需要預設支援整合Replicat,因為主鍵,唯一鍵和外鍵都必須可用於入站伺服器以計算依賴關係。有關整合Replicat的更多資訊,請參閱決定使用哪種應用方法。
2)ALLCOLS可用於啟用表的所有列的無條件補充日誌記錄,並適用於給定模式中的所有當前和未來表。當源表和目標表具有不同的調度列時,用於支援整合的Replicat。 (調度列是主鍵,唯一鍵和外鍵。)
3)NOSCHEDULINGCOLS僅記錄schema中現有表的主索引值和所有有效唯一索引值,以及稍後添加的新表。這是模式層級日誌所需的最低層級,僅對非整合模式下的Replicat有效
在以下樣本中,該命令啟用finance
模式的預設補充日誌記錄
ADD SCHEMATRANDATA finance
在以下樣本中,該命令僅對hr模式的主鍵和有效唯一索引啟用補充日誌記錄。
ADD SCHEMATRANDATA hr NOSCHEDULINGCOLS
2.2.3 啟用表級補充日誌記錄
在以下情況下啟用源系統上的表級補充日誌記錄:
- 在不使用模式級日誌記錄時啟用所需層級的日誌記錄(請參閱啟用模式層級補充日誌記錄)。無論是schema級還是表級日誌都必須使用。預設情況下,表級日誌記錄自動啟用主鍵的無條件補充日誌記錄以及表的唯一鍵和外鍵的條件補充日誌記錄。選項使您可以根據需要變更記錄檔記錄。
- 防止任何給定表的主鍵記錄。
- 在表層級記錄非鍵列值以支援特定的Oracle GoldenGate功能,例如篩選和衝突檢測以及解析邏輯。
在源系統上執行以下步驟以啟用表級補充日誌記錄或使用該命令的可選功能。
1)在源系統上運行GGSCI。
2)使用有權啟用表級補充日誌記錄的憑證儲存區中的使用者的別名發出DBLOGIN命令。
DBLOGIN USERIDALIAS alias
有關DBLOGIN和其他選項的更多資訊,請參閱Oracle GoldenGate參考中的USERIDALIAS。
3)發出ADD TRANDATA命令。
ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]
Where:
- 如果表位於多租戶容器資料庫中,則container是根容器或可插拔資料庫的名稱。
- schema是包含該表的源schema
- table是表的名稱。有關指定對象名稱的說明,請參閱管理Oracle GoldenGate中的在Oracle GoldenGate輸入中指定對象名稱
- 在沒有其他選項的情況下添加TRANDATA將自動啟用主鍵的無條件補充記錄以及表格的唯一鍵和外鍵的條件補充記錄。無條件日誌記錄強制將主索引值寫入日誌,無論在當前操作中鍵是否已更改。條件日誌記錄會記錄外鍵或唯一鍵的所有列值(如果其中至少有一個在當前操作中已更改)。對於支援非整合Replicat(請參閱NOSCHEDULINGCOLS),預設值是可選的,但是由於主鍵,唯一鍵和外鍵必須都可用於入站伺服器以計算依賴性,因此需要該預設值來支援整合Replicat。有關整合Replicat的更多資訊,請參閱決定使用哪種應用方法。
- ALLCOLS支援無條件補充記錄表中的所有列。當源表和目標表具有不同的調度列時,用於支援整合的Replicat。 (調度列是主鍵,唯一鍵和外鍵。)
- NOSCHEDULINGCOLS僅適用於非整合模式下的Replicat。它使用ADD SUPPLEMENTAL LOG DATA ALWAYS子句發出一個ALTER TABLE命令,該子句適用於為該表定義的唯一約束類型,或者沒有唯一約束的所有列。當不使用模式層級日誌記錄時,此命令滿足Oracle GoldenGate的基本表層級日誌記錄要求。有關Oracle GoldenGate如何選擇密鑰或索引的資訊,請參閱確保源表和目標表中的行唯一性。
- COLS列記錄KEYCOLS子句所需的非密鑰列或過濾和操作。括弧是必需的。除了主鍵之外,這些列將被記錄,除非NOKEY選項也存在。
- NOKEY防止主鍵或唯一鍵的記錄。需要TABLE和MAP參數中的KEYCOLS子句和ADD TRANDATA命令中的COLS子句來記錄替代KEYCOLS列。
4)如果將ADD TRANDATA與COLS選項一起使用,請為目標上的這些列建立唯一索引以最佳化行檢索。如果將這些列作為KEYCOLS子句的替代鍵記錄下來,請記下在配置Oracle GoldenGate進程時將KEYCOLS子句添加到TABLE語句和MAP語句。
2.3 在資料庫中啟用Oracle GoldenGate
必須為Oracle 11.2.0.4或更高版本的資料庫顯式啟用支援Oracle GoldenGate捕獲和應用所需的資料庫服務。這對Extract和Replicat的所有模式都是必需的。
要啟用Oracle GoldenGate,請設定以下資料庫初始化參數。 Oracle RAC中的所有執行個體必須具有相同的設定。
ENABLE_GOLDENGATE_REPLICATION=true
有關此參數的更多資訊,請參閱初始化參數。
2.4 設定閃回查詢
為了處理某些更新記錄,Extract從來源資料庫中提取額外的行資料。 Oracle GoldenGate擷取以下資料:
預設情況下,Oracle GoldenGate使用閃回查詢從撤消(復原)資料表空間中擷取值。這樣,Oracle GoldenGate可以在特定時間或SCN中重建讀取一致的行映像以匹配重做記錄。
為獲得最佳提取結果,請按如下所示配置來源資料庫:
- 通過如下設定Oracle初始化參數UNDO_MANAGEMENT和UNDO_RETENTION來設定足夠數量的重做保留(以秒為單位)。
UNDO_MANAGEMENT=AUTOUNDO_RETENTION=86400 UNDO_RETENTION can be adjusted upward in high-volume environments.
- 使用以下公式計算撤消資料表空間中所需的空間。
undo_space = UNDO_RETENTION * UPS + overhead
Where:
1)ndo_space是撤消塊的數量。
2)UNDO_RETENTION是UNDO_RETENTION參數的值(以秒為單位)。
3)UPS是每秒撤銷塊的數量。
4)開銷是中繼資料(事務表等)的最小開銷。
使用系統檢視表V $ UNDOSTAT來估計UPS和開銷。
- 對於包含LOB的表,請執行以下操作之一:
1)將LOB儲存子句設定為RETENTION。這是在UNDO_MANAGEMENT設定為AUTO時建立的表的預設值。
2)如果使用PCTVERSION而不是RETENTION,請將PCTVERSION設定為初始值25.您可以根據使用STATS EXTRACT命令報告的讀取統計資訊來調整它(請參閱表2-1)。如果這些統計資訊中STAT_OPER_ROWFETCH CURRENTBYROWID或STAT_OPER_ROWFETCH_CURRENTBYKEY欄位的值很高,請以10為增量增加PCTVERSION,直到統計資訊顯示低值。
- 將以下任一許可權授予Oracle GoldenGate Extract使用者:
GRANT FLASHBACK ANY TABLE TO db_userGRANT FLASHBACK ON schema.table TO db_user
Oracle GoldenGate提供以下參數來管理提取。
Table 2-1 Oracle GoldenGate Parameters and Commands to Manage Fetching
Parameter or Command |
Description |
帶有REPORTFETCH選項的STATS EXTRACT命令 |
Shows Extract fetch statistics on demand. |
帶有REPORTFETCH選項的STATOPTIONS參數 |
設定STATS EXTRACT命令,以便始終顯示提取統計資訊。 |
MAXFETCHSTATEMENTS參數 |
控制Extract在來源資料庫中維護的準備查詢的開啟遊標數量,以及SQLEXEC操作的數量。 |
MAXFETCHSTATEMENTS參數 |
控制Extract的預設提取行為:Extract是否執行閃回查詢或從表中提取當前映像。 |
使用USELATESTVERSION或NOUSELATESTVERSION選項的FETCHOPTIONS參數 |
處理Extract閃回查詢的失敗,例如,如果撤消保留到期或表的結構發生更改。提取可以從表格中提取當前映像或忽略失敗 |
REPFETCHEDCOLOPTIONS參數 |
控制Replicat在處理包含提取資料或列缺失條件的追蹤記錄時的響應。 |
2.5 管理伺服器資源
在整合模式下,Extract與來源資料庫中的基礎logmining server互動,並且Replicat與目標資料庫中的入站伺服器互動。本節提供了管理這些伺服器使用的共用記憶體的指導原則。
伺服器使用的共用記憶體來自資料庫中系統全域地區(SGA)的Streams池部分。因此,必須將資料庫初始化參數STREAMS_POOL_SIZE設定得足夠高,以保證足夠的記憶體可用於您希望在整合模式下啟動並執行Extract和Replicat進程的數量。請注意,Streams池也被資料庫的其他組件(如Oracle Streams,Advanced Queuing和Datapump匯出/匯入)使用,因此在確定Oracle GoldenGate的Streams池的大小時請確保考慮到它們。
預設情況下,一個整合捕獲提取請求登入伺服器以1GB的MAX_SGA_SIZE運行。因此,如果您在同一個資料庫執行個體中以整合捕獲模式運行三個提取,則至少需要分配給Streams池的3 GB記憶體。作為最佳做法,請保留25%的Streams池可用。例如,如果在整合捕獲模式下有3個提取,請將資料庫的STREAMS_POOL_SIZE設定為以下值:
3 GB * 1.25 = 3.75 GB
參考資料
https://docs.oracle.com/goldengate/c1230/gg-winux/GGODB/preparing-database-oracle-goldengate.htm#GGODB-GUID-E06838BD-0933-4027-8A6C-D4A17BDF4E41
為Oracle GoldenGate準備資料庫