1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【1Z0-083】【Oracle_Gold】コンテナマップの正体理解

Posted at

本記事の目的

Oracle Database Administration (oracle Gold)の学習がメインである。
個人的に理解するのにわかりにくかったところを記事としてまとめた。

前提

  • CDBルートのテーブルには、原則データは入っていない
    →CDBルートは、PDBを動かすことが役割だから

目次

  1. CDBで使用するContainers句とは
  2. アプリケーションコンテナ限定機能 コンテナマップってナニモノ?
  3. まとめ

1. CDBで使用するContainers句とは

図1のように、共通ユーザが各PDBに同じテーブル名・同じ定義のテーブルがあったとする。

図1
image.png

クライアントは、CDBルートへアクセス
→アクセス後図2で示しているように、Containers句で対象の共通ユーザのテーブルに向けてクエリを投げると。。。
図2のようにアクセスできる

Select * from Containers(C##test.Countries)

図2
image.png

図3のように、すべてのPDBにアクセス、すべてのPDBのデータを取得することができる!
内部的には、Union Allと同様の処理を行っている。
図3
image.png

また、図4を見てほしい。
where句でcon_idを指定することで指定したPDBにのみアクセス
→アクセスしたPDBのデータのみを取得することができる
(con_idは、コンテナを識別するためにコンテナ作成時に、oracleが内部的に作成する値)
図4
image.png

2. アプリケーションコンテナ限定機能 コンテナマップってナニモノ?

まず、アプリケーションコンテナは、どういったものかを図5に示した。
CDBにアプリケーションコンテナがぶら下がっている、その下に、各PDBがぶら下がっているイメージ。
図5
image.png

コンテナマップとは、、、

Containers句の強化版
→どのPDBにどのデータが入っているかをマッピングしているテーブル

具体的にCreate Talble文で、マッピングテーブルを作成後、以下を実行してコンテナマップを有効化することで使用可能になる。

Alter Pluggable Database Set Container_MAP ='<マップ名>'

イメージとしては、図6に示した。

図6
image.png

アプリケーションルート上で、
新規でPDBとデータが対応する表を作成する。
→正確には、パーティションテーブル。下記の2種類から選択して作成できる。
コンテナマップを作成すると、図7のようにアプリケーションルートに格納される。

今回は、レンジパーティションを想定した図になっている。

  • レンジパーティション →対象データの値を範囲で分割するパーティション
  • リストパーティション →対象データを一つ一つリスト化して実施するパーティション

図7
image.png

さて、ここで実際にSQLを実行した内部動作イメージを図8、図9を見ながらイメージしてほしい。
まずは、図8について 以下のSQLを発行する。

select * from Countries; 

今回は、where句で条件を指定していないのですべてのコンテナにアクセスする。

図8
image.png

次に図9である。

select * from Countries where region_id=001;  

まずは、条件にマッチするコンテナはどこに当たるのかをコンテナマップで確認する
→対象のコンテナにのみ、データを見に行く

図9
image.png

※以下の設定を行うことで、対象の表についてContainers句を省略できる

Alter Table <テーブル名> Enable Containers_Default;

3.まとめ

  1. CDBルートにアクセスすることでContainers句を使用することができる
  2. CDBルートへは、共通ユーザでアクセスする
  3. Containers句を使用することで、すべてのPDBに対して一括データアクセスが可能
  4. コンテナマップは、アプリケーションコンテナ専用の機能である
  5. コンテナマップを使用する際は、アプリケーションルートに共通ユーザでアクセスする必要がある
  6. コンテナマップを使用することで、whereの条件指定をcon_id以外でできる
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?