非 CDB(12c 或者 12c 之前的版本)迁移到 12c CDB

时间:2022-04-05 20:21:33

其本质就是在12c中创建个需要的运行环境给旧的数据库


a) 升级一个 12.1 之前的数据库到 12.1 的版本(非 CDB)

您可以使用 dbua 或者手动的方法升级一个 12.1 之前的数据库版本到 12.1 非 CDB 的数据库

Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1) Note 1503653.1
Complete Checklist to Upgrade the Database to 12c Release 1 using DBUA Note 1516557.1

b) 插入升级后的数据库到 CDB

* 这篇文档详述了怎样插入一个升级的/创建的非 12c 的数据库到 CDB 中

设置 ORACLE_SID 变量到非 CDB 数据库

连接到非 cdb 实例

sqlplus / as sysdba

假如实例启动,首先关闭实例

shutdown immediate

 启动数据库在 mount exclusive 模式

startup mount exclusive

打开数据库到 read-only 模式

alter database open read only;

 


* 为非 CDB 的数据库产生一个插拔数据库的 Manifest File

 执行 dbms_pdb.describe 存储过程产生 manifest file

exec dbms_pdb.describe(pdb_descr_file=>'/opt/oracle/oradata/noncdb/noncdb.xml');

 

关闭非 cdb 的实例,为下面的部分准备拷贝数据文件

shutdown immediate
  * 用非 cdb 数据库的 Manifest File 创建和插入可插拔数据库到 CDB 中

连接到 CDB,假如它是关闭的状态,启动它。

sqlplus / as sysdba

 使用非 cdb 的数据库的 manifest file 创建一个新的可插拔数据库(exnoncdb),参数 file_name_convert 允许您放被拷贝的数据文件在一个不同的路径上。

create pluggable database exnoncdb
as clone
using '/opt/oracle/oradata/noncdb/noncdb.xml'
file_name_convert=('/opt/oracle/oradata/noncdb','/stage/oradata/exnoncdb')
copy;

 
* 转化到可插拔数据的数据字典

现在数据库可以作为可插拔数据库(PDB)打开了,状态是 NEW。然而,它仍然有许多冗余的结构(特别是在 SYS 和 SYSTEM 里)需要通过最后的步骤清理:

连接到新的可插拔数据库 exnoncdb。

sqlplus sys/oracle@hol/exnoncdb as sysdba

 

运行 $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql 。这个脚本需要花比较长的时间运行(超过20分钟)。

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

 更详细的信息可以参照这里的文档。

通过打开这新的可插拔的数据库,关闭它,再打开完成插入操作。

请注意在这个案例中,这些文件是拷贝的,这样还残留有原始数据文件的拷贝。
你应该选择转换已存在文件而不是一个拷贝,推荐做一个完全的数据库备份,因为这样您将可以重建这些文件。

 

alter pluggable database exnoncdb open;

alter pluggable database exnoncdb close;

alter pluggable database exnoncdb open;