在12C R1版本中只支持Global Shared Undo模式,所有container共享一個UNDO表空間;在12C R2引入了PDB Local Undo模式,每個container都有自己的UNDO 表空間,對於RAC是每
個實例每個container都有自己的UNDO表空間。在DBCA時會有Local Undo選項,且默認勾選。
在12c R1版本中clone PDB源庫需要打開在read only只讀模式 ,12c R2版本中引入了local undo mode, PDB源庫在read write讀寫模式也可以clone。
克隆PDB要求:
1. Archive Log Enabled
2. Local Undo Enabled
3. destination CDB must have a public database link to the source CDB,have sufficient privileges to use the database link
可以通過圖形化工具DBCA、命令行、em express等方式創建和刪除PDB,該處只描述命令行方式操作。
一、創建PDB
1. 克隆種子容器
SQL> select * from v$dbfile; #查看路徑
SQL> show parameter db_create_file_dest;
SQL> create pluggable database PDB3 admin user song identified by song file_name_convert=('/home/oracle/u01/app/oracle/oradata/orcl/pdbseed','/home/oracle/u01/app/oracle/oradata/orcl/PDB3');
2. 克隆本地PDB
1) 查看歸檔是否打開
SQL> archive log list;
2) local undo是否開啟
SQL> col PROPERTY_NAME for a25;
SQL> col PROPERTY_VALUE for a25;
SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where property_name='LOCAL_UNDO_ENABLED';
3) 開始克隆
SQL> show pdbs;
a)使用OMF功能創建,不推薦使用該功能創建PDB,路徑和數據文件名不是常規的。
SQL> show parameter DB_CREATE_FILE_DEST; #OMF功能路徑
SQL> show parameter pdb_file_name_convert; #設置初始化參數
SQL> alter system set db_create_file_dest='/home/oracle/u01/app/oracle/oradata/orcl';
SQL> alter session set pdb_file_name_convert='ORCLPDB','PDB5';
SQL> create pluggable database PDB5 from ORCLPDB;
報錯:ORA-65005: 文件缺少文件名模式或其文件名模式無效,未設置DB_CREATE_FILE_DEST參數
b)使用file_name_convert創建
SQL> create pluggable database PDB4 from ORCLPDB file_name_convert=(
'/home/oracle/u01/app/oracle/oradata/orcl/orclpdb','/home/oracle/u01/app/oracle/oradata/orcl/pdb4');
SQL> alter pluggable database pdb4 open;
3. 克隆異地PDB
源端
SQL> create user c##sonny identified by sonny container=all;
SQL> grant dba to c##sonny container=all;
目標端
create database link clonepdb connect to c##sonny identified by sonny using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.208)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCLPDB)))';
SQL> create pluggable database sonnypdb from ORCLPDB@clonepdb;
$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql腳本
二、刪除PDB
PDB需要處於MOUNTED狀態才可以刪除
SQL> alter pluggable database pdb5 close immediate;
SQL> drop pluggable database pdb5 including datafiles;
SQL> show pdbs;
至此PDB的創建與刪除就完成了,下面為PDB的開啟與關閉操作:
SQL>alter pluggable database orclpdb open; #啟動單個PDB
SQL>alter pluggable database all open; #啟動所有PDB
SQL>alter pluggable database orclpdb close immediate; #關閉單個PDB
SQL>alter pluggable database all close immediate; #關閉所有PDB
自動啟動所有PDB
數據庫啟動的時候所有的PDB的狀態為MOUNTED,以下設置自動啟動(CDB級別操作):
create or replace trigger sys.pdb_startup
after startup on database
begin
execute immediate 'alter pluggable database all open';
end pdb_startup;
/
克隆pdb文章
https://www.cnblogs.com/andy6/p/6867240.html
切換shared undo/local undo文章
https://blog.csdn.net/zhang123456456/article/details/71374528