多租户:将非容器数据库(CDB)迁移到可插拔数据库(PDB)

Oracle数据库12c中引入的多租户选项允许单个容器数据库(CDB)托管多个独立的可插拔数据库(PDB)。本文介绍了将非CDB/PDB数据库迁移到PDB的选项。

  • 克隆一个远程的Non-CDB
  • 使用DBMS_PDB
  • 使用数据泵(expdp,impdp)
  • 使用复制技术
  • 版本注意事项

克隆一个远程的Non-CDB

12.1.0.2补丁集引入了创建PDB作为远程非CDB克隆的能力。这将在另一篇文章中讨论 here.

使用DBMS_PDB

DBMS_PDB包允许您从non-CDB 12c数据库生成XML元数据文件,从而有效地使其能够像拔下PDB数据库时那样进行描述。这允许将non-CDB作为PDB插入现有CDB。

通常,在迁移之前,PDB中使用的任何功能都必须存在于目标CDB的根容器中。以下示例假设情况就是这样。

干净地关闭non-CDB并以只读模式启动它。

export ORACLE_SID=db12c
sqlplus / as sysdba

SHUTDOWN IMMEDIATE;
STARTUP OPEN READ ONLY;

使用DBMS_PDB.DESCRIBE过程描述non-DBC。此过程创建XML文件的方式与对PDB执行拔出操作的方式相同。

BEGIN
  DBMS_PDB.DESCRIBE(
    pdb_descr_file => '/tmp/db12c.xml');
END;
/

关闭non-CDB数据库。

export ORACLE_SID=db12c
sqlplus / as sysdba

SHUTDOWN IMMEDIATE;

连接到一个现有的CDB,并使用描述non-CDB数据库的文件创建一个新的PDB。请记住配置FILE_NAME_CONVERT参数以将现有文件转换到新位置。

export ORACLE_SID=cdb1
sqlplus / as sysdba

CREATE PLUGGABLE DATABASE pdb6 USING '/tmp/db12c.xml'
  COPY
  FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/db12c/', '/u01/app/oracle/oradata/cdb1/pdb6/');

切换到PDB容器并运行“$ORACLE_HOME/rdbms/admin/nocdb_to_PDB.sql”脚本来清理新的PDB,删除PDB中不应存在的任何项目。您可以在此处看到此脚本生成的输出示例。

ALTER SESSION SET CONTAINER=pdb6;

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

启动PDB并检查打开模式。

ALTER SESSION SET CONTAINER=pdb6;
ALTER PLUGGABLE DATABASE OPEN;

SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB6                           READ WRITE

1 row selected.

SQL>

non-CDB现已转换为PDB。您应该先备份PDB,然后再开始使用它。

使用数据泵(expdp,impdp)

一个简单的方法是从non-CDB导出数据,并将其直接导入到新创建的PDB中。如果导入使用指向相关PDB的服务进行连接,则这与使用数据泵的任何其他数据传输没有什么不同。

如果non-CDB是11.2.0.3版本以上,您可以考虑使用传输数据库here。如果non-CDB是11.2.0.3之前的版本,那么您仍然可以考虑使用可传输的表空间。

使用复制技术

另一种选择是使用类似Golden Gate的复制产品将数据从非容器数据库复制到可插拔数据库。

补丁注意事项

如果实例不在同一补丁级别,则PDB_PLUG_in_violations视图中将显示PDB冲突。如果目标的补丁级别高于源,只需以正常方式在目标实例上运行datapatch实用程序即可。它将决定需要做什么工作。

cd $ORACLE_HOME/OPatch
./datapatch -verbose

如果目标的补丁级别低于源的补丁级别,则需要运行datapatch -rollback操作,见此 here

翻译员:无外乎逻辑与物理的两种迁移策略,克隆和DBMS_PDB是属于物理性质的迁移,理论上是要比其他的逻辑形式要快。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值