【Oracle】Create Pluggable Database文のメモ
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.dbfSYSAUX
/u01/app/oracle/oradata/cdb/pdbseed/sysaux01.dbfUNDOTBS1
/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.