データベース統合の新たな手法「マルチテナント・アーキテクチャ」:ユーザー目線でチェック! Oracle Database 12cの知りたいところ(2)(3/3 ページ)
連載第2回の今回は、目玉機能「マルチテナント・アーキテクチャ」についてレビューしていきます。ライセンスの制限やアラートログの扱いや、3種類の「コンテナ」の違いなど、実際に評価する前に知っておきたい情報を紹介していきます。
ユーザー目線でチェック!マルチテナント・アーキテクチャの注意点
実際に検証を行う中で確認した、マルチテナント・アーキテクチャ特有の考慮点や注意すべき点、積極的な活用が期待される有用な機能について説明します。
アプリケーションからの接続は原則従来通り
アプリケーションからデータベースに接続するには、インスタンスに対応するサービス名を指定してリモート接続する方法を一般的に使用します。CDB内のPDBへのリモート接続においても、同様にPDBに対応するサービス名を指定することで、アプリケーションからPDBに接続できます。
PDB作成時にPDBと同名のサービスが作成されますので、アプリケーションの接続識別子にそのサービス名を指定してください。クライアント側は、接続先のデータベースがPDBであることを特に意識せずに接続できます。
PDB2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = COSOL)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDB2) <== PDBに対応するサービス名を指定 ) )
ただし、あるデータベースサーバに複数のCDBが存在し、それぞれのCDBに同じ名前のPDBが存在する場合、サービス名が衝突することがあります。このときは、デフォルト以外のサービスを作成するようにしてください。
また、バッチ処理などでインスタンスへのローカル接続を使用するケースもあるかと思います。この場合は、接続方式をリモート接続に切り替えるか、共通ユーザーでCDBに接続したのち、ALTER SESSION SET CONTAINERで対象のPDBに接続するように処理を修正する必要があるでしょう。
PDBのPlugとUnplug
PDBをCDBからUnplugし、他のCDBにPlugできます。Unplug時にデータファイルの取り外しと共にXMLファイルを作成し、Plug時にはそのXMLファイルの情報を使用しPDBを作成します(図3)。ファイルシステムが共有されている環境であれば、データファイルをコピーする必要もありませんので、短時間でPlugを行うことができます。
Unplug後、再度同じCDBにPlugする場合は、該当のPDBを1度削除する必要があります。ただし、このときINCLUDING DATAFILES句を付けてデータベースの構成ファイルを削除しないように注意してください。
SQL> DROP PLUGGABLE DATABASE PDB1 INCLUDING DATAFILES; プラガブル・データベースが削除されました。
Plug/Unplugを、アップグレード対象データベースの選定に活用することもできます。CDBをアップグレードすると、CDB内の全PDBも併せてアップグレードされますが、アップグレード前にPDBをUnplugし、別のCDBにPlugしておけば、アップグレード対象から除外できます。また、アップグレード済みのCDBにアップグレード前のPDBをPlugすると、特定のPDBのみをアップグレードすることができます
クローニング機能により、検証環境の作成が容易に
既存のPDBを簡単に複製できます。従来よりRMAN duplicateコマンドなどのデータベースのクローン(複製)の方法は用意されていましたが、これらの方法に比べて手順が非常に簡単になりました。本番環境のデータベースを元に検証用のデータベースを作成するなどの用途に非常に有効な機能です。
PDBの複製にはCREATE PLUGGABLE DATABASE ... FROM ...コマンドを使用しますが、コピー元PDBのOPEN MODEをREAD ONLYにする必要がある点に注意してください。
SQL> SHOW PDBS CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED <== READ ONLY でない 4 PDB2 MOUNTED 5 PDB3 READ WRITE NO SQL> CREATE PLUGGABLE DATABASE PDB4 FROM PDB1 2 FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/CDB/PDB1/' 3 , '/u01/app/oracle/oradata/CDB/PDB4/'); CREATE PLUGGABLE DATABASE PDB4 FROM PDB1 * 行1でエラーが発生しました。: ORA-65081: データベースまたはプラガブル・データベースは、読取り専用モードで オープンしていません
異なるCDB間でPDBを複製することもできます。CREATE PLUGGABLE DATABASE ... FROM ...コマンドのFROM句に
また、SNAPSHOT COPY句を追加することにより、ストレージまたはファイルシステムのCOW機能(Copy-On-Write)を活用してPDBを複製できます。複製実行時点ではデータファイルがコピーされないため、複製を瞬時に完了できます。ただし、コピー元とコピー先がCDBが同一である必要があること、サポートされるストレージおよびファイルシステムは、Sun ZFS、NetApp、Oracle ACFSに限定されることに注意してください。
アラートログもコンテナ間で共有される
1つのCDBに対して、1つのアラートログが存在し、PDB固有のアラートログは存在しません。PDB内で発生したエラーは、CDBのアラートログに記載されます。
検証環境でORA-00060を発生させたところ、アラートログにPDBを特定できる情報は出力されていませんでした。トレースファイルにはPDB名が記載されていましたが、アラートログだけではPDBの特定ができないようですので、シェルなどでログの監視を行う場合は注意してください。
Fri Aug 02 16:19:32 2013 ORA-00060: Deadlock detected. More info in file /u01/app/oracle/diag/rdbms/cdb/CDB/trace/CDB_ora_6631.trc.
CDBに導入されるコンポーネント
CDBは、DBCAで「コンテナ・データベースとして作成」にチェックを入れることで簡単に作成できます。従来のデータベースと同様に、CREATE DATABASE文を用いて作成することもできますが、DBCAの使用が強く推奨されているため、原則的にDBCAを使用すべきでしょう。
なお、DBCAでCDBを作成するとき、テンプレートにCustom Databaseを指定するとコンポーネントの指定画面がグレーアウトされ、各Editionで使用可能なコンポーネントが全てインストールされるようです(図4、5)。PDBに含まれる可能性のあるコンポーネントをCDBで保持しておくという考えに基づき、このような動作になっていると思われます。
今回のまとめ
連載第2回目となる今回は、マルチテナント・アーキテクチャについて、始めに概要と利点を、次に新しく加わった概念について、最後に注意点について説明しました。
従来のデータベース統合の手法では、物理マシンを減らすことはできてもデータベースの数は減らずに運用コストを削減できない、アプリケーションの修正などの統合に伴う作業負荷が発生するなどの問題がありました。マルチテナント・アーキテクチャという新しい手法を使用することで、これらの問題を解決し、容易にデータベース統合が実現できます。
ただし、従来のデータベースとはアーキテクチャが異なる点、特にメモリがコンテナ間で共有される点に注意が必要です。PDB単位での細かいチューニングは困難な場合が多いため、性能に対する要件が厳しいデータベースをマルチテナント・アーキテクチャによるデータベース統合の対象に含めることについては十分な検討が必要です(この注意点はスキーマ統合などの他のデータベース統合についても同様に言えることですが)。
データベースの運用において、最も重要なタスクはデータベースのバックアップです。次回は、マルチテナント・アーキテクチャを使用してのバックアップ設計について、想定されるケースを交えて説明します。
Copyright © ITmedia, Inc. All Rights Reserved.