本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Oracle GoldenGate
若要使用 Amazon RDS 設定 Oracle GoldenGate,請在 Amazon EC2 執行個體上設定中樞,然後設定來源和目標資料庫。下列幾節提供一個範例,說明如何設定 Oracle GoldenGate,以與 Amazon RDS for Oracle 搭配使用。
主題
在 Amazon EC2 上設定 Oracle GoldenGate 中樞
若要在 Amazon EC2 執行個體上建立 Oracle GoldenGate 中樞,請先建立 Amazon EC2 執行個體,其中具有 Oracle RDBMS 的完整用戶端安裝。Amazon EC2 執行個體也須已安裝 Oracle GoldenGate 軟體。Oracle GoldenGate 軟體版本取決於來源與目標資料庫版本。如需安裝 Oracle GoldenGatee 的詳細資訊,請參閱 Oracle GoldenGate 文件
做為 Oracle GoldenGate 中樞的 Amazon EC2 執行個體,會處理來自來源資料庫的交易資訊並存放到線索檔案中。若要支援此程序,請確定您符合下列需求:
-
您已針對追蹤檔案配置足夠的儲存體。
-
Amazon EC2 執行個體具有足夠的處理能力來管理資料量。
-
EC2 執行個體有足夠的記憶體來儲存交易資訊,然後再寫入追蹤檔案。
在 Amazon EC2 執行個體上設定 Oracle GoldenGate 傳統架構中樞
-
建立 Oracle GoldenGate 目錄中的子目錄。
在 Amazon EC2 命令列 shell 中,啟動
ggsci(Oracle GoldenGate 命令解譯器)。CREATE SUBDIRS命令會在/gg目錄下建立參數、報告和檢查點檔案的子目錄。prompt$ cd /gg prompt$ ./ggsci GGSCI> CREATE SUBDIRS -
設定
mgr.prm檔案。下列範例會將下列幾行新增至
$GGHOME/dirprm/mgr.prm檔案。PORT 8199 PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5 -
啟動管理員。
下列範例會啟動
ggsci並執行start mgr命令。GGSCI> start mgr
Oracle GoldenGate 中樞現在可供使用。
設定來源資料庫與 Amazon RDS 上的 GoldenGate 搭配使用
完成下列任務,設定來源資料庫以搭配 Oracle GoldenGate 使用。
設定步驟
步驟 1:開啟來源資料庫上的補充記錄
若要開啟最低資料庫層級補充記錄,請執行下列 PL/SQL 程序:
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')
步驟 2:將 ENABLE_GOLDENGATE_REPLICATION 初始化參數設為 true
當您將 ENABLE_GOLDENGATE_REPLICATION 初始化參數設為 true 時,它會允許資料庫服務支援邏輯複寫。如果來源資料庫位於 Amazon RDS 資料庫執行個體,請確定將一個參數群組指派給 ENABLE_GOLDENGATE_REPLICATION 初始化參數設為 true 的資料庫執行個體。如需 ENABLE_GOLDENGATE_REPLICATION 初始化參數的詳細資訊,請參閱 Oracle Database 文件
步驟 3:在來源資料庫上設定日誌保留期間
請確定來源資料庫設定為保留封存的重做日誌。請考量下列準則:
-
指定記錄保留的持續時間 (以小時為單位)。最小值為一小時 。
-
將持續時間設定為超過來源資料庫執行個體的任何潛在停機時間、通訊的任何潛在期間,以及來源執行個體聯網問題的任何潛在期間。此持續時間可讓 Oracle GoldenGate 視需要從來源執行個體復原日誌。
-
請確定執行個體有足夠的儲存空間可存放這些檔案。
例如,將封存重做日誌的保留期間設為 24 小時。
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)
如果未啟用日誌保留,或如果保留值太小,您會收到如下訊息:
2022-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 Not able to establish initial position for begin time 2022-03-06 06:16:55.
因為您的資料庫執行個體會保留您封存的重做日誌,所以請確定您有足夠的空間存放檔案。若要查看您在過去 num_hours 小時內已使用多少空間,請使用下列查詢,並將 num_hours 改為時數。
SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;
步驟 4:在來源資料庫上建立 Oracle GoldenGate 使用者帳戶。
Oracle GoldenGate 會以資料庫使用者身分執行,且需有適當的資料庫權限,才能存取來源資料庫的重做日誌和封存重做日誌。若要提供這些內容,在來源資料庫上建立使用者帳戶。如需 Oracle GoldenGate 使用者帳戶許可的詳細資訊,請參閱 Oracle 文件
下列陳述式會建立一個名為 oggadm1 的使用者帳戶。
CREATE TABLESPACE administrator; CREATE USER oggadm1 IDENTIFIED BY "password" DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
注意
指定此處所顯示提示以外的密碼,作為安全最佳實務。
步驟 5:在來源資料庫上將帳戶權限授予使用者
在此任務中,您會將必要的帳戶權限授予來源資料庫上的資料庫使用者。
在來源資料庫上授予帳戶權限
-
您可以使用 SQL 命令
grant和rdsadmin.rdsadmin_util程序grant_sys_object,將必要權限授予 Oracle GoldenGate 使用者帳戶。下列陳述式會將權限授予一個名為oggadm1的使用者。GRANT CREATE SESSION, ALTER SESSION TO oggadm1; GRANT RESOURCE TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT FLASHBACK ANY TABLE TO oggadm1; GRANT SELECT ANY TABLE TO oggadm1; GRANT SELECT_CATALOG_ROLE TOrds_master_user_nameWITH ADMIN OPTION; EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1'); GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1; GRANT SELECT ON SYS.V_$DATABASE TO oggadm1; GRANT ALTER ANY TABLE TO oggadm1; -
授予將成為 Oracle GoldenGate 管理員之使用者帳戶所需的權限。執行下列 PL/SQL 程式。
EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'capture', grant_select_privileges => true, do_grants => TRUE);若要撤銷權限,請在同一套件中使用程序
revoke_admin_privilege。
步驟 6:新增來源資料庫的 TNS 別名
將下列項目新增至 Oracle 主目錄中要由 EXTRACT 程序使用的 $ORACLE_HOME/network/admin/tnsnames.ora。如需 tnsnames.ora 檔案的詳細資訊,請參閱 Oracle 文件
OGGSOURCE= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )
設定目標資料庫與 Amazon RDS 上的 Oracle GoldenGate 搭配使用
在此任務中,您會設定目標資料庫執行個體與 Oracle GoldenGate 搭配使用。
設定步驟
步驟 1:將 ENABLE_GOLDENGATE_REPLICATION 初始化參數設為 true
當您將 ENABLE_GOLDENGATE_REPLICATION 初始化參數設為 true 時,它會允許資料庫服務支援邏輯複寫。如果來源資料庫位於 Amazon RDS 資料庫執行個體,請確定將一個參數群組指派給 ENABLE_GOLDENGATE_REPLICATION 初始化參數設為 true 的資料庫執行個體。如需 ENABLE_GOLDENGATE_REPLICATION 初始化參數的詳細資訊,請參閱 Oracle Database 文件
步驟 2:在目標資料庫上建立 Oracle GoldenGate 使用者帳戶
Oracle GoldenGate 會以資料庫使用者身分執行,而且需要適當的資料庫權限。若要確定它具有這些權限,請在目標資料庫上建立一個使用者帳戶。
下列陳述式會建立一個名為 oggadm1 的使用者。
CREATE TABLESPSACE administrator; CREATE USER oggadm1 IDENTIFIED BY "password" DEFAULT TABLESPACE administrator TEMPORARY TABLESPACE temp; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
注意
指定此處所顯示提示以外的密碼,作為安全最佳實務。
步驟 3:在目標資料庫上授予帳戶權限
在此任務中,您會將必要的帳戶權限授予目標資料庫上的資料庫使用者。
在目標資料庫上授予帳戶權限
-
您需要將必要權限授予目標資料庫上的 Oracle GoldenGate 使用者帳戶。在下列範例中,您會將權限授予
oggadm1。GRANT CREATE SESSION TO oggadm1; GRANT ALTER SESSION TO oggadm1; GRANT CREATE CLUSTER TO oggadm1; GRANT CREATE INDEXTYPE TO oggadm1; GRANT CREATE OPERATOR TO oggadm1; GRANT CREATE PROCEDURE TO oggadm1; GRANT CREATE SEQUENCE TO oggadm1; GRANT CREATE TABLE TO oggadm1; GRANT CREATE TRIGGER TO oggadm1; GRANT CREATE TYPE TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT CREATE ANY TABLE TO oggadm1; GRANT ALTER ANY TABLE TO oggadm1; GRANT LOCK ANY TABLE TO oggadm1; GRANT SELECT ANY TABLE TO oggadm1; GRANT INSERT ANY TABLE TO oggadm1; GRANT UPDATE ANY TABLE TO oggadm1; GRANT DELETE ANY TABLE TO oggadm1; -
授予將成為 Oracle GoldenGate 管理員之使用者帳戶所需的權限。執行下列 PL/SQL 程式。
EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'apply', grant_select_privileges => true, do_grants => TRUE);若要撤銷權限,請在同一套件中使用程序
revoke_admin_privilege。
步驟 4:新增目標資料庫的 TNS 別名
將下列項目新增至 Oracle 主目錄中要由 REPLICAT 程序使用的 $ORACLE_HOME/network/admin/tnsnames.ora。對於 Oracle 多租戶資料庫,請確定 TNS 別名指向 PDB 的服務名稱。如需 tnsnames.ora 檔案的詳細資訊,請參閱 Oracle 文件
OGGTARGET= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )