怎样迁移一个已存在的 12c 之前版本的数据库(非 CDB)到 12c CDB 的数据库

怎样迁移一个已存在的 12c 之前版本的数据库(非 CDB)到 12c CDB 的数据库 (文档 ID 2047052.1)
文档内容


目标

解决方案
  a). 为需要整合的数据库提供空的 PDB
  b). 使用数据泵或者 golden gate 复制迁移数据库到 PDB
  a) 升级一个 12.1 之前的数据库到 12.1 的版本(非 CDB)
  b) 插入升级后的数据库到 CDB

参考


适用于:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
本文档所含信息适用于所有平台

目标

 这篇文档帮助迁移非 CDB(12c 或者 12c 之前的版本)到 12c CDB。

解决方案

 

迁移到 12c 可插拔数据库是非常简单容易的。您可以评估和选择最适合您的一种方法。

计划 A.

a). 为需要整合的数据库提供空的 PDB b). 使用数据泵或者 golden gate 复制迁移数据库到 PDB

计划 B.

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

如果noncdb在生成 manifest 文件时,数据库尚未打patch 20298413,那么在运行noncdb_to_pdb时会碰到ORA-1405错误。要解决这个问题需要在noncdb上打patch 20298413,之后重新生成manifest文件并重新拷贝数据文件;之后按照文档 ORA-01405 while running "noncdb_to_pdb.sql" (Doc ID 2000882.1)的步骤来alter用户密码。
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;
注意:我们的例子使用了COPY选项,如果选择的是NO COPY选项,那么如果操作失败,那么你需要重新从备份中恢复原来非cdb的数据库并重新把数据库放到只读模式并且重新操作Manifest File。

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

现在数据库可以作为可插拔数据库(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;

 

参考

NOTE:1503653.1 - Complete Checklist for Manual Upgrades to Oracle Database 12c Release 1 (12.1)
NOTE:1516557.1 - Complete Checklist for Upgrading to Oracle Database 12c Release 1 using DBUA
请使用浏览器的分享功能分享到微信等