Oracle RDSからAutonomous DatabaseへのZDM論理オンライン移行 (2025/09/30)

Oracle RDSからAutonomous DatabaseへのZDM論理オンライン移行 (2025/09/30)

https://database-heartbeat.com/2025/09/30/zdm-logical-online-rds-adb-aws/

はじめに

このブログ記事では、Oracle Zero Downtime Migration (ZDM) 論理オンライン方式を用いて Oracle RDS から Autonomous Database に移行する手順について説明します。この方式では、データのエクスポートとインポートに Oracle Data Pump を活用し、Data Pump ダンプファイルの保存には Amazon S3 オブジェクトストレージを使用します。さらに、Oracle GoldenGate を使用してソース・データベースとターゲット・データベースの同期を維持し、ダウンタイムを最小限に抑えた移行を実現します。

環境

  • ソースデータベース: Oracle RDS
  • ターゲットデータベース: Autonomous Database
  • 中間ストレージの場所: Amazon S3 オブジェクト ストレージ バケット。
  • Oracle ZDM: RHEL 8 を搭載した AWS EC2 VM インスタンスにインストールされます。
  • Oracle GoldenGate: RHEL 8 を搭載した AWS EC2 VM インスタンス上の Podman コンテナにインストールされます。

ステップ1:Oracle ZDMをダウンロードしてインストールする

「Zero Downtime Migration ソフトウェアのセットアップ」または「パート 1/5: Zero Downtime Migration (ZDM) – 概要とインストール」の手順に従って、AWS EC2 VM インスタンスに Oracle ZDM ソフトウェアをダウンロードしてインストールします

ステップ2: S3バケットのアクセスキーとシークレットキーを取得する

Data Pump エクスポート ファイルをオブジェクト ストレージ バケットにアップロードするには、S3 への ZDM アクセスを提供する必要があります。

AWSドキュメント、またはこのブログ記事の手順1と2のに従って、アクセスキーID と シークレットアクセスキーを取得します。これらは以下のようになります。

Access key ID: AKIA2PCQOXHEFKTB6SU2
Secret access key: 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

ステップ3: RDSインスタンスがS3バケットにアクセスできるようにする

条件を確認し、 AWS ドキュメントの手順に従って、RDS インスタンスが S3 バケットにアクセスできるようにします。

ステップ4: Autonomous DatabaseからS3バケットへのアクセスを確認する

S3オブジェクトにアクセスするための認証情報として、DBMS_CLOUD PL/SQLパッケージを使用します。手順2で取得したアクセスキーを使用します。

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => '<Crednedial_Name>',
        username => '<Access_Key_ID>',
        password => '<Secret_Access_Key>'
    );
END;
/
  
-- in this example
SQL> BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
          credential_name => 'AWSCRED',
          username => 'AKIA2PCQOXHEFKTB6SU2',
          password => '7MymZxpyL3NDJeNpMrfuDE8FJ1fp70BNpsP2Le9b'
      );
  END;
  /
  
PL/SQL procedure successfully completed.

S3 バケットへのアクセスをテストするには、DBMS_CLOUD パッケージの LIST_OBJECTS 関数を使用してファイルを一覧表示します。

set lines 300
col OBJECT_NAME for a50
select OBJECT_NAME from dbms_cloud.list_objects('AWSCRED', 'https://s3zdm.s3.us-east-1.amazonaws.com');

ステップ5: PodmanにOracle GoldenGateをインストールする

このドキュメントの「Oracle GoldenGate on Podman」セクションで説明されている手順に従って、EC2 VM インスタンス上の Podman コンテナに Oracle GoldenGate をダウンロードしてインストールします。

ステップ6: GoldenGateのソースRDSデータベースを構成する

RDS パラメータグループで次のパラメータを設定します。

streams_pool_size=2147483648  --(=2GB)
ENABLE_GOLDENGATE_REPLICATION=true

次のコマンドを実行します。

EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD');
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable => true);
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
 
CREATE TABLESPACE administrator;
CREATE USER ggadmin  IDENTIFIED BY "your_password" DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP;
ALTER USER ggadmin QUOTA UNLIMITED ON administrator;
GRANT CREATE SESSION, ALTER SESSION TO ggadmin;
GRANT RESOURCE TO ggadmin;
GRANT SELECT ANY DICTIONARY TO ggadmin;
GRANT FLASHBACK ANY TABLE TO ggadmin;
GRANT SELECT ANY TABLE TO ggadmin;
 
