1. 程式人生 > 實用技巧 >Oracle 12c Non CDB 資料庫 切換成 CDB 測試

Oracle 12c Non CDB 資料庫 切換成 CDB 測試

如果把資料庫從11g 升級到12c,或者在12c中建立的,就是NON CDB,那麼這樣的資料庫就是普通的單例項,
和12c 之前的資料庫沒有區別,但12c 的特點就是CDB 管理,所以既然上12c,還是要切換成CDB 進行管理。

所以下面的測試步驟,就是把NON CDB 切換成CDB的步驟。

1.當前環境說明

當前資料庫裡已經啟動了2個例項: bishuo和 test。

bishuo:/home/oracle@oracle>ps -ef |grep pmon

oracle     3666      1  0 13:25 ?        00:00:00 ora_pmon_bishuo
oracle     
4507 1 0 13:49 ? 00:00:00 ora_pmon_test oracle 4693 189245 0 13:49 pts/1 00:00:00 grep pmon 其中bishuo資料庫是12C的CDB資料庫: SQL> select name,CDB from v$database; NAME CDB --------- --- BISHUO YES test資料庫是12C的non cdb資料庫 SQL> select name,CDB from v$database; NAME CDB --------- ---
TEST NO SQL> set lin 130; SQL> select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0 PL/SQL Release 12.1.0.2.0 - Production 0
CORE 12.1.0.2.0 Production 0 TNS for Linux: Version 12.1.0.2.0 - Production 0 NLSRTL Version 12.1.0.2.0 - Production 0 2.開始切換 2.1 Cleanly shutdown 資料庫並用read only 開啟 SQL> select name,cdb from v$database; NAME CDB --------- --- TEST NO SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup open read only; ORACLE instance started. Total System Global Area 6442450944 bytes Fixed Size 4511656 bytes Variable Size 1124075608 bytes Database Buffers 5301600256 bytes Redo Buffers 12263424 bytes Database mounted. Database opened. SQL> select name,open_mode,cdb from v$database; NAME OPEN_MODE CDB --------- -------------------- --- TEST READ ONLY NO 2.2 生成xml格式的資料庫描述檔案 SQL> BEGIN DBMS_PDB.DESCRIBE(pdb_descr_file => '/tmp/test.xml'); END; / 2 3 4 PL/SQL procedure successfully completed. 2.3 關閉資料庫 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. 2.4 連線CDB並建立PDB bishuo:/home/oracle@oracle>sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Tue Nov 21 14:02:06 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> select name,open_mode,cdb from v$database; NAME OPEN_MODE CDB --------- -------------------- --- BISHUO READ WRITE YES 建立PDB: SQL> select con_id,dbid,name,open_mode from v$pdbs; CON_ID DBID NAME OPEN_MODE ---------- ---------- ------------------------------ ---------- 2 1534143422 PDB$SEED READ ONLY SQL> CREATE PLUGGABLE DATABASE test USING '/tmp/test.xml' COPY FILE_NAME_CONVERT = ('/home/oracle/oradata/12ctest/TEST/', '//home/oracle/oradata/bishuo/test/'); 2 3 Pluggable database created. 資料庫複製成功: test:/home/oracle/oradata/bishuo/test@oracle>pwd /home/oracle/oradata/bishuo/test test:/home/oracle/oradata/bishuo/test@oracle>ls sysaux01.dbf system01.dbf temp01.dbf users01.dbf 2.5 切換到PDB並執行指令碼 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST MOUNTED SQL> alter session set container=test; Session altered. --執行指令碼: sql> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql 這個指令碼時間有點長,大概執行20分鐘左右 2.6 啟動PDB並檢查狀態 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST MOUNTED SQL> show con_name CON_NAME ------------------------------ TEST SQL> alter pluggable database test open; Pluggable database altered. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST READ WRITE NO SQL> SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- TEST READ WRITE 1 row selected. 這是之前插入的測試資料: SQL> select * from test; ID NAME ---------- ---------- 1 shiyu 1 row selected.