目次
はじめに
みなさん、こんにちは。プラチナホルダーの小酒井です。
約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回で掲載予定です。
- Autonomous Databaseのプロビジョニング
- Goldengate 19c Marketplace Microservices Editionのプロビジョニング
- ソース側データベースの設定(次回)
- ターゲット側データベースの設定(次回)
- 同期確認(次々回)
- 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に関する各種サービスページは下記よりご覧いただけます。