Slide 1

Slide 1 text

GoldenGate Docker Imageを使用したZDMによる On-Premises ExadataからExaDB-C@Cへの論理オンライン移行 日本オラクル株式会社 クラウド・エンジニアリング統括 COE本部 データベース・ソリューション部 宮本拓弥

Slide 2

Slide 2 text

• はじめに • 移行前準備 • 移行の実行 • 移行後の確認 • トラブルシューティング 目次 Copyright © 2022, Oracle and/or its affiliates 2

Slide 3

Slide 3 text

• 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

Slide 4

Slide 4 text

移行前準備 Copyright © 2022, Oracle and/or its affiliates 4

Slide 5

Slide 5 text

ソフトウェアのインストール手順 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

Slide 6

Slide 6 text

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ユーザ)

Slide 7

Slide 7 text

2. ZDMソフトウェアのダウンロード https://www.oracle.com/database/technologies/rac/zdm-downloads.htmlにアクセスして、 Oracle ZDMソフトウェア(zdm21.3.zip)をダウンロードする ZDMのインストール Copyright © 2022, Oracle and/or its affiliates 7

Slide 8

Slide 8 text

3. インストール前の準備 • Oracle ZDMソフトウェア(zdm21.3.zip)をZDMホストの/home/zdmuser/zdminstall/ディレクトリに準備する • zipファイルの所有者をzdmuserに変更する ZDMのインストール Copyright © 2022, Oracle and/or its affiliates 8 cd /home/zdmuser/zdminstall/ chown zdmuser:zdm /home/zdmuser/zdminstall/ZDM21.3.zip 実行コマンド(rootユーザ)

Slide 9

Slide 9 text

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に以下の内容を追記する

Slide 10

Slide 10 text

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ユーザ)

Slide 11

Slide 11 text

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 実行例

Slide 12

Slide 12 text

設定の手順 1. 必須パッチの確認と適用 2. データベースのパラメータ設定 • 強制ロギングを有効にする • データベースの最小サプリメンタル・ロギングを有効にする • 初期化パラメータのENABLE_GOLDENGATE_REPLICATIONを有効にする • 初期化パラメータのSTREAMS_POOL_SIZEを2GB以上に設定する 3. GoldenGate管理ユーザの作成 • GoldenGate管理ユーザ(ggadmin)を作成する • ggadminに必要なすべての権限を付与する 4. 移行するサンプル・データの作成 ソース・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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ユーザ)

Slide 15

Slide 15 text

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を作成する必要がある

Slide 16

Slide 16 text

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ユーザ)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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ユーザ)

Slide 19

Slide 19 text

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ユーザ)

Slide 20

Slide 20 text

3. タイムゾーン・バージョンの確認 • ターゲット・データベースのタイムゾーン・バージョンはソース・データベースのタイムゾーン・バージョンと同じでなければなら ない • 以下の例のようにソース・データベースとターゲット・データベースのそれぞれで確認する • 同じでない場合はアップグレードする必要がある • アップグレード方法に関しては本資料のトラブルシューティングの項目をご参照ください ターゲット・データベースの設定 Copyright © 2022, Oracle and/or its affiliates 20 SQL> select * from v$timezone_file; FILENAME VERSION CON_ID -------------------- ---------- ---------- timezlrg_36.dat 36 0 確認例

Slide 21

Slide 21 text

構築手順 1. Oracle Container Runtime for Dockerのインストール 2. GoldenGateのDockerイメージのダウンロード 3. GoldenGateのDockerイメージのロードと起動 4. 接続確認 GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 21

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

3. GoldenGateのDockerイメージのロードと起動 • GoldenGateのDockerイメージをロードする • GoldenGateのDockerイメージを起動する • https://github.com/oracle/docker-images/tree/main/OracleGoldenGate/21c#running-oracle-goldengate-in- a-container GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 24

Slide 25

Slide 25 text

4. 接続確認 • GoldenGate Hub用のサーバーにssh接続してDocker Container上にあるGoldenGateのイメージにアクセスできる か確認する GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 25 docker exec -it /bin/bash Docker Containerのshellへの接続コマンド docker ps container nameの確認コマンド

Slide 26

Slide 26 text

4. 接続確認 • Oracle GoldenGateサービス・マネージャへ接続確認する • 任意のブラウザ上のアドレス・バーに以下の情報を入力する • https://<ホスト名.ドメイン名>:<ホストのポート番号>/ • ユーザ名:oggadmin、パスワード:Dockerイメージの起動時に設定したもの GoldenGate Hubの構築 Copyright © 2022, Oracle and/or its affiliates 26

Slide 27

Slide 27 text

設定内容 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

Slide 28

Slide 28 text

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ユーザ)

