AWS RDS for OracleからAutonomous Databaseへのゼロダウンタイム移行を実現 (2021/09/01)

AWS RDS for OracleからAutonomous Databaseへのゼロダウンタイム移行を実現 (2021/09/01)

https://database-heartbeat.com/2021/09/01/rds-adb-zdm/



はじめに

Zero Downtime Migration(ZDM)は、Oracle DatabaseをOracle Cloudに移行するための優れた自動化機能を提供します。Linuxベースのプラットフォームをサポートしていましたが、新しいバージョン21.2では、クロスプラットフォーム、さらにはクロスクラウドへの移行もサポートしています。


今回の機能強化により、Oracle Data Pumpをベースにしたオフライン論理移行方式で、AWS RDS for OracleからOracle Autonomous Databaseへの移行が可能になりました。


このブログ記事では、Oracle Cloud上でAWS RDS for OracleをOracle Autonomous Databaseに移行するためのステップバイステップの手順を紹介します。


環境について

  • ZDMバージョン21.2をOracle Cloud上のコンピュートVMにインストール
  • Oracle CloudのShared Infrastructure上のOracle Autonomous Database
  • AWS RDSでOracle Databaseを利用


ZDMバージョン21.2のダウンロードとインストール

製品ページからZDMソフトウェアバージョン21.2をダウンロードし、このブログ記事で説明されているように、Linuxホストにインストールします。


AWS RDS Oracle Databaseの準備

ステップ1:RDS OracleインスタンスでSSL/TLSを有効にする

AWSのドキュメントに従って、SSL/TLSを使用してRDS Oracleデータベースへのセキュアな接続を有効にします。新しいオプショングループを作成し、そこにOracle SSLオプションを追加して、そのオプショングループをRDS Oracleインスタンスに関連付けました。



ステップ2:RDS OracleインスタンスのStreams Poolサイズを2GBに設定

RDS Oracleインスタンスに関連付けられたパラメータグループで、streams_pool_sizeを2GB(2147483648バイト)以上に設定します。



ステップ3: 安全なクライアント接続のためのSSL/TLSウォレットの作成

AWSのドキュメントに従って、SSL/TLS証明書を使用するようにアプリケーションを更新します。私の場合は、US East(Ohio)用の.pem形式の証明書バンドルをダウンロードしました。



次に、orapkiユーティリティーを使用してウォレットを作成し、この証明書を追加する必要があります。このウォレットは、ZDMがRDSのOracleインスタンスに接続する際に使用されます。


orapkiユーティリティーは、ZDMソフトウェアの一部で、ZDMホストの$ZDMHOME/bin/にあります。

# create wallet
[zdmuser@zdmhost2 ~]$ $ZDMHOME/bin/orapki wallet create -wallet /home/zdmuser/ssl_wallet -auto_login_only
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.0.0.0.0
Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
Operation is successfully completed.
 
# add certificate
[zdmuser@zdmhost2 ~]$ $ZDMHOME/bin/orapki wallet add -wallet /home/zdmuser/ssl_wallet -trusted_cert -cert /home/zdmuser/us-east-2-bundle.pem -auto_login_only
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.0.0.0.0
Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
Operation is successfully completed.
 
# display information
[zdmuser@zdmhost2 ~]$ $ZDMHOME/bin/orapki wallet display -wallet /home/zdmuser/ssl_wallet
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.0.0.0.0
Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
Requested Certificates:
User Certificates:
Trusted Certificates:
Subject: CN=Amazon RDS Root 2019 CA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,ST=Washington,L=Seattle,C=US
 
# list files
[zdmuser@zdmhost2 ~]$ ls -l /home/zdmuser/ssl_wallet
total 4
-rw-------. 1 zdmuser zdm 1333 Sep  1 12:56 cwallet.sso
-rw-------. 1 zdmuser zdm    0 Sep  1 12:55 cwallet.sso.lck


ステップ4:RDSのOracle Databaseの接続情報を確認

接続性とセキュリティ」タブでインスタンスのエンドポイント(DNS名)を確認します。




ポート1521の代わりに、ステップ1で説明したポート2484を使用してSSL/TLS接続を行います。


[設定]タブでデータベースのサービス名と管理者のユーザー名を見つけます。





ZDMホストの準備

ステップ5:ポート2484の開放

ZDMホストでポート2484を開く必要がある場合は、ユーザーrootで行います。


[root@zdmhost2 ~]# firewall-cmd --zone=public --add-port=2484/tcp --permanent
[root@zdmhost2 ~]# firewall-cmd --reload
[root@zdmhost2 ~]# firewall-cmd --zone=dmz --add-port=2484/tcp --permanent


ステップ6: ZDMのレスポンスファイルを作成

ZDMホスト上で新しいレスポンスファイルを作成します。ここでは、必要最小限のパラメータを使用した例を示します。zdmuserとして。

