Azure Linux 仮想マシン (VM) で Oracle Golden Gate を実装する
適用対象: ✔️ Linux VM
Azure CLI は、コマンドラインやスクリプトで Azure リソースを作成および管理するために使用します。 このガイドでは、Azure CLI を使用して Azure Marketplace ギャラリー イメージから Oracle 19c データベースをデプロイする方法について説明します。
このドキュメントでは、Azure VM で Oracle Golden Gate を作成、インストール、および構成する方法を、順を追って説明します。 このチュートリアルでは、1 つのリージョンの可用性セットに 2 つの仮想マシンを設定します。 同じチュートリアルを使用して、1 つの Azure リージョン内の異なる複数の Availability Zones の VM、または 2 つの異なるリージョンにセットアップされた VM 用に、OracleGolden Gate をセットアップできます。
始める前に、Azure CLI がインストールされていることを確認します。 詳細については、Azure CLI インストール ガイドを参照してください。
はじめに
GoldenGate は、ソース データベースからターゲット データベースへのデータのリアルタイム レプリケーション、フィルター処理、変換を可能にする論理レプリケーション ソフトウェアです。 この機能により、ソース データベースの変更がリアルタイムでレプリケートされ、ターゲット データベースが最新のデータで最新の状態に保たれるようにすることができます。
GoldenGate は主に、異なるソース データベースから 1 つのデータベースにデータをレプリケートするなど、異種レプリケーションの場合に使用します。 たとえば、データ ウェアハウスです。 また、SPARC や AIX から Linux x86 環境への移行や、高度な高可用性とスケーラビリティのシナリオなど、クロスプラットフォームの移行にも使用できます。
さらに、GoldenGate はソース システムの中断を最小限に抑えたオンライン移行をサポートしているため、ダウンタイムがほとんどない移行にも適しています。
GoldenGate は双方向のレプリケーションを容易にしますが、その場合はそれに合わせてアプリケーションを構成する必要があります。 さらに、特定のビジネス要件に合わせてデータのフィルタリングや変換を行うことができるため、ユーザーはレプリケートされたデータをさまざまな用途に利用することができます。
環境の準備
Oracle Golden Gate のインストールを実行するには、同じ可用性セットに 2 つの Azure VM を作成する必要があります。 VM の作成に使用する Marketplace イメージは Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 です。
また、Unix エディター vi を使い慣れていて、X Server の基本を理解している必要があります。
環境構成の概要を次の表に示します。
プライマリ サイト | レプリケート サイト | |
---|---|---|
Oracle リリース | Oracle Database 19.3.1.0 | Oracle Database 19.3.1.0 |
コンピューター名 | ggVM1 | ggVM2 |
オペレーティング システム | Oracle Linux 7.x | Oracle Linux 7.x |
Oracle SID | CDB1 | CDB1 |
レプリケーション スキーマ | TEST | TEST |
Golden Gate の所有者/レプリケート | C##GGADMIN | REPUSER |
Golden Gate のプロセス | EXTORA | REPORA |
Azure へのサインイン
Windows、Linux、または Azure Shell で任意のシェルを開きます。
az login コマンドを使用して、Azure サブスクリプションにサインインします。 その後、画面の指示に従います。
$ az login
サブスクリプション名または ID (あるいはその両方) を確認して、正しいサブスクリプションに接続していることを確認します。
$ az account show
{ "environmentName": "XXXXX", "homeTenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "id": "<SUBSCRIPTION_ID>", "isDefault": true, "managedByTenants": [], "name": "<SUBSCRIPTION_NAME>", "state": "Enabled", "tenantId": XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "user": { "cloudShellID": true, "name": "aaaaa@bbbbb.com", "type": "user" } }
認証キーを生成する
Oracle Database VM に接続するには、ssh を使用してキー ファイル ベースの認証を使用します。 シェルにプライベート (id_rsa
という名前) とパブリック (id_rsa.pub
という名前) のキー ファイルが作成されていることを確認します。
キー ファイルの場所は、ソース システムによって異なります。
Windows: %USERPROFILE%.ssh Linux: ~/.ssh
存在しない場合は、新しいキーファイル ペアを作成できます。
ssh-keygen -m PEM -t rsa -b 4096
.ssh ディレクトリとキー ファイルが作成されます。 詳細については、「Azure 内の Linux VM に対する認証用の SSH キーの作成と管理」を参照してください
リソース グループを作成する
リソース グループを作成するには、az group create コマンドを使用します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
$ az group create --name GoldenGateOnAzureLab --location westus
ネットワークを作成して構成する
Create virtual network
次のコマンドを使用して、このラボで作成したリソースをホストする仮想ネットワークを作成します。
$ az network vnet create \
--name ggVnet \
--resource-group GoldenGateOnAzureLab \
--address-prefixes "10.0.0.0/16" \
--subnet-name ggSubnet1 \
--subnet-prefixes "10.0.0.0/24"
ネットワーク セキュリティ グループ (NSG) を作成する
仮想ネットワークをロック ダウンするためのネットワーク セキュリティ グループ (NSG) を作成します。
$ az network nsg create \ --resource-group GoldenGateOnAzureLab \ --name ggVnetNSG
仮想ネットワーク内の通信を許可する NSG ルールを作成します。
$ az network nsg rule create --resource-group GoldenGateOnAzureLab --nsg-name ggVnetNSG \ --name ggAllowVnet \ --protocol '*' --direction inbound --priority 3400 \ --source-address-prefix 'VirtualNetwork' --source-port-range '*' \ --destination-address-prefix 'VirtualNetwork' --destination-port-range '*' --access allow
すべての受信接続を拒否する NSG 規則を作成します。
$ az network nsg rule create \ --resource-group GoldenGateOnAzureLab \ --nsg-name ggVnetNSG \ --name ggDenyAllInBound \ --protocol '*' --direction inbound --priority 3500 \ --source-address-prefix '*' --source-port-range '*' \ --destination-address-prefix '*' --destination-port-range '*' --access deny
サーバーをホストするサブネットに NSG を割り当てます。
$ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
Bastion ネットワークを作成する
Bastion サブネットを作成します。 サブネットの名前は AzureBastionSubnet にする必要があります。
$ az network vnet subnet create \ --resource-group GoldenGateOnAzureLab \ --name AzureBastionSubnet \ --vnet-name ggVnet \ --address-prefixes 10.0.1.0/24
Bastion のパブリック IP を作成します。
$ az network public-ip create \ --resource-group GoldenGateOnAzureLab \ --name ggBastionIP \ --sku Standard
Azure Bastion リソースを作成します。 リソースのデプロイには約 10 分かかります。
$ az network bastion create \ --resource-group GoldenGateOnAzureLab \ --name ggBastion \ --public-ip-address ggBastionIP \ --vnet-name ggVnet \ --sku Standard \ --enable-tunneling \ --enable-ip-connect true
X Server VM (ggXServer) を作成する
パスワードを置き換え、次のコマンドを実行して、X Server をデプロイする Windows ワークステーション VM を作成します。
$ az vm create \
--resource-group GoldenGateOnAzureLab \
--name ggXServer \
--image MicrosoftWindowsDesktop:Windows-10:win10-22h2-pro-g2:19045.2604.230207 \
--size Standard_DS1_v2 \
--vnet-name ggVnet \
--subnet ggSubnet1 \
--public-ip-sku Standard \
--nsg "" \
--data-disk-delete-option Delete \
--os-disk-delete-option Delete \
--nic-delete-option Delete \
--admin-username azureuser \
--admin-password <ENTER_YOUR_PASSWORD_HERE>
Bastion 経由で ggXServer に接続する
Bastion を使用して ggXServer に接続します。
- Azure portal から ggXServer に移動します
- 左側のナビゲーションで [概要] を見つけます
- 上部のメニューで [接続]>[Bastion] を選択します
- [Bastion] タブを選択します
- [Bastion を使用する] をクリックします
X Server を実行するための ggXServer の準備
このラボの以降の手順では、X Server が必要です。 X Server をインストールして起動するには、次の手順を実行します。
ggXServer に Xming X Server for Windows をダウンロードし、すべての既定のオプションをインストールします。
インストールの最後に [Launch](起動) を選択していないことを確認します。
スタート メニューから "XLAUNCH" アプリケーションを起動します。
[Multiple Windows](複数のウィンドウ) を選択します
[Start no client](クライアントを開始しない) を選択します
[No access control](アクセス制御なし) を選択します
[Allow Access](アクセスの許可) を選択して Windows ファイアウォール経由で X Server を許可します
ggXServer VM を再起動する場合は、上記の手順 2 から 6 に従って X Server アプリケーションを再起動します。
Oracle データベース仮想マシンを作成する
このラボでは、Oracle Database 19c イメージから仮想マシン ggVM1
と ggVM2
を作成します。 これらがキーの既定の場所にまだ存在しない場合、このコマンドによって SSH キーも作成されます。 特定のキーのセットを使用するには、--ssh-key-value
オプションを使用します。 「認証キーの作成」セクションで SSH キーを既に作成済みの場合は、それらのキーが使用されます。
新しい仮想マシンを作成する場合、size
パラメーターは、作成される仮想マシンのサイズと種類を示します。 仮想マシンの作成のために選択した Azure リージョンと、サブスクリプション設定によっては、一部の仮想マシンのサイズと種類を使用できない場合があります。 次の例では、このラボ Standard_DS1_v2
で必要な最小サイズが使用されます。 仮想マシンの仕様を変更する場合は、Azure VM サイズから使用可能なサイズのいずれかを選択します。 テスト目的では、General Purpose (D シリーズ) 仮想マシン タイプから選択できます。 運用またはパイロットのデプロイでは、メモリ最適化 (E シリーズおよび M シリーズ) の方が適しています。
ggVM1 の作成 (プライマリ)
$ az vm create \
--resource-group GoldenGateOnAzureLab \
--name ggVM1 \
--image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
--size Standard_DS1_v2 \
--generate-ssh-keys \
--admin-username azureuser \
--vnet-name ggVnet \
--subnet ggSubnet1 \
--public-ip-address "" \
--nsg "" \
--zone 1
ggVM2 の作成 (レプリケート)
$ az vm create \
--resource-group GoldenGateOnAzureLab \
--name ggVM2 \
--image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
--size Standard_DS1_v2 \
--generate-ssh-keys \
--admin-username azureuser \
--vnet-name ggVnet \
--subnet ggSubnet1 \
--public-ip-address "" \
--nsg "" \
--zone 2
ggVM1 に接続する (プライマリ)
Bastion を使用して ggVM1 に接続します。
- Azure portal から ggVM1 に移動します。
- 左側のウィンドウで [概要] に移動します。
- 上部のメニューで [接続]>[Bastion] を選択します
- [Bastion] タブを選択します
- [Bastion を使用する] を選択します
ggVM1 (プライマリ) でデータベースを作成する
Marketplace イメージには Oracle ソフトウェアが既にインストールされているので、次の手順ではデータベースを作成します。
- ソフトウェアを
oracle
ユーザーとして実行します。
$ sudo su - oracle
- 次のコマンドを使用して、データベースを作成します。 このコマンドが完了するまでに 30 分から 40 分かかる場合があります。
$ dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb1 \
-sid cdb1 \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword OraPasswd1 \
-systemPassword OraPasswd1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword OraPasswd1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType FS \
-datafileDestination "/u01/app/oracle/oradata/" \
-ignorePreReqs
出力は次のようになります。
Copying database files
1% complete
2% complete
8% complete
13% complete
19% complete
27% complete
Creating and starting Oracle instance
29% complete
32% complete
33% complete
34% complete
38% complete
42% complete
43% complete
45% complete
Completing Database Creation
48% complete
51% complete
53% complete
62% complete
70% complete
72% complete
Creating Pluggable Databases
78% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log" for more details.
- 変数 ORACLE_SID および LD_LIBRARY_PATH を設定します。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 次を実行して ORACLE_SID と LD_LIBRARY_PATH を .bashrc ファイルに追加し、これらの設定が将来のサインイン用に保存されるようにします。ORACLE_HOME 変数は、.bashrc ファイルで既に設定されている必要があります。
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
- Oracle リスナーの起動
$ lsnrctl start
ggVM2 に接続する (レプリケート)
Bastion を使用して ggVM2 に接続します。
- Azure portal から ggVM2 に移動します。
- 左側のウィンドウで [概要] に移動します。
- 上部のメニューで [接続]>[Bastion] を選択します
- [Bastion] タブを選択します
- [Bastion を使用する] を選択します
ggVM1 のファイアウォール ポートを開く
ggVM1 からの接続を許可するようにファイアウォールを構成します。 次のコマンドは ggVM2 で実行されます。
$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit
ggVM2 (レプリケート) でのデータベースの作成
- 必要に応じて
oracle
ユーザーに切り替えます
$ sudo su - oracle
- データベースの作成
$ dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb1 \
-sid cdb1 \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword OraPasswd1 \
-systemPassword OraPasswd1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword OraPasswd1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType FS \
-datafileDestination "/u01/app/oracle/oradata/" \
-ignorePreReqs
- 変数 ORACLE_SID および ORACLE_HOME を設定します。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 次を実行して ORACLE_SID と LD_LIBRARY_PATH を .bashrc ファイルに追加し、これらの設定が将来のサインイン用に保存されるようにします。ORACLE_HOME 変数は、.bashrc ファイルで既に設定されている必要があります。
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
- Oracle リスナーの起動
$ lsnrctl start
ggVM1 で Golden Gate を構成する
このセクションの手順に従って、Golden Gate をインストールして構成します。
ggVM1 (プライマリ) でのアーカイブ ログ モードの有効化
sqlplus
に接続します。
$ sqlplus / as sysdba
- アーカイブ ログの有効化
SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
- 強制ログを有効にし、少なくとも 1 つのログ ファイルが存在するようにします。
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER SYSTEM set enable_goldengate_replication=true;
SQL> ALTER PLUGGABLE DATABASE PDB1 OPEN;
SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SESSION SET CONTAINER=PDB1;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> EXIT;
Golden Gate ソフトウェアのダウンロード
Oracle Golden Gate ダウンロード ページからダウンロード タイトル Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64 の下の 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip ファイルをダウンロードします。
この .zip ファイルをクライアント コンピューターにダウンロードしたら、Secure Copy Protocol (SCP) を使用してそのファイルを仮想マシン (ggVM1 および ggVM2) にコピーすることができます。
scp
コマンドが .zip ファイルの正しいパスを指していることを確認します。ggVM1 にコピーする
サインインし、必要に応じて「Azure にサインインする」の説明に従って、正しいサブスクリプションを使用していることを確認します
次の PowerShell コマンドを使用して、ターゲット VM へのトンネルを開きます
$ggVM1id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM1 --query 'id' --output tsv) az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM1id --resource-port 22 --port 57500
トンネル経由でターゲット VM に接続するには、最初のコマンド プロンプトを実行したままにして、2 番目のコマンド プロンプトを開きます。 この 2 番目のコマンド プロンプトウィンドウでは、次のコマンドを使用して、ローカル コンピューターからターゲット VM にファイルをアップロードできます。 仮想マシンにアクセスするための正しい
id_rsa
キーファイルが.ssh
ディレクトリに存在する必要があります。または、scp
コマンドに対する-i
パラメーターを使用して別のキー ファイルを指すこともできます。scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip" azureuser@127.0.0.1:.
ggVM2 にコピーする
次の PowerShell コマンドを使用して、ターゲット VM へのトンネルを開きます
$ggVM2id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM2 --query 'id' --output tsv) az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM2id --resource-port 22 --port 57501
最初のコマンド プロンプトを実行したままにし、2 つ目のコマンド プロンプトを開いて、トンネル経由でターゲット VM に接続します。 この 2 番目のコマンド プロンプトウィンドウでは、次のコマンドを使用して、ローカル コンピューターからターゲット VM にファイルをアップロードできます。 仮想マシンにアクセスするための正しい
id_rsa
キーファイルが.ssh
ディレクトリに存在する必要があります。または、scp
コマンドに対する-i
パラメーターを使用して別のキー ファイルを指すこともできます。scp -P 57501 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip" azureuser@127.0.0.1:.
Golden Gate ソフトウェアのインストール
Bastion を使用して ggVM1 に接続します。
- Azure portal から ggVM1 に移動します。
- 左側のパネルで [概要] に移動します
- 上部のメニューで [接続]>[Bastion] を選択します
- [Bastion] タブを選択します
- [Bastion を使用する] を選択します
.zip ファイルを /opt フォルダーに移動し、所有者を変更します
$ sudo su - $ mv /home/azureuser/*.zip /opt
ファイルを解凍します (ファイル解凍ユーティリティがまだインストールされていない場合はインストールします)
$ yum install unzip $ cd /opt $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
アクセス許可を変更します
$ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome $ exit
Golden Gate インストーラーを起動します
$ sudo su - oracle $ export DISPLAY=10.0.0.4:0.0 $ cd /opt/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1 $ ./runInstaller
インストーラーが ggXServer で開きます。
[Oracle GoldenGate for Oracle Database 21c] を選択します。 [Next](次へ) をクリックして続行します。
ソフトウェアの場所を /u01/app/oracle/product/19.0.0/oggcore_1 に設定し、[Start Manager](Manager の起動) ボックスが選択されていることを確認してから、[Next](次へ) を選択して続行します。
[Summary](概要) 画面で、 [Install](インストール) を選択して続行します。
インストールが完了するのを待ちます。
[Close](閉じる) を選択して続行します。
Bastion を使用して ggVM2 に接続します。
- Azure portal から ggVM2 に移動します。
- 左側のウィンドウで [概要] に移動します
- 上部のメニューで [接続]>[Bastion] を選択します
- [Bastion] タブを選択します
- [Bastion を使用する] を選択します
ggVM2 で上記の手順 2 から 10 を繰り返します
ggVM1 (プライマリ) でのサービスのセットアップ
tnsnames.ora ファイルを作成または更新します。
$ sudo su - oracle $ cd $ORACLE_HOME/network/admin $ vi tnsnames.ora
vi エディターが開いたら、
i
キーを押して挿入モードに切り替えてからファイルの内容をコピーして貼り付け、その後Esc
キー、:wq!
を押してファイルを保存する必要があります。cdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=cdb1) ) ) pdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=pdb1) ) )
Golden Gate の所有者とユーザー アカウントを作成します。
Note
所有者のアカウントには、C## プレフィックスが必要です。
$ sqlplus / as sysdba
SQL> CREATE USER C##GGADMIN identified by ggadmin; SQL> EXEC dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL'); SQL> GRANT DBA to C##GGADMIN container=all; SQL> connect C##GGADMIN/ggadmin SQL> ALTER SESSION SET CONTAINER=PDB1; SQL> EXIT;
Golden Gate のテスト ユーザー アカウントを作成します
$ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ sqlplus system/OraPasswd1@pdb1
SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; SQL> GRANT connect, resource, dba TO test; SQL> ALTER USER test QUOTA 100M on USERS; SQL> connect test/test@pdb1 SQL> @demo_ora_create SQL> @demo_ora_insert SQL> EXIT;
Extract パラメーター ファイルを構成します。
Golden Gate コマンドライン インターフェイス (ggsci) を起動します。
$ sudo su - oracle $ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ ./ggsci
GGSCI> DBLOGIN USERID test@pdb1, PASSWORD test Successfully logged into database pdb1 GGSCI> ADD SCHEMATRANDATA pdb1.test 2017-05-23 15:44:25 INFO OGG-01788 SCHEMATRANDATA has been added on schema test. 2017-05-23 15:44:25 INFO OGG-01976 SCHEMATRANDATA for scheduling columns has been added on schema test. GGSCI> EDIT PARAMS EXTORA
i
キーを押して挿入モードに切り替え、コピー (SSH ウィンドウを右クリック) して次の EXTRACT パラメーター ファイルに貼り付けます。 Esc キー、または:wq!
でファイルを保存します。EXTRACT EXTORA USERID C##GGADMIN@cdb1, PASSWORD ggadmin RMTHOST 10.0.0.5, MGRPORT 7809 RMTTRAIL ./dirdat/rt DDL INCLUDE MAPPED DDLOPTIONS REPORT LOGALLSUPCOLS UPDATERECORDFORMAT COMPACT TABLE pdb1.test.TCUSTMER; TABLE pdb1.test.TCUSTORD;
Extract (統合された Extract) を登録します。
GGSCI> dblogin userid C##GGADMIN@cdb1, password ggadmin Successfully logged into database CDB$ROOT. GGSCI> REGISTER EXTRACT EXTORA DATABASE CONTAINER(pdb1) 2023-03-03 19:37:01 INFO OGG-02003 Extract group EXTORA successfully registered with database at SCN 2142014. GGSCI> exit
Extract チェックポイントを設定し、リアルタイムの Extract を開始します
$ ./ggsci
GGSCI> ADD EXTRACT EXTORA, INTEGRATED TRANLOG, BEGIN NOW EXTRACT (Integrated) added. GGSCI> ADD RMTTRAIL ./dirdat/rt, EXTRACT EXTORA, MEGABYTES 10 RMTTRAIL added. GGSCI> START EXTRACT EXTORA Sending START request to MANAGER ... EXTRACT EXTORA starting GGSCI > INFO ALL Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXTORA 00:00:11 00:00:04 GGSCI > EXIT
この手順では起点の SCN を検索します。これは後ほど別のセクションで使用します。
$ sqlplus / as sysdba
SQL> alter session set container = pdb1; SQL> SELECT current_scn from v$database; CURRENT_SCN ----------- 2172191 SQL> EXIT;
$ ./ggsci GGSCI> EDIT PARAMS INITEXT
vi エディターが開いたら、
i
キーを押して挿入モードに切り替えてからファイルの内容をコピーして貼り付け、その後Esc
キー、:wq!
を押してファイルを保存する必要があります。EXTRACT INITEXT USERID C##GGADMIN@cdb1, PASSWORD ggadmin RMTHOST 10.0.0.6, MGRPORT 7809 RMTTASK REPLICAT, GROUP INITREP TABLE pdb1.test.*, SQLPREDICATE 'AS OF SCN 2172191';
GGSCI> ADD EXTRACT INITEXT, SOURCEISTABLE Extract added. GGSCI> EXIT
ggVM2 (レプリケート) でのサービスのセットアップ
tnsnames.ora ファイルを作成または更新します。
$ cd $ORACLE_HOME/network/admin $ vi tnsnames.ora
vi エディターが開いたら、
i
キーを押して挿入モードに切り替えてからファイルの内容をコピーして貼り付け、その後Esc
キー、:wq!
を押してファイルを保存する必要があります。cdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=cdb1) ) ) pdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=pdb1) ) )
レプリケート アカウントを作成します。
$ sqlplus / as sysdba
SQL> ALTER SYSTEM set enable_goldengate_replication=true; SQL> ALTER SESSION SET CONTAINER = pdb1; SQL> CREATE USER REPUSER IDENTIFIED BY REP_PASS CONTAINER=CURRENT; SQL> GRANT DBA TO REPUSER; SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('REPUSER',CONTAINER=>'PDB1'); SQL> CONNECT REPUSER/REP_PASS@PDB1 SQL> EXIT;
Golden Gate のテスト ユーザー アカウントを作成します。
$ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ sqlplus system/OraPasswd1@pdb1
SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; SQL> GRANT connect, resource, dba TO test; SQL> ALTER USER test QUOTA 100M on USERS; SQL> CONNECT test/test@pdb1 SQL> @demo_ora_create SQL> EXIT;
変更をレプリケートする REPLICAT パラメーター ファイル。
$ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ ./ggsci
GGSCI> EDIT PARAMS REPORA
vi エディターが開いたら、
i
キーを押して挿入モードに切り替えてからファイルの内容をコピーして貼り付け、その後Esc
キー、:wq!
を押してファイルを保存する必要があります。REPLICAT REPORA ASSUMETARGETDEFS DISCARDFILE ./dirrpt/repora.dsc, PURGE, MEGABYTES 100 DDL INCLUDE MAPPED DDLOPTIONS REPORT DBOPTIONS INTEGRATEDPARAMS(parallelism 6) USERID repuser@pdb1, PASSWORD REP_PASS MAP pdb1.test.*, TARGET pdb1.test.*;
レプリケート チェックポイントを設定します。
GGSCI> ADD REPLICAT REPORA, INTEGRATED, EXTTRAIL ./dirdat/rt GGSCI> EDIT PARAMS INITREP
vi エディターが開いたら、
i
キーを押して挿入モードに切り替えてからファイルの内容をコピーして貼り付け、その後Esc
キー、:wq!
を押してファイルを保存する必要があります。REPLICAT INITREP ASSUMETARGETDEFS DISCARDFILE ./dirrpt/tcustmer.dsc, APPEND USERID repuser@pdb1, PASSWORD REP_PASS MAP pdb1.test.*, TARGET pdb1.test.*;
GGSCI> ADD REPLICAT INITREP, SPECIALRUN GGSCI> EXIT
レプリケーションの設定 (ggVM1 と ggVM2)
1. ggVM2 (レプリケート) でのレプリケーションのセットアップ
ggsci
にサインインします。
$ cd /u01/app/oracle/product/12.1.0/oggcore_1
$ ./ggsci
GGSCI> EDIT PARAMS MGR
次のようにファイルを更新します。
PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW
Manager サービスを再起動します。
GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT
2. ggVM1 (プライマリ) でのレプリケーションのセットアップ
初期読み込みとエラーのチェックを開始します。
$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> START EXTRACT INITEXT
GGSCI> VIEW REPORT INITEXT
3. ggVM2 (レプリケート) でのレプリケーションのセットアップ
前に取得した番号で、SCN 番号を変更します。
$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
START REPLICAT REPORA, AFTERCSN 2172191
レプリケーションが開始されたら、テスト テーブルに新しいレコードを挿入してテストすることができます。
ジョブの状態とトラブルシューティングの表示
レポートの表示
ggVM1 のレポートを表示するには、次のコマンドを実行します。
GGSCI> VIEW REPORT EXTORA
ggVM2 のレポートを表示するには、次のコマンドを実行します。
GGSCI> VIEW REPORT REPORA
状態と履歴の表示
ggVM1 の状態と履歴を表示するには、次のコマンドを実行します。
GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin GGSCI> INFO EXTRACT EXTORA, DETAIL
ggVM2 の状態と履歴を表示するには、次のコマンドを実行します。
GGSCI> DBLOGIN USERID REPUSER@PDB1 PASSWORD REP_PASS GGSCI> INFO REP REPORA, DETAIL
$ sqlplus test/test@pdb1
SQL> select * from TCUSTMER; SQL> select * from TCUSTORD;
データ レプリケーションの観察
ggVM1 のプライマリ データベースに接続する
$ sqlplus test/test@pdb1
テーブルから既存のレコードを選択します
SQL> select * from TCUSTORD;
テスト レコードを作成する
SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102); SQL> COMMIT; SQL> EXIT;
Golden Gate によって取得されたトランザクションを観察します (Total inserts の値に注目)
$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> STATS EXTORA
Sending STATS request to Extract group EXTORA ...
Start of statistics at 2023-03-24 19:41:54.
DDL replication statistics (for all trails):
*** Total statistics since extract started ***
Operations 0.00
Mapped operations 0.00
Unmapped operations 0.00
Other operations 0.00
Excluded operations 0.00
Output to ./dirdat/rt:
Extracting from PDB1.TEST.TCUSTORD to PDB1.TEST.TCUSTORD:
*** Total statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
*** Daily statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
*** Hourly statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
*** Latest statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
End of statistics.
ggVM2 のプライマリ データベースに接続する
$ sqlplus test/test@pdb1
新しいレコードがレプリケートされていることを確認します
SQL> select * from TCUSTORD;
CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID ---- --------- -------- ---------- ------------- -------------- -------------- OLLJ 11-APR-99 CYCLE 400 16000 1 102 WILL 30-SEP-94 CAR 144 17520 3 100 JANE 11-NOV-95 PLANE 256 133300 1 100
Oracle Linux での Golden Gate のインストールと構成が完了しました。
ggXServer VM を削除する
ggXServer VM は、セットアップ中にのみ使用されます。 このラボ ドキュメントを完了した後であれば安全に削除できますが、Azure での GoldenGate のラボのセットアップはそのままにしておいてください。
$ az vm delete --resource-group GoldenGateOnAzureLab --name ggXServer --force-deletion yes
$ az network public-ip delete --resource-group GoldenGateOnAzureLab --name ggXServerPublicIP
Azure ラボ セットアップの Golden Gate を削除する
必要がなくなったら、次のコマンドを使用して、ラボからリソース グループ、VM、およびすべての関連リソースを削除できます。
$ az group delete --name GoldenGateOnAzureLab