11.2.0.4如何升级到19c

11.2.0.4一直以来都是最稳定,应用最广泛的oracle数据库版本,但是官方对其的支持仅仅到2018年12月31日就结束了,如果想要获得11.2.0.4之后的补丁,则必须和Oracle签订扩展服务协议,而且需要另外收费。随着稳定且强大的19c出现,这里建议大家可以考虑将11g升级到19c,获得更好的数据库服务以及体验
今天,就为大家介绍如何基于Linux6原地升级11g到19c

11.2.0.4如何升级到19c_第1张图片

一 备份

使用rman备份源库
使用rman备份源库,做好回退准备

rman target / 
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup as compressed backupset database format '/bak/rman/ora_df%t_s%s_s%p';
release channel c1;
release channel c2;
}

二 安装19c软件

2.1 创建一个新的ORACLE_HOME
mkdir -p /oracle/app/product/19.3.0/dbhome_1

2.2 上传,解压压缩包
unzip LINUX.X64_193000_db_home.zip -d /oracle/app/product/19.3.0/dbhome_1

2.3 升级glibc
需要以下rpm包(以下为下载链接)
https://download.csdn.net/download/qqqyyy0422/12672522

使用以下命令升级glibc

rpm -Uvh glibc-utils-2.14.1-6.x86_64.rpm --nodeps
rpm -Uvh glibc-2.14.1-6.x86_64.rpm --nodeps
rpm -Uvh glibc-devel-2.14.1-6.x86_64.rpm --nodeps
rpm -Uvh glibc-static-2.14.1-6.x86_64.rpm --nodeps
rpm -Uvh glibc-common-2.14.1-6.x86_64.rpm --nodeps
rpm -Uvh glibc-headers-2.14.1-6.x86_64.rpm --nodeps

检查glibc版本
strings /lib64/libc.so.6|grep GLIBC

发现已经成功更新到了2.14

2.4 安装19c软件

export ORACLE_HOME=/oracle/app/product/19.3.0/

$ORACLE_HOME/runInstaller -ignoreInternalDriverError

11.2.0.4如何升级到19c_第2张图片

11.2.0.4如何升级到19c_第3张图片
11.2.0.4如何升级到19c_第4张图片
11.2.0.4如何升级到19c_第5张图片
11.2.0.4如何升级到19c_第6张图片
11.2.0.4如何升级到19c_第7张图片
yes
(OSOPER是一种额外的用户组(oper),我们可以选择要不要创建该用户组,创建该用户组可以满足让os用户行使某些数据库管理权限(包括SYSOPER角色权限)的目的。注意SYSOPER的权限包括startup和shutdown,所以要小心为该用户组添加成员)

11.2.0.4如何升级到19c_第8张图片
安装成功

三 升级前工作

3.1 拷贝相关文件
复制sqlnet.ora和钱包文件到新的ORACLE_HOME/network/admin
复制tnsnames.ora文件到新的ORACLE_HOME/network/admin
复制listerner.ora 文件到新ORACLE_HOME/network/admin

3.2 密码版本问题
从Oracle数据库12开始c第2版(12.2),默认的基于密码的身份验证协议配置排除了不区分大小写的使用,只有10g版本的密码将会变得不可用。
并且确保SEC_CASE_SENSITIVE_LOGON这个参数没有被设为FALSE

show parameter sec_case_sensitive_logon
alter system set SEC_CASE_SENSITIVE_LOGON=true sid='*';

通过一下命令查看密码版本,确认是否存在只有10G版本的密码

SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

11.2.0.4如何升级到19c_第9张图片

如果存在仅仅为10G版本的密码,升级之后客户端将无法访问这些用户(需要在升级之后重置密码)

3.3 备份dblink创建命令

SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, 'SYS','',U.NAME||'.')|| L.NAME||chr(10)
||'CONNECT TO ' || L.USERID || ' IDENTIFIED BY "'||L.PASSWORD||'" USING
'''||L.HOST||''''
||chr(10)||';' TEXT
FROM SYS.LINK$ L, SYS.USER$ U
WHERE L.OWNER# = U.USER#;

3.4 确保物化视图已经全部刷新
select s.obj#,o.obj#,s.containerobj#,lastrefreshdate,pflags,xpflags,o.name,o.owner#, bitand(s.mflags, 8) from obj$ o, sum$ s
where o.obj# = s.obj# and o.type# = 42 AND bitand(s.mflags, 8) = 8;

如果查出来有结果,协助完成刷新
exec DBMS_MVIEW.REFRESH(’&MVIEW_NAME’,‘C’,atomic_refresh=>false);

3.5 确保没有数据文件存在热备模式
select * from v$backup where status!=‘NOT ACTIVE’;

3.6 清空回收站
PURGE DBA_RECYCLEBIN;

四 升级预检查工具Pre-Upgrade Information Tool

停止监听
lsnrctl stop

启动升级的预检查工具
工具箱会给出11g升级到19c,目前需要我们改进的地方(*号为必须修改)

$ORACLE_HOME/jdk/bin/java -jar java -jar /oracle/app/product/19.3.0/rdbms/admin/preupgrade.jar TERMINAL TEXT

4.1 修改memory_target值

Memory必须大于1.2G
alter system set memory_max_target=1500m scope=spfile;
alter system set memory_target=1500m scope=spfile;
shutdown immediate

4.2 修改recover_file_dest

确保recover_file_dest值大于5G
alter system set db_recovery_file_dest_size=5000M scope=both;

4.2 手动移除oracle插件(节省升级时间)