[zdmuser@zdmhost2 ~]$ vi /home/zdmuser/rds_logical_offline.rsp
# migration method
MIGRATION_METHOD=OFFLINE_LOGICAL
DATATRANSFERMEDIUM=DBLINK
# AWS RDS Oracle
SOURCEDATABASE_ENVIRONMENT_NAME=AMAZON
SOURCEDATABASE_ENVIRONMENT_DBTYPE=RDS_ORACLE
SOURCEDATABASE_ADMINUSERNAME=admin
SOURCEDATABASE_CONNECTIONDETAILS_HOST=rdsoracle.crgvhgax7zj8.us-east-2.rds.amazonaws.com
SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME=ORCL
SOURCEDATABASE_CONNECTIONDETAILS_PORT=2484
SOURCEDATABASE_CONNECTIONDETAILS_TLSDETAILS_DISTINGUISHEDNAME=C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=rdsoracle.crgvhgax7zj8.us-east-2.rds.amazonaws.com
SOURCEDATABASE_CONNECTIONDETAILS_TLSDETAILS_CREDENTIALSLOCATION=/home/zdmuser/ssl_wallet
# data pump
DATAPUMPSETTINGS_JOBMODE=SCHEMA
DATAPUMPSETTINGS_METADATAREMAPS-1=type:REMAP_TABLESPACE,oldValue:USERS,newValue:DATA
# target db
TARGETDATABASE_OCID=ocid1.autonomousdatabase.oc1.eu-frankfurt-1...
TARGETDATABASE_ADMINUSERNAME=ADMIN
# oci cli
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_USERID=ocid1.user.oc1...
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_TENANTID=ocid1.tenancy.oc1...
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_FINGERPRINT=9f:3b:55:...
OCIAUTHENTICATIONDETAILS_USERPRINCIPAL_PRIVATEKEYFILE=/home/zdmuser/.oci/oci_api_key.pem
OCIAUTHENTICATIONDETAILS_REGIONID=eu-frankfurt-1


簡単にするために、データ転送にはデータベースリンクを使用しました。また、代わりにAWSのS3バケットを使用することも可能です。その場合は、以下のパラメータが必要になります。

# instead of DATATRANSFERMEDIUM=DBLINK
DATATRANSFERMEDIUM=AMAZONS3
# additionally
DUMPTRANSFERDETAILS_S3BUCKET_NAME=
DUMPTRANSFERDETAILS_S3BUCKET_REGION=
DUMPTRANSFERDETAILS_S3BUCKET_ACCESSKEY=
DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME=


移行の評価と開始

ステップ7:移行の評価

ZDMホスト上で、zdmuserとして次の操作を行います。

[zdmuser@zdmhost2 ~]$ $ZDMHOME/bin/zdmcli migrate database \
-rsp /home/zdmuser/rds_logical_offline.rsp \
-eval
 
Enter source database administrative user "admin" password: <-- RDS Oracle password
Enter target database administrative user "ADMIN" password: <-- Autonomous Database password
Operation "zdmcli migrate database" scheduled with the job ID "20".


ジョブのステータスを確認します。ZDMホスト上で、zdmuserとして次の操作を行います。

[zdmuser@zdmhost2 ~]$ while :; do $ZDMHOME/bin/zdmcli query job -jobid 20; sleep 10; done
 
Current status: EXECUTING
Result file path: "/home/zdmuser/zdmbase/chkbase/scheduled/job-21-2021-09-01-10:49:44.log"
...
ZDM_VALIDATE_SRC ...................... COMPLETED
ZDM_VALIDATE_TGT ...................... STARTED
ZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... PENDING
ZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... PENDING
ZDM_PREPARE_DATAPUMP_SRC .............. PENDING


ステップ8: マイグレーションの開始

評価用の同じコマンドを実行しますが、今回は-evalパラメータを付けません。ZDMホスト上で、zdmuserとして次の操作を行います。

[zdmuser@zdmhost2 ~]$ $ZDMHOME/bin/zdmcli migrate database \
-rsp /home/zdmuser/rds_logical_offline.rsp
 
Enter source database administrative user "admin" password: <-- RDS Oracle password
Enter target database administrative user "ADMIN" password: <-- Autonomous Database password
Operation "zdmcli migrate database" scheduled with the job ID "22".


ジョブのステータスを確認します。ZDMホスト上で、zdmuserとして次の操作を行います。

[zdmuser@zdmhost2 ~]$ while :; do $ZDMHOME/bin/zdmcli query job -jobid 22; sleep 10; done
 
Current status: EXECUTING
Result file path: "/home/zdmuser/zdmbase/chkbase/scheduled/job-22-2021-09-01-10:53:14.log"
...
ZDM_VALIDATE_SRC ...................... COMPLETED
ZDM_VALIDATE_TGT ...................... STARTED
ZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... PENDING
ZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... PENDING
ZDM_PREPARE_DATAPUMP_SRC .............. PENDING
ZDM_PREPARE_DATAPUMP_TGT .............. PENDING
ZDM_DATAPUMP_IMPORT_TGT ............... PENDING
ZDM_POST_DATAPUMP_SRC ................. PENDING
ZDM_POST_DATAPUMP_TGT ................. PENDING
ZDM_POST_ACTIONS ...................... PENDING


まとめ

設定に多少の手間をかけても、ワンクリックですべての手順が完了します。ZDMには、より柔軟にコントロールするために必要となる幅広いオプションが用意されています。利用可能なパラメータの完全なリストについては、ドキュメントを参照してください。


関連記事

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

新しいOracle Container Engine for Kubernetesの機能強化により、大規模なKubernetesがさらに簡単になりました (2023/03/20)