Linux从12c non-CDB升级到18.0.0 CDB(手动)

其他相关文章

  1. Redhat 7.x 从11.2.0.4升级到18.0.0(DBUA)
  2. 从11.2.0.4升级到18.0.0 non-CDB(手动)
  3. Linux从12c non-CDB升级到18.0.0 non-CDB(手动)
  4. Linux从12c non-CDB升级到18.0.0 non-CDB(手动)

说明

本节只介绍CDB升级到CDB模式,对于non-CDB模式参考前面的升级方法即可。而对于CDB升级到CDB模式,步骤没有区别。只是在已upgrade方式打开数据库时,PDB也需要以upgrade方式打开:ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE。

源库准备工作

1) 数据库版本

数据库版本是12.2.0.1,支持直接升级到18c.

SQL> select * from v$version where rownum=1;
BANNER CON_ID
----------------------------------------------------------------------------------------------------- ------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0

2) 是否是CDB

为non-CDB模式

SQL> select name,cdb from v$database;
NAME CDB
--------- --------
CNDBA NO

3) 全库备份

升级前建议进行备份,以防万一。

rman "target / nocatalog"

RUN
{
ALLOCATE CHANNEL chan_name TYPE DISK;
BACKUP DATABASE FORMAT '%U' TAG before_upgrade;
BACKUP CURRENT CONTROLFILE TO '';
}

4) 执行检查脚本

这里不再具体说明,请参考其他升级文章:从11.2.0.4升级到18.0.0 non-CDB(手动)。

5) 开启归档和闪回

查看是否开启闪回和归档

SQL> select log_mode,flashback_on from v$database;

LOG_MODE FLASHBACK_ON
------------ ------------------
ARCHIVELOG YES

没有则手动开启归档和闪回。

shutdown immediate;
startup mount;
alter database archivelog;
alter database flashback on;

6) (可选)如果是RAC,则修改CLUSTER_DATABASE为FALSE

ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;

7) 关闭数据库

shutdown immediate

目标库准备工作

  1. 安装数据库软件并创建CDB

这里可以不创建其他的PDB,如下通过DBCA建库:

cd /u01/app/oracle/product/18.1.0/db_1/bin

./dbca

选择创建数据库

高级模式

选择单实例

创建CDB,但是不创建PDB

启用归档和快速恢复区

用之前的监听

字符集要和源库相同

这里不配置EM

输入密码

创建数据库

创建数据库的概要信息,检查一下

创建数据库

首先将源库升级到18c

具体步骤参考上一节“12c升级到18c”即可

将non-CDB插入到CDB中

源库:

  1. 将数据库以read-only打开
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1560281088 bytes
Fixed Size 8621088 bytes
Variable Size 1006633952 bytes
Database Buffers 536870912 bytes
Redo Buffers 8155136 bytes
Database mounted.
SQL> alter database open read only;
Database altered.
  1. 创建PDB所需的XML文件
SQL> exec DBMS_PDB.DESCRIBE('/home/oracle/cndbapdb.xml');
PL/SQL procedure successfully completed.
  1. 关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

目标库

连接到18c的CDB中,然后通过XML文件将non-CDB插入到CDB中。

DECLARE
compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/home/oracle/cndbapdb.xml',
pdb_name => 'cndbapdb')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
NO --可以看到不兼容,通过视图PDB_PLUG_IN_VIOLATIONS查看具体原因
set linesize 150
col name for a10
col cause for a25
col time for a30
col message for a35
select type, time,name,cause,status,message from PDB_PLUG_IN_VIOLATIONS where status != 'RESOLVED' order by name, type;

意思是数据库的相关组件版本不同,而在18c数据库中没有这些组件。

Database option XOQ mismatch: PDB installed version 18.0.0.0.0. CDB installed version NULL.

有两种解决方法:1.将源库上的相关组件移除(18c中没有的组件)。2.重建带有这些组件的CDB(MOS 2001512.1)

Oracle推荐使用方法1,参考MOS(ID 2318035.1)

红色部分是需要移除的组件。

CDB:

SQL> col COMP_NAME for a30
SQL> select comp_name, version, status from dba_registry;
COMP_NAME VERSION STATUS
------------------------------ ------------------------------ --------------------------------------------
Oracle Database Catalog Views 18.0.0.0.0 VALID
Oracle Database Packages and Ttpes 18.0.0.0.0 VALID
Oracle Real Application Clusters 18.0.0.0.0 OPTION OFF
Oracle XML Database 18.0.0.0.0 VALID

non-CDB:

SQL> col COMP_NAME for a30
SQL> select comp_name, version, status from dba_registry;
COMP_NAME VERSION STATUS
------------------------------ ------------------------------ --------------------------------------------
Oracle Database Catalog Views 18.0.0.0.0 VALID
Oracle Database Packages and Ttpes 18.0.0.0.0 VALID
JServer JAVA Virtual Machine 18.0.0.0.0 VALID
Oracle XDK 18.0.0.0.0 VALID
Oracle Database Java Packages 18.0.0.0.0 VALID
OLAP Analytic Workspace 18.0.0.0.0 VALID
Oracle Real Application Clusters 18.0.0.0.0 OPTION OFF
Oracle XML Database 18.0.0.0.0 VALID
Oracle Workspace Manager 18.0.0.0.0 VALID
Oracle Text 18.0.0.0.0 VALID
Oracle Multimedia 18.0.0.0.0 VALID
Spatial 18.0.0.0.0 VALID
Oracle OLAP API 18.0.0.0.0 VALID
Oracle Label Security 18.0.0.0.0 VALID
Oracle Database Vault 18.0.0.0.0 VALID
15 rows selected.
SQL> col PARAMETER for a20
SQL> col value for a10
SQL> select * from v$option where parameter = 'Oracle Database Vault';
PARAMETER VALUE CON_ID
---------------------------- ------------------- ----------------
Oracle Database Vault FALSE 0
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dv_off ioracle
打开数据,并禁用DV触发器
conn / as sysdba
alter trigger dvsys.dv_before_ddl_trg disable;
alter trigger dvsys.dv_after_ddl_trg disable;

禁用回收站

alter system set recyclebin=off scope=spfile;
shutdown immediate
startup

执行脚本dvremov.sql

SQL> @ ?/rdbms/admin/dvremov.sql
drop user &DV_OWNER cascade;
drop user &DV_ACCTMGR cascade;
alter system set recyclebin=on scope=spfile;
shutdown immediate
startup
SQL> select comp_name, version, status from dba_registry where comp_name='Oracle Database Vault';
no rows selected

当在源库上已经把所有目标CDB上没有的组件移除后,重新创建XML文件,然后再次检查兼容性即可通过。

因为数据文件位置不变,所以使用NOCOPY并重用原来的临时文件。

SQL> CREATE PLUGGABLE DATABASE cndbapdb USING '/home/oracle/cndbapdb.xml' NOCOPY TEMPFILE REUSE;
Pluggable database created.

执行脚本将non-CDB转换为PDB。

SQL> alter session set container=cndbapdb;
SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

至此就完成了non-CDB升级为CDB,最后一步就是备份数据库,这是升级所有数据库后的必须做的一步。

展开阅读全文

页面更新:2024-05-09

标签:回收站   兼容性   脚本   备份   组件   目标   版本   模式   数据库   文件

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top