移除EM
(oracle的管理监控软件,通过emctl status dbconsole可以确认EM组件是否运行,当数据库软件从11g升级到19c以后会失效,所以需要手动移除节省升级时间)

emctl stop dbconsole
SET ECHO ON;
        SET SERVEROUTPUT ON;
        @emremove.sql

移除OLAP
(oracle的联机处理软件,通过select value from v$option where parameter = ‘OLAP’;可以确认是否使用该组件,当数据库软件从11g升级到19c原先olap组件会失效,所以需要手动移除节省升级时间)

----> Remove OLAP Catalog
SQL> @?/olap/admin/catnoamd.sql
----> Remove OLAP API
SQL> @?/olap/admin/olapidrp.plb
SQL> @?/olap/admin/catnoxoq.sql
----> Deinstall APS - OLAP AW component
SQL> @?/olap/admin/catnoaps.sql
SQL> @?/olap/admin/cwm2drop.sql
----> Recompile invalids
SQL> @?/rdbms/admin/utlrp.sql

移除Expression Filter (EXF) or Rules Manager (RUL)
(oracle的功能性组件,通过SELECT comp_name,version,STATUS FROM dba_registry;可以确认是否使用该组件,当数据库软件从11g升级到19c原先olap组件会失效,所以需要手动移除节省升级时间)

/oracle/app/product/19.3.0/rdbms/admin/catnoexf.sql 

执行脚本,解决预检查里标明可通过脚本解决的问题(脚本包含了收集统计信息)

SQL>@/oracle/app/cfgtoollogs/zwy/preupgrade/postupgrade_fixups.sql

4.3 确保空间足够

预检查工具将会提前告诉你这些表空间将会扩展成的大小,确保空间足够

五 开始升级

5.1 确认升级前版本以及组件状态

select comp_name,version,status from sys.dba_registry;

11.2.0.4如何升级到19c_第10张图片

5.2 修改环境变量

vi ~/.bash_profile
export ORACLE_HOME=/oracle/app/product/19.3.0

5.3 升级数据库
关闭数据库
shutdown immediate
使用dbua升级数据库
$ORACLE_HOME/bin/dbua
输入sys密码

11.2.0.4如何升级到19c_第11张图片
11.2.0.4如何升级到19c_第12张图片

11.2.0.4如何升级到19c_第13张图片
启用并行升级
如果要在升级过程中启用并行性,请选择此选项。根据可同时处理脚本和进程运行的CPU数量,并行运行升级进程减少了执行升级所需的时间。

在升级后重新编译无效对象(建议手动)
此选项在升级完成后重新编译所有无效的PL/SQL模块。如果在升级后阶段没有DBUA重新编译无效对象,则必须在数据库升级后手动重新编译无效对象。

升级时区数据
此选项更新此版本的时区数据文件。如果不选择此选项,则必须在升级后手动更新时区配置文件。
指定要执行的自定义SQL脚本.

这三个全部勾选,next

11.2.0.4如何升级到19c_第14张图片
选择备份方法,闪回,rman或者选择已有自己的备份策略

11.2.0.4如何升级到19c_第15张图片
11.2.0.4如何升级到19c_第16张图片
11.2.0.4如何升级到19c_第17张图片
不配置em

开始升级
11.2.0.4如何升级到19c_第18张图片
11.2.0.4如何升级到19c_第19张图片
升级完成,总耗时1小时14分

5.4 回退措施
还原事先备份好的备份片

六 升级后工作

6.1 升级后检查数据库状态
查看数据字典的状态

 spool /tmp/regInvalid.out
 set echo on
-- query registry
 set lines 80 pages 100
select substr(comp_id,1,15) comp_id,substr(comp_name,1,30)
      comp_name,substr(version,1,10) version,status
from dba_registry order by modified;

11.2.0.4如何升级到19c_第20张图片

6.2 检查无效对象
查询无效对象

select owner, object_name, object_type from dba_invalid_objects order by owner, object_type;

如果有无效对象,需要进行编译无效对象

@?/rdbms/admin/utlrp.sql

6.3 升级依赖于oracle维护的类型的表

查询是否存在依赖于oracle维护的表

COLUMN owner FORMAT A30
COLUMN table_name FORMAT A30
SELECT DISTINCT owner, table_name
FROM dba_tab_cols
WHERE data_upgraded = 'NO'
ORDER BY 1,2;

如果存在,运行脚本升级

SET SERVEROUTPUT ON
@utluptabdata.sql

6.4 启用新的扩展数据类型

启用Oracle数据库12中引入的32767字节限制,运行升级脚本

CONNNECT SYS / AS SYSDBA
SHUTDOWN IMMEDIATE;
STARTUP UPGRADE;
ALTER SYSTEM SET max_string_size=extended;
START $ORACLE_HOME/rdbms/admin/utl32k.sql
SHUTDOWN IMMEDIATE;
STARTUP;

6.5 查看Time Zone是否更新

SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value FROM DATABASE_PROPERTIES 
WHERE PROPERTY_NAME LIKE 'DST_%' ORDER BY PROPERTY_NAME;

19c以后,DST_PRIMARY_TT_VERSION默认为32

6.6 重新收集统计信息

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

6.7 配置sqlnet.ora
11g升级成19c后,为了能够让后续的10g,11g客户端仍然可以继续连接,需要在sqlnet.ora文件中配置

SQLNET.ALLOWED_LOGON_VERSION_SERVER=11

升级成功!

你可能感兴趣的:(ORACLE19C,oracle)