一、CDB、PDB常用管理指令
- 檢視PDB資訊(在CDB模式下)
show pdbs --檢視所有pdb
select name,open_mode from v$pdbs為PDB資訊視圖
select con_id, dbid, guid, name , open_mode from v$pdbs;
- 切換容器
alter session set container=orcl1 --切換到PDBorcl1容器
alter session set container=CDB$ROOT --切換到CDB容器
- 檢視目前屬于哪個容器
select sys_context('USERENV','CON_NAME') from dual; --使用sys_context檢視屬于哪個容器
show con_name --用show檢視目前屬于哪個容器
- 啟動PDB
alter pluggable database orcl1 open; --開啟指定PDB
alter pluggable database all open; --開啟所有PDB
alter session set container=orcl1; --切換到PDB進去開啟資料庫
startup
- 關閉PDB
alter pluggable database orcl1 close; --關閉指定的PDB
alter pluggable database all close; --關閉所有PDB
alter session set container=orcl1; --切換到PDB進去關閉資料庫
shutdown immediate
- 建立或克隆前要指定檔案映射的位置(需要CBD下sysdba權限)
alter system set db_create_file_dest='/u01/app/oracle/oradata/orcl/orcl2';
- 建立一個新的PDB:(需要CBD下sysdba權限)
create pluggable database test admin user admin identified by admin;
alter pluggable database test_pdb open; --将test_pdb 打開
- 克隆PDB(需要CBD下sysdba權限)
create pluggable database orcl2 from orcl1; --test_pdb必須是打開的,才可以被打開
alter pluggable database orcl2 open; --然後打開這個pdb
- 删除PDB(需要CBD下sysdba權限)
alter pluggable database orcl2 close; --關閉之後才能删除
drop pluggable database orcl2 including datafiles; --删除PDB orcl2
- 設定CDB啟動PDB自動啟動(在這裡使用的是觸發器)
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
二、Oracle 從PDBSEED建立PDB
- 要确認PDBSEED的檔案位置
select name from v$datafile;
- 建立一個目錄,這個目錄是新建立的PDB的名字
mkdir -p /u01/app/oracle/oradata/ora12cdb/ora_pdb3
- 從PDBSEED建立PDB
create pluggable database ora_pdb3 admin user hu identified by hu roles=(connect) default tablespace users datafile '/u01/app/oracle/oradata/ora12cdb/ora_pdb3/users01.dbf' size 20M autoextend on file_name_convert=('/u01/app/oracle/oradata/ora12cdb/pdbseed/','/u01/app/oracle/oradata/ora12cdb/ora_pdb3/');
- 檢視PDB
show pdbs;
- 打開PDB
alter pluggable database ora_pdb3 open;
- 關閉PDB
alter pluggable database ora_pdb3 colse immediate;
show pdbs;
三、通過已有PDB在本地克隆出新的PDB
實驗步驟:
- 檢視PDB
show pdbs
- 關閉需要被克隆的PDB,并打開為隻讀狀态
alter pluggable database ora_pdb1 close immediate;
alter pluggable database ora_pdb1 open read only;
- 建立一個目錄,這個目錄是新建立的PDB的名字
mkdir -p /u01/app/oracle/oradata/ora12cdb/ora_pdb4
- 克隆PDB
create pluggable database ora_pdb4 from ora_pdb1 file_name_convert=('/u01/app/oracle/oradata/ora12cdb/ora_pdb1/','/u01/app/oracle/oradata/ora12cdb/ora_pdb4/');
show pdbs
- 打開PDB
alter pluggable database ora_pdb4 open;
show pdbs
四、Oracle 12c 使用Non-CDB來建立PDB
現有一個非CDB的資料庫ora12cdb,計劃将其作為PDB,裝入CDB中。
- 進入ORCL,将其設定為隻讀模式
startup mount
alter database open read only;
select OPEN_MODE from v$database;
- 連接配接到Non-CDB,并執行dbms_pdb.describe過程來建立描述Non-CDB的XML中繼資料檔案。執行該過程的使用者必須有sysdba權限。
BEGIN
DBMS_PDB.DESCRIBE
( pdb_descr_file => '/home/oracle/ncdb.xml');
END;
/
- 關閉Non-CDB
shutdown immediate
srvctl stop database -db ora12cdb(叢集)
- 插入Non-CDB
CREATE PLUGGABLE DATABASE old12c_pdb USING '/home/oracle/ncdb.xml' source_file_name_convert = ('/u01/app/oracle/oradata/ora12cdb/', '/u01/app/oracle/oradata/ora12cdb/old12c_pdb/') nocopy tempfile reuse;
select name,open_mode from v$pdbs;
- 執行$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql腳本
這個腳本必須在第一次打開新PDB之前執行。如果PDB不是由Non-CDB建立而來,那麼就不需要執行這個腳本。為了執行noncdb_to_pdb.sql腳本,完成以下操作:
a.通路PDB,目前使用者必須有sysdba權限,并且權限必須是公共或本地授予給PDB。最好使用as sysdba進行連接配接。
alter session set container=old12c_pdb;
b.執行noncdb_to_pdb.sql腳本:
SQL>@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
- 以讀寫模式打開新PDB
alter pluggable database old12c_pdb open read write; -- 預設啟動就是read/write模式
select name,open_mode from v$pdbs;
- 備份PDB