はじめに

みなさん、こんにちは。プラチナホルダーの小酒井です。

約2年ぶりの連載となります。今回はOracle Autonomous Database間のOracle GoldenGateによるデータ同期を検証してみましたので、紹介したいと思います。

小酒井の過去記事はこちら!

 

 

 

 

 

Oracle GoldenGateは、異機種データベース間で、データをほぼリアルタイムでデータ連携/レプリケーションするための製品です。

2020/11以前は、ターゲット側としてOracle Autonomous Databaseへの適用をサポートしておりましたが、2020/12以降、ソース側としてもOracle Autonomous Databaseがサポートされ、Oracle Autonomous Database間でのOracle GoldenGateによるデータ同期が可能となりました。

今回は、以下の構成で検証しています。
ソース側データベースとGoldenGateインスタンスを東京リージョンに、
ターゲット側データベースを大阪リージョンに作成しています。

検証した内容を、以下の順に記載しています。
全3回で掲載予定です。

  1. Autonomous Databaseのプロビジョニング
  2. Goldengate 19c Marketplace Microservices Editionのプロビジョニング
  3. ソース側データベースの設定(次回)
  4. ターゲット側データベースの設定(次回)
  5. 同期確認(次々回)
  6. DDL文の同期確認(次々回)

では早速確認していきましょう。

画面キャプチャを掲載しながら順を追って説明します!
宜しくお願いします。

 

1.   Autonomous Databaseのプロビジョニング

まずは、東京リージョンと大阪リージョンに、ソース側とターゲット側の各データベースとなるAutonomous Data Warehouseデータベースをそれぞれ作成します。

データベース名は、以下のように設定しています。

  • AP-TOKYO-1(東京):Source
  • AP-OSAKA-1(大阪):Target

作成方法は、以下の過去記事をご参照ください。

Oracle Autonomous Data Warehouse Cloud を使ってみました!(1/3)

2.   Goldengate 19c Marketplace Microservices Editionのプロビジョニング

次に、GoldenGateコンピュートインスタンスを、マーケットプレイスのGoldenGateイメージを使用して作成します。

メインメニューから、「マーケットプレイス」「すべてのアプリケーション」をクリックします。

「Oracle GoldenGate for Oracle」を選択します。

「スタックの起動」を押下します。

スタックの作成画面のスタック情報で、インスタンス名の入力、コンパートメントについて確認し、次ボタンを押下します。

スタックの作成画面の変数の構成で、表示名や、ネットワークの設定をします。

今回ソースとターゲットのデータベースは、Oracle19cを使用することにします。

SSH公開鍵の情報を入力し、次ボタンを押下します。

スタックの作成画面の確認で、設定内容に問題がないことを確認し、作成ボタンを押下します。

正常に、GoldenGateコンピュートインスタンスが作成されました。

GoldenGateインスタンスにログインし資格情報を取得

GoldenGate インスタンスにログインし、資格情報を取得します。

-bash-4.2$ ls -l
total 0
lrwxrwxrwx. 1 opc opc 37 Apr 12 01:12 ogg-credentials.json -> /u02/deployments/ogg-credentials.json
-bash-4.2$ cat ogg-credentials.json
{"username": "oggadmin", "credential": "****************"}
-bash-4.2$

 

上記で取得した資格情報を使用して、https://<パブリックIPアドレス>にログインし、GoldenGate ServiceManagerにアクセスします。

デプロイメントディレクトリを確認するため、「ServiceManager」をクリックし、GoldenGate Config Home」を確認します。

ServiceManager画面にて、GoldenGate Config Home」を確認します。

デプロイメント構成ファイルを表示し、ソースおよびターゲットのディレクトリ構造を確認します。

