Azure Linux 仮想マシンで 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 へのサインイン

  1. Windows、Linux、または Azure Shell で任意のシェルを開きます。

  2. az login コマンドを使用して、Azure サブスクリプションにサインインします。 その後、画面の指示に従います。

    $ az login
    
  3. サブスクリプション名または 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) を作成する

  1. ネットワーク セキュリティ グループ (NSG) を作成して、仮想ネットワークをロックダウンします。

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. 仮想ネットワーク内の通信を許可する 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
    
  3. すべての受信接続を拒否する 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
    
  4. サーバーをホストするサブネットに NSG を割り当てます。

    $ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
    

Bastion ネットワークを作成する

  1. Bastion サブネットを作成します。 サブネットの名前は AzureBastionSubnet にする必要があります

    $ az network vnet subnet create  \
        --resource-group GoldenGateOnAzureLab \
        --name AzureBastionSubnet \
        --vnet-name ggVnet \
        --address-prefixes 10.0.1.0/24
    
  2. Bastion のパブリック IP を作成します

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. 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 に接続します。

  1. Azure portal から ggXServer に移動します。
  2. 左側のブレードで [概要] に移動します
  3. 上部のメニューで [接続]>[Bastion] を選択します
  4. [Bastion] タブを選択します
  5. [Bastion を使用する] をクリックします

X Server を実行するための ggXServer の準備

このラボの以降の手順では、X Server が必要です。 X Server をインストールして起動するには、次の手順を実行します。

  1. ggXServerXming X Server for Windows をダウンロードし、すべての既定のオプションをインストールします。

  2. インストールの最後に [Launch](起動) を選択していないことを確認します。

  3. スタート メニューから "XLAUNCH" アプリケーションを起動します。

  4. [Multiple Windows](複数のウィンドウ) を選択します

    XLaunch ウィザードの手順 1 のスクリーンショット。

  5. [Start no client](クライアントを開始しない) を選択します

    XLaunch ウィザードの手順 2 のスクリーンショット。

  6. [No access control](アクセス制御なし) を選択します

    XLaunch ウィザードの手順 3 のスクリーンショット。

  7. [Allow Access](アクセスの許可) を選択して Windows ファイアウォール経由で X Server を許可します

    XLaunch ウィザードの手順 4 のスクリーンショット。

ggXServer VM を再起動する場合は、上記の手順 2 から 6 に従って X Server アプリケーションを再起動します。

Oracle データベース仮想マシンを作成する

このラボでは、Oracle Database 19c イメージから仮想マシン ggVM1ggVM2 を作成します。 これらがキーの既定の場所にまだ存在しない場合、このコマンドによって 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 に接続します。

  1. Azure portal から ggVM1 に移動します。
  2. 左側のウィンドウで [概要] に移動します。
  3. 上部のメニューで [接続]>[Bastion] を選択します
  4. [Bastion] タブを選択します
  5. [Bastion を使用する] をクリックします

ggVM1 (プライマリ) でデータベースを作成する

Marketplace イメージには Oracle ソフトウェアが既にインストールされているので、次の手順ではデータベースを作成します。

  1. ソフトウェアを oracle ユーザーとして実行します。
$ sudo su - oracle
  1. 次のコマンドを使用して、データベースを作成します。 このコマンドが完了するまでに 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.
  1. 変数 ORACLE_SID および LD_LIBRARY_PATH を設定します。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. 次を実行して 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
  1. Oracle リスナーの起動
$ lsnrctl start

ggVM2 に接続する (レプリケート)

Bastion を使用して ggVM2 に接続します。

  1. Azure portal から ggVM2 に移動します。
  2. 左側のウィンドウで [概要] に移動します。
  3. 上部のメニューで [接続]>[Bastion] を選択します
  4. [Bastion] タブを選択します
  5. [Bastion を使用する] をクリックします

ggVM1 のファイアウォール ポートを開く

ggVM1 からの接続を許可するようにファイアウォールを構成します。 次のコマンドは ggVM2 で実行されます。

$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit

ggVM2 (レプリケート) でのデータベースの作成

  1. 必要に応じて oracle ユーザーに切り替えます
$ sudo su - oracle
  1. データベースの作成
$ 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
  1. 変数 ORACLE_SID および ORACLE_HOME を設定します。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. 次を実行して 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
  1. Oracle リスナーの起動
$ lsnrctl start

ggVM1 で Golden Gate を構成する

このセクションの手順に従って、Golden Gate をインストールして構成します。

ggVM1 (プライマリ) でのアーカイブ ログ モードの有効化

  1. sqlplus に接続します。
