オラクルマスターゴールド12c移行勉強記の目次はこちらのページからどうぞ!

こんにちは、ぽんたこすです。

オラクルマスターゴールド12c移行勉強記 マルチテナント4をはじめます。

オラクルマスターゴールド12c

◆CDBとPDBの管理

・CDB/PDBへの接続

CDBへの接続はルートコンテナへの接続でローカル接続、リモート接続が可能。
一方、PDBは常にOracle Netを使用したリモート接続になります。
↑これ、はじめて12cを操作したときはよくわからず、接続するまでにだいぶ時間がかかりました。

PDBへの接続がリモート接続であることから、リスナーへのサービス登録が必要。(CDBにわたり、一意なサービス名が必要)

・PDBの名前とサービス名

PDBはそれぞれ固有の名前、DBID、コンテナUID、GUIDを持ちます。
同じCDB上で同じ名前のPDBは作成できません。

・PDB名の変更

PDB名は以下の手順で変更できます。

-- PDBに接続
SQL> connect sys @pdb3 as sysdba

-- RESTRICTモードに変更
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

-- PDB名の変更
SQL> ALTER PLUGGABLE DATABASE pdb3
  2> RENAME GLOBAL_NAME TO pdbx;

PDBにサービスを追加

PDB名と異なるサービス名を指定する場合、シングル環境であればDBMS_SERVICEパッケージを使用することでPDB独自のサービス名を追加できます。

-- DBMS_SERVICEによるサービス追加
SQL> connect sys @pdb2 as sysdba
-- サービス追加
SQL> exec DBMS_SERVICE.CREATE_SERVICE('pdb2_sales','sales')
-- サービス開始
SQL> exec DBMS_SERVICE.START_SERVICE('pdb2_sales')

Oracle Restart、Orale Clusterwareを使用している場合は、srvctlを使用します。

-- PDB名指定してサービスを追加
$ srvctl add service -db cdb1 -service sales ...... -pdb pdb2
-- サービス開始
$ srvctl start service -db cdb1 -service sales

クラスタ環境であれば、EM Cloud Controlを使用することができます。

・接続先PDBの切り替え

ルートコンテナからメンテナンス作業を行う場合は、その都度PDBに接続することになります。
ALTER SESSION SET CONTAINER文は、現在のセッションを残しつつ一時的に操作対象コンテナを切り替えることができます。

connect文を使用してPDBに接続する場合は、ローカルユーザと共通ユーザのどちらも使用することができます。また、新規接続として扱われるので、AFTER LOGONトリガーも起動されます。

マルチテナントの接続切り替え例

-- 共通ユーザだがSYSDBAではないSYSTEMユーザ接続
SQL> connect system @dbs1

-- 存在するPDB一覧
SQL> show pdbs

CON_ID CON_NAME       OPEN MODE  RESTRICTED
------ -------------- ---------- ----------
     2 PDB$SEED       READ ONLY  NO
     3 PDB1_1         READ WRITE NO
     4 PDB2_1         MOUNTED

-- 現在接続しているコンテナ(ルートコンテナ)
SQL> show con_name

CON_NAME
-------------
CDB$ROOT

-- コンテナ切り替え(非SYSDBAはオープンしてないと×)
SQL> ALTER SESSION SET CONTAINER=pdb2_1;
ERROR:
ORA-01031: 権限が不足しています。

-- コンテナ切り替え
SQL> ALTER SESSION SET CONTAINER=pdb1_1;

-- 現在接続しているコンテナ
SQL> show con_name

CON_NAME
-------------
PDB1_1

-- ルートコンテナに戻る
SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;

現在存在しているPDBを一覧で確認するには、CDB_PDBSビューやV$PDBSビュー、show pdbsコマンドを使用します。
ルートも含めた一覧の確認にはV$CONTAINERSビューを使用します。
現在接続しているPDB名はshow con_nameコマンドで確認できます。

・PDB間の通信

PDB間でデータの送受信が必要な場合は。非CDB同様、DBリンクを利用します。
非CDBと異なって、DB内部の通信になるため、高速な送受信が可能です。

-- pdb2へのDBリンクを作成
SQL> CREATE PUBLIC DATABASE LINK pdb2 USING 'pdb2';
-- 接続
SQL> connect system@pdb1
SQL> SELECT * FROM scott.emp@pdb2;

今回はこんなところで!

オラクルマスター 12c GOLD 合格体験記こちらのページからどうぞ!

オラクルマスター試験対策のための書籍の紹介こちらのページからどうぞ!

資格でスキルを身に着けたあとは、転職でもいかかですか?
転職活動に関する情報こちらのページからどうぞ!

にほんブログ村 資格ブログへ にほんブログ村 資格ブログ IT系資格へ にほんブログ村 転職キャリアブログ 転職情報・転職サイトへ ブログランキング・にほんブログ村へ
にほんブログ村 にほんブログ村 にほんブログ村 にほんブログ村