Oracle RAC One Node環境を構成してみました 補足 Syniti Replicateを使用して異種DBへ連携


前回までの記事の作業により、Oracle RAC One node環境の構成が完了しました。今回は補足パートとして、弊社取り扱い製品であるSyniti Replicateを使用して、構成したOracle RAC One nodeから異種データベースであるSQL Serverへのデータ連携を実施してみたいと思います。

ーーーーーーーーーーーーーーーーーーーーーーーーーー
▽Oracle RAC One node構成関連ブログ
 ステップ1:Oracle Linux環境の導入
 ステップ2:Oracle Grid Infrastructureインストールの準備
 ステップ3:別Oracleノードの構成と共有ディスクの設定

 ステップ4:Oracle Grid Infrastructureの導入
 ステップ5:Oracle RAC One nodeデータベースの作成
 補足:Syniti Replicateを使用して異種DBへ連携 ← 今回の記事
ーーーーーーーーーーーーーーーーーーーーーーーーーー

Oracle RAC One node環境にSynitiレプリケーション実施のためのユーザとテストテーブルを作成

まずは、前回作成したOracle RAC One nodeデータベースに接続するため、Oracleが稼働しているノードoracleユーザでSSHログイン、sqlplusコマンドより接続します。その後show pdbsコマンドより作成されているプラガブルデータベースを確認します。

sqlplus / as sysdba
show pdbs

 

今回はデフォルトで作成されている「PDB」という名前のプラガブルデータベースを使用するため、下記AlterコマンドよりPDBを起動します。これによりOPEN MODEREAD WRITEに変更されていることが確認できます。

alter pluggable database PDB open;

 

起動したPDBに接続するため、下記alter sessionコマンドを実行します。show con_nameコマンドよりPDBに接続されていることを確認します。

alter session set container = PDB;
show con_name

 

 

PDB接続後は、Synitiデータ連携で使用するOracleユーザを作成します。今回はユーザ名/パスワード共に「syniti」というユーザをcreate userコマンドより作成し、Synitiレプリケーション実施のために必要な権限を付与するために、下記grantコマンドを実行しました。

create user syniti identified by syniti;
grant create session to syniti;
grant select any table to syniti;
grant insert any table, update any table, delete any table to syniti;
grant unlimited tablespace to syniti;
grant create any table to syniti;
grant create any index to syniti;
grant alter any table to syniti;
grant drop any table to syniti;
grant create any trigger to syniti;
grant drop any trigger to syniti;
grant create any sequence to syniti;
grant drop any sequence to syniti;
grant select any sequence to syniti;

 


Synitiデータ連携をテストするためのテーブルも作成します。今回は下記create tableコマンドよりsynitiスキーマ内に「TESTTABLE」という名前のテーブルを作成し、insertクエリより「1, aaa」と「2, bbb」というデータを入力しました。

create table syniti.TESTTABLE
(
   C1 varchar(20) NOT NULL ,
   C2 varchar(20) NULL ,
   primary key(C1)
)
;

insert into syniti.TESTTABLE values ('1', 'aaa');
insert into syniti.TESTTABLE values ('2', 'bbb');

 

最後に下記show parameter service_nameコマンドを実行し、Synitiからの接続設定時に必要となるOracleサービス名を確認しておきます。今回のケースでは「orcl.oracle.com」がサービス名だったので、SIDであるorcl部分をpdb名に変更した「pdb.oracle.com」がSyniti接続先のサービス名となります。

show parameter service_name

 

これでOracle側の準備は完了しました。ここからはSynitiをインストールしたWindowsマシン上で開いた、Syniti管理画面からレプリケーション設定を行っていきます。

SynitiによるOracle RAC One nodeからSQL Serverへのデータレプリケーション

SynitiがOracle RAC One nodeデータベースに接続するためには、Oracle Client導入時に展開されるtnsnames.oraファイルに、下記のような接続情報を追記する必要があります。

接続文字列(任意) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ノード1のIPアドレス)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ノード2のIPアドレス)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Oracleサービス名)
)
)

このようにノード1とノード2の双方のIPアドレスを記載することで、障害やライブフェイルオーバなどで稼働しているOracleノードが切り替わったとしても、継続してレプリケーションを実行することができるようになります。

今回は接続文字列を「ORAPDB」に、HOSTはOracle RAC One node構築時に各ノードに指定したIPアドレス、Oracleサービス名は先ほど確認した「pdb.oracle.com」となるので、下記画像のように設定しました。

 

設定後、Syniti管理画面からOracle RAC One node環境への接続設定を行います。今回はData Souce項目にtnsnames.oraファイルに記載した接続文字列である「ORAPDB」を、User IDとPassword項目にOracle RAC One node環境で作成した「syniti」ユーザの認証情報を入力し「テスト」ボタンを押下します。「テスト成功!」と出力したので、これによりSynitiサーバからOracle RAC One node環境への接続が実施できていることが確認できました。

 

次のステップでは、Synitiスキーマ内に作成したテストテーブルである「TESTTABLE」が表示されるので、こちらをレプリケーション対象テーブルとして設定していきます。

Syniti画面からも作成した「TESTTABLE」のレコードが確認できます。

 

また、Oracle RAC One node環境からの差分連携実施のためには、差分連携方式として「Trigger」(トリガー)を指定する必要があるので、トリガーの設定とsynitiスキーマ内にトリガーテーブルを作成するように設計しました。

後は通常の差分レプリケーション設定と同様に実施できます。SQL Serverとのレプリケーション設定を行い実行することで、「TESTTABLE」内のサンプルレコードをSQL Server側のテーブルへ連携することができることや、

  

1つのレコードを更新し、差分レプリケーションが実行できることも確認できました。

 

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください