Linux从12c non-CDB升级到18.0.0 CDB(手动)
sinye56 2024-10-06 00:47 4 浏览 0 评论
其他相关文章
- Redhat 7.x 从11.2.0.4升级到18.0.0(DBUA)
- 从11.2.0.4升级到18.0.0 non-CDB(手动)
- Linux从12c non-CDB升级到18.0.0 non-CDB(手动)
- 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 '<db_backup_directory>%U' TAG before_upgrade;
BACKUP CURRENT CONTROLFILE TO '<controlfile_backup_directory>';
}
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
目标库准备工作
- 安装数据库软件并创建CDB
这里可以不创建其他的PDB,如下通过DBCA建库:
cd /u01/app/oracle/product/18.1.0/db_1/bin
./dbca
选择创建数据库
高级模式
选择单实例
创建CDB,但是不创建PDB
启用归档和快速恢复区
用之前的监听
字符集要和源库相同
这里不配置EM
输入密码
创建数据库
创建数据库的概要信息,检查一下
创建数据库
首先将源库升级到18c
具体步骤参考上一节“12c升级到18c”即可
将non-CDB插入到CDB中
源库:
- 将数据库以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.
- 创建PDB所需的XML文件
SQL> exec DBMS_PDB.DESCRIBE('/home/oracle/cndbapdb.xml');
PL/SQL procedure successfully completed.
- 关闭数据库
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.
- 以移除Oracle Database Vault为例查看是否启用了DV
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
- 如果启用了DB,则关闭数据库,监听,EM
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;
- 禁用回收站,然后移除DB组件
禁用回收站
alter system set recyclebin=off scope=spfile;
shutdown immediate
startup
执行脚本dvremov.sql
SQL> @ ?/rdbms/admin/dvremov.sql
- 如果之前启用了DV,最后还要删除相关用户和启用回收站
drop user &DV_OWNER cascade;
drop user &DV_ACCTMGR cascade;
alter system set recyclebin=on scope=spfile;
shutdown immediate
startup
- 验证DB组件是否被移除
SQL> select comp_name, version, status from dba_registry where comp_name='Oracle Database Vault';
no rows selected
当在源库上已经把所有目标CDB上没有的组件移除后,重新创建XML文件,然后再次检查兼容性即可通过。
- 创建CNDBAPDB
因为数据文件位置不变,所以使用NOCOPY并重用原来的临时文件。
SQL> CREATE PLUGGABLE DATABASE cndbapdb USING '/home/oracle/cndbapdb.xml' NOCOPY TEMPFILE REUSE;
Pluggable database created.
- 切换到PDB中执行脚本
执行脚本将non-CDB转换为PDB。
SQL> alter session set container=cndbapdb;
SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
- 备份PDB
至此就完成了non-CDB升级为CDB,最后一步就是备份数据库,这是升级所有数据库后的必须做的一步。
相关推荐
- linux 查看当前应用内存状况,以及内存参数含义
-
1、查看进程号ps-ef|greptomcat2、查看当前内存分配,200ms打印一次jstat-gc进程号2001jstat-gc344802001S0CS1C...
- 如何显示 Linux 系统上的可用内存?这几个命令很好用!
-
在Linux系统中,了解可用内存是优化系统性能、故障排查以及资源管理的重要一环。本文将详细介绍如何在Linux系统上显示可用内存,包括多种方法和工具的使用。在讨论可用内存之前,我们需要了解一些...
- Linux 下查看内存使用情况方法总结
-
Q:我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢?在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内...
- 2、linux命令-用户管理
-
linux命令-用户管理用户切换[root@eric~]#sueric#切换到用户eric[eric@ericroot]$[eric@ericroot]$su#切换到rootPas...
- Centos 7 进入单用户模式详解
-
1、开机在启动菜单按e进入编辑模式找到linux16行,在最后添加init=/bin/sh编辑完后,按ctrl+x退出2、进单用户模式后,使用passwd修改密码,提示以下错误:passwd:Aut...
- 每日一个Linux命令解析——newusers
-
newusers:在Linux系统中,newusers是一个用于批量创建用户的命令。它从一个文件中读取多行用户信息,每行描述一个用户的详细信息,并根据这些信息创建多个用户或对现有用户进行批量修改。一...
- openEuler操作系统管理员指南:管理用户与用户组
-
在Linux中,每个普通用户都有一个账户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义,其中最重要的是管理员账户,默认用户名是root。同时Linux也...
- Linux用户管理
-
1、用户信息文件/etc/passwdroot:x:0:0:root:/root:/bin/bash第一列:用户名第二列:密码位第三列:用户ID0超级用户UID。如果用户UID...
- centos7基础-用户、组、权限管理
-
用户和组(1)用户、组、家目录的概念linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号。组类似于角色,系统可以通过组对有共性的用户进行统一管理。每个用户...
- LINUX基础 ----------组及用户的概念
-
在Linux中,用户和组都是非常重要的概念,可以控制文件访问权限和资源的管理。用户是标识一个进程、应用程序或系统管理员的账号,Linux中每个用户用一个用户ID(UID)来标识。对于一个...
- 从零入门Linux(四)用户与权限管理
-
在Linux系统中,用户和权限管理是系统安全的重要组成部分。通过合理配置用户和权限,可以确保系统的安全性和资源的合理分配。以下是一些与用户和权限管理相关的常用命令和概念。1.用户管理1.1添加...
- 如何在 Linux 中管理用户?
-
在Linux系统中,用户是系统资源的主要使用者,每个用户都有一个唯一的标识符(用户ID)。为了更好地组织和管理用户,Linux还引入了用户组的概念。用户组是用户的集合,有助于更有效地分配权限和资...
- 在 Linux 中将用户添加到特定组的四种方法
-
在Linux多用户操作系统中,用户组管理是系统安全架构的基石。通过合理的组权限分配,管理员可以实现:精确控制文件访问权限(chmod775project/)简化批量用户权限管理(setfacl-...
- 我不是网管 - 如何在Ubuntu Linux下创建sudo用户
-
Sudo用户是Linux系统的普通用户,具有一定的管理权限,可以对系统执行管理任务。在Linux中,root是超级用户,拥有完全的管理权限,但不建议将root凭证授予其他用户或作为r...
- Linux创建普通用户,为密钥方式登录做准备
-
Hi,我是聪慧苹果8,就是江湖上人见人爱、花见花开,土到掉榨的Linux爱好者,一起学习吧!上一篇关于SSH安全加固的文字,有网友点评通过密钥登录更加安全,先创建一个普通用户,拒绝直接使用密码登录,这...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)