【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!Oralce 19C版本已经趋于成熟,而11GR2版本Oracle已经在20年停止支持,意味着不再更新bug补丁。因此,升级19C是未来的大趋势。

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

作者简介

  • 作者:LuciferLiu,中国DBA联盟(ACDU)成员。
  • 目前从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。
  • 现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。

前言

Oralce 19C版本已经趋于成熟,而11GR2版本Oracle已经在20年停止支持,意味着不再更新bug补丁。因此,升级19C是未来的大趋势,本文就来讲解下Oracle如何快速安装的升级到19C版本。
升级流程

一、环境准备

演示环境安装过程忽略,可参考:

脚本下载 Github:github.com/pc-study/In…

本次测试尽量按照生产环境升级进行模拟,故而使用2台主机进行测试:

节点 主机版本 主机名 实例名 Oracle版本 IP地址
源库 RHEL6.9 lucifer lucifer 11204(无补丁) 10.211.55.110
目标库 RHEL6.9 cdb10c 11204(补丁:29585399) 10.211.55.102

注意:源库为生产环境linux 6系统,目标库为升级环境,由于19C无法安装在linux 6系统,故而选择异机升级,保留生产环境用于失败回退。

根据 MOS文档 2485457.1 可以获取最新版AutoUpgrade工具下载地址:

  • The most recent version of AutoUpgrade can be downloaded via this link: version 20210421.

二、升级前准备

拷贝19C的jdk到源库:

 scp -r $ORACLE_HOME/jdk/ 10.211.55.110:/soft/

注意:AutoUpgrade工具需要JDK版本1.8以上,11GR2的jdk版本为1.5不支持,因此需要使用19C的ORACLE_HOME中JDK版本。

1 设置JAVA环境变量

  • oracle用户下java环境变量配置
##使用19c环境的ORACLE_HOME JDK
su - oracle
cat<<EOF >>/home/oracle/.bash_profile export JAVA_HOME=/soft/jdk/bin export PATH=/soft/jdk/bin:\$PATH EOF

source /home/oracle/.bash_profile

java -version
java -jar /soft/autoupgrade.jar -version

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

2 源端创建并编辑config文件

java -jar /soft/autoupgrade.jar -create_sample_file config /soft/config.cfg

##参照生成的config文件,编写config
mkdir /soft/upg_logs /soft/logs
cat<<EOF >/soft/config.cfg global.autoupg_log_dir=/soft/upg_logs # # Database number 1 # upg1.dbname=lucifer upg1.start_time=NOW upg1.source_home=/u01/app/oracle/product/11.2.0/db upg1.target_home=/u01/app/oracle/product/19.3.0/db upg1.sid=lucifer upg1.log_dir=/soft/logs upg1.upgrade_node=localhost upg1.target_version=19 upg1.restoration=no EOF

chown -R oracle:oinstall /soft

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

3 升级前源库进行分析检查

java -jar /soft/autoupgrade.jar -config /soft/config.cfg -mode analyze

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!
注意:可以通过 lsj 命令查看当前JOB的运行情况。

  • 可以通过网页查看检查情况:
cd /soft/logs
python -m SimpleHTTPServer 8000

打开网页访问 http://10.211.55.110:8000/lucifer/100/prechecks/lucifer_preupgrade.html
【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

4 升级前源库执行修复脚本

java -jar /soft/autoupgrade.jar -config /soft/config.cfg -mode fixups

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!
注意:可以通过 status -job 101 命令查看当前JOB的运行情况。
【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

三、正式升级

1 关闭源库

sqlplus / as sysdba
shutdown immediate

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

2 拷贝源库数据文件,日志文件,参数文件,密码文件到目标端,均在源端操作

su - oracle
##拷贝数据文件,控制文件,日志文件,临时文件
scp -r /oradata/lucifer/ 10.211.55.102:/oradata
scp -r /u01/app/oracle/fast_recovery_area/lucifer/control02.ctl 10.211.55.102:/oradata/lucifer
##拷贝参数文件
scp spfilelucifer.ora 10.211.55.102:/u01/app/oracle/product/19.3.0/db/dbs
##拷贝密码文件
scp orapwlucifer 10.211.55.102:/u01/app/oracle/product/19.3.0/db/dbs

3 目标库打开实例到upgrade模式,均在目标端操作

