参考https://www.cndba.cn/dave/article/232
如果把数据库从11g 升级到12c,或者在12c中创建的,就是NON CDB,那么这样的数据库就是普通的单实例,和12c 之前的数据库没有区别,但12c 的特点就是CDB 管理,所以既然上12c,还是要切换成CDB 进行管理。
所以下面的测试步骤,就是把NON CDB 切换成CDB的步骤。
1.当前环境说明
当前数据库里已经启动了2个实例: ogg6和 test。
SQL> select name,cdb,open_mode from v$database;
NAME CDB OPEN_MODE
--------- --- --------------------
OGG6 NO READ ONLY
SQL> select name,cdb,open_mode from v$database;
NAME CDB OPEN_MODE
--------- --- --------------------
TEST YES READ WRITE
2.在ogg2库中创建xml文件
SQL> begin
2 dbms_pdb.describe(pdb_descr_file => '/tmp/test.xml');
3 end;
4 /
PL/SQL procedure successfully completed.
3.关闭ogg6数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
4.连接CDB并创建PDB,在test中我们就可以查询到ogg6的dbid
[oracle@ogg6 oracle]$ export ORACLE_SID=test
[oracle@ogg6 oracle]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Sat Sep 22 03:57:36 2018
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,cdb,open_mode from v$database;
NAME CDB OPEN_MODE
--------- --- --------------------
TEST YES READ WRITE
SQL>
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 321802671 PDB$SEED READ ONLY
在test数据库的创建ogg6的数据文件目录
/u01/app/oracle/oradata/test/ogg6
SQL>CREATE PLUGGABLE DATABASE ogg6 USING '/tmp/test.xml' COPY FILE_NAME_CONVERT = ('/u01/app/oracle/oradata12c/OGG6', '/u01/app/oracle/oradata/test/ogg6');
Pluggable database created.
数据文件已经复制成功
/u01/app/oracle/oradata/test/ogg6
[oracle@ogg6 ogg6]$ ll
total 1838168
-rw-r----- 1 oracle oinstall 912269312 Sep 22 04:56 sysaux01.dbf
-rw-r----- 1 oracle oinstall 964698112 Sep 22 05:00 system01.dbf
-rw-r----- 1 oracle oinstall 524296192 Sep 22 04:51 temp01.dbf
-rw-r----- 1 oracle oinstall 5251072 Sep 22 04:56 users01.dbf
2.5 切换到PDB并执行脚本
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
1 PDB$SEED READ ONLY NO
2 OGG6 MOUNTED
SQL>
SQL> alter session set container=OGG6;
Session altered.
--执行脚本:
sql> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
…..刷屏…..
…..约30分钟…..
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 OGG6 MOUNTED
SQL>
SQL> show con_name;
CON_NAME
------------------------------
OGG6
SQL>
SQL> alter pluggable database ogg6 open;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 OGG6 READ WRITE NO
SQL>
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
OGG6 READ WRITE
1 row selected.