Oracle 将非CDB转换为PDB

如果存在PDB模式需求,可以把非CDB转换为PDB,操作步骤如下。

1.创建新的CDB数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.非CDB只读打开

shutdown immediate
startup open read only

3.非CDB生成xml文件

begin
dbms_pdb.describe(pdb_descr_file => '/tmp/orcldg.xml');
end;
/

4.关闭非CDB数据库

shutdown immediate

为了保持元数据文件和数据文件的一致性,不要再次打开数据库,否则会报错:
ORA-65139: Mismatch between XML metadata file and data file

5.目标CDB检查兼容性

set serveroutput on;
declare
compatible constant varchar2(3) := case dbms_pdb.check_plug_compatibility(pdb_descr_file => '/tmp/orcldg.xml')
when true then 'yes'
else 'no'
end;
begin
dbms_output.put_line(compatible);
end;
/

可以通过 cdb 数据库的 PDB_PLUG_IN_VIOLATIONS 视图查看是否有错误,根据相关提示进行处理:
col cause for a20
col name for a20
col message for a35 word_wrapped
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 来修复。

6.目标CDB创建PDB

create pluggable database pdb1 using '/tmp/orcldg.xml' copy file_name_convert = ('/oradata/orcldg/','/oradata/orcl/pdb1/');

非CDB路径在前,PDB路径在后。

7.切换到PDB,执行noncdb_to_pdb.sql脚本

alter session set container=apdb;
@$oracle_home/rdbms/admin/noncdb_to_pdb.sql

8.打开PDB并检查状态

SQL> alter pluggable database open;
SQL> select name,open_mode from v$pdbs;

NAME OPEN_MODE
---- ----------
PDB1 READ WRITE

参考文档:How to Convert Non-CDB to PDB Database on same local host machine in 12c - Testcase (Doc ID 2012448.1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值