2014年3月22日土曜日

OracleGoldenGate12c ---OracleDatabase12cマルチテナント編--- part1「概要」

ブログを移転しました。
https://awsbloglink.wordpress.com

************************
***はじめに
************************

私はOracleGoldenGate(OGG)を実務および自宅で検証しています。
OGG12cを使用して、マルチテナントのデータ同期を行える環境を自宅に構築しました。

OGG12cを使用したマルチテナントのデータ同期構築に関する情報が非常に少ないことに気が付きました。
日本語サイトは皆無、英語サイトは微少ですが存在します。
ただし部分的に記載されているのみなので、マニュアルとにらめっこが必要となります。

実務ではマルチテナントのデータ同期は経験がないため、自宅で構築しました。
「そんなに変わらないだろう」と甘く見ていましたが、

OGG12cでマルチテナントを構築する際に、OGGおよびOracleDatabase技術者の作業の参考になればと思い、自宅の検証環境をベースに手順と解説を記載します。

※手順と解説の詳細については、本ブログの別記事として後日掲載いたします。
自宅環境にて、1から手順掲載用の環境を構築して、その際に使用したコマンド、パラメータ、エビデンスを掲載していくため、お時間をいただきたいと思います。




************************
***OGG12cマルチテナント構築のポイント
************************

OGGをご存じない方はピンとこないかもしれませんが、非常に重要ですので頭の片隅に入れておいてください。OGGのマニュアルに記載されている内容がほとんどですが、あちらこちらに飛び散っているため、必要な部分をまとめました。


[1]Extractのモード

OGG12cでは以下の2つから選択できますが、
マルチテナントを使用する場合は「統合キャプチャ」を使用することが必須となります。
●クラシック・キャプチャ
●統合キャプチャ

ちなみにクラシック・キャプチャの定義でExtractを起動すると以下のメッセージが表示され、ExtractのStatusがABENDEDになります。
OGG-06205: Invalid configuration for capturing changes from a container database.


[2]Replicatのモード

OGG12cでは以下の2つから選択できますが、
マルチテナントを使用する場合は「統合モード」を使用することが必須となります。
●非統合モード
●統合モード

OGGのマルチテナントの章では、Extractについては触れられていますが、なぜかReplicatについては触れられていません。
ただし、Replicatの非統合モードの条件には以下のように記載されているため、必然的に統合モードを使用することとなります。
「ターゲットOracleデータベースのバージョンがOracle 11.2.0.4より前の場合」


[3]データベース環境関連

データ同期の対象となるデータベースは、以下の属性を同一にする必要があります。
●文字セット
●ロケール
●大文字/小文字の区別

マニュアルには「...など」と記載されているため、業務で構築する場合には、サポートに問い合わせて、動作環境に問題ないか確認を行うことをオススメします。


[4]管理ユーザ

データベースに管理ユーザを作成する必要があります。
マルチテナントの場合、Extractがログマイニング・サーバと対話するため、ルート・コンテナ(cdb$root)に接続する必要となるからです。
そのため、管理ユーザはルート・コンテナにアクセスするため共通ユーザを作成してください。

OGG経験者の方に向けて、イメージが湧きやすいように例を記載します。
管理ユーザを「OGGADM」と仮定すると、それぞれのユーザ名は以下のようになります。
●マルチテナント以外の場合:OGGADM
●マルチテナントの場合:C##OGGADM


[5]tnsnames.ora

CDBおよびPDB接続用のためにtnsnames.oraを定義してください。


[6]GoldenGate権限付与

管理ユーザは、データベースの全てのコンテナにアクセスできる必要があります。
ルート・コンテナで以下のパッケージを実行する必要があります。

DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('C##OGGADM',container=>'all')




************************
***手順と解説の詳細について
************************

概要を記載するだけでも相当な時間がかかりました。
詳細は、とりあえずコマンドを並べて構築できる手順の提示を最優先にすることも考えております。
構築した後にログ確認を行うことで理解できることも多々ありますので。




************************
***OGG12cマルチテナントを構築してみた感想
************************


