Oracle Zero Downtime Migration(ZDM)によるOn-Premises Exadata(11g)から[email protected](19c)への論理オンライン移行の手順書となります。
GoldenGate Docker Imageを使用したZDMによるOn-Premises Exadataから[email protected]への論理オンライン移行日本オラクル株式会社クラウド・エンジニアリング統括 COE本部データベース・ソリューション部宮本拓弥
View Slide
• はじめに• 移行前準備• 移行の実行• 移行後の確認• トラブルシューティング目次Copyright © 2022, Oracle and/or its affiliates2
• Oracle Zero Downtime Migration(ZDM)によるOn-Premises Exadataから[email protected]への論理オンライン移行の手順書である• 詳細• ソース・データベース:Exadata X7-2 Quarter Rack(Oracle Database 11gリリース2)• ターゲット・データベース:[email protected](Oracle Database 19c)• GoldenGate Hub:Docker Container上Oracle GoldenGate Docker Imageを構築• バックアップ:Network File System(NFS)を使用はじめにCopyright © 2022, Oracle and/or its affiliates3
移行前準備Copyright © 2022, Oracle and/or its affiliates4
ソフトウェアのインストール手順1. インストール環境の構築• ZDMをインストールするサーバー(ZDMホスト)を準備する• インストールに必要なグループ、ユーザー、およびディレクトリを作成する• 必要なソフトウェア・パッケージをインストールする2. ZDMソフトウェアのダウンロード3. インストール前の準備• Oracle ZDMソフトウェア(zdm21.3.zip)をZDMホストに配置してファイルの所有者権限を設定する• ZDMソフトウェアのインストールに必要な環境変数の設定を行う4. ZDMソフトウェアのインストール• ZDMソフトウェアのzipファイルを展開する• zdminstall.shを実行して、ZDMソフトウェアをインストールする• ZDMを起動してステータスを確認するZDMのインストールCopyright © 2022, Oracle and/or its affiliates5
1. インストール環境の構築• ZDMをインストールするサーバー(ZDMホスト)を別途準備する• https://docs.oracle.com/cd/F51554_01/zdmug/installing-zero-downtime-migration-software.html#GUID-A55FEDBA-236A-4006-91A5-6F28D100C5B2• インストールに必要なグループ、ユーザー、およびディレクトリを作成する• 必要なソフトウェア・パッケージをインストールするZDMのインストールCopyright © 2022, Oracle and/or its affiliates6groupadd zdmuseradd -g zdm zdmusermkdir -p /home/zdmuser/zdminstallmkdir /home/zdmuser/zdmhomemkdir /home/zdmuser/zdmbasechown -R zdmuser:zdm /home/zdmuser/yum –y install glibc-devel expect unzip libaio ¥oraclelinux-developer-release-el7実行コマンド(rootユーザ)
2. ZDMソフトウェアのダウンロードhttps://www.oracle.com/database/technologies/rac/zdm-downloads.htmlにアクセスして、Oracle ZDMソフトウェア(zdm21.3.zip)をダウンロードするZDMのインストールCopyright © 2022, Oracle and/or its affiliates7
3. インストール前の準備• Oracle ZDMソフトウェア(zdm21.3.zip)をZDMホストの/home/zdmuser/zdminstall/ディレクトリに準備する• zipファイルの所有者をzdmuserに変更するZDMのインストールCopyright © 2022, Oracle and/or its affiliates8cd /home/zdmuser/zdminstall/chown zdmuser:zdm /home/zdmuser/zdminstall/ZDM21.3.zip実行コマンド(rootユーザ)
3. インストール前の準備• ZDMユーザにログインして、ZDMソフトウェアのインストールに必要な環境変数の設定を行うZDMのインストールCopyright © 2022, Oracle and/or its affiliates9su - zdmuser実行コマンド(rootユーザ)export ORACLE_HOME=/home/zdmuser/zdmhome;export ORACLE_BASE=/home/zdmuser/zdmbase;export ZDM_BASE=$ORACLE_BASE;export ZDM_HOME=/home/zdmuser/zdmhome;export ZDM_INSTALL_LOC=/home/zdmuser/zdminstall;.bashrcに以下の内容を追記する
4. ZDMソフトウェアのインストール• ZDMソフトウェアのzipファイルを展開する• zdminstall.shを実行して、ZDMソフトウェアをインストールするZDMのインストールCopyright © 2022, Oracle and/or its affiliates10unzip $ZDM_INSTALL_LOC/ZDM21.3.zip$ZDM_INSTALL_LOC/zdm21.3/zdminstall.sh setup oraclehome=$ZDM_HOME ¥oraclebase=$ZDM_BASE ¥ziploc=./zdm_home.zip –zdm実行コマンド(zdmuserユーザ)
4. ZDMソフトウェアのインストール• ZDMを起動してステータスを確認するZDMのインストールCopyright © 2022, Oracle and/or its affiliates11[[email protected] bin]$ ./zdmservice startReturn code is 0Server started successfully[[email protected] bin]$ ./zdmservice status---------------------------------------Service Status---------------------------------------Running: trueTranferport:Conn String: jdbc:mysql://localhost:8897/RMI port: 8895HTTP port: 8896Wallet path: /home/zdmuser/zdmbase/crsdata/x3-2-01/security実行例
設定の手順1. 必須パッチの確認と適用2. データベースのパラメータ設定• 強制ロギングを有効にする• データベースの最小サプリメンタル・ロギングを有効にする• 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする• 初期化パラメータのSTREAMS_POOL_SIZEを2GB以上に設定する3. GoldenGate管理ユーザの作成• GoldenGate管理ユーザ(ggadmin)を作成する• ggadminに必要なすべての権限を付与する4. 移行するサンプル・データの作成ソース・データベースの設定Copyright © 2022, Oracle and/or its affiliates12
1. 必須パッチの確認と適用• Oracle Database 11g(11.2.0.4)の場合、必須のRDBMSパッチをソース・データベースに適用する• My Oracle Support Noteの「Oracle GoldenGate -- Oracle RDBMS Server Recommended Patches」(Doc ID 1557031.1)を参照 ※下記リンク• ソース・データベースに適用されているパッチレベルに適したRDBMSパッチを選択して適用するソース・データベースの設定Copyright © 2022, Oracle and/or its affiliates13参照:https://support.oracle.com/cloud/faces/DocumentDisplay?_afrLoop=187015939486225&_afrWindowMode=0&id=1557031.1&_adf.ctrl-state=1bjkp1bhyd_67
2. データベースのパラメータ設定• 強制ロギングを有効にする• データベースの最小サプリメンタル・ロギングを有効にする• 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする• 初期化パラメータのSTREAMS_POOL_SIZEを2GB以上に設定するソース・データベースの設定Copyright © 2022, Oracle and/or its affiliates14alter database add supplemental log data;alter database force logging;alter system set enable_goldengate_replication=true scope=both;alter system set streams_pool_size = 2g scope=both;実行コマンド(SQL*Plus/sysユーザ)select log_mode from v$database;select supplemental_log_data_min, force_logging from v$database;show parameter enable_goldengate_replicationselect name, value from v$parameter where name like '%pool%';確認コマンド(SQL*Plus/sysユーザ)
3. GoldenGate管理ユーザの作成• GoldenGate管理ユーザ(ggadmin)の作成する• ggadminに必要なすべての権限を付与するソース・データベースの設定Copyright © 2022, Oracle and/or its affiliates15create user ggadmin identified by <任意のパスワード> default tablespace userstemporary tablespace temp;alter user ggadmin quota 100m on users;grant unlimited tablespace to ggadmin;grant connect, resource to ggadmin;grant select any dictionary to ggadmin;grant create view to ggadmin;grant execute on dbms_lock to ggadmin;exec DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('ggadmin');grant dba to ggadmin;実行コマンド(SQL*Plus/sysユーザ)※12.1以降でマルチテナント(CDB)であった場合は、CDB$ROOTユーザでc##ggadminを作成する必要がある
4. 移行するサンプル・データの作成• 移行するスキーマを作成する• 移行するスキーマに以下の設定を行う• 必要な権限を付与する• 表を作成する• シーケンスを作成する• insert文を実行するプロシージャを作成する(本手順ではGoldenGateの動作確認を行うためZDM実行中に繰り返しInsert文を実行する)ソース・データベースの設定Copyright © 2022, Oracle and/or its affiliates16create user testuser identified by <任意のパスワード>;grant create session, connect,resource,unlimited tablespace to testuser;create table testuser.tab ("id" number(38), "date" date);create sequence testuser.seq start with 1 increment by 1 nomaxvalue ;create or replace procedure proisBEGIN insert into testuser.tab values(testuser.seq.nextval, sysdate);commit;end;/サンプル・データの作成コマンド(SQL*Plus/sysユーザ)
設定手順1. GoldenGate管理ユーザの作成(PDB)• GoldenGate管理ユーザ(ggadmin)を作成する• ggadminに必要なすべての権限を付与する2. データベースのパラメータと権限の設定(CDB$ROOT)• 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする• Data Pumpに必要なターゲットを準備する3. タイムゾーン・バージョンの確認ターゲット・データベースの設定Copyright © 2022, Oracle and/or its affiliates17
1. GoldenGate管理ユーザの作成(PDB)• PDBに接続する• GoldenGate管理ユーザ(ggadmin)を作成する• ggadminに必要なすべての権限を付与するターゲット・データベースの設定Copyright © 2022, Oracle and/or its affiliates18create user ggadmin identified by <任意のパスワード> default tablespace userstemporary tablespace temp;alter user ggadmin quota 100m on users;grant unlimited tablespace to ggadmin;grant connect, resource to ggadmin;grant select any dictionary to ggadmin;grant create view to ggadmin;grant execute on dbms_lock to ggadmin;exec dbms_goldengate_auth.grant_admin_privilege('ggadmin');grant dba to ggadmin;実行コマンド(SQL*Plus/sysユーザ)
2. データベースのパラメータと権限の設定(CDB$ROOT)• CDB$ROOTに接続する• 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする• Data Pumpに必要な権限を付与するターゲット・データベースの設定Copyright © 2022, Oracle and/or its affiliates19alter system set enable_goldengate_replication=true scope=both;grant datapump_imp_full_database to system;実行コマンド(SQL*Plus/sysユーザ)
3. タイムゾーン・バージョンの確認• ターゲット・データベースのタイムゾーン・バージョンはソース・データベースのタイムゾーン・バージョンと同じでなければならない• 以下の例のようにソース・データベースとターゲット・データベースのそれぞれで確認する• 同じでない場合はアップグレードする必要がある• アップグレード方法に関しては本資料のトラブルシューティングの項目をご参照くださいターゲット・データベースの設定Copyright © 2022, Oracle and/or its affiliates20SQL> select * from v$timezone_file;FILENAME VERSION CON_ID-------------------- ---------- ----------timezlrg_36.dat 36 0確認例
構築手順1. Oracle Container Runtime for Dockerのインストール2. GoldenGateのDockerイメージのダウンロード3. GoldenGateのDockerイメージのロードと起動4. 接続確認GoldenGate Hubの構築Copyright © 2022, Oracle and/or its affiliates21
1. Oracle Container Runtime for Dockerのインストール• GoldenGate Hub用のサーバーを別途準備する• OSはOracle Linux 7のみ対応• Oracle Linux 7のホスト上にOracle Container Runtime for Dockerをインストールする• https://docs.oracle.com/en/operating-systems/oracle-linux/docker/docker-InstallingOracleContainerRuntimeforDocker.html#docker-installGoldenGate Hubの構築Copyright © 2022, Oracle and/or its affiliates22
2. GoldenGateのDockerイメージのダウンロード• Oracle Cloud Infrastructure(OCI)のOracle Cloud MarketplaceからOracle GoldenGate for Oracle –Database Migrationsをプロビジョニングする• dockerイメージ・ファイル ⇒ /home/opc/ora21c-21.3.0.0.0.tar• プロビジョニングしたインスタンスにssh接続してdocker イメージ・ファイルをSFTPまたはSCPでGoldenGate Hub用のサーバーにダウンロードする• ダウンロード後、インスタンスを停止しても構わないGoldenGate Hubの構築Copyright © 2022, Oracle and/or its affiliates23
3. GoldenGateのDockerイメージのロードと起動• GoldenGateのDockerイメージをロードする• GoldenGateのDockerイメージを起動する• https://github.com/oracle/docker-images/tree/main/OracleGoldenGate/21c#running-oracle-goldengate-in-a-containerGoldenGate Hubの構築Copyright © 2022, Oracle and/or its affiliates24
4. 接続確認• GoldenGate Hub用のサーバーにssh接続してDocker Container上にあるGoldenGateのイメージにアクセスできるか確認するGoldenGate Hubの構築Copyright © 2022, Oracle and/or its affiliates25docker exec -it /bin/bashDocker Containerのshellへの接続コマンドdocker pscontainer nameの確認コマンド
4. 接続確認• Oracle GoldenGateサービス・マネージャへ接続確認する• 任意のブラウザ上のアドレス・バーに以下の情報を入力する• https://<ホスト名.ドメイン名>:<ホストのポート番号>/• ユーザ名:oggadmin、パスワード:Dockerイメージの起動時に設定したものGoldenGate Hubの構築Copyright © 2022, Oracle and/or its affiliates26
設定内容1. ZDMホストでの設定• SSH鍵ペアを生成する• /etc/hostsファイルにソース・データベース、ターゲット・データベース、GoldenGate Hubの情報を入力する2. ソース・データベースでの設定• ZDMホストの公開鍵をauthorized_keysに追加する• /etc/hostsファイルにターゲット・データベースの接続情報を追記する3. ターゲット・データベースでの設定• ZDMホストの公開鍵をauthorized_keysに追加する• /etc/hostsファイルにソース・データベースの接続情報を追記する4. ZDMホストからソースおよびターゲット・データベースへの接続確認5. ソース・データベースとターゲット・データベース間の接続確認6. GoldenGate Hubでの設定• /etc/hostsファイルにソース・データベースとターゲット・データベースの接続情報を追記する7. GoldenGate Hubからソース・データベースおよびターゲット・データベースへの接続確認接続設定Copyright © 2022, Oracle and/or its affiliates27
1. ZDMホストでの設定• zdmuserでログインする• .sshディレクトリを作成し、ディレクトリのアクセス権限を変更する• SSH鍵ペアを生成する• authorized_keysファイルに、生成した公開鍵id_rsa.pubファイルの中身を追加し、ファイルのアクセス権限を変更する• 秘密鍵id_rsaファイルの名前をzdm.ppkに変更する接続設定Copyright © 2022, Oracle and/or its affiliates28mkdir ~/.sshchmod 700 ~/.ssh/usr/bin/ssh-keygen –t rsacd ~/.sshcat id_rsa.pub >> authorized_keyschmod 600 authorized_keysmv id_rsa zdm.ppk実行コマンド(zdmuserユーザ)
1. ZDMホストでの設定• rootユーザでログインする• /etc/hostsファイルにソース・データベース、ターゲット・データベース、GoldenGate Hubの情報を入力する接続設定Copyright © 2022, Oracle and/or its affiliates29[[email protected] ~]$ cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.122.6.19 ariesdb01.xxx.com ariesdb01 ##Source Database10.122.22.132 ecc2c5n1.xxx.com ecc2c5n1 ##Target Database10.122.9.68 x3-2-08.xxx.com x3-2-08 ##OGG Hub10.122.9.61 x3-2-01.xxx.com x3-2-01 ##ZDM Host例
2. ソース・データベースでの設定• ZDMホストの公開鍵id_rsa.pubファイルの中身をauthorized_keysに追加する• /etc/hostsファイルにターゲット・データベースの接続情報を追記する ※SCANアドレスも追加する接続設定Copyright © 2022, Oracle and/or its affiliates3010.122.22.132 ecc2c5n1.xxx.com ecc2c5n110.122.22.136 ecc2c5-scan.xxx.com ecc2c5-scan/etc/hostsファイルの追記内容
3. ターゲット・データベースでの設定• ZDMホストの公開鍵id_rsa.pubファイルの中身をauthorized_keysに追加する• /etc/hostsファイルにソース・データベースの接続情報を追記する ※SCANアドレスも追加する接続設定Copyright © 2022, Oracle and/or its affiliates3110.122.6.19 ariesdb01.xxx.com ariesdb0110.122.3.65 aries-scan01.xxx.com aries-scan01/etc/hostsファイルの追記内容
4. ZDMホストからソースおよびターゲット・データベースへの接続確認• zdmuserでZDMホストからソース・データベースおよびターゲット・データベースへ接続できるか確認する接続設定Copyright © 2022, Oracle and/or its affiliates32ssh –i zdm.ppk <ユーザ名>@<ホスト名>実行コマンド(zdmuserユーザ)
5. ソース・データベースとターゲット・データベース間の接続確認• SCANを使用してソース・データベースとターゲット・データベース間の接続を確認する接続設定Copyright © 2022, Oracle and/or its affiliates33[[email protected] ~]$ tnsping targetdb:1521TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-AUG-2022 08:39:59Copyright (c) 1997, 2021, Oracle. All rights reserved.Used parameter files:/u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/sqlnet.oraUsed HOSTNAME adapter to resolve the aliasAttempting to contact(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.98)(PORT=1521)))OK (0 msec)実行コマンド(ソース・データベース/oracleユーザ)tnsping <ターゲット・データベースのホスト名>:<ターゲット・データベースのポート番号>実行例※ターゲット・データベースからも同様に実行する(ソース・データベースのホスト名とポート番号を入力する)
6. GoldenGate Hubでの設定• Docker Container上にインストールしたGoldenGate Hubにssh接続する• /etc/hostsファイルにソース・データベースとターゲット・データベースの接続情報を追記する接続設定Copyright © 2022, Oracle and/or its affiliates3410.122.6.19 ariesdb01.xxx.com ariesdb01 ##Source Database10.122.22.132 ecc2c5n1.xxx.com ecc2c5n1 ##Target Database/etc/hostsファイルへの追記内容docker exec -it /bin/bashDocker Containerのshellへの接続コマンドdocker pscontainer nameの確認コマンド
7. GoldenGate Hubからソース・データベースおよびターゲット・データベースへの接続確認• GoldenGate HubからSQL*Plusを使用してソース・データベースおよびターゲット・データベースへの接続確認をする• SQL*Plusは/u01/app/ogg/lib/instantclient/sqlplusに配置されている接続設定Copyright © 2022, Oracle and/or its affiliates35接続コマンド(rootユーザ)/u01/app/ogg/lib/instantclient/sqlplus <ユーザ名>/<パスワード>@<ホスト名>:<ポート番号>/<サービス名>[[email protected] /]#/u01/app/ogg/lib/instantclient/sqlplus [email protected]:1521/dbm51SQL*Plus: Release 21.0.0.0.0 - Production on Wed Jun 29 03:05:50 2022Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL>実行例
• ZDMホスト上にあるレスポンス・ファイルのサンプル・ファイル(/home/zdmuser/zdmhome/rhp/zdm/template/zdm_logical_template.rsp)を使用して、/home/zdmuserディレクトリにコピーする• ファイル名を変更する(logical_online.rspなど)• ファイルのアクセス権限を変更する• 実行する移行に必要なパラメータを入力する※レスポンス・ファイルの各パラメータについての詳細は下記リンクをご参照ください。https://docs.oracle.com/cd/F51554_01/zdmug/zero-downtime-migration-logical-migration-response-file-parameters-reference.html#GUID-D580AD1C-C209-4F0F-A630-863D206FF0E5レスポンス・ファイルの作成Copyright © 2022, Oracle and/or its affiliates36cp /home/zdmuser/zdmhome/rhp/zdm/template/zdm_logical_template.rsp /home/zdmusercd /home/zdmusermv zdm_logical_template.rsp logical_online.rspchmod +w logical_online.rspvi logical_online.rsp実行コマンド(zdmuserユーザ)
レスポンス・ファイル追記内容レスポンス・ファイルの作成Copyright © 2022, Oracle and/or its affiliates37MIGRATION_METHOD=ONLINE_LOGICALDATA_TRANSFER_MEDIUM=NFS#Source DBSOURCEDATABASE_ADMINUSERNAME=SYSTEMSOURCEDATABASE_CONNECTIONDETAILS_HOST=ariesdb01SOURCEDATABASE_CONNECTIONDETAILS_PORT=1521SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME=dbm51SOURCEDATABASE_GGADMINUSERNAME=ggadminSOURCEDATABASE_ENVIRONMENT_NAME=ORACLESOURCEDATABASE_ENVIRONMENT_DBTYPE=ORACLE# Target DBTARGETDATABASE_ADMINUSERNAME=SYSTEMTARGETDATABASE_GGADMINUSERNAME=ggadminTARGETDATABASE_CONNECTIONDETAILS_HOST=ecc2c5n1TARGETDATABASE_CONNECTIONDETAILS_PORT=1521TARGETDATABASE_CONNECTIONDETAILS_SERVICENAME=db1_pdb1.xxx.com# GoldenGateGOLDENGATEHUB_ADMINUSERNAME=oggadminGOLDENGATEHUB_URL=https://x3-2-08.xxx.com:10443/GOLDENGATEHUB_SOURCEDEPLOYMENTNAME=LocalGOLDENGATEHUB_TARGETDEPLOYMENTNAME=Local# DatapumpDATAPUMPSETTINGS_JOBMODE=SCHEMAINCLUDEOBJECTS-1=owner:TESTUSERDATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME=expdumpDATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_PATH=/nfsbkup/dumpDATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_NAME=impdumpDATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_PATH=/nfsbkup/dump# OthersRUNCPATREMOTELY=TRUE追記例 ※以下に表示されていない他のパラメータはデフォルト値もしくは空白のままとする
移行の実行Copyright © 2022, Oracle and/or its affiliates38
全体の手順1. 評価コマンドの実行2. ソース・データベースで自動insertジョブの実行3. ZDM_CREATE_GG_EXTRACT_SRCまでの実行4. ZDM_POST_DATAPUMP_TGTまでの実行5. ZDM_CREATE_GG_REPLICAT_TGTまでの実行6. ZDM_MONITOR_GG_LAGまでの実行7. ZDM_SWITCHOVER_APPまでの実行8. 最後のフェーズまでの実行移行の実行Copyright © 2022, Oracle and/or its affiliates39
全体の手順• 指定したフェーズごとに停止してジョブの確認を行う• 実際の移行を想定するとZDM_MONITOR_GG_LAGでの停止のみ必要になるが、動作確認のため本手順では5つのフェーズで停止する移行の実行Copyright © 2022, Oracle and/or its affiliates40移行開始 -pauseafter ZDM_CREATE_GG_EXTRACT_SRC -pauseafter ZDM_POST_DATAPUMP_TGT-pauseafter ZDM_CREATE_GG_REPLICAT_TGT-pauseafter ZDM_MONITOR_GG_LAG移行完了-pauseafter ZDM_SWITCHOVER_APP
1. 評価コマンドの実行• 移行前にZDM評価コマンドを実行する• 移行コマンドに-evalのオプションを付与することで移行前の評価を実施可能• コマンドの中で作成したレスポンス・ファイルの情報を指定している• コマンド入力後にいくつかパスワードの入力を問われるためそれぞれ入力する移行の実行Copyright © 2022, Oracle and/or its affiliates41$ZDM_HOME/bin/zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot-targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauth zdmauth -tgtarg1user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3sudo_location:/usr/bin/sudo -eval実行コマンド例(zdmuserユーザ)
1. 評価コマンドの実行• 実行したジョブをコマンドで確認する• 評価コマンド発行時のJob IDを指定して確認することができる• $ZDM_HOME/bin/zdmcli query job -jobid XX• すべてのフェーズがCOMPLETEDになれば評価完了移行の実行Copyright © 2022, Oracle and/or its affiliates42[[email protected] bin]$ ./zdmcli query job -jobid 39x3-2-01.xxx.com: 監査ID: 387ジョブID: 39ユーザー: zdmuserクライアント: x3-2-01ジョブ・タイプ: "EVAL"スケジュール済ジョブ・コマンド: "zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot -targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauthzdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3 sudo_location:/usr/bin/sudo -eval"スケジュール済ジョブの実行開始時間: 2022-07-15T11:41:17+09。対応するローカル時間: 2022-07-15 11:41:17現在のステータス: SUCCEEDED結果ファイル・パス: "/home/zdmuser/zdmbase/chkbase/scheduled/job-39-2022-07-15-11:41:20.log"Excluded objects file path: "/home/zdmuser/zdmbase/chkbase/scheduled/job-39-filtered-objects-2022-07-15T11:41:32.947.json"ジョブの実行開始時間: 2022-07-15 11:41:21ジョブの実行終了時間: 2022-07-15 11:42:17ジョブの実行経過時間: 56秒ZDM_VALIDATE_TGT ...................... COMPLETEDZDM_VALIDATE_SRC ...................... COMPLETEDZDM_SETUP_SRC ......................... COMPLETEDZDM_PRE_MIGRATION_ADVISOR ............. COMPLETEDZDM_VALIDATE_GG_HUB ................... COMPLETEDZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... COMPLETEDZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... COMPLETEDZDM_PREPARE_DATAPUMP_SRC .............. COMPLETEDZDM_DATAPUMP_ESTIMATE_SRC ............. COMPLETEDZDM_CLEANUP_SRC ....................... COMPLETED実行例
1. 評価コマンドの実行• FAILEDがある場合は結果ファイル・パスに格納されているログを確認しエラーを解消してください※エラー内容と解決方法はトラブルシューティングに記載している移行の実行Copyright © 2022, Oracle and/or its affiliates43[[email protected] bin]$ ./zdmcli query job -jobid 10x3-2-01.xxx.com: 監査ID: 48ジョブID: 10ユーザー: zdmuserクライアント: x3-2-01ジョブ・タイプ: "EVAL"スケジュール済ジョブ・コマンド: "zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot -targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauthzdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3 sudo_location:/usr/bin/sudo -eval"スケジュール済ジョブの実行開始時間: 2022-07-01T12:09:50+09。対応するローカル時間: 2022-07-01 12:09:50現在のステータス: FAILED結果ファイル・パス: "/home/zdmuser/zdmbase/chkbase/scheduled/job-10-2022-07-01-12:10:12.log"Excluded objects file path: "/home/zdmuser/zdmbase/chkbase/scheduled/job-10-filtered-objects-2022-07-01T12:10:24.922.json"ジョブの実行開始時間: 2022-07-01 12:10:12ジョブの実行終了時間: 2022-07-01 12:10:38ジョブの実行経過時間: 25秒ZDM_VALIDATE_TGT ...................... COMPLETEDZDM_VALIDATE_SRC ...................... COMPLETEDZDM_SETUP_SRC ......................... COMPLETEDZDM_PRE_MIGRATION_ADVISOR ............. FAILEDZDM_VALIDATE_GG_HUB ................... PENDINGZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... PENDINGZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... PENDINGZDM_PREPARE_DATAPUMP_SRC .............. PENDINGZDM_DATAPUMP_ESTIMATE_SRC ............. PENDINGZDM_CLEANUP_SRC ....................... PENDING失敗例
2. ソース・データベースで自動insertジョブの実行• ソース・データベースで移行するスキーマ(testuser)に対して自動insertジョブを実行する• 本ガイドの「ソース・データベースの設定 - 移行するサンプル・データの作成」で作成したプロシージャを使用する• 自動insertジョブの目的⇒ 移行の実行中に移行するデータに対して更新が入ってもGoldenGateによって問題(データの漏れ)なくZDMによるオンライン論理移行が実行できるか検証するため移行の実行Copyright © 2022, Oracle and/or its affiliates44BEGINDBMS_SCHEDULER.CREATE_JOB (job_name => 'job1',job_type => 'STORED_PROCEDURE',job_action => 'pro',repeat_interval => 'FREQ=secondly;INTERVAL=10', /* every 10 seconds */enabled => TRUE);END;/実行コマンド例(SQL*Plus/sysユーザ)
2. ソース・データベースで自動insertジョブの実行• ソース・データベースで実行した自動insertジョブの動作を確認する移行の実行Copyright © 2022, Oracle and/or its affiliates45alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';select * from testuser.tab order by id;実行コマンド例(SQL*Plus/sysユーザ)
3. ZDM_CREATE_GG_EXTRACT_SRCまでの実行• 移行コマンドを実行する• -pauseafterオプションを加えることで指定したフェーズ後にZDMのジョブが一時停止されるように設定できる• GoldenGateのExtractが作成されるフェーズ(ZDM_CREATE_GG_EXTRACT_SRC)の完了後に停止させる• コマンド入力後にいくつかパスワードの入力を問われるためそれぞれ入力する移行の実行Copyright © 2022, Oracle and/or its affiliates46$ZDM_HOME/bin/zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot-targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauth zdmauth -tgtarg1user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3sudo_location:/usr/bin/sudo -pauseafter ZDM_CREATE_GG_EXTRACT_SRC実行コマンド例(zdmuserユーザ)
3. ZDM_CREATE_GG_EXTRACT_SRCまでの実行• 実行したジョブをコマンドで確認する ※以後、コマンドの説明を省略する• 評価コマンド発行時のJob IDを指定して確認することができる• $ZDM_HOME/bin/zdmcli query job –jobid XX• ZDM_CREATE_GG_EXTRACT_SRCまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する• GoldenGate Hubの管理サービスへログインしてExtractが作成されていることを確認する移行の実行Copyright © 2022, Oracle and/or its affiliates47フェーズのイメージ
4. ZDM_POST_DATAPUMP_TGTまでの実行• ジョブを再開させるコマンドを実行する ※以後、コマンドの説明を省略する• $ZDM_HOME/bin/zdmcli resume job -jobid XX• -pauseafterオプションを加える• Data Pumpのimp/expによる初期移行のフェーズ(ZDM_POST_DATAPUMP_TGT)の完了後に停止させる移行の実行Copyright © 2022, Oracle and/or its affiliates48$ZDM_HOME/bin/zdmcli resume job –jobid 40 –pauseafter ZDM_POST_DATAPUMP_TGT実行コマンド例(zdmuserユーザ)
4. ZDM_POST_DATAPUMP_TGTまでの実行• ZDM_POST_DATAPUMP_TGTまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する• ソース・データベース(赤)とターゲット・データベース(青)でData Pumpによるデータの移行を確認する• スキーマ(testuser)と表(tab)がターゲット・データベースに移行されているか確認する移行の実行Copyright © 2022, Oracle and/or its affiliates49フェーズのイメージ
5. ZDM_CREATE_GG_REPLICAT_TGTまでの実行• ZDM_CREATE_GG_REPLICAT_TGTまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する• GoldenGate Hubの管理サービスへログインしてReplicatが作成されていることを確認する移行の実行Copyright © 2022, Oracle and/or its affiliates50フェーズのイメージ
6. ZDM_MONITOR_GG_LAGまでの実行• ZDM_MONITOR_GG_LAGまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する• ソース・データベース(赤)とターゲット・データベース(青)でGoldenGateによってデータがオンタイムで連携されていることを確認する• ソース・データベースで実行している自動insertジョブを停止する移行の実行Copyright © 2022, Oracle and/or its affiliates51BEGINDBMS_SCHEDULER.DROP_JOB('job1');END;/実行コマンド例(SQL*Plus/sysユーザ)フェーズのイメージ
7. ZDM_SWITCHOVER_APPまでの実行• ZDM_SWITCHOVER_APPまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する• GoldenGate Hubの管理サービスへログインしてExatractとReplicatが停止されていることを確認する移行の実行Copyright © 2022, Oracle and/or its affiliates52フェーズのイメージ
8. 最後のフェーズまでの実行• -pauseafterオプションを付けずにジョブの再開コマンドを実行する• 残りのすべてのジョブがCOMPLETEDと表示されていることを確認する• GoldenGate Hubの管理サービスへログインしてExatractとReplicatが削除されていることを確認する移行の実行Copyright © 2022, Oracle and/or its affiliates53$ZDM_HOME/bin/zdmcli resume job –jobid 40実行コマンド例(zdmuserユーザ)フェーズのイメージ
移行後の確認Copyright © 2022, Oracle and/or its affiliates54
• ソース・データベース(赤)とターゲット・データベース(青)でZDMの論理オンライン移行によってデータが漏れなく移行できていることを確認する移行後の確認Copyright © 2022, Oracle and/or its affiliates55
トラブルシューティングCopyright © 2022, Oracle and/or its affiliates56
<解決方法>• インストーラーの実行前に言語設定を変更する• 例:export LANG=CZDMソフトウェアのインストールエラーCopyright © 2022, Oracle and/or its affiliates57
<解決方法>• レスポンス・ファイル内でターゲット・データベースのOCIDを指定している場合、• TARGETDATABASE_OCID=XXXを削除する⇒ 本検証ではNFSを使用するため、OCIDの指定は不要PRGZ-1166Copyright © 2022, Oracle and/or its affiliates58
<解決方法>• レスポンス・ファイル内の項目を再確認し、サービス名などの情報にミスがないか、不要な空白が含まれていないかなどを確認• レスポンス・ファイル内でターゲット・データベースのOCIDを指定している場合、• TARGETDATABASE_OCID=XXXを削除⇒ 本検証ではNFSを使用するため、OCIDの指定は不要PRGZ-1001Copyright © 2022, Oracle and/or its affiliates59
ORA-01017<解決方法>• レスポンス・ファイルのパラメータSOURCEDATABASE_CONNECTIONDETAILS_SERVICENAMEに正しいサービス名が記載されておりDBユーザのユーザ名/パスワードが正しいことを確認するPRGD-1002Copyright © 2022, Oracle and/or its affiliates60
<解決方法>• ZDMの移行コマンドのオプションが正しいか確認する• -srcrootが加えられていることを確認するPRCZ-2006Copyright © 2022, Oracle and/or its affiliates61$ZDM_HOME/bin/zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot -targetnode ecc2c5n1 -rsp/home/zdmuser/logical_online.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3 sudo_location:/usr/bin/sudo -pauseafterZDM_CREATE_GG_EXTRACT_SRC移行コマンド例
<解決方法>• ソース・データベースのSTREAMS_POOL_SIZEパラメータを変更する• 例:alter system set streams_pool_size = 2G;• RAC構成の場合、両ノードをrunning状態でv$parameterを変更する場合、SIDの指定が必須• 例:alter system set streams_pool_size=2G scope=BOTH SID='dbm512’;• https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=433143388948713&parent=EXTERNAL_SEARCH&sourceId=PROBLEM&id=2573221.1&_afrWindowMode=0&_adf.ctrl-state=p0mblr75e_4PRGZ-1154Copyright © 2022, Oracle and/or its affiliates62
<解決方法>• レスポンス・ファイルに以下のパラメータを追加する• RUNCPATREMOTELY=TRUEPRCZ-2103Copyright © 2022, Oracle and/or its affiliates63
<解決方法>• レスポンス・ファイルに以下のパラメータを追加する ※値は任意• DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME=expdump• DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_NAME=impdumpPRGZ-1176Copyright © 2022, Oracle and/or its affiliates64
ORA-03113<解決方法>• Oracle Databaseに対して最後に適用したパッチのpostinstall.sqlスクリプトを実行する• https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=89520403188773&id=2148602.1&_afrWindowMode=0&_adf.ctrl-state=e7ngfdtd_4• logminerパッケージをリビルドするスクリプトを実行する• https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=65704921994373&id=2227372.1&_afrWindowMode=0&_adf.ctrl-state=g026yjvsu_4OGG-02028Copyright © 2022, Oracle and/or its affiliates65
変更例:データベースのタイムゾーン・バージョンを36から37にアップグレードUpdated DST Transitions and New Time Zones in Oracle RDBMS and OJVM Time Zone File Patches(Doc ID 412160.1)• 変更したいDBバージョン、タイムゾーン・バージョンのパッチをMOSからダウンロードする19cのDBを37にアップグレードする場合は33613829• ターゲット・データベース・サーバのoracleユーザにzipファイルを格納しunzip• Opatchのパスを設定するexport PATH=$PATH:/u01/app/oracle/product/19.0.0.0/dbhome_1/Opatch• DBを停止する• Unzip後のパッチ番号のフォルダに移動(cd 33613829/)しOpatch Applyを実行する• この段階でデータベースを起動しタイムゾーンを確認するとLATESTのみ変更されているタイムゾーン・バージョンのアップグレードCopyright © 2022, Oracle and/or its affiliates66SQL> select tz_version from registry$database;TZ_VERSION----------36SQL>SQL> SELECT DBMS_DST.get_latest_timezone_version FROM dual;GET_LATEST_TIMEZONE_VERSION---------------------------37
変更例:データベースのタイムゾーン・バージョンを36から37にアップグレードタイムゾーン・バージョンのアッグレードを適用するスクリプト(まずはチェック・スクリプト)を実行するタイムゾーン・バージョンのアップグレードCopyright © 2022, Oracle and/or its affiliates67SQL> alter session set container=PDB;Session altered.SQL> @utltz_upg_check.sqlSession altered.INFO: Starting with RDBMS DST update preparation.INFO: NO actual RDBMS DST update will be done by this script.INFO: If an ERROR occurs the script will EXIT sqlplus.INFO: Doing checks for known issues ...INFO: Database version is 19.0.0.0 .INFO: This database is a Multitenant database.INFO: This database is a PDB.INFO: Current PDB is PDB .INFO: Database RDBMS DST version is DSTv36 .INFO: No known issues detected.INFO: Now detecting new RDBMS DST version.A prepare window has been successfully started.INFO: Newest RDBMS DST version detected is DSTv37 .INFO: Next step is checking all TSTZ data.INFO: It might take a while before any further output is seen ...A prepare window has been successfully ended.INFO: A newer RDBMS DST version than the one currently used is found.INFO: Note that NO DST update was yet done.INFO: Now run utltz_upg_apply.sql to do the actual RDBMS DST update.INFO: Note that the utltz_upg_apply.sql script willINFO: restart the database 2 times WITHOUT any confirmation or prompt.Session altered.
変更例:データベースのタイムゾーン・バージョンを36から37にアップグレードチェック後に変更スクリプトを実行するタイムゾーン・バージョンのアップグレードCopyright © 2022, Oracle and/or its affiliates68SQL> @utltz_upg_apply.sqlSession altered.INFO: If an ERROR occurs, the script will EXIT SQL*Plus.INFO: The database RDBMS DST version will be updated to DSTv37 .INFO: This database is a Multitenant database.INFO: This database is a PDB.INFO: Current PDB is PDB .WARNING: This script will restart the database 2 timesWARNING: WITHOUT asking ANY confirmation.WARNING: Hit control-c NOW if this is not intended.INFO: Restarting the database in UPGRADE mode to start the DST upgrade.Pluggable Database closed.Pluggable Database opened.INFO: Starting the RDBMS DST upgrade.INFO: Upgrading all SYS owned TSTZ data.INFO: It might take time before any further output is seen ...An upgrade window has been successfully started.INFO: Restarting the database in NORMAL mode to upgrade non-SYS TSTZ data.Pluggable Database closed.Pluggable Database opened.INFO: Upgrading all non-SYS TSTZ data.INFO: It might take time before any further output is seen ...INFO: Do NOT start any application yet that uses TSTZ data!INFO: Next is a list of all upgraded tables:Table list: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_L"Number of failures: 0Table list: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_S"Number of failures: 0Table list: "MDSYS"."SDO_DIAG_MESSAGES_TABLE"Number of failures: 0Table list: "DVSYS"."AUDIT_TRAIL$"Number of failures: 0Table list: "DVSYS"."SIMULATION_LOG$"Number of failures: 0INFO: Total failures during update of TSTZ data: 0 .An upgrade window has been successfully ended.INFO: Your new Server RDBMS DST version is DSTv37 .INFO: The RDBMS DST update is successfully finished.INFO: Make sure to exit this SQL*Plus session.INFO: Do not use it for timezone related selects.Session altered.
変更例:データベースのタイムゾーン・バージョンを36から37にアップグレードタイムゾーンの変更を確認するタイムゾーン・バージョンのアップグレードCopyright © 2022, Oracle and/or its affiliates69SQL> SELECT * FROM v$timezone_file;FILENAME VERSION CON_ID-------------------- ---------- ----------timezlrg_37.dat 37 01 row selected.SQL>
Copyright © 2022, Oracle and/or its affiliates70• Oracle Zero Downtime Migration 21c -オンプレミスからOracle DBCS/ExaCSへの論理的移行と 並行アップグレードに関するステップ・バイ・ステップ・ガイド• https://www.oracle.com/jp/a/tech/docs/oracle-zdm-logical-migration-step-by-step-guide-ja.pdf• Zero Downtime Migrationマニュアル• https://docs.oracle.com/en/database/oracle/zero-downtime-migration/21.3/zdmug/index.html参考資料