非CDB 数据库的名称是:12cNonPDB
- 要将 non-CDB 转换为 PDB,必须彻底关闭数据库:
. oraenv
--将环境变量设置为 12cNonPDB
sqlplus / as sysdba
sql> shutdown immediate
- 彻底关闭数据库后,以只读模式打开它:
sql> startup open read only
- 描述数据库并生成 xml 文件:
BEGIN
DBMS_PDB.DESCRIBE(pdb_descr_file => '/tmp/12cNonPDB.xml');
END;
/
- 关闭数据库:
sql> shutdown immediate
- 在目标 CDB 环境中执行下面的操作来检查兼容性:
SET SERVEROUTPUT ON;
DECLARE
compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/tmp/12cNonPDB.xml')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
如果有报错,可以通过 cdb 数据库的 PDB_PLUG_IN_VIOLATIONS 查看。
SQL> col cause for a20
SQL> col name for a20
SQL> col message for a35 word_wrapped
SQL> select name,cause,type,message,status from PDB_PLUG_IN_VIOLATIONS where name='<noncdb database name>';
如果出现以下错误:
ERROR PSU bundle patch 1 (PSU Patch 12345): Installed in the CDB but not in the PDB. ERROR PSU bundle patch 1 (PSU Patch 12345): Installed in the PDB but not in the CDB.
可参考 Note 1935365.1 来修复。
- 连接到目标 CDB:
. oraen
--将环境变量设置为 ACDB
sqlplus / as sysdba
- 创建 pluggable database:
CREATE PLUGGABLE DATABASE APDB USING '/tmp/12cNonPDB.xml'
COPY
FILE_NAME_CONVERT = ('/u01/app/oracle/12c/oradata/12cNonPDB/', '/u01/app/oracle/oradata/12c/ACDB/APDB/');
- 切换到 PDB container 并运行 “$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql”
sql> ALTER SESSION SET CONTAINER=APDB;
sql> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
- 启动 PDB 并检查 open mode:
ALTER PLUGGABLE DATABASE OPEN;
SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
APDB READ WRITE
1 row selected.
SQL>
源数据字符集(NLS_CHARACTERSET)需要与目标环境 CDB 的 NLS_CHARACTERSET 相同,或者源数据库字符集是目标环境 CDB 的 NLS_CHARACTERSET 的二进制子集,源和目标的 NLS_NCHAR_CHARACTERSET 需要相同。
如果 PDB 是 Unicode 字符集,建议创建字符集为 AL32UTF8 的 CDB。请注意,我们无法使用 DMU 迁移 CDB 的字符集。
参考:
NOTE:1935365.1 - Multitenant Unplug/Plug Best Practices
NOTE:1564657.1 - How to migrate an existing pre-12c database (non-CDB) to 12c CDB database?
How to Convert Non-CDB to PDB Database in 12c - Testcase (Doc ID 2012448.1)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