Slide 29

Slide 29 text

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 例

Slide 30

Slide 30 text

2. ソース・データベースでの設定 • ZDMホストの公開鍵id_rsa.pubファイルの中身をauthorized_keysに追加する • /etc/hostsファイルにターゲット・データベースの接続情報を追記する ※SCANアドレスも追加する 接続設定 Copyright © 2022, Oracle and/or its affiliates 30 10.122.22.132 ecc2c5n1.xxx.com ecc2c5n1 10.122.22.136 ecc2c5-scan.xxx.com ecc2c5-scan /etc/hostsファイルの追記内容

Slide 31

Slide 31 text

3. ターゲット・データベースでの設定 • ZDMホストの公開鍵id_rsa.pubファイルの中身をauthorized_keysに追加する • /etc/hostsファイルにソース・データベースの接続情報を追記する ※SCANアドレスも追加する 接続設定 Copyright © 2022, Oracle and/or its affiliates 31 10.122.6.19 ariesdb01.xxx.com ariesdb01 10.122.3.65 aries-scan01.xxx.com aries-scan01 /etc/hostsファイルの追記内容

Slide 32

Slide 32 text

4. ZDMホストからソースおよびターゲット・データベースへの接続確認 • zdmuserでZDMホストからソース・データベースおよびターゲット・データベースへ接続できるか確認する 接続設定 Copyright © 2022, Oracle and/or its affiliates 32 ssh –i zdm.ppk <ユーザ名>@<ホスト名> 実行コマンド(zdmuserユーザ)

Slide 33

Slide 33 text

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 <ターゲット・データベースのホスト名>:<ターゲット・データベースのポート番号> 実行例 ※ターゲット・データベースからも同様に実行する(ソース・データベースのホスト名とポート番号を入力する)

Slide 34

Slide 34 text

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 /bin/bash Docker Containerのshellへの接続コマンド docker ps container nameの確認コマンド

Slide 35

Slide 35 text

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> 実行例

Slide 36

Slide 36 text

• 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ユーザ)

Slide 37

Slide 37 text

レスポンス・ファイル追記内容 レスポンス・ファイルの作成 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 追記例 ※以下に表示されていない他のパラメータはデフォルト値もしくは空白のままとする

Slide 38

Slide 38 text

移行の実行 Copyright © 2022, Oracle and/or its affiliates 38

Slide 39

Slide 39 text

全体の手順 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

Slide 40

Slide 40 text

全体の手順 • 指定したフェーズごとに停止してジョブの確認を行う • 実際の移行を想定すると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

Slide 41

Slide 41 text

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ユーザ)

Slide 42

Slide 42 text

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 実行例

Slide 43

Slide 43 text

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 失敗例

Slide 44

Slide 44 text

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ユーザ)

Slide 45

Slide 45 text

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ユーザ)

Slide 46

Slide 46 text

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ユーザ)

Slide 47

Slide 47 text

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 フェーズのイメージ

Slide 48

Slide 48 text

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ユーザ)

Slide 49

Slide 49 text

4. ZDM_POST_DATAPUMP_TGTまでの実行 • ZDM_POST_DATAPUMP_TGTまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを 確認する • ソース・データベース(赤)とターゲット・データベース(青)でData Pumpによるデータの移行を確認する • スキーマ(testuser)と表(tab)がターゲット・データベースに移行されているか確認する 移行の実行 Copyright © 2022, Oracle and/or its affiliates 49 フェーズのイメージ

Slide 50

Slide 50 text

5. ZDM_CREATE_GG_REPLICAT_TGTまでの実行 • ZDM_CREATE_GG_REPLICAT_TGTまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを 確認する • GoldenGate Hubの管理サービスへログインしてReplicatが作成されていることを確認する 移行の実行 Copyright © 2022, Oracle and/or its affiliates 50 フェーズのイメージ

Slide 51

Slide 51 text

6. ZDM_MONITOR_GG_LAGまでの実行 • ZDM_MONITOR_GG_LAGまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する • ソース・データベース(赤)とターゲット・データベース(青)でGoldenGateによってデータがオンタイムで連携されていることを 確認する • ソース・データベースで実行している自動insertジョブを停止する 移行の実行 Copyright © 2022, Oracle and/or its affiliates 51 BEGIN DBMS_SCHEDULER.DROP_JOB('job1'); END; / 実行コマンド例(SQL*Plus/sysユーザ) フェーズのイメージ

Slide 52

Slide 52 text

7. ZDM_SWITCHOVER_APPまでの実行 • ZDM_SWITCHOVER_APPまでCOMPLETEDとなり、次のフェーズがPENDINGと表示されていることを確認する • GoldenGate Hubの管理サービスへログインしてExatractとReplicatが停止されていることを確認する 移行の実行 Copyright © 2022, Oracle and/or its affiliates 52 フェーズのイメージ

