【CDB・PDB】ORACLE MASTER Gold DBA 2019

はじめに

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データベースを効果的に活用するために重要であり、ビジネス環境におけるデータベース管理の最適化に寄与します。将来的には、このアーキテクチャを活用することで、さらなる効率化やスケーラビリティの向上が期待されます。

コメント

タイトルとURLをコピーしました