この記事ではプラガブル・データベースの作成について解説します。
新規PDBの作成
## CDBに接続
sqlplus / as sysdba
-- シードからPDBを新規作成
create pluggable database PDB1 admin user mypdb1_admin identified by password role=(connect) file_name_convert=('pdbseed','mypdb1');
-- PDBのオープン
alter pluggable database MYPDB1 open;
PDBのクローニング(同一CDB内)
## CDBに接続
sqlplus / as sysdba
-- 同一CDBのPDBクローン(OMF環境)
create pluggable database pdb2 from pdb1;
-- PDBのオープン
alter pluggable database pdb2 open;
リモートCDBからのクローニング
## CDBに接続
sqlplus / as sysdba
-- PDB作成権限の付与
gtant create pluggable database to system container=all;
-- DBリンクの作成
create database link link_clone connect to system identified by password using 'cdb1'
-- リモートCDBからのクローニング
create pluggable database pdb3 from pdb3@link_clone file_name_convert=('/u01/app/oracle/oradata/CDB1/pdb3', '/u01/app/oracle/oradata/CDB2/pdb3');
-- PDBのオープン
alter pluggable database pdb3 open;
PDBのアンプラグ/プラグ
## CDBに接続
sqlplus / as sysdba
-- PDBのクローズ
alter pluggable database pdb1 close immediate;
-- PDBのアンプラグ
alter pluggable database pdb1 unplug into 'pdb1.xml';
-- PDBの削除
drop pluggable database pdb1;
-- PDBのプラグ
create pluggable database pdb1 using 'pdb1.xml' nocopy;
-- PDBのオープン
alter pluggable database pdb1 open;
非CDBのプラグイン
## マニュアル参照
## 非CDBに接続
sqlplus / as sysdba
-- DBの停止
shutdown immediate
-- 読み取り専用でオープン
startup open read only
-- xmlファイルの作成
BEGIN
DBMS_PDB.DESCRIBE(
pdb_descr_file => '/tmp/noncdb.xml');
END;
/
-- 互換性チェック
SET SERVEROUTPUT ON
DECLARE
compatible BOOLEAN;
BEGIN
compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/tmp/noncdb.xml',
pdb_name => 'NONCDB_PDB'
);
IF compatible THEN
DBMS_OUTPUT.PUT_LINE('Compatible');
ELSE
DBMS_OUTPUT.PUT_LINE('Not Compatible');
END IF;
END;
/
-- 非CDBの停止
shutdown immediate
-- SQL*Plusの終了
exit
## ターゲットCDBに接続
sqlplus / as sysdba
-- 非CDBの接続
CREATE PLUGGABLE DATABASE noncdb_pdb
USING '/tmp/noncdb.xml'
COPY
FILE_NAME_CONVERT = (
'/u01/app/oracle/oradata/NONCDB/',
'/u01/app/oracle/oradata/CDB/noncdb_pdb/'
);
-- PDBへ接続
ALTER SESSION SET CONTAINER = noncdb_pdb;
-- スクリプトの実行
@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
-- PDBのオープン
alter pluggable database noncdb_pdb open;
非CDBのリソースの移動
## 非CDBに接続
sqlplus / as sysdba
-- ディレクトリオブジェクトの作成
create directory dir as '/home/oracle';
-- SQL*Plusの終了
exit
## スキーマ単位のエクスポート
expdp system/password directory=dir dumpfile=hr.dmp schema='HR'
## ターゲットCDBに接続
sqlplus / as sysdba
-- PDBへ接続
alter session set container=pdb1;
-- ディレクトリオブジェクトの作成
create directory dir as '/home/oracle';
-- SQL*Plusの終了
exit
## スキーマ単位のインポート
impdp system/Welcome_1 directory=dir dumpfile=hr.dmp schema='HR' remap_tablespace='USERS:SYSTEM'
PDBの削除
## CDBに接続
sqlplus / as sysdba
-- PDBのクローズ
alter pluggable database pdb1 close;
-- PDBの削除
drop pluggable database pdb1 including datafiles;