Slide 53

Slide 53 text

8. 最後のフェーズまでの実行 • -pauseafterオプションを付けずにジョブの再開コマンドを実行する • 残りのすべてのジョブがCOMPLETEDと表示されていることを確認する • GoldenGate Hubの管理サービスへログインしてExatractとReplicatが削除されていることを確認する 移行の実行 Copyright © 2022, Oracle and/or its affiliates 53 $ZDM_HOME/bin/zdmcli resume job –jobid 40 実行コマンド例(zdmuserユーザ) フェーズのイメージ

Slide 54

Slide 54 text

移行後の確認 Copyright © 2022, Oracle and/or its affiliates 54

Slide 55

Slide 55 text

• ソース・データベース(赤)とターゲット・データベース(青)でZDMの論理オンライン移行によってデータが漏れなく移行でき ていることを確認する 移行後の確認 Copyright © 2022, Oracle and/or its affiliates 55

Slide 56

Slide 56 text

トラブルシューティング Copyright © 2022, Oracle and/or its affiliates 56

Slide 57

Slide 57 text

<解決方法> • インストーラーの実行前に言語設定を変更する • 例:export LANG=C ZDMソフトウェアのインストールエラー Copyright © 2022, Oracle and/or its affiliates 57

Slide 58

Slide 58 text

<解決方法> • レスポンス・ファイル内でターゲット・データベースのOCIDを指定している場合、 • TARGETDATABASE_OCID=XXXを削除する ⇒ 本検証ではNFSを使用するため、OCIDの指定は不要 PRGZ-1166 Copyright © 2022, Oracle and/or its affiliates 58

Slide 59

Slide 59 text

<解決方法> • レスポンス・ファイル内の項目を再確認し、サービス名などの情報にミスがないか、不要な空白が含まれていないかなどを 確認 • レスポンス・ファイル内でターゲット・データベースのOCIDを指定している場合、 • TARGETDATABASE_OCID=XXXを削除 ⇒ 本検証ではNFSを使用するため、OCIDの指定は不要 PRGZ-1001 Copyright © 2022, Oracle and/or its affiliates 59

Slide 60

Slide 60 text

ORA-01017 <解決方法> • レスポンス・ファイルのパラメータ SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAMEに正しいサービス名が記載されており DBユーザのユーザ名/パスワードが正しいことを確認する PRGD-1002 Copyright © 2022, Oracle and/or its affiliates 60

Slide 61

Slide 61 text

<解決方法> • 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 移行コマンド例

Slide 62

Slide 62 text

<解決方法> • ソース・データベースの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

Slide 63

Slide 63 text

<解決方法> • レスポンス・ファイルに以下のパラメータを追加する • RUNCPATREMOTELY=TRUE PRCZ-2103 Copyright © 2022, Oracle and/or its affiliates 63

Slide 64

Slide 64 text

<解決方法> • レスポンス・ファイルに以下のパラメータを追加する ※値は任意 • DATAPUMPSETTINGS_EXPORTDIRECTORYOBJECT_NAME=expdump • DATAPUMPSETTINGS_IMPORTDIRECTORYOBJECT_NAME=impdump PRGZ-1176 Copyright © 2022, Oracle and/or its affiliates 64

Slide 65

Slide 65 text

ORA-03113 <解決方法> • Oracle Databaseに対して最後に適用したパッチのpostinstall.sqlスクリプトを実行する • https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=89520403188773&id=2148602.1&_afr WindowMode=0&_adf.ctrl-state=e7ngfdtd_4 • logminerパッケージをリビルドするスクリプトを実行する • https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=65704921994373&id=2227372.1&_afr WindowMode=0&_adf.ctrl-state=g026yjvsu_4 OGG-02028 Copyright © 2022, Oracle and/or its affiliates 65

Slide 66

Slide 66 text

変更例:データベースのタイムゾーン・バージョンを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

Slide 67

Slide 67 text

変更例:データベースのタイムゾーン・バージョンを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.

Slide 68

Slide 68 text

変更例:データベースのタイムゾーン・バージョンを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.

Slide 69

Slide 69 text

変更例:データベースのタイムゾーン・バージョンを36から37にアップグレード タイムゾーンの変更を確認する タイムゾーン・バージョンのアップグレード Copyright © 2022, Oracle and/or its affiliates 69 SQL> SELECT * FROM v$timezone_file; FILENAME VERSION CON_ID -------------------- ---------- ---------- timezlrg_37.dat 37 0 1 row selected. SQL>

Slide 70

Slide 70 text

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 参考資料

Slide 71

Slide 71 text

No content