どうも、皆さん。
唐突ですが、「アプリケーションコンテナ」という言葉をご存じでしょうか。
Oracleのコンテナ技術の拡張機能なのですが、聞いたことがないという方も多いのではないかと思います。
※Oracleのコンテナ技術について忘れてしまった方はこちらをご覧ください。
Oracle 試験の出題範囲にも入っている、この「アプリケーションコンテナ」
通常のPDBと混同してしまう部分が多く、理解にするのに苦労したので
全体像を掴めるよう解説していこうと思います。
・Oracleのコンテナは知っているが、アプリケーションコンテナと言われてもピンとこない
・普通のPDBとアプリケーションPDBの違いが良くわからない
上記のような悩みを抱える方は、ぜひ一読いただければと思います。
目次
・この記事でわかる事 ・アプリケーションコンテナってなに? ・アプリケーションコンテナの基本操作 ・アプリケーションコンテナを使うメリット ・アプリケーションコンテナを使うデメリット ・まとめ |
この記事でわかる事
本記事では以下について理解を深めることができます。
・Oracle Databaseのアプリケーションコンテナ
アプリケーションコンテナってなに?
それでは解説していきます。
概要
アプリケーションコンテナをざっくり説明すると、
ユーザや表、データなどをグループ化して管理することで、類似するPDBを大量に作成することが可能になる機能です。
同じような設定のデータベースを利用者ごとに提供する必要がある、SaaSのようなシステムで使用されることを想定しています。
Oracle Database 12c R2から登場した機能で、下記の図の通り、CDBの配下に作成する必要があります。
通常のPDBとは異なる特性を持ち、
・アプリケーションPDB、アプリケーションシードを管理し、CDBとPDBの特性を併せ持つ「アプリケーションルート」
・実データが格納される「アプリケーションPDB」
・アプリケーションPDBを作成するときにテンプレートとして使用できる「アプリケーションシード」
の2~3種類(※1)のPDBから構成されます。
なんだか、CDBの中にもう一つCDBを作成しているみたいですよね。
※1...アプリケーションシードの作成は任意のため、アプリケーションルートとアプリケーションPDBがあれば問題なく構成できます。
なお、アプリケーションシードを作成しなかった場合、アプリケーションPDBの新規作成時にPDBシードが利用されます。
補足:テンプレートとして使えるPDBの兄弟分「PDBシード」PDBにはPDBシード(PDB$SEED)と呼ばれる兄弟分が存在します。 このPDBシードはPDBを新規作成するときにテンプレートとして使用することが可能です。PDBシードに使用するユーザや権限をあらかじめ設定しておくことで、作成したPDB毎にユーザや権限を設定する手間を省くことができます。 |
2種類の「アプリケーション」
アプリケーションコンテナの機能について紹介する前に、一点理解しておかないといけないことがあります。
それは、アプリケーションコンテナには2種類の「アプリケーション」という言葉が登場することです。
一つは、多くの人が思い浮かべるプログラムとしての「アプリケーション」
もう一つは、アプリケーションコンテナの設定としての「アプリケーション」があります。
プログラムのアプリケーションと全く関係ないデータベース設定なのですが、アプリケーションと呼ばれているのです。ややこしいですよね。
そのため以降は説明のため
APサーバなどで実行されるプログラムのアプリケーションをアプリ
アプリケーションコンテナの設定(アプリケーションルートに登録されたユーザやオブジェクトのグループ)をアプリケーション
と区別していきます。
アプリケーションコンテナの機能
アプリケーションコンテナのイメージは掴めてきたと思いますので、機能について説明していきます。
通常のPDBでは、ユーザや表の定義などのオブジェクトを1PDB毎に設定していく必要があります。
そのため、新しいPDBを作成した際、PDB1つ1つに対して設定を変更していく必要が出てくるわけです。
※厳密には同じCDBに所属するPDB同士で使用することが出来る共有ユーザや、テンプレートとして使えるPDBシードを使えるので、すべての設定を個別に行う訳ではありませんが、限定的です。
一方、アプリケーションPDBは、
アプリケーションルートに共有で使用するユーザや表などのオブジェクトをあらかじめ作成し、
配下にいるアプリケーションPDBへ設定を同期することで、複数のPDBをまとめて設定することが可能です。
この、アプリケーションルートに登録されたオブジェクトのグループがアプリケーションになります。
アプリケーションコンテナの基本操作
次は、アプリケーションコンテナの基本的な操作について紹介していきます。
アプリケーションルートの作成:
アプリケーションルートを作成するにはCDBルートに接続し
「CREATE PLUGGABLE DATABSE ~ AS APPLICATION CONTAINER」文を使用します。
アプリケーションの作成(インストール):
アプリケーションを新規作成する操作をインストールと呼び
「ALTER PLUGGABLE DATABASE APPLICATION」文を実行して作成します。
アプリケーションの変更(アップグレード):
アプリケーションの設定を大幅に修正する際の変更をアップグレードと呼び
「ALTER PLUGGABLE DATABASE APPLICATION」文でバージョン番号を指定して変更します。
アップグレードではアプリケーションルート内に、以前の設定状態がバージョンとして保持されるため
PDB1にはバージョン1.0を設定し、PDB2にはバージョン2.0の設定を反映するといったことが可能です。
アプリケーションの変更(パッチ適用):
設定の変更が軽微な場合に使用する変更をパッチ適用と呼び
「ALTER PLUGGABLE DATABASE APPLICATION」文にパッチ番号を指定して変更します。
こちらはアップグレードと異なり以前の状態を保持しません。
アプリケーションPDBの作成:
アプリケーションPDBを作成するにはアプリケーションルートに接続し
「CREATE PLUGGABLE DATABSE」文を使用します。
通常のPDBと同様の操作です。
アプリケーションの同期:
変更後のアプリケーションの設定を反映させるには、
任意のアプリケーションPDBに対して同期を行う必要があります。
同期を実行するには「ALTER PLUGGABLE DATABASE APPLICATION {アプリケーション名} SYNC」文を使用します。
アプリケーションコンテナを使うメリット
PDBの作成作業の軽減
アプリケーションルートに、あらかじめ初期設定用のアプリケーションを登録しておくことで
PDBの新規作成時に設定変更作業を軽減することが可能です。
大量のPDBを容易に設定変更することが出来る
データベース内に大量のPDBが存在しているの場合、
アプリケーションルートのアプリケーションを各PDBに同期させることで
簡単に設定を反映されることが可能です。
アプリケーションコンテナのデメリット
活用できる場面が少ない
便利な機能ではありますが、通常のCDB、PDBでデータベースとしての機能は十分なため、
実際にアプリケーションコンテナを使用する機会は少ないと思います。
使用する機会が少なければ扱えるエンジニアの数も少なくなります。
管理が通常のCDBより複雑になる
CDBーPDBという2階層が、CDBーアプリケーションルートーアプリケーションPDBの3層になるため、設定の管理が複雑になります。
まとめ
ここまで、アプリケーションコンテナについて掻い摘んで紹介してきました。
アプリケーションコンテナのポイントは以下の通りです。
アプリケーションコンテナのポイント ・アプリケーションコンテナは類似するPDBを大量に作成することが可能 ・アプリケーションコンテナはCDB、アプリケーションルート、アプリケーションシード、アプリケーションPDBから構成される ・オブジェクトの設定を保存して、複数のPDBに同期することが可能 ・オブジェクトの設定グループのことを"アプリケーション"と呼ぶ ・SaaSなどのシステムに最適 |
まだまだお伝えできてない部分も多いのですが、
本記事がOracle Databaseのアプリケーションコンテナを理解する足掛かりになってくれれば幸いです。
以上、Re:Q でした。