概要
Oracle 12c ではPDB(プラガブル・データベース)がちょっとややこしいので行ったことメモに残しておきます。
1.PDBを起動
sqlplus / as sysdba
PDBを起動するためにsysadminで接続し、下記のSQLを実行します。
SQL> alter pluggable database pdb open;
PDBを停止する場合は、下記のSQLを実行します。
SQL> alter pluggable database pdb close immediate;
2.PDBへ接続するために「tnsnames.ora」を編集
C:\app\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
ORCLPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = WinPro)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pdb)
)
)
ORCLCDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = WinPro)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3.SQLPLUSからPDBの自動起動設定
○現在の接続先を確認する
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
○PDB確認
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
○自動起動となるように設定
SQL> alter pluggable database all save state;
プラガブル・データベースが変更されました。
4.SQLPLUSからPDBへ接続
○接続先を変更する
SQL> alter session set container = pdb;
セッションが変更されました。
○現在の接続先を確認する
SQL> show con_name
CON_NAME
------------------------------
PDB
○ログインユーザーのテーブル一覧を取得する
SQL> SELECT * FROM USER_TABLES ORDER BY TABLE_NAME;
○ログインユーザーがアクセスできるすべてのテーブル一覧を取得する
SQL> SELECT * FROM ALL_TABLES ORDER BY OWNER,TABLE_NAME;
○データベース内のすべてのテーブル一覧を取得する
SQL> SELECT * FROM DBA_TABLES ORDER BY OWNER,TABLE_NAME;
○指定した表領域にあるテーブル一覧を取得する
SQL> SELECT TABLE_NAME FROM * WHERE TABLESPACE_NAME = ‘<表領域名>’ ORDER BY TABLE_NAME;