--Check the RDS_MASTER_ROLE:
SELECT * FROM sys.dba_role_privs WHERE granted_role = 'RDS_MASTER_ROLE';
GRANTEE              GRANTED_ROLE    ADM DEL DEF COM INH
-------------------- --------------- --- --- --- --- ---
SYS                  RDS_MASTER_ROLE YES NO  YES NO  NO
ADMIN                RDS_MASTER_ROLE NO  NO  YES NO  NO
--In this case, “SYS” and “ADMIN”. Use these two values in the following GRANT commands:
GRANT SELECT_CATALOG_ROLE TO SYS WITH ADMIN OPTION;
GRANT SELECT_CATALOG_ROLE TO ADMIN WITH ADMIN OPTION;
 
EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'GGADMIN');
GRANT EXECUTE ON DBMS_FLASHBACK TO ggadmin;
GRANT SELECT ON SYS.V_$DATABASE TO ggadmin;
GRANT ALTER ANY TABLE TO ggadmin;
EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (grantee => 'ggadmin', privilege_type=> 'capture', grant_select_privileges => true, do_grants=> TRUE);
grant connect, resource to ggadmin;
grant unlimited tablespace to ggadmin;
grant create view to ggadmin;
grant create table to ggadmin;

Amazon RDS 上の Oracle GoldenGate で使用するためのソース データベースの設定については、RDS のドキュメントを参照してください

ステップ7: GoldenGate用のターゲットAutonomous Databaseを構成する

次のコマンドを実行します。

alter user ggadmin identified by your_password account unlock;

ステップ8: ZDMレスポンスファイルを作成する

ZDMホスト上に新しいレスポンスファイルを作成します。以下は、必要最小限のパラメータのみを指定した例です。zdmuserとして実行します。

[zdmuser@zdmhost ~]$ vi logical_online.rsp
# migration method
MIGRATION_METHOD=ONLINE_LOGICAL
DATA_TRANSFER_MEDIUM=AMAZONS3
# AWS RDS Oracle
SOURCEDATABASE_ENVIRONMENT_NAME=AMAZON
SOURCEDATABASE_ENVIRONMENT_DBTYPE=RDS_ORACLE
SOURCEDATABASE_ADMINUSERNAME=admin
SOURCEDATABASE_CONNECTIONDETAILS_HOST=orards2.cvi2oskioo1c.us-east-1.rds.amazonaws.com
SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME=ORCL
SOURCEDATABASE_CONNECTIONDETAILS_PORT=1521
SOURCEDATABASE_GGADMINUSERNAME=ggadmin
# data pump
DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME=DATA_PUMP_DIR
DATAPUMPSETTINGS_JOBMODE=SCHEMA
DATAPUMPSETTINGS_METADATAREMAPS-1=type:REMAP_TABLESPACE,oldValue:USERS,newValue:DATA
INCLUDEOBJECTS-1=owner:HR
# target db
TARGETDATABASE_OCID=ocid1.autonomousdatabase.oc1.iad.xxx
TARGETDATABASE_ADMINUSERNAME=ADMIN
TARGETDATABASE_GGADMINUSERNAME=ggadmin
# oci cli
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_USERID=ocid1.user.oc1..xxx
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_TENANTID=ocid1.tenancy.oc1..xxx
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_FINGERPRINT=43:05:e5:1f:63:8a:29:f3:02:67:ff:56:57:e3:bc:33
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_PRIVATEKEYFILE=/home/zdmuser/.oci/oci_api_key.pem
OCIAUTHENTICATIONDETAILS_REGIONID=us-ashburn-1
# s3 credentials
DUMPTRANSFERDETAILS_S3BUCKET_NAME=s3zdm
DUMPTRANSFERDETAILS_S3BUCKET_REGION=us-east-1
DUMPTRANSFERDETAILS_S3BUCKET_ACCESSKEY=AKIA2PCQOXHEFKTB6SU2
# GoldenGate
GOLDENGATEHUB_ADMINUSERNAME=oggadmin
GOLDENGATEHUB_SOURCEDEPLOYMENTNAME=Local
GOLDENGATEHUB_TARGETDEPLOYMENTNAME=Local
# Private IP of the VM where Podman is running
GOLDENGATEHUB_URL=https://172.31.45.112
GOLDENGATEHUB_ALLOWSELFSIGNEDCERTIFICATE=TRUE

