【PDB升级】12.1.0.2的PDB升级到12.2.0.2的实验


在  12.1.0.2  的   PDB   升级到   12.2.0.2   的时候,不能选用   DBLINK   远程克隆的方式,因为源库是   12.1.0.2   的版本,不能夸版本远程克隆,否则报错:

SYS@cdb1212> create pluggable database pdblhr3 from PDBPROD2@dbl_PDBLHR1 CREATE_FILE_DEST = '/u01/app/oracle/oradata';

create pluggable database pdblhr3 from PDBPROD2@dbl_PDBLHR1 CREATE_FILE_DEST = '/u01/app/oracle/oradata'

                                                *

ERROR at line 1:

ORA-17630: Mismatch in the remote file protocol version client 2 server 3

参考:  Creating a PDB Remote Clone from 12.1.0.2 to 12.2 Fails With ORA-17630 (  文档   ID 2090019.1)

解决:  Download and apply Patch 18633374 on the side that does not include the fix for Bug 18633374. The fix is included in 12.2 or later.

NOTE: Both sides must have the fix for Bug 18633374

 

1.1      unplug      插拔方式

 

show pdbs

create pluggable database    PDBLHR   1212    admin user lhr identified by lhr CREATE_FILE_DEST = '/u01/app/oracle/oradata';

alter pluggable database   PDBLHR   1212 open;

alter session set container=   PDBLHR   1212;

create table xxt10 as select * from dual;

select name from v$datafile    where con_id=3   ;

 

conn / as sysdba

alter pluggable database   PDBLHR   1212 close  immediate;

alter pluggable database   PDBLHR   1212    unplug into '/tmp/   PDBLHR1212   .xml';    #  在执行完这句命令后,该   pdb   只能被删除而不能直接打开。

drop pluggable database   PDBLHR1212        keep datafiles    ;     --  默认也是     keep datafiles

 

--  目标库创建路径

mkdir -p /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/

chown oracle.oinstall /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/

 

--  从源库拷贝数据文件和   xml   文件

scp /tmp/   PDBLHR1212   .xml   oracle@192.168.59.52:   /tmp/   PDBLHR1212   .xml

scp /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/*   oracle@192.168.59.52:   /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/

 

 

--  目标库执行

create pluggable database   PDBLHR1212    2

using '/tmp/   PDBLHR1212   .xml   '

nocopy tempfile reuse;

 

alter pluggable database   PDBLHR1212    2     open;

 

show pdbs

SELECT to_char(time, 'YYYY-MM-DD HH24:MI:SS') time,

       NAME,

       CAUSE,

       TYPE,

       LINE,

       MESSAGE,

       STATUS,

       ACTION,

       CON_ID

  FROM PDB_PLUG_IN_VIOLATIONS

 order by time desc;

 

$ORACLE_HOME/bin/dbupgrade -c    PDBLHR1212    2  #  如果是相同版本迁移,则不需要执行此命令

 

@?/apex/apxremov_nocdb.sql     #  移除   PDB   中的   APEX   组件

 

select name,con_id from v$datafile order by con_id;

ALTER DATABASE MOVE datafile 5 TO '+D   ATA   ';

校验:

select count(1) from CDB_tables where owner='HR';

 

Oracle APEX  在   12.1.0.2.0   中默认安装,而在   12.2.0.1.0   未默认安装,如果不进行   APEX   卸载,在   12.2.0.1.0   中   plug 12.1.0.2.0   版本的   pdb   将报如下   ORA-65346   错误:

ERROR at line 1:

ORA-65346: The PDB version is lower and components (APEX) are missing in CDB.

 

 - APEX mismatch: PDB has installed common APEX. CDB has not installed APEX.

 

解决:编辑  xml  文件   /tmp/    PDBLHR1212   .xml    ,     删除以下行:

<APEX>4.2.5.00.08:1</APEX>

或者卸载  APEX  :

select COMP_ID, STATUS from DBA_REGISTRY where COMP_ID='APEX';

SQL>@?/apex/apxremov_nocdb.sql

12.1.0.2  需要跑脚本   apxremov_con.sql   ,其它版本需要跑   apxremov_nocdb.sql   或   apxremov_cdb.sql   进行卸载   APEX   组件。

 

1.2      DBMS_PDB.DESCRIBE      方式

--  源库

create pluggable database PDBLHR3 admin user lhr identified by lhr CREATE_FILE_DEST = '/u01/app/oracle/oradata';

alter pluggable database PDBLHR3 open;

alter session set container=pdblhr3;

shutdown immediate

startup open read only

exec   DBMS_PDB.DESCRIBE   ('/tmp/orcl.xml');

select name from v$datafile       ;

 

 

--  目标库创建路径

mkdir -p /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/

chown oracle.oinstall /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/

 

--  从源库拷贝数据文件和   xml   文件

scp /tmp/   orcl.xml       oracle@192.168.59.52:   /tmp/   orcl.xml

scp /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/*   oracle@192.168.59.52:   /u01/app/oracle/oradata/CDB1212/7C5288B7DE640179E053823BA8C05BD1/datafile/

 

 

---  目标库

set serveroutput on

DECLARE

  l_result BOOLEAN;

BEGIN

  l_result := DBMS_PDB.check_plug_compatibility(pdb_descr_file => '/tmp/orcl.xml',

                                                pdb_name       => '   PDBLHR5   ');

  IF l_result THEN

    DBMS_OUTPUT.PUT_LINE('   Yes   ');

  ELSE

    DBMS_OUTPUT.PUT_LINE('   No   ');

  END IF;

END;

/

 

CREATE       PLUGGABLE   DATABASE PDBLHR5

USING '/tmp/orcl.xml'

CREATE_FILE_DEST = '/u01/app/oracle/oradata';

 

alter     PLUGGABLE   DATABASE PDBLHR5 open;

show pdbs

SELECT to_char(time, 'YYYY-MM-DD HH24:MI:SS') time,

       NAME,

       CAUSE,

       TYPE,

       LINE,

       MESSAGE,

       STATUS,

       ACTION,

       CON_ID

  FROM PDB_PLUG_IN_VIOLATIONS

 order by time desc;

 

$ORACLE_HOME/bin/dbupgrade -c    PDBLHR1212    2  #  如果是相同版本迁移,则不需要执行此命令

 

@?/apex/apxremov_nocdb.sql     #  移除   PDB   中的   APEX   组件

 

select name,con_id from v$datafile order by con_id;

ALTER DATABASE MOVE datafile 5 TO '+D   ATA   ';