LoginSignup
2
5

More than 5 years have passed since last update.

ローカルPCにOracleレプリケーション環境構築

Last updated at Posted at 2016-06-09

Oracleレプリケーション環境で遊びたい

やむにまれない事情でOracleレプリケーションで遊ぶ必要があったので、ローカルPCの仮想環境にDBサーバを2台立てて、レプリケーション環境を構築します。レプリケーションのタイプは単純な読取り専用マテリアライズド・ビューで、構成イメージ以下の通りです。
Oracleレプリケーション環境.png

Oracleをインストールする

ゲストマシンを作成する

VMPlayerよりゲストマシンを1台作成し、CentOS6.8をインストールします。
このとき、スペックがOracle Enterprise Editionのインストール要件を満たしていることに注意します。(今回、メモリ1GB、ディスク20GBで構築しましたが、ストレスなく動いています)
OSがインストールできたら、OTNからOracle11gR2のアーカイブファイルをダウンロードして、適当なディレクトリに配置します。

インストール用のユーザとグループを作成する

Oracleをインストールするために必要なユーザ、グループを作成します。

rootユーザで実行
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

インストーラを実行する

ダウンロードしたアーカイブファイルをoracleユーザで解凍し、インストーラを実行します。
なお、インストールは対話形式で行いますので、CUIではなくGUI環境で作業してください。

oracleユーザで実行
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
./database/runInstaller

以下、インストールの設定例です。
ただ遊ぶための環境なので、ほぼデフォルトのままです。
なお、LANGが日本語だとOUIが文字化けてしまったので、一時的に英語に切り替えています。

  1. 1/9 セキュリティ・アップデートの構成
    セキュリティアップデートの情報なんかいらないので未入力。未チェック。
    WS000013.JPG

  2. 2/9 インストール・オプションの選択
    当然、DBも一緒に作成します。
    WS000014.JPG

  3. 3/8 システム・クラス
    デスクトップクラスを選択
    WS000015.JPG

  4. 4/8 標準インストール構成
    文字コードとDB名を変更。それ以外はデフォルト。
    WS000017.JPG

  5. 5/9 インベントリの作成
    デフォルトのまま。
    WS000018.JPG

6/9 前提条件チェックの実行
WS000019.JPG
私の環境の場合、結構、怒られましたが、とりあえず必要そうな以下のパッケージだけインストールしました。

rootユーザで実行
yum install -y gcc-c++
yum install -y glibc
yum install -y compat-libstdc++-33
yum install -y elfutils-libelf-devel

その後、再度チェックを行い、「Ignore ALL」を選択して、次へ進みます。
WS000020.JPG

インストール処理後、DBCAが起動して、1時間後くらいに無事にインストール、DB作成完了。なお、アカウントロックの解除は特にしていません。
WS000022.JPG

最後に、rootユーザでスクリプトを実行しろと言われるので、実行します。
WS000023.JPG

rootユーザで実行
sh /home/oracle/app/oraInventory/orainstRoot.sh 
sh /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh 

ゲストマシンを複製する

Oracleのインストールが完了したら、ゲストマシンのファイルを丸ごとコピーして、別の仮想マシンとして作成します。

Oracleレプリケーション環境を構築する

Oracleをインストールした仮想マシンが2台できたので、レプリケーション環境を構築します。
このとき、必要に応じて構築用のスキーマを作成してください。また、リスナーのポートも開放しておきます。

tnsnames.oraファイルを設定する

マテリアライズドビューサイトからマスターサイトに接続できるように、レプリケーションサイトのtnsnames.oraに任意の接続識別子を追記します。以下、記述例です。

tnsnames.ora
db1=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = [マスターサイトのIPアドレス])(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = orcl)
    )
  )

DBLinkを作成する

サイト間でレプリケーションができるように、マテリアライズド・ビューサイトでDBLinkを作成します。
USING句の後には、上記で作成した接続識別子を指定します。

CREATE DATABASE LINK db1_mv CONNECT TO user IDENTIFIED BY password USING 'db1';

DBLinkが作成できたら、マスターサイトでテーブルを作成し、マテリアライズド・ビューサイトからそのテーブルが参照できることを確認します。

select * from table1@db1_mv ;

マテリアライズド・ビューログを作成する

今回、高速リフレッシュを行いたかったので、マスターサイトでレプリケーション対象のテーブルに対してマテリアライズドビュー・ログを作成します。

create materialized view log on table1;

マテリアライズド・ビューを作成する

マテリアライズド・ビューサイトで作成します。今回、リフレッシュのタイミングは手動にしています。

create materialized view mv1
  refresh fast on demand
  as 
    SELECT * FROM table1@db1_mv;

完了

マテリアライズド・ビューが作成できたら、マスターサイトのテーブルにレコードを追加して、すぐにはレプリケーションされないことを確認します。その後、マテリアライズド・ビューサイトで完全リフレッシュを行い、データが反映されていることを確認します。

exec dbms_mview.refresh('mv1','c');

以上で、必要最低限のOracleレプリケーション環境が構築できました。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5