OCI CLIパラメータは、ZDMがAutonomous Databaseの資格情報(ウォレットファイル)をダウンロードするために必要です。ZDMホストにOCI CLIをインストールしていない場合、またはOCI RESTエンドポイントへのポート443経由のHTTPS呼び出しができない場合は、Autonomous Databaseの資格情報ウォレットをダウンロードし、ZDMホストで解凍してください。パラメータファイルの内容は次のとおりです。

# skip the following parameters
TARGETDATABASE_OCID
OCIAUTHENTICATIONDETAILS_*
 
# and add the following parameters
TARGETDATABASE_DBTYPE=ADBCC
TARGETDATABASE_CONNECTIONDETAILS_HOST=example.adb.us-ashburn-1.oraclecloud.com
TARGETDATABASE_CONNECTIONDETAILS_PORT=1521
TARGETDATABASE_CONNECTIONDETAILS_SERVICENAME=adbzdm_high.atp.oraclecloud.com
TARGETDATABASE_CONNECTIONDETAILS_TLSDETAILS_CREDENTIALSLOCATION=/home/zdmuser/adbwallet
TABLESPACEDETAILS_EXCLUDE=UNDOTBS1,UNDO_2

ステップ9: 移行を評価する

ZDM ホストで、zdmuser として:

[zdmuser@zdmhost ~]$ $ZDMHOME/bin/zdmcli migrate database -rsp logical_online.rsp -eval

RDS および Autonomous Database 管理ユーザーのパスワードと、S3 バケット アクセスのパスワード (シークレット アクセス キー、この例では 7MymZxpyL3NDJeNpMrfuDE8FJ1fp70BNpsP2Le9b) を入力するよう対話的に求められます。

ジョブのステータスを確認します。ZDMホストでzdmuserとして実行します。

[zdmuser@zdmhost ~]$ $ZDMHOME/bin/zdmcli query job -jobid 1
Job ID: 1
Job Type: "EVAL"
Current status: SUCCEEDED
ZDM_VALIDATE_TGT ...................... COMPLETED
ZDM_VALIDATE_SRC ...................... COMPLETED
ZDM_VALIDATE_GG_HUB ................... COMPLETED
ZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... COMPLETED
ZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... COMPLETED
ZDM_PREPARE_DATAPUMP_SRC .............. COMPLETED
ZDM_DATAPUMP_ESTIMATE_SRC ............. COMPLETED

ステップ10: 移行を開始する

評価のために同じコマンドを実行しますが、今回は -eval パラメータを指定しません。-pauseafter ZDM_MONITOR_GG_LAGパラメータを追加して、ソースデータベースとターゲットデータベースの同期が維持された直後に移行を一時停止します。その後、アプリケーションのスイッチオーバーの準備ができたら、 zdmcli resume jobコマンドを使用してジョブを再開できます

ZDM ホストで、zdmuser として:

[zdmuser@zdmhost ~]$ $ZDMHOME/bin/zdmcli migrate database -rsp logical_online.rsp -pauseafter ZDM_MONITOR_GG_LAG

ジョブのステータスを確認します。ZDMホストでzdmuserとして実行します。

[zdmuser@zdmhost ~]$ $ZDMHOME/bin/zdmcli query job -jobid 2
Job ID: 2
Job Type: "MIGRATE"
Current status: PAUSED
ZDM_VALIDATE_TGT ...................... COMPLETED
ZDM_VALIDATE_SRC ...................... COMPLETED
ZDM_VALIDATE_GG_HUB ................... COMPLETED
ZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... COMPLETED
ZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... COMPLETED
ZDM_PREPARE_DATAPUMP_SRC .............. COMPLETED
ZDM_DATAPUMP_ESTIMATE_SRC ............. COMPLETED
ZDM_PREPARE_GG_HUB .................... COMPLETED
ZDM_ADD_HEARTBEAT_SRC ................. COMPLETED
ZDM_ADD_SCHEMA_TRANDATA_SRC ........... COMPLETED
ZDM_CREATE_GG_EXTRACT_SRC ............. COMPLETED
ZDM_PREPARE_DATAPUMP_TGT .............. COMPLETED
ZDM_DATAPUMP_EXPORT_SRC ............... COMPLETED
ZDM_TRANSFER_DUMPS_SRC ................ COMPLETED
ZDM_DATAPUMP_IMPORT_TGT ............... COMPLETED
ZDM_POST_DATAPUMP_SRC ................. COMPLETED
ZDM_POST_DATAPUMP_TGT ................. COMPLETED
ZDM_ADD_HEARTBEAT_TGT ................. COMPLETED
ZDM_ADD_CHECKPOINT_TGT ................ COMPLETED
ZDM_CREATE_GG_REPLICAT_TGT ............ COMPLETED
ZDM_START_GG_REPLICAT_TGT ............. COMPLETED
ZDM_MONITOR_GG_LAG .................... COMPLETED
ZDM_PREPARE_SWITCHOVER_APP ............ PENDING
ZDM_ADVANCE_SEQUENCES ................. PENDING
ZDM_REFRESH_MVIEW_TGT ................. PENDING
ZDM_SWITCHOVER_APP .................... PENDING
ZDM_POST_SWITCHOVER_TGT ............... PENDING
ZDM_RM_GG_EXTRACT_SRC ................. PENDING
ZDM_RM_GG_REPLICAT_TGT ................ PENDING
ZDM_DELETE_SCHEMA_TRANDATA_SRC ........ PENDING
ZDM_RM_HEARTBEAT_SRC .................. PENDING
ZDM_RM_CHECKPOINT_TGT ................. PENDING
ZDM_RM_HEARTBEAT_TGT .................. PENDING
ZDM_CLEAN_GG_HUB ...................... PENDING
ZDM_POST_ACTIONS ...................... PENDING