$ sqlplus / as sysdba
  1. アーカイブ ログの有効化
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. 強制ログを有効にし、少なくとも 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 ソフトウェアのダウンロード

  1. Oracle Golden Gate ダウンロード ページから 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip のファイルをダウンロードします。 ダウンロード タイトル Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64 の下にあります。

  2. この .zip ファイルをクライアント コンピューターにダウンロードしたら、Secure Copy Protocol (SCP) を使用してそのファイルを仮想マシン (ggVM1 および ggVM2) にコピーすることができます。 scp コマンドが .zip ファイルの正しいパスを指していることを確認します。

  3. ggVM1 にコピーする

    1. ログインし、必要に応じて「Azure にサインインする」の説明に従って、正しいサブスクリプションを使用していることを確認します

    2. 次の 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
      
    3. 最初のコマンド プロンプトを実行したままにし、2 つ目のコマンド プロンプトを開いて、トンネル経由でターゲット VM に接続します。 この 2 番目のコマンド プロンプトウィンドウでは、次のコマンドを使用して、ローカル コンピューターからターゲット VM にファイルをアップロードできます。 仮想マシンにアクセスするための正しい id_rsa キーファイルが .ssh ディレクトリに存在する必要があります。または、scp コマンドに対する -i パラメーターを使用して別のキー ファイルを指すこともできます。

       scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      
  4. ggVM2 にコピーする

    1. 次の 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. 最初のコマンド プロンプトを実行したままにし、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 ソフトウェアのインストール

  1. Bastion を使用して ggVM1 に接続します。

    1. Azure portal から ggVM1 に移動します。
    2. 左側のパネルで [概要] に移動します
    3. 上部のメニューで [接続]>[Bastion] を選択します
    4. [Bastion] タブを選択します
    5. [Bastion を使用する] をクリックします
  2. .zip ファイルを /opt フォルダーに移動し、所有者を変更します

    $ sudo su -
    $ mv /home/azureuser/*.zip /opt
    
  3. ファイルを解凍します (ファイル解凍ユーティリティがまだインストールされていない場合はインストールします)。

    $ yum install unzip
    $ cd /opt
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. アクセス許可を変更します

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. Golden Gate インストーラーを起動します

    $ sudo su - oracle
    $ export DISPLAY=10.0.0.4:0.0
    $ cd /opt/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1
    $ ./runInstaller
    

    インストーラーが ggXServer で開きます。

  6. [Oracle GoldenGate for Oracle Database 21c] を選択します。 [Next](次へ) をクリックして続行します。

    Golden Gate のインストール ウィザードの手順 1 を示すスクリーンショット。

  7. ソフトウェアの場所を /u01/app/oracle/product/19.0.0/oggcore_1 に設定し、[Start Manager](Manager の起動) ボックスが選択されていることを確認してから、[Next](次へ) を選択して続行します。

    Golden Gate のインストール ウィザードの手順 2 を示すスクリーンショット。

  8. [Summary](概要) 画面で、 [Install](インストール) を選択して続行します。

    Golden Gate のインストール ウィザードの手順 3 を示すスクリーンショット。

  9. インストールが完了するのを待ちます。

    Golden Gate のインストール ウィザードの手順 4 を示すスクリーンショット。

  10. [Close](閉じる) を選択して続行します。

Golden Gate のインストール ウィザードの手順 5 を示すスクリーンショット。

  1. Bastion を使用して ggVM2 に接続します。

    1. Azure portal から ggVM2 に移動します。
    2. 左側のウィンドウで [概要] に移動します
    3. 上部のメニューで [接続]>[Bastion] を選択します
    4. [Bastion] タブを選択します
    5. [Bastion を使用する] をクリックします
  2. ggVM2 で上記の手順 2 から 10 を繰り返します

ggVM1 (プライマリ) でのサービスのセットアップ

  1. 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)
       )
     )
    
  2. 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;
    
  3. 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;
    
  4. 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
    
  5. 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;
    
  6. 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
    
  7. 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 (レプリケート) でのサービスのセットアップ

  1. 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)
       )
     )
    
  2. レプリケート アカウントを作成します。

    $ 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;
    
  3. 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;
    
  4. 変更をレプリケートする 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.*;
    
  5. レプリケート チェックポイントを設定します。

    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;
    

データ レプリケーションの観察

  1. ggVM1 のプライマリ データベースに接続する

    $ sqlplus test/test@pdb1
    
  2. テーブルから既存のレコードを選択します

    SQL> select * from TCUSTORD;
    
  3. テスト レコードを作成する

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. 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.
  1. ggVM2 のプライマリ データベースに接続する

    $ sqlplus test/test@pdb1
    
  2. 新しいレコードがレプリケートされていることを確認します

    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

次のステップ

可用性が高い仮想マシンの作成のチュートリアル

VM デプロイ CLI サンプルを探索する