ちなみにOGG12cマルチテナントを初めて構築した時にデータ同期を一通り確認するまでにかかった時間は22:00~翌14:00の16時間です。OGGを使用して、色々なパターンの異DB異OSのデータ同期環境を構築していますが、ここまで時間がかかったのは初めてです。
(連休だったことと、OGGを敬愛する技術者としての意地で、不眠不休で構築しました)

ボトルネックになった要因を分析しました。
●共通ユーザについての理解不足
●手順を実施する際に、CDB/PDBの接続先の間違い

個人的にDB12cの新機能で一番興味があるのはDataGuardの遠隔同期なので、マルチテナントを甘く考えていました・・・。OGG12cよりDB12cの方が理解不足でした。
時間はかかりましたが、おかげでマルチテナントについて強制的に勉強できたので前向きに考えています。

個人的にOGGを試す際に行っているやり方を記載します。
ベースとなるDB構築は別にして、OGGを構築して「データ同期」を確認するまでは一気にやりきることをオススメします。
OGGは設定する箇所が少ないため、一気にやることが可能で、体に定着するのでオススメです。
興味のある方は参考にしてください。




************************
***補足:マニュアルURL(ポイント)
************************


OGG12cマルチテナント構築に際して、色々なマニュアルを参照する必要があります。
油断するとすぐにマニュアルの無限ループに突入するので、URLだけでなく簡単な説明を記載しておきます。


[1]OGG12cにおけるマルチテナントの扱い方

とりあえずこの章を読みましょう。
「OGG12cマルチテナント構築のポイント」の元となった章です。
縦ディスプレイで見ているのですが、スクロールすることなく閲覧できるほどの少ない情報量なので目を通してみてください。
http://docs.oracle.com/cd/E51849_01/gg-winux/GIORA/config_containerdb.htm#BDCFDFDE


[2]Extract/Replicatの概要

OGGの主要プロセスであるExtractとReplicatの説明が記載されています。
http://docs.oracle.com/cd/E51849_01/gg-winux/GIORA/process_mode.htm#CBDFHBIB


[3]マルチテナント

マルチテナントの概要が記載されています。
共通ユーザについても記載されていますので、マルチテナント絡みで困った場合に一読をオススメします。
http://docs.oracle.com/cd/E49329_01/server.121/b71301/cdb_intro.htm#BHCIJAJE
http://docs.oracle.com/cd/E49329_01/network.121/b71285/users.htm#CIHGGGJC




************************
***補足:マニュアルURL(母体)
************************


DBとOGGのマニュアルのルートURLです。
出来ればマニュアルをダウンロードしてローカルで、いかなる状況でも参照できるようにしておくことをオススメしておきます。


[1]Oracle GoldenGate 12c (12.1.2) ドキュメント・ライブラリ

http://docs.oracle.com/cd/E51849_01/gg-winux/index.html


[2]Oracle Database 12cリリース1 (12.1) ドキュメント

http://docs.oracle.com/cd/E49329_01/nav/portal_3.htm




************************
***補足:用語解説
************************

[1]マルチテナント

マルチテナントとは、OracleDatabase12cの新機能「マルチテナント・コンテナ・データベース」のことです。

・11gまでのデータベースは1つのインスタンスに1つのデータベースが紐付いていました。
・12cのマルチテナントでは1つのインスタンスに複数のデータベースが紐付く形となります。

ちなみに12cでマルチテナントを使用しない場合は、11gまでと同じ方式のデータベース構築が可能です。


マルチテナントについては、検索サイトで検索すると、公式サイトのマニュアルや企業/個人の検証結果など大量に出てきますので、そちらを参考にしてください。

マルチテナントを使用するには、OracleDatabase12cのEnterpriseEditionを購入して、更にオプション「Oracle Multitenant」を追加購入する必要があります。


[2]OracleGoldenGate

OracleGoldenGateとは異機種間データ同期を行えるソフトウェアです。

GoldenGateという製品は、元々GoldenGate社が所有していた製品です。
Oracle社がGoldenGate社を買収して、OracleGoldenGateとして「Oracle Fusion Middleware」に組み込みました。

2014/1/30に最新バージョンであるOracleGoldenGate12cの発売が開始されました。
技術情報が非常に少ないため、実務で導入する場合は、各種研修の受講をオススメします。

0 件のコメント:

コメントを投稿