12C多租戶關於CDB、PDB的常用SQL語句

lusklusklusk發表於2020-02-23

檢視當前容器和當前使用者

show con_name user

select sys_context('userenv', 'con_name'),sys_context('userenv','session_user') from dual;


檢視所有PDB

show pdbs

select con_id, dbid, guid, name , open_mode from v$pdbs;


啟動PDB:

alter pluggable database all open; --開啟所有PDB

alter pluggable database PDBNAME open; --開啟名稱為PDBNAME的PDB

alter session set container=PDBNAME;--切換名稱為PDBNAME的PDB裡面去開啟

startup


關閉PDB:

alter pluggable database all close immediate; --關閉所有PDB,不加immediate就是預設的normal

alter pluggable database PDBNAME close immediate;--關閉名稱為PDBNAME的PDB,不加immediate就是預設的normal

alter session set container=PDBNAME;--切換名稱為PDBNAME的PDB裡面去關閉

shutdown immediate


建立一個新的PDB:(已經存在db_create_file_dest的情況下)

create pluggable database test admin user admin identified by admin;   

alter pluggable database test open;    --將test開啟


根據seed模板建立一個新PDB(不存在db_create_file_dest的情況下,必須加上file_name_convert)

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

alter pluggable database pdb1 open;    --將test開啟


克隆PDB

create pluggable database test2 from test; --test必須是開啟的,才可以作為克隆源

alter pluggable database test2 open;  --然後開啟這個pdb


刪除PDB

alter pluggable database test2 close immediate;  --關閉之後才能刪除

drop pluggable database test2 including datafiles;  --刪除PDB test2並同時把資料檔案也從磁碟上刪除了,必須加上including datafiles,不加including datafiles或加keep datafiles都會報錯ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged


unplug拔下某個資料庫(必須要into到具體的xml格式的檔案)

SQL> alter pluggable database pocp1 close immediate;--之後執行cdb_data_files查不到該pdb的資料檔案,但是該pdb的資料檔案還在, show pdbs還可以看到該pdb

SQL> alter pluggable database pocp1 unplug into '/home/oracle/pocp1.xml';--之後執行cdb_data_files查不到該pdb的資料檔案,但是該pdb的資料檔案還在, show pdbs還可以看到該pdb

SQL> drop pluggable database pocp1;  --unplug後drop database不加including datafiles就是預設的keep datafiles;該pdb的資料檔案還在,show pdbs看不到該pdb;加了including datafiles的話,該pdb的資料檔案被刪除了

drop pluggable database pocp1=drop pluggable database pocp1 keep datafiles


插上這個資料庫(上面的拔下操作執不執行第三步drop操作的話,執行如下語句會報錯ORA-65012: Pluggable database pocp1 already exists,上面的拔下操作執第三步時加了including datafiles則執行如下語句會報錯ORA-19505: failed to identify file,ORA-27037: unable to obtain file status)

SQL> create pluggable database pocp1 using '/home/oracle/pocp1.xml' nocopy tempfile reuse;

SQL> alter  pluggable database pocp1 open;


插上一個資料庫時可以修改PDB名稱,/home/oracle/pocp1.xml是pocp1建立的,該xml檔案中顯示<pdbname>POCP1</pdbname>,但是可以利用該xml建立一個其他名稱的PDB,比如TDB101

SQL>create pluggable database TDB101 using '/home/oracle/pocp1.xml' nocopy tempfile reuse;


查詢CDB$ROOT的資料檔案

select file_name from cdb_data_files where con_id=1;


查詢某個PDB的資料檔案

select file_name from cdb_data_files a,cdb_pdbs b where a.con_id=b.con_id and b.pdb_name='XX'


查詢某個資料檔案對應的PDB

select pdb_name from cdb_data_files a,cdb_pdbs b where a.con_id=b.con_id and a.file_name like '%XX%';


查詢PDB$SEED的資料檔案

alter session set "_exclude_seed_cdb_view"=FALSE;

select file_name from cdb_data_files where con_id=2;


每個PDB執行如下語句只能看到自己這個容器下的資料檔案,CDB才能看到所有容器的資料檔案

select file_name,file_id,CON_ID from cdb_data_files;


每個容器執行如下語句只能看到自己這個容器下的資料檔案,CDB也只能看到自己這個容器的資料檔案

select file_name,file_id,from dba_data_files;


PDB下查cdb_data_files和dba_data_files的結果是一樣,都是PDB自己的檔案


PDB下show pdbs只能看到自己

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2676841/,如需轉載,請註明出處,否則將追究法律責任。

相關文章