-bash-4.2$ cat /u02/deployments/ServiceManager/etc/conf/deploymentRegistry.dat
{
    "ServiceManager": {
        "oggHome": "/u01/app/ogg/oracle19",
        "id": "260fb119-453d-4da5-97b0-7f4769bee991",
        "oggEtcHome": "/u02/deployments/ServiceManager/etc",
        "oggVarHome": "/u02/deployments/ServiceManager/var"
    },
    "Source": {
        "$schema": "ogg:deployment",
        "enabled": true,
        "status": "stopped",
        "oggHome": "/u01/app/ogg/oracle19",
        "oggConfHome": "/u02/deployments/Source/etc/conf",
        "oggDataHome": "/u02/trails",
        "oggEtcHome": "/u02/deployments/Source/etc",
        "oggSslHome": "/u02/deployments/Source/etc/ssl",
        "oggVarHome": "/u02/deployments/Source/var",
        "passwordRegex": "(?=^.{8,30}$)(?=(.*[0-9]))(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*[-!@%&*.#_]))(?!(.*[$^?]))^.*",
        "id": "3875df5b-be9d-40aa-9b97-0df170667fb0",
        "environment": [
            {
                "name": "LD_LIBRARY_PATH",
                "value": "${ORACLE_HOME}/lib:/u01/app/client/oracle19/lib"
            },
            {
                "name": "JAVA_HOME",
                "value": "/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre"
            },
            {
                "name": "ORACLE_HOME",
                "value": "/u01/app/client/oracle19"
            },
            {
                "name": "TNS_ADMIN",
                "value": "/u02/deployments/Source/etc"
            }
        ]
    },
    "Target": {
        "$schema": "ogg:deployment",
        "enabled": true,
        "status": "stopped",
        "oggHome": "/u01/app/ogg/oracle19",
        "oggConfHome": "/u02/deployments/Target/etc/conf",
        "oggDataHome": "/u02/trails",
        "oggEtcHome": "/u02/deployments/Target/etc",
        "oggSslHome": "/u02/deployments/Target/etc/ssl",
        "oggVarHome": "/u02/deployments/Target/var",
        "passwordRegex": "(?=^.{8,30}$)(?=(.*[0-9]))(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*[-!@%&*.#_]))(?!(.*[$^?]))^.*",
        "id": "7d2825c5-e49f-4abd-9fb1-657aaa6304db",
        "environment": [
            {
                "name": "LD_LIBRARY_PATH",
                "value": "${ORACLE_HOME}/lib:/u01/app/client/oracle19/lib"
            },
            {
                "name": "JAVA_HOME",
                "value": "/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre"
            },
            {
                "name": "ORACLE_HOME",
                "value": "/u01/app/client/oracle19"
            },
            {
                "name": "TNS_ADMIN",
                "value": "/u02/deployments/Target/etc"
            }
        ]
    }
}-bash-4.2$

 

Autonomous Databaseのクライアント資格証明(ウォレット)をダウンロードし、GoldenGateインスタンスに配置

ソースとターゲットの両方のAutonomous Databaseから、クライアント資格証明(ウォレット)をダウンロードし、上記で確認したTNS_ADMINに指定されたディレクトリにコピーして解凍します。

-bash-4.2$ ls -l
total 48
lrwxrwxrwx. 1 opc opc    37 Apr 12 01:12 ogg-credentials.json -> /u02/deployments/ogg-credentials.json
-rw-r--r--. 1 opc opc 20509 Apr 12 01:24 Wallet_Source.zip
-rw-r--r--. 1 opc opc 20502 Apr 12 01:25 Wallet_Target.zip
-bash-4.2$ cp -p Wallet_Source.zip /u02/deployments/Source/etc
-bash-4.2$ cp -p Wallet_Target.zip /u02/deployments/Target/etc
-bash-4.2$
-bash-4.2$ cd /u02/deployments/Source/etc
-bash-4.2$ ls -l
total 32
drwxr-xr-x. 5 opc opc  4096 Apr 12 01:12 conf
drwxr-xr-x. 3 opc opc  4096 Apr 12 01:12 ssl
-rw-r--r--. 1 opc opc 20509 Apr 12 01:24 Wallet_Source.zip
-bash-4.2$ unzip Wallet_Source.zip
Archive:  Wallet_Source.zip
  inflating: README                 
  inflating: cwallet.sso            
  inflating: tnsnames.ora           
  inflating: truststore.jks         
  inflating: ojdbc.properties       
  inflating: sqlnet.ora             
  inflating: ewallet.p12            
  inflating: keystore.jks           
