【Oracle】Create Pluggable Database文のメモ

Page content

create pluggable database文のメモ


 


 

1.PDB$SEEDからつくる

多分まっさらなCDBだとここが出発点になるのだと思われます(どうでもいいけど「ここが出発点」てバンプのロストマンですね)
まずPDB$SEEDのdatafileの場所を調べます。
CDBにつなぎます。

sqlplus   / as sysdba  


ログインしたDB(現在セッションの接続先)がCDB$ROOTであることを確認しておきます。以下コマンドで「CDB$ROOT」が見えたらOKです。

show con_name;  

NAME_COL_PLUS_PDB_CONTAINER

CDB$ROOT


PDB$SEEDにつなぎ変えます。

alter session set container=PDB$SEED;  

Session altered.

 

show con_name;  

NAME_COL_PLUS_PDB_CONTAINER

PDB$SEED


PDB$SEEDのdatafileの場所(パス)を取得します。

select tablespace_name,file_name from dba_data_files;  

TABLESPACE_NAME

FILE_NAME

SYSTEM
/u01/app/oracle/oradata/cdb/pdbseed/system01.dbf

SYSAUX
/u01/app/oracle/oradata/cdb/pdbseed/sysaux01.dbf

UNDOTBS1
/u01/app/oracle/oradata/cdb/pdbseed/undotbs01.dbf


配置されてるデータファイルのルートが知りたいだけで、ここでは「/u01/app/oracle/oradata/cdb/pdbseed/」となります。
これをもとにPluggable Database「PDB1」を作ることにします。

create pluggable database PDB1 admin user oracle identified by "oracle" file_name_convert = ('/u01/app/oracle/oradata/cdb/pdbseed/','/u01/app/oracle/oradata/cdb/pdb1/');  

Pluggable database created.


file_name_convert句により、元にしたPDB$SEEDのデータファイルのパスである「/u01/app/oracle/oradata/cdb/pdbseed/」を「/u01/app/oracle/oradata/cdb/pdb1/」に置換して作成しています。
今回はデータファイルのパスを同一階層の隣にするよう指定しましたが、全然違う場所を指定してももちろん問題ありません。
管理上・運用上で適切な場所を指定すべきですね。

これでとりあえずPluggable Databaseは作成できたのですが、作成した直後はPDBの状態がMOUNTになっています。

select name , open_mode from v$containers where name = 'PDB1';  

NAME

OPEN_MODE

PDB1
MOUNTED


ので、OPENします。

alter pluggable database PDB1 open;  

Pluggable database altered.


もう一回さっきのSQLで見てみるとOPEN_MODEが「READ WRITE」になっているのが確認できます。

select name , open_mode from v$containers where name = 'PDB1';  

NAME

OPEN_MODE

PDB1
READ WRITE


とりあえず繋ぎ変えてみます。

alter session set container=PDB1  


以下SQLでも打って、作成時に指定したadmin userである「oracle」がいるのを確認してみましょう。

select username from dba_users where username='ORACLE';  

USERNAME

ORACLE


とりあえず一回sqlplusから出ます(exit)。

この後、作ったPDB1にsqlplusで直接接続、といきたいところですが、その前にtnsnames.oraにPDB1の情報を追記しておきます。

PDB1 =  
 (DESCRIPTION =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))  
    (CONNECT_DATA =  
      (SERVER = DEDICATED)  
      (SERVICE_NAME = PDB1)  
    )  
  )  


で、sqlplusで接続。

 sqlplus oracle/oracle@PDB1  


で、接続できるのが確認できました。




2.既存のPDBからつくる

既にあるPDBからPDBを作ります。
ちょっとだけコマンドがスマートになります。

CDBに接続して以下SQLを実行します。

create pluggable database PDB2 from PDB1 file_name_convert=('/u01/app/oracle/oradata/ORCLCDB/pdb1/','/u01/app/oracle/oradata/ORCLCDB/pdb2/');  

Pluggable database created.


このSQLでは、既存のPluggable Database PDB1(1.でつくったやつ)をもとに、PDB2を作成しました。

この後、使用する場合は↑で実施したのと同様、OPEN_MODEを変更します。

alter pluggable database PDB2 open;  

Pluggable database altered.