Oracle 12c R1 Plug/Unplug 遷移PDB實驗(1): 插拔 RAC PDB到 Non-RAC PDB
阿新 • • 發佈:2018-11-11
實驗目標:
- 將RAC環境的PDB插拔後遷移到非RAC環境
實驗環境:
- 資料庫:Oracle 12c R1
- 作業系統:Oracle Linux 7.3
實驗步驟:
1、源端環境準備
為本次實驗克隆一個PDB
克隆步驟可參考https://blog.csdn.net/ogdkevin/article/details/83107092
2、源端拔出PDB[問題1]
在CDB中操作,關閉PDB後,拔出PDB生成XML檔案
SQL> alter pluggable database pdb2 close immediate; Pluggable database altered. SQL> alter pluggable database pdb2 unplug into '/home/oracle/pdb2.xml'; Pluggable database altered. SQL> drop pluggable database pdb2 keep datafiles; Pluggable database dropped.
3、目標端建立PDB的datafile目錄
#oracle使用者執行
[[email protected] ~]$ mkdir /u01/app/oracle/oradata/pdb2
4、傳輸源端datafile和xml檔案到目標端
源端datafile位置可以檢視unplug生成的xml檔案
5、驗證待插入PDB的相容性
SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 v_result BOOLEAN; 3 BEGIN 4 v_result := DBMS_PDB.check_plug_compatibility( 5 pdb_descr_file => '/home/oracle/pdb2.xml', 6 pdb_name => 'PDB2'); 7 8 IF v_result THEN 9 DBMS_OUTPUT.PUT_LINE('compatible'); 10 ELSE 11 DBMS_OUTPUT.PUT_LINE('incompatible'); 12 END IF; 13 END; 14 / compatible PL/SQL procedure successfully completed.
6、插入PDB[問題2]
--PDB名稱可以和原來的不同 --如果datafile都在同一個目錄,只需要指定目錄 SQL> create pluggable database pdb2 as clone using '/home/oracle/pdb2.xml' 2 source_file_directory = '/u01/app/oracle/oradata/pdb2' 3 file_name_convert=NONE NOCOPY tempfile reuse; Pluggable database created. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 MOUNTED
7、開啟PDB並檢查插入的PDB是否有問題,檢視PDB_PLUG_IN_VIOLATIONS表[問題3]
--檢視DB的trace log也能看到相關提示
***************************************************************
WARNING: Pluggable Database PDB2 with pdb id - 4 is
altered with errors or warnings. Please look into
PDB_PLUG_IN_VIOLATIONS view for more details.
***************************************************************
SQL> set lin 200
SQL> col name for a10
SQL> col cause for a20
SQL> col message for a100
SQL> select name,cause,type,message,status from pdb_plug_in_violations order by name;
NAME CAUSE TYPE MESSAGE STATUS
---------- -------------------- --------- ---------------------------------------------------------------------------------------------------- ---------
PDB2 OPTION WARNING Database option RAC mismatch: PDB installed version 12.1.0.2.0. CDB installed version NULL. PENDING
PDB2 Parameter WARNING CDB parameter sga_max_size mismatch: Previous 2G Current 1584M RESOLVED
PDB2 Parameter WARNING CDB parameter memory_target mismatch: Previous 2G Current 1584M RESOLVED
PDB2 Parameter WARNING CDB parameter memory_max_target mismatch: Previous 2G Current 1584M RESOLVED
PDB2 Parameter WARNING CDB parameter cluster_database mismatch: Previous TRUE Current FALSE RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 19769480 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 20299023 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 20831110 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 21359755 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 21948354 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 22291127 is missing in the CDB. RESOLVED
NAME CAUSE TYPE MESSAGE STATUS
---------- -------------------- --------- ---------------------------------------------------------------------------------------------------- ---------
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 23054246 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 24006101 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 24732082 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 25171037 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 25755742 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 26609783 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 26713565 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 26925311 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 27338020 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 27338041 is missing in the CDB. RESOLVED
21 rows selected.
STATUS狀態RESOLVED的不用處理,只要看狀態為PENDING,這裡只有一條為OPTIN的問題。
因為是從RAC環境插拔過來的,目標環境不是RAC,注意只需要把這個RAC選項關掉。
8、切換到PDB2,關掉RAC選項
SQL> alter session set container=pdb2;
Session altered.
SQL> exec dbms_registry.OPTION_OFF('RAC');
PL/SQL procedure successfully completed.
9、重新關閉和啟動,再檢查是否還有問題
SQL> alter pluggable database pdb2 close immediate;
Pluggable database altered.
SQL> alter pluggable database pdb2 open;
Pluggable database altered.
SQL> select name,cause,type,message,status from pdb_plug_in_violations order by name;
NAME CAUSE TYPE MESSAGE STATUS
---------- -------------------- --------- ---------------------------------------------------------------------------------------------------- ---------
PDB2 OPTION WARNING Database option RAC mismatch: PDB installed version 12.1.0.2.0. CDB installed version NULL. RESOLVED
PDB2 Parameter WARNING CDB parameter sga_max_size mismatch: Previous 2G Current 1584M RESOLVED
PDB2 Parameter WARNING CDB parameter memory_target mismatch: Previous 2G Current 1584M RESOLVED
PDB2 Parameter WARNING CDB parameter memory_max_target mismatch: Previous 2G Current 1584M RESOLVED
PDB2 Parameter WARNING CDB parameter cluster_database mismatch: Previous TRUE Current FALSE RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 19769480 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 20299023 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 20831110 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 21359755 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 21948354 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 22291127 is missing in the CDB. RESOLVED
NAME CAUSE TYPE MESSAGE STATUS
---------- -------------------- --------- ---------------------------------------------------------------------------------------------------- ---------
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 23054246 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 24006101 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 24732082 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 25171037 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 25755742 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 26609783 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 26713565 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 26925311 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 27338020 is missing in the CDB. RESOLVED
PDB2 Oracle Opatch WARNING Oracle opatch mismatch: opatch 27338041 is missing in the CDB. RESOLVED
21 rows selected.
全部的狀態都是RESOLVED,檢查trace log也沒用了相關警告!
至此,PDB遷移完成!
可能存在問題及解決辦法:
問題1、unplug出錯:
SQL> alter pluggable database pdb2 unplug into '/home/oracle/pdb2.xml'; alter pluggable database pdb2 unplug into '/home/oracle/pdb2.xml' * ERROR at line 1: ORA-65025: Pluggable database PDB2 is not closed on all instances.
解決辦法:需要先關閉PDB才可以unplug。
問題2、如果datafile不在同一目錄,或者要對datafile重新命名的,使用source_file_name_convert指定每一個datafile
create pluggable database pdb2 as clone using '/home/oracle/pdb2.xml' source_file_name_convert = ( '+DG_DATA/RACDB/783C262E9F5EC362E0531F05160A3313/DATAFILE/system.278.989576727', '/u01/app/oracle/oradata/pdb1/system.278.989576727', '+DG_DATA/RACDB/783C262E9F5EC362E0531F05160A3313/DATAFILE/sysaux.271.989576727', '/u01/app/oracle/oradata/pdb1/sysaux.271.989576727', '+DG_DATA/RACDB/783C262E9F5EC362E0531F05160A3313/DATAFILE/users.276.989576727', '/u01/app/oracle/oradata/pdb1/users.276.989576727', '+DG_DATA/RACDB/783C262E9F5EC362E0531F05160A3313/TEMPFILE/temp.279.989576733', '/u01/app/oracle/oradata/pdb1/temp.276.989576727') file_name_convert=NONE NOCOPY tempfile reuse;
問題3、如果不想出現補丁或者引數這些warning出現,可以修改xml檔案才進行插入操作。
解決辦法:
- 修改引數值和目標設定的引數值一樣,如下
<parameters> <parameter>processes=300</parameter> <parameter>sga_max_size=2147483648</parameter> <parameter>memory_target=2147483648</parameter> <parameter>memory_max_target=2147483648</parameter> <parameter>db_block_size=8192</parameter> <parameter>compatible='12.1.0.2.0'</parameter> <parameter>cluster_database=TRUE</parameter> <parameter>open_cursors=300</parameter> <parameter>enable_pluggable_database=TRUE</parameter> </parameters>
- 刪除目標端不存在的補丁集,如下:
<opatches> <opatch>19769480</opatch> <opatch>20299023</opatch> <opatch>20831110</opatch> <opatch>21359755</opatch> <opatch>21948354</opatch> <opatch>22291127</opatch> <opatch>23054246</opatch> <opatch>24006101</opatch> <opatch>24732082</opatch> <opatch>25171037</opatch> <opatch>25755742</opatch> <opatch>26609783</opatch> <opatch>26713565</opatch> <opatch>26925311</opatch> <opatch>27338020</opatch> <opatch>27338041</opatch> </opatches>
參考: