Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoldenGate Docker Imageを使用したZDMによるOn-Premises E...

GoldenGate Docker Imageを使用したZDMによるOn-Premises ExadataからExaDB-C@Cへの論理オンライン移行

Oracle Zero Downtime Migration(ZDM)によるOn-Premises Exadata(11g)からExaDB-C@C(19c)への論理オンライン移行の手順書となります。

oracle4engineer

August 29, 2022
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. • Oracle Zero Downtime Migration(ZDM)によるOn-Premises ExadataからExaDB-C@Cへの論理オンライン 移行の手順書である • 詳細 •

    ソース・データベース:Exadata X7-2 Quarter Rack(Oracle Database 11gリリース2) • ターゲット・データベース:ExaDB-C@C(Oracle Database 19c) • GoldenGate Hub:Docker Container上Oracle GoldenGate Docker Imageを構築 • バックアップ:Network File System(NFS)を使用 はじめに Copyright © 2022, Oracle and/or its affiliates 3
  2. ソフトウェアのインストール手順 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 affiliates 5
  3. 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 affiliates 6 groupadd zdm useradd -g zdm zdmuser mkdir -p /home/zdmuser/zdminstall mkdir /home/zdmuser/zdmhome mkdir /home/zdmuser/zdmbase chown -R zdmuser:zdm /home/zdmuser/ yum –y install glibc-devel expect unzip libaio ¥ oraclelinux-developer-release-el7 実行コマンド(rootユーザ)
  4. 3. インストール前の準備 • ZDMユーザにログインして、ZDMソフトウェアのインストールに必要な環境変数の設定を行う ZDMのインストール Copyright © 2022, Oracle and/or

    its affiliates 9 su - 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に以下の内容を追記する
  5. 4. ZDMソフトウェアのインストール • ZDMソフトウェアのzipファイルを展開する • zdminstall.shを実行して、ZDMソフトウェアをインストールする ZDMのインストール Copyright © 2022,

    Oracle and/or its affiliates 10 unzip $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ユーザ)
  6. 4. ZDMソフトウェアのインストール • ZDMを起動してステータスを確認する ZDMのインストール Copyright © 2022, Oracle and/or

    its affiliates 11 [zdmuser@x3-2-01 bin]$ ./zdmservice start Return code is 0 Server started successfully [zdmuser@x3-2-01 bin]$ ./zdmservice status --------------------------------------- Service Status --------------------------------------- Running: true Tranferport: Conn String: jdbc:mysql://localhost:8897/ RMI port: 8895 HTTP port: 8896 Wallet path: /home/zdmuser/zdmbase/crsdata/x3-2-01/security 実行例
  7. 設定の手順 1. 必須パッチの確認と適用 2. データベースのパラメータ設定 • 強制ロギングを有効にする • データベースの最小サプリメンタル・ロギングを有効にする •

    初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする • 初期化パラメータのSTREAMS_POOL_SIZEを2GB以上に設定する 3. GoldenGate管理ユーザの作成 • GoldenGate管理ユーザ(ggadmin)を作成する • ggadminに必要なすべての権限を付与する 4. 移行するサンプル・データの作成 ソース・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 12
  8. 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 affiliates 13 参照:https://support.oracle.com/cloud/faces/DocumentDisplay?_afrLoop=187015939486225&_afrWindowMode=0&id=1557031.1&_adf.ctrl-state=1bjkp1bhyd_67
  9. 2. データベースのパラメータ設定 • 強制ロギングを有効にする • データベースの最小サプリメンタル・ロギングを有効にする • 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする • 初期化パラメータのSTREAMS_POOL_SIZEを2GB以上に設定する

    ソース・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 14 alter 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_replication select name, value from v$parameter where name like '%pool%'; 確認コマンド(SQL*Plus/sysユーザ)
  10. 3. GoldenGate管理ユーザの作成 • GoldenGate管理ユーザ(ggadmin)の作成する • ggadminに必要なすべての権限を付与する ソース・データベースの設定 Copyright © 2022,

    Oracle and/or its affiliates 15 create user ggadmin identified by <任意のパスワード> default tablespace users temporary 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を作成する必要がある
  11. 4. 移行するサンプル・データの作成 • 移行するスキーマを作成する • 移行するスキーマに以下の設定を行う • 必要な権限を付与する • 表を作成する

    • シーケンスを作成する • insert文を実行するプロシージャを作成する (本手順ではGoldenGateの動作確認を行うためZDM実行中に繰り返しInsert文を実行する) ソース・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 16 create 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 pro is BEGIN insert into testuser.tab values(testuser.seq.nextval, sysdate); commit; end; / サンプル・データの作成コマンド(SQL*Plus/sysユーザ)
  12. 設定手順 1. GoldenGate管理ユーザの作成(PDB) • GoldenGate管理ユーザ(ggadmin)を作成する • ggadminに必要なすべての権限を付与する 2. データベースのパラメータと権限の設定(CDB$ROOT) •

    初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする • Data Pumpに必要なターゲットを準備する 3. タイムゾーン・バージョンの確認 ターゲット・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 17
  13. 1. GoldenGate管理ユーザの作成(PDB) • PDBに接続する • GoldenGate管理ユーザ(ggadmin)を作成する • ggadminに必要なすべての権限を付与する ターゲット・データベースの設定 Copyright

    © 2022, Oracle and/or its affiliates 18 create user ggadmin identified by <任意のパスワード> default tablespace users temporary 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ユーザ)
  14. 2. データベースのパラメータと権限の設定(CDB$ROOT) • CDB$ROOTに接続する • 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする • Data Pumpに必要な権限を付与する ターゲット・データベースの設定

    Copyright © 2022, Oracle and/or its affiliates 19 alter system set enable_goldengate_replication=true scope=both; grant datapump_imp_full_database to system; 実行コマンド(SQL*Plus/sysユーザ)
  15. 3. タイムゾーン・バージョンの確認 • ターゲット・データベースのタイムゾーン・バージョンはソース・データベースのタイムゾーン・バージョンと同じでなければなら ない • 以下の例のようにソース・データベースとターゲット・データベースのそれぞれで確認する • 同じでない場合はアップグレードする必要がある •

    アップグレード方法に関しては本資料のトラブルシューティングの項目をご参照ください ターゲット・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 20 SQL> select * from v$timezone_file; FILENAME VERSION CON_ID -------------------- ---------- ---------- timezlrg_36.dat 36 0 確認例
  16. 構築手順 1. Oracle Container Runtime for Dockerのインストール 2. GoldenGateのDockerイメージのダウンロード 3.

    GoldenGateのDockerイメージのロードと起動 4. 接続確認 GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 21
  17. 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-install GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 22
  18. 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 affiliates 23
  19. 4. 接続確認 • GoldenGate Hub用のサーバーにssh接続してDocker Container上にあるGoldenGateのイメージにアクセスできる か確認する GoldenGate Hubの構築 Copyright

    © 2022, Oracle and/or its affiliates 25 docker exec -it <container name> /bin/bash Docker Containerのshellへの接続コマンド docker ps container nameの確認コマンド
  20. 4. 接続確認 • Oracle GoldenGateサービス・マネージャへ接続確認する • 任意のブラウザ上のアドレス・バーに以下の情報を入力する • https://<ホスト名.ドメイン名>:<ホストのポート番号>/ •

    ユーザ名:oggadmin、パスワード:Dockerイメージの起動時に設定したもの GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 26
  21. 設定内容 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 affiliates 27
  22. 1. ZDMホストでの設定 • zdmuserでログインする • .sshディレクトリを作成し、ディレクトリのアクセス権限を変更する • SSH鍵ペアを生成する • authorized_keysファイルに、生成した公開鍵id_rsa.pubファイルの中身を追加し、ファイルのアクセス権限を変更す

    る • 秘密鍵id_rsaファイルの名前をzdm.ppkに変更する 接続設定 Copyright © 2022, Oracle and/or its affiliates 28 mkdir ~/.ssh chmod 700 ~/.ssh /usr/bin/ssh-keygen –t rsa cd ~/.ssh cat id_rsa.pub >> authorized_keys chmod 600 authorized_keys mv id_rsa zdm.ppk 実行コマンド(zdmuserユーザ)
  23. 1. ZDMホストでの設定 • rootユーザでログインする • /etc/hostsファイルにソース・データベース、ターゲット・データベース、GoldenGate Hubの情報を入力する 接続設定 Copyright ©

    2022, Oracle and/or its affiliates 29 [zdmuser@x3-2-01 ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.122.6.19 ariesdb01.xxx.com ariesdb01 ##Source Database 10.122.22.132 ecc2c5n1.xxx.com ecc2c5n1 ##Target Database 10.122.9.68 x3-2-08.xxx.com x3-2-08 ##OGG Hub 10.122.9.61 x3-2-01.xxx.com x3-2-01 ##ZDM Host 例
  24. 5. ソース・データベースとターゲット・データベース間の接続確認 • SCANを使用してソース・データベースとターゲット・データベース間の接続を確認する 接続設定 Copyright © 2022, Oracle and/or

    its affiliates 33 [oracle@sourcedb ~]$ tnsping targetdb:1521 TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-AUG-2022 08:39:59 Copyright (c) 1997, 2021, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/sqlnet.ora Used HOSTNAME adapter to resolve the alias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.98)(PORT=1521))) OK (0 msec) 実行コマンド(ソース・データベース/oracleユーザ) tnsping <ターゲット・データベースのホスト名>:<ターゲット・データベースのポート番号> 実行例 ※ターゲット・データベースからも同様に実行する(ソース・データベースのホスト名とポート番号を入力する)
  25. 6. GoldenGate Hubでの設定 • Docker Container上にインストールしたGoldenGate Hubにssh接続する • /etc/hostsファイルにソース・データベースとターゲット・データベースの接続情報を追記する 接続設定

    Copyright © 2022, Oracle and/or its affiliates 34 10.122.6.19 ariesdb01.xxx.com ariesdb01 ##Source Database 10.122.22.132 ecc2c5n1.xxx.com ecc2c5n1 ##Target Database /etc/hostsファイルへの追記内容 docker exec -it <container name> /bin/bash Docker Containerのshellへの接続コマンド docker ps container nameの確認コマンド
  26. 7. GoldenGate Hubからソース・データベースおよびターゲット・データベースへの接続確認 • GoldenGate HubからSQL*Plusを使用してソース・データベースおよびターゲット・データベースへの接続確認をする • SQL*Plusは/u01/app/ogg/lib/instantclient/sqlplusに配置されている 接続設定 Copyright

    © 2022, Oracle and/or its affiliates 35 接続コマンド(rootユーザ) /u01/app/ogg/lib/instantclient/sqlplus <ユーザ名>/<パスワード>@<ホスト名>:<ポート番号>/<サービス名> [root@cf2fe0a4a12f /]#/u01/app/ogg/lib/instantclient/sqlplus testuser@ariesdb01:1521/dbm51 SQL*Plus: Release 21.0.0.0.0 - Production on Wed Jun 29 03:05:50 2022 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> 実行例
  27. • 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 affiliates 36 cp /home/zdmuser/zdmhome/rhp/zdm/template/zdm_logical_template.rsp /home/zdmuser cd /home/zdmuser mv zdm_logical_template.rsp logical_online.rsp chmod +w logical_online.rsp vi logical_online.rsp 実行コマンド(zdmuserユーザ)
  28. レスポンス・ファイル追記内容 レスポンス・ファイルの作成 Copyright © 2022, Oracle and/or its affiliates 37

    MIGRATION_METHOD=ONLINE_LOGICAL DATA_TRANSFER_MEDIUM=NFS #Source DB SOURCEDATABASE_ADMINUSERNAME=SYSTEM SOURCEDATABASE_CONNECTIONDETAILS_HOST=ariesdb01 SOURCEDATABASE_CONNECTIONDETAILS_PORT=1521 SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME=dbm51 SOURCEDATABASE_GGADMINUSERNAME=ggadmin SOURCEDATABASE_ENVIRONMENT_NAME=ORACLE SOURCEDATABASE_ENVIRONMENT_DBTYPE=ORACLE # Target DB TARGETDATABASE_ADMINUSERNAME=SYSTEM TARGETDATABASE_GGADMINUSERNAME=ggadmin TARGETDATABASE_CONNECTIONDETAILS_HOST=ecc2c5n1 TARGETDATABASE_CONNECTIONDETAILS_PORT=1521 TARGETDATABASE_CONNECTIONDETAILS_SERVICENAME=db1_pdb1.xxx.com # GoldenGate GOLDENGATEHUB_ADMINUSERNAME=oggadmin GOLDENGATEHUB_URL=https://x3-2-08.xxx.com:10443/ GOLDENGATEHUB_SOURCEDEPLOYMENTNAME=Local GOLDENGATEHUB_TARGETDEPLOYMENTNAME=Local # Datapump DATAPUMPSETTINGS_JOBMODE=SCHEMAINCLUDEOBJECTS-1=owner:TESTUSER DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME=expdump DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_PATH=/nfsbkup/dump DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_NAME=impdump DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_PATH=/nfsbkup/dump # Others RUNCPATREMOTELY=TRUE 追記例 ※以下に表示されていない他のパラメータはデフォルト値もしくは空白のままとする
  29. 全体の手順 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 affiliates 39
  30. 全体の手順 • 指定したフェーズごとに停止してジョブの確認を行う • 実際の移行を想定するとZDM_MONITOR_GG_LAGでの停止のみ必要になるが、動作確認のため本手順では5つ のフェーズで停止する 移行の実行 Copyright © 2022,

    Oracle and/or its affiliates 40 移行開始 -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
  31. 1. 評価コマンドの実行 • 移行前にZDM評価コマンドを実行する • 移行コマンドに-evalのオプションを付与することで移行前の評価を実施可能 • コマンドの中で作成したレスポンス・ファイルの情報を指定している • コマンド入力後にいくつかパスワードの入力を問われるためそれぞれ入力する

    移行の実行 Copyright © 2022, Oracle and/or its affiliates 41 $ZDM_HOME/bin/zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot -targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3 sudo_location:/usr/bin/sudo -eval 実行コマンド例(zdmuserユーザ)
  32. 1. 評価コマンドの実行 • 実行したジョブをコマンドで確認する • 評価コマンド発行時のJob IDを指定して確認することができる • $ZDM_HOME/bin/zdmcli query

    job -jobid XX • すべてのフェーズがCOMPLETEDになれば評価完了 移行の実行 Copyright © 2022, Oracle and/or its affiliates 42 [zdmuser@x3-2-01 bin]$ ./zdmcli query job -jobid 39 x3-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 -tgtauth zdmauth -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 ...................... COMPLETED ZDM_VALIDATE_SRC ...................... COMPLETED ZDM_SETUP_SRC ......................... COMPLETED ZDM_PRE_MIGRATION_ADVISOR ............. 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_CLEANUP_SRC ....................... COMPLETED 実行例
  33. 1. 評価コマンドの実行 • FAILEDがある場合は結果ファイル・パスに格納されているログを確認しエラーを解消してください ※エラー内容と解決方法はトラブルシューティングに記載している 移行の実行 Copyright © 2022, Oracle

    and/or its affiliates 43 [zdmuser@x3-2-01 bin]$ ./zdmcli query job -jobid 10 x3-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 -tgtauth zdmauth -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 ...................... COMPLETED ZDM_VALIDATE_SRC ...................... COMPLETED ZDM_SETUP_SRC ......................... COMPLETED ZDM_PRE_MIGRATION_ADVISOR ............. FAILED ZDM_VALIDATE_GG_HUB ................... PENDING ZDM_VALIDATE_DATAPUMP_SETTINGS_SRC .... PENDING ZDM_VALIDATE_DATAPUMP_SETTINGS_TGT .... PENDING ZDM_PREPARE_DATAPUMP_SRC .............. PENDING ZDM_DATAPUMP_ESTIMATE_SRC ............. PENDING ZDM_CLEANUP_SRC ....................... PENDING 失敗例
  34. 2. ソース・データベースで自動insertジョブの実行 • ソース・データベースで移行するスキーマ(testuser)に対して自動insertジョブを実行する • 本ガイドの「ソース・データベースの設定 - 移行するサンプル・データの作成」で作成したプロシージャを使用する • 自動insertジョブの目的

    ⇒ 移行の実行中に移行するデータに対して更新が入ってもGoldenGateによって問題(データの漏れ)なくZDMによるオンライン論 理移行が実行できるか検証するため 移行の実行 Copyright © 2022, Oracle and/or its affiliates 44 BEGIN DBMS_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ユーザ)
  35. 2. ソース・データベースで自動insertジョブの実行 • ソース・データベースで実行した自動insertジョブの動作を確認する 移行の実行 Copyright © 2022, Oracle and/or

    its affiliates 45 alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS'; select * from testuser.tab order by id; 実行コマンド例(SQL*Plus/sysユーザ)
  36. 3. ZDM_CREATE_GG_EXTRACT_SRCまでの実行 • 移行コマンドを実行する • -pauseafterオプションを加えることで指定したフェーズ後にZDMのジョブが一時停止されるように設定できる • GoldenGateのExtractが作成されるフェーズ(ZDM_CREATE_GG_EXTRACT_SRC)の完了後に停止させる • コマンド入力後にいくつかパスワードの入力を問われるためそれぞれ入力する

    移行の実行 Copyright © 2022, Oracle and/or its affiliates 46 $ZDM_HOME/bin/zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot -targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3 sudo_location:/usr/bin/sudo -pauseafter ZDM_CREATE_GG_EXTRACT_SRC 実行コマンド例(zdmuserユーザ)
  37. 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 affiliates 47 フェーズのイメージ
  38. 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 affiliates 48 $ZDM_HOME/bin/zdmcli resume job –jobid 40 –pauseafter ZDM_POST_DATAPUMP_TGT 実行コマンド例(zdmuserユーザ)
  39. <解決方法> • ZDMの移行コマンドのオプションが正しいか確認する • -srcrootが加えられていることを確認する PRCZ-2006 Copyright © 2022, Oracle

    and/or its affiliates 61 $ZDM_HOME/bin/zdmcli migrate database -sourcedb dbm51 -sourcenode ariesdb01 -srcroot -targetnode ecc2c5n1 -rsp /home/zdmuser/logical_online.rsp -tgtauth zdmauth -tgtarg1 user:opc -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk -tgtarg3 sudo_location:/usr/bin/sudo -pauseafter ZDM_CREATE_GG_EXTRACT_SRC 移行コマンド例
  40. <解決方法> • ソース・データベースの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=EXTERNA L_SEARCH&sourceId=PROBLEM&id=2573221.1&_afrWindowMode=0&_adf.ctrl-state=p0mblr75e_4 PRGZ-1154 Copyright © 2022, Oracle and/or its affiliates 62
  41. 変更例:データベースのタイムゾーン・バージョンを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 affiliates 66 SQL> select tz_version from registry$database; TZ_VERSION ---------- 36 SQL> SQL> SELECT DBMS_DST.get_latest_timezone_version FROM dual; GET_LATEST_TIMEZONE_VERSION --------------------------- 37
  42. 変更例:データベースのタイムゾーン・バージョンを36から37にアップグレード タイムゾーン・バージョンのアッグレードを適用するスクリプト(まずはチェック・スクリプト)を 実行する タイムゾーン・バージョンのアップグレード Copyright © 2022, Oracle and/or its

    affiliates 67 SQL> alter session set container=PDB; Session altered. SQL> @utltz_upg_check.sql Session 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 will INFO: restart the database 2 times WITHOUT any confirmation or prompt. Session altered.
  43. 変更例:データベースのタイムゾーン・バージョンを36から37にアップグレード チェック後に変更スクリプトを実行する タイムゾーン・バージョンのアップグレード Copyright © 2022, Oracle and/or its affiliates

    68 SQL> @utltz_upg_apply.sql Session 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 times WARNING: 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: 0 Table list: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_S" Number of failures: 0 Table list: "MDSYS"."SDO_DIAG_MESSAGES_TABLE" Number of failures: 0 Table list: "DVSYS"."AUDIT_TRAIL$" Number of failures: 0 Table list: "DVSYS"."SIMULATION_LOG$" Number of failures: 0 INFO: 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.
  44. Copyright © 2022, Oracle and/or its affiliates 70 • 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 参考資料