はじめに
Oracleデータベースは、特に大規模なエンタープライズ環境で利用される際に、高いパフォーマンスと可用性を提供します。その中でも、Oracle 12cから導入されたマルチテナントアーキテクチャは、複数のデータベースを一つのインスタンスで管理できる新しい方法を提供します。
このアーキテクチャの中心的なコンポーネントであるCDB(Container Database)とPDB(Pluggable Database)について、以下で詳しく解説します。
CDB(Container Database)
CDBは「コンテナデータベース」を指し、複数のPDBを保持するための入れ物の役割を果たします。CDB自体は、データベースの管理やリソースの共有を行うための中心的な構造を提供し、データベース環境の効率的な運用を実現します。
CDBの主な機能
全体の管理機能
CDBは、全体のリソースやバックアップ、リカバリの管理を行います。これにより、システム管理者はCDB単位で設定や管理を行うことができます。
共有リソース
CDB内のPDBは、共通のメモリ領域やCPUリソースを共有するため、効率的に運用されます。これにより、リソースの利用効率が向上します。
管理用スキーマの存在
CDBには、CDB$ROOT
という特別なスキーマが存在します。これは、CDBの管理に必要なメタデータを保持するために使用されます。
CDBの構造
CDBは、以下の主要なコンポーネントから構成されています。
CDB$ROOT
CDBのメタデータや共通のリソースを管理するための部分。ここには、データベースの管理者や他の管理用のユーザーアカウントが存在します。
PDB$SEED
テンプレートとなるPDBで、新しいPDBを作成する際に使用されます。このPDBは、最初から設定が済んでいるため、迅速に新しいPDBを立ち上げることが可能です。
ユーザー定義のPDB
ユーザーが独自に作成したPDBで、それぞれが独立して運用されます。これにより、アプリケーションごとに異なる設定やデータを保持できます。
PDB(Pluggable Database)
PDBは「プラグ可能なデータベース」を指し、CDBの中に存在する独立したデータベースです。各PDBは、自身のスキーマ、ユーザー、および設定を持ち、他のPDBと独立して運用されます。
PDBの主な機能
独立性
各PDBは、他のPDBと完全に独立して動作します。これにより、異なるアプリケーションやユーザーごとに異なる環境を構築することができます。
個別のリソース管理
各PDBは独自のスキーマやユーザーを持つため、アプリケーションごとに異なる設定やデータを管理できます。これにより、開発環境と本番環境を分けて運用することが容易になります。
移植性
PDBは簡単に移動可能で、異なるCDB間での複製や移行がスムーズに行えます。このため、テストや開発環境へのデータの移行が簡単に行えます。
PDBの構造
PDBは、以下の要素から構成されています。
スキーマ
PDB内には、ユーザーが作成したオブジェクト(テーブル、ビュー、プロシージャなど)が格納されるスキーマがあります。各PDBは独自のスキーマを持ち、他のPDBと干渉することはありません。
ユーザーアカウント
PDB内には、特定のアプリケーションやユーザー用のアカウントが存在し、これらはCDB内の管理アカウントとは独立して管理されます。
CDBとPDBの違い
CDBとPDBは、Oracleのマルチテナントアーキテクチャにおいて異なる役割を果たしています。それぞれの違いを以下にまとめます。
特徴 | CDB(Container Database) | PDB(Pluggable Database) |
---|---|---|
定義 | 複数のPDBを持つデータベース | CDB内の独立したデータベース |
管理機能 | 全体の管理、リソース共有 | 個別の設定、独立したデータ |
スキーマ | CDB$ROOT(管理用)を持つ | 独自のスキーマを持つ |
移植性 | PDBの管理を行う | CDB間で簡単に移動可能 |
ユーザーの分離 | 共有の管理ユーザー | 各PDBごとに独自のユーザー |
管理の効率化
CDBは、全体の管理を行うためのコンポーネントとして、PDBの管理を統括します。これにより、管理者はCDBを通じて複数のPDBを一元的に管理でき、運用効率が向上します。
リソースの共有と独立性
CDB内のPDBは共通のリソースを使用しますが、各PDBは独自のデータと設定を持つため、アプリケーションやユーザーごとに異なる環境を維持できます。この構造により、リソースを効率的に利用しつつ、各データベースの独立性が確保されています。
CDBとPDBの連携方法
PDBの作成
CDB内で新しいPDBを作成するには、以下のSQLコマンドを使用します。このコマンドでは、管理者ユーザーとパスワードを指定して新しいPDBを作成します。
CREATE PLUGGABLE DATABASE pdb_name ADMIN USER admin IDENTIFIED BY password;
PDBへの接続
CDBから特定のPDBに接続するには、以下のコマンドを使用してセッションのコンテナを変更します。これにより、指定したPDB内のデータにアクセスできます。
ALTER SESSION SET CONTAINER=pdb_name;
PDBの移行
PDBを別のCDBに移行する際は、PDBをエクスポートし、ターゲットCDBにインポートします。移行の手順は次の通りです。
PDBのエクスポート
CREATE PLUGGABLE DATABASE pdb_name AS SOURCE;
PDBのインポート
ターゲットCDBに接続した状態で、以下のコマンドを実行します。
ALTER SESSION SET CONTAINER=CDB_name;
バックアップとリカバリ
CDBを使用してPDBのバックアップを行うことができ、個別にリカバリを実施できます。これにより、PDBのデータ保護が向上し、運用の効率化が図れます。
BACKUP DATABASE PLUGGABLE DATABASE pdb_name;
まとめ
CDB(Container Database)とPDB(Pluggable Database)は、Oracleのマルチテナントアーキテクチャにおいて、データベースの管理と運用を効率化するための重要なコンポーネントです。CDBは複数のPDBを保持し、全体の管理機能を提供する一方で、PDBは独立したデータベースとして動作します。このアーキテクチャにより、システム管理者は効率的にリソースを利用し、異なるアプリケーション環境を簡単に構築・管理できるようになります。
このように、CDBとPDBの理解は、Oracleデータベースを効果的に活用するために重要であり、ビジネス環境におけるデータベース管理の最適化に寄与します。将来的には、このアーキテクチャを活用することで、さらなる効率化やスケーラビリティの向上が期待されます。
コメント