##创建文件夹
mkdir -p /u01/app/oracle/admin/lucifer/adump
mkdir -p /u01/app/oracle/fast_recovery_area/lucifer

mv /oradata/lucifer/control02.ctl /u01/app/oracle/fast_recovery_area/lucifer/control02.ctl

##/etc/oratab增加oracle_sid
cat <<EOF >>/etc/oratab lucifer:/u01/app/oracle/product/19.3.0/db:Y EOF

su - oracle
##替换环境变量或者设置ORACLE_SID
export ORACLE_SID=lucifer
sqlplus / as sysdba
startup upgrade
  • Oracle环境变量如下:
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 #AL32UTF8,ZHS16GBK
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db
export ORACLE_HOSTNAME=cdb19c
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=lucifer
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
alias sas='sqlplus / as sysdba'
alias alert='tail -500f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log|more'
export PS1="[`whoami`@`hostname`:"'$PWD]$ '
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl'
alias asmcmd='rlwrap asmcmd'
alias adrci='rlwrap adrci'
alias ggsci='rlwrap ggsci'
alias dgmgrl='rlwrap dgmgrl'
################OracleEnd###########################
export JAVA_HOME=$ORACLE_HOME/jdk/bin
export PATH=$ORACLE_HOME/jdk/bin:$PATH

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

4 目标端创建并编辑config文件

java -jar /soft/autoupgrade.jar -create_sample_file config /soft/config.cfg

##参照生成的config文件,编写config
mkdir /soft/upg_logs /soft/logs
cat<<EOF >/soft/config.cfg global.autoupg_log_dir=/soft/upg_logs upg1.dbname=lucifer upg1.start_time=NOW upg1.source_home=/tmp upg1.target_home=/u01/app/oracle/product/19.3.0/db upg1.sid=lucifer upg1.log_dir=/soft/logs upg1.upgrade_node=localhost upg1.target_version=19 upg1.restoration=no EOF

chown -R oracle:oinstall /soft

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!
注意:源端目录可以随意填写一个目录,例如:/tmp。

5 目标端执行升级操作(upgrade模式)

java -jar /soft/autoupgrade.jar -config /soft/config.cfg -mode upgrade

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

6 监控升级情况

  • 通过python来创建一个HTTPServer网页来监控升级情况:
cd /soft/upg_logs/cfgtoollogs/upgrade/auto
python -m SimpleHTTPServer 8000

至此,AutoUpgrade工具升级结束。

四、升级后处理

1 配置sqlnet.ora

cd $TNS_ADMIN
cat <<EOF >>sqlnet.ora SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 EOF

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

2 检查所有组件

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;

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

五、升级为PDB并且插入CDB

  • 通过以上操作可以异机升级数据库,但是只升级到NON-CDB模式。那么如何直接升级成PDB呢?
    【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

1 目标端需要创建CDB模式的数据库实例

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

2 使用刚刚升级成功的lucifer作为源端进行转pdb

  • 目标端创建并编辑config文件
java -jar /soft/autoupgrade.jar -create_sample_file config /soft/config.cfg

##参照生成的config文件,编写config
mkdir /soft/upg_logs /soft/logs
rm -rf /soft/upg_logs/*
rm -rf /soft/logs/*

cat<<EOF >/soft/config.cfg global.autoupg_log_dir=/soft/upg_logs upg1.dbname=lucifer upg1.start_time=NOW upg1.source_home=/u01/app/oracle/product/19.3.0/db upg1.target_home=/u01/app/oracle/product/19.3.0/db upg1.sid=lucifer upg1.log_dir=/soft/logs upg1.upgrade_node=localhost upg1.target_version=19 upg1.restoration=no upg1.target_cdb=cdb19c upg1.target_pdb_name=lucifer upg3.target_pdb_copy_option=file_name_convert=('/oradata/lucifer/', '/oradata/CDB19C/lucifer/') EOF

chown -R oracle:oinstall /soft

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

  • 目标端执行升级操作(deploy模式)
java -jar /soft/autoupgrade.jar -config /soft/config.cfg -mode deploy

【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!
【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

  • 等待转换完毕
    【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!
    【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!
  • 升级后检查
    【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!

至此,完整的升级流程已经演示结束,希望能够帮助到。

参考文档:


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

今天的文章【2021最新升级秘籍】手把手教你如何快速安全的升级Oracle数据库,包学包会!分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/16024.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注