ステップ11: 移行を完了する

移行を完了するには、ZDM ジョブを再開します。

[zdmuser@zdmhost ~]$ $ZDMHOME/bin/zdmcli resume job -jobid 2

ステータスを確認します:

[zdmuser@zdmhost ~]$ $ZDMHOME/bin/zdmcli query job -jobid 2
Job ID: 2
Job Type: "MIGRATE"
Current status: SUCCEEDED
ZDM_VALIDATE_TGT ...................... COMPLETED
ZDM_VALIDATE_SRC ...................... COMPLETED
ZDM_VALIDATE_GG_HUB ................... COMPLETED
ZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... COMPLETED
ZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... COMPLETED
ZDM_PREPARE_DATAPUMP_SRC .............. COMPLETED
ZDM_DATAPUMP_ESTIMATE_SRC ............. COMPLETED
ZDM_PREPARE_GG_HUB .................... COMPLETED
ZDM_ADD_HEARTBEAT_SRC ................. COMPLETED
ZDM_ADD_SCHEMA_TRANDATA_SRC ........... COMPLETED
ZDM_CREATE_GG_EXTRACT_SRC ............. COMPLETED
ZDM_PREPARE_DATAPUMP_TGT .............. COMPLETED
ZDM_DATAPUMP_EXPORT_SRC ............... COMPLETED
ZDM_TRANSFER_DUMPS_SRC ................ COMPLETED
ZDM_DATAPUMP_IMPORT_TGT ............... COMPLETED
ZDM_POST_DATAPUMP_SRC ................. COMPLETED
ZDM_POST_DATAPUMP_TGT ................. COMPLETED
ZDM_ADD_HEARTBEAT_TGT ................. COMPLETED
ZDM_ADD_CHECKPOINT_TGT ................ COMPLETED
ZDM_CREATE_GG_REPLICAT_TGT ............ COMPLETED
ZDM_START_GG_REPLICAT_TGT ............. COMPLETED
ZDM_MONITOR_GG_LAG .................... COMPLETED
ZDM_PREPARE_SWITCHOVER_APP ............ COMPLETED
ZDM_ADVANCE_SEQUENCES ................. COMPLETED
ZDM_REFRESH_MVIEW_TGT ................. COMPLETED
ZDM_SWITCHOVER_APP .................... COMPLETED
ZDM_POST_SWITCHOVER_TGT ............... COMPLETED
ZDM_RM_GG_EXTRACT_SRC ................. COMPLETED
ZDM_RM_GG_REPLICAT_TGT ................ COMPLETED
ZDM_DELETE_SCHEMA_TRANDATA_SRC ........ COMPLETED
ZDM_RM_HEARTBEAT_SRC .................. COMPLETED
ZDM_RM_CHECKPOINT_TGT ................. COMPLETED
ZDM_RM_HEARTBEAT_TGT .................. COMPLETED
ZDM_CLEAN_GG_HUB ...................... COMPLETED
ZDM_POST_ACTIONS ...................... COMPLETED

さらに読む

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle GoldenGate 23aiでMicrosoft Fabricでのオープン・ミラーリングがサポートされるようになりました (2024/11/19)

OCIサービスを利用したWebサイトの作成 その4~Identity Cloud Serviceでサイトの一部を保護 (2021/12/30)