2014年3月6日木曜日

OracleGoldenGate12cでOracleDatabase12c新機能(Invisible Column)は動作するのか

OracleDatabase12cの新機能であるInvisible Columnsの動作を説明します!
と言いたいところですが、私が尊敬するOracle ACEのWさんが機能の説明をブログに記載していました。

今更、私のような低レベルの人間が同じことを紹介しても。。。(泣)
私の愛してやまないOracleGoldenGateを絡めて動作を確認してみました。
10分程度で動作を確認しただけなので、細かいオペレーションを行っていませんがその結果を記載します。

結論から言うと何の問題もなく成功しました。

Invisible Columnsを12c⇒11gという意地悪な連携をするとどうなるか気になります。
(OracleGoldenGateが制御するか・・・ABENDするか・・・要望が多ければ試してみます)

**************************************************************
***OracleGoldenGate超簡単な解説
**************************************************************
<超簡単な用語解説>
1.Manager:OracleGoldenGateを管理するプロセス
2.Extract:データ抽出を行うプロセス
3.Replicat:データ反映を行うプロセス
4.TRAILファイル:OracleDatabaseでいうところのREDOに相当。
          データベースの変更情報を

<超簡単な処理順序>
[1]データ転送元:テーブルのデータを1行追加
[2]データ転送元:Extractが変更を認識してログからTRAILファイルを抽出
[3]データ転送元:データ転送先へTRAILファイルを送信
[4]データ転送先:ReplicatがTRAILファイルを受信
[5]データ転送先:テーブルのデータを1行追加

<超簡単なManagerの役割>
ExtractやReplicatが頑張っているのにManagerは給料泥棒!
と叫ぶ方もいるかもしれません。。。
でも、そんなことはないんですよ。
一生懸命、ExtractやReplicatを監視してくれている大事な方です。
ちなみにManagerが起動していないとExtractやReplicatは起動できません!

**************************************************************
***環境概要
**************************************************************
<データ転送元(from)>
サーバ:test05
DB:OracleDatabase12c
GoldenGate:OracleGoldenGate12c
ユーザ:ogguser
テーブル:ic
Invisible Columns対象列:INVCOL

<データ転送先(to)>
サーバ:test06
DB:OracleDatabase12c
GoldenGate:OracleGoldenGate12c
ユーザ:ogguser
テーブル:ic
Invisible Columns対象列:INVCOL

**************************************************************
***環境詳細
**************************************************************
<データ転送元(from)>
[oracle@test05 ogg3]$ /u01/app/oracle/product/12.1.0/db_1/OPatch/opatch lsinventory
...
Oracle Database 12c                                                  12.1.0.1.0
...
Patch description:  "Database Patch Set Update : 12.1.0.1.2 (17552800)"
...
OPatch succeeded.


[oracle@test05 ogg3]$ /u01/app/oracle/ogg3/OPatch/opatch lsinventory
...
Oracle GoldenGate Core                                               12.1.2.0.0このOracleホームには1の製品がインストールされています。
...
このOracleホームには仮パッチがインストールされていません。
...
OPatch succeeded.

<データ転送先(to)>
[oracle@test06 ogg3]$ /u01/app/oracle/product/12.1.0/db_1/OPatch/opatch lsinventory
...
Oracle Database 12c                                                  12.1.0.1.0
...
Patch description:  "Database Patch Set Update : 12.1.0.1.2 (17552800)"
...
OPatch succeeded.


[oracle@test06 ogg3]$ /u01/app/oracle/ogg3/OPatch/opatch lsinventory
...
Oracle GoldenGate Core                                               12.1.2.0.0このOracleホームには1の製品がインストールされています。
...
このOracleホームには仮パッチがインストールされていません。
...
OPatch succeeded.

**************************************************************
***動作検証
**************************************************************


<データ転送元(GoldenGateプロセス確認)>
[oracle@test05 ogg3]$ ggsci

GGSCI (test05) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
EXTRACT     RUNNING     ESALESAA    00:00:00      00:00:03    
EXTRACT     RUNNING     PSALESAB    00:00:00      00:00:02    



<データ転送先(GoldenGateプロセス確認)>
[oracle@test06 ogg3]$ ggsci

GGSCI (test06) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
REPLICAT    RUNNING     RSALESAB    00:00:00      00:00:05    



<データ転送元(テーブル作成&データ登録)>
[oracle@test05 ogg3]$ sqlplus ogguser/oracle
SQL> create table ic(no number primary key,name varchar2(10),invcol number invisible,biko varchar2(10));

表が作成されました。

SQL> insert into ic(no,name,biko) values(1,'name1','biko1');

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> select * from ic;

NO NAME  BIKO
---------- ------------------------------ ------------------------------
1 name1  biko1

SQL> 
SQL> 
SQL> desc ic
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 NO   NOT NULL NUMBER
 NAME    VARCHAR2(10)
 BIKO    VARCHAR2(10)

SQL> set colinvisible on
SQL> desc ic
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 NO   NOT NULL NUMBER
 NAME    VARCHAR2(10)
 BIKO    VARCHAR2(10)
 INVCOL (INVISIBLE)    NUMBER


<データ転送先(テーブル確認&データ確認)>
[oracle@test06 ogg3]$ sqlplus ogguser/oracle
SQL> select * from ic;

NO NAME  BIKO
---------- ------------------------------ ------------------------------
1 name1  biko1

SQL> desc ic
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 NO   NOT NULL NUMBER
 NAME    VARCHAR2(10)
 BIKO    VARCHAR2(10)

SQL> set colinvisible on
SQL> desc ic
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 NO   NOT NULL NUMBER
 NAME    VARCHAR2(10)
 BIKO    VARCHAR2(10)
 INVCOL (INVISIBLE)    NUMBER


<データ転送元(GoldenGateログ確認) trailのパージログを記載してしまいました・・・>
[oracle@test05 ogg3]$ cat /u01/app/oracle/ogg*/ggserr.log
2014-03-06 22:33:55  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file /u01/app/oracle/ogg3/dirdat/aa000001, applying UseCheckPoints purge rule: Oldest Chkpt Seqno 2 > 1.


<データ転送先(GoldenGateログ確認) trailのパージログを記載してしまいました・・・
[oracle@test06 ogg3]$ cat /u01/app/oracle/ogg*/ggserr.log
2014-03-06 22:34:07  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file /u01/app/oracle/ogg3/dirdat/ab000002, applying UseCheckPoints purge rule: Oldest Chkpt Seqno 4 > 2.
2014-03-06 22:34:07  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file /u01/app/oracle/ogg3/dirdat/ab000003, applying UseCheckPoints purge rule: Oldest Chkpt Seqno 4 > 3.

0 件のコメント:

コメントを投稿