-bash-4.2$ ls -l
total 72
drwxr-xr-x. 5 opc opc  4096 Apr 12 01:12 conf
-rw-rw-r--. 1 opc opc  6725 Apr 12 01:24 cwallet.sso
-rw-rw-r--. 1 opc opc  6680 Apr 12 01:24 ewallet.p12
-rw-rw-r--. 1 opc opc  3274 Apr 12 01:24 keystore.jks
-rw-rw-r--. 1 opc opc   691 Apr 12 01:24 ojdbc.properties
-rw-rw-r--. 1 opc opc   317 Apr 12 01:24 README
-rw-rw-r--. 1 opc opc   114 Apr 12 01:24 sqlnet.ora
drwxr-xr-x. 3 opc opc  4096 Apr 12 01:12 ssl
-rw-rw-r--. 1 opc opc  1070 Apr 12 01:24 tnsnames.ora
-rw-rw-r--. 1 opc opc  3335 Apr 12 01:24 truststore.jks
-rw-r--r--. 1 opc opc 20509 Apr 12 01:24 Wallet_Source.zip
-bash-4.2$
-bash-4.2$ cd /u02/deployments/Target/etc
-bash-4.2$ ls -l
total 32
drwxr-xr-x. 5 opc opc  4096 Apr 12 01:12 conf
drwxr-xr-x. 3 opc opc  4096 Apr 12 01:12 ssl
-rw-r--r--. 1 opc opc 20502 Apr 12 01:25 Wallet_Target.zip
-bash-4.2$ unzip Wallet_Target.zip
Archive:  Wallet_Target.zip
  inflating: README                 
  inflating: cwallet.sso            
  inflating: tnsnames.ora           
  inflating: truststore.jks         
  inflating: ojdbc.properties       
  inflating: sqlnet.ora             
  inflating: ewallet.p12            
  inflating: keystore.jks           
-bash-4.2$ ls -l
total 72
drwxr-xr-x. 5 opc opc  4096 Apr 12 01:12 conf
-rw-rw-r--. 1 opc opc  6725 Apr 12 01:25 cwallet.sso
-rw-rw-r--. 1 opc opc  6680 Apr 12 01:25 ewallet.p12
-rw-rw-r--. 1 opc opc  3274 Apr 12 01:25 keystore.jks
-rw-rw-r--. 1 opc opc   691 Apr 12 01:25 ojdbc.properties
-rw-rw-r--. 1 opc opc   317 Apr 12 01:25 README
-rw-rw-r--. 1 opc opc   114 Apr 12 01:25 sqlnet.ora
drwxr-xr-x. 3 opc opc  4096 Apr 12 01:12 ssl
-rw-rw-r--. 1 opc opc  1070 Apr 12 01:25 tnsnames.ora
-rw-rw-r--. 1 opc opc  3335 Apr 12 01:25 truststore.jks
-rw-r--r--. 1 opc opc 20502 Apr 12 01:25 Wallet_Target.zip

 

sqlnet.oraファイルのWALLET_LOCATIONパラメータを変更

上記で解凍した、ソースとターゲットの両方のsqlnet.oraファイルのWALLET_LOCATIONパラメータを、それぞれのTNS_ADMINディレクトリを指すように変更します。

-bash-4.2$ vi /u02/deployments/Source/etc/sqlnet.ora
-bash-4.2$
-bash-4.2$ cat /u02/deployments/Source/etc/sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/u02/deployments/Source/etc")))
SSL_SERVER_DN_MATCH=yes
-bash-4.2$
-bash-4.2$ vi /u02/deployments/Target/etc/sqlnet.ora
-bash-4.2$
-bash-4.2$ cat /u02/deployments/Target/etc/sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/u02/deployments/Target/etc")))
SSL_SERVER_DN_MATCH=yes
-bash-4.2$

 

これでGolden Gateのプロビジョニング完了です!
今回はここまで!

最後に

今回はAutonomous DatabaseとGoldengateのプロビジョニングが完了しました。

次回はソース側、ターゲット側それぞれのデータベースの設定と同期設定を行います。
是非次回もご覧ください!

当社はOracle Cloudサービスを展開しておりますので、Oracle Cloud について何かお困りのことがありましたら、お気軽にお問い合せいただけますと幸いです。

お問い合わせはこちら📩

Oracle Cloud、Oracle Databaseに関する各種サービスページは下記よりご覧いただけます。

 

 

投稿者プロフィール

小酒井崇史
小酒井崇史
インフラソリューション事業部のマネージャーでプラチナホルダー。
主に、Oracle GoldenGate を使用した移行やシステム構築を経験。
現在はオンプレミスのシステムを Oracle Cloud へリフトするプロジェクトに参画中。
趣味はボクシングと将棋。マイブームは腹筋を鍛えること。