服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Oracle - AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

2022-01-25 22:45Lucifer三思而后行Lucifer Oracle

Oralce 19C 版本已经趋于成熟,而 11GR2 版本Oracle已经在 2020 年停止支持,意味着不再更新 bug 补丁。因此,升级 19C 是未来的大趋势。

前言

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

AutoUpgrade 快速升级 Oracle 数据库

根据上图所示介绍,Oracle 推出一种新的升级方式,升级过程简单且非常高效!

一、环境准备

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

AutoUpgrade 快速升级 Oracle 数据库

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

「AutoUpgrade 工具:」

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

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

二、升级前准备

拷贝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<>/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

AutoUpgrade 快速升级 Oracle 数据库

2、源端创建并编辑config文件

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

##参照生成的config文件,编写config
mkdir /soft/upg_logs /soft/logs
cat</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

AutoUpgrade 快速升级 Oracle 数据库

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

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

AutoUpgrade 快速升级 Oracle 数据库

注意: 可以通过 lsj 命令查看当前JOB的运行情况。

「可以通过网页查看检查情况:」

cd /soft/logs
python -m SimpleHTTPServer 8000

打开网页访问: http://10.211.55.110:8000/lucifer/100/prechecks/lucifer_preupgrade.html AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

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

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

AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库注意: 可以通过 status -job 101 命令查看当前JOB的运行情况。 AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

三、正式升级

1、关闭源库

sqlplus / as sysdba
shutdown immediate

AutoUpgrade 快速升级 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 <>/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

AutoUpgrade 快速升级 Oracle 数据库AutoUpgrade 快速升级 Oracle 数据库

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

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

##参照生成的config文件,编写config
mkdir /soft/upg_logs /soft/logs
cat</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

AutoUpgrade 快速升级 Oracle 数据库AutoUpgrade 快速升级 Oracle 数据库

「注意:」 源端目录可以随意填写一个目录,例如:/tmp。

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

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

AutoUpgrade 快速升级 Oracle 数据库

6、监控升级情况

「通过python来创建一个HTTPServer网页来监控升级情况:」

cd /soft/upg_logs/cfgtoollogs/upgrade/auto
python -m SimpleHTTPServer 8000

打开网页访问:http://10.211.55.102:8000/state.html,网页会自动刷新执行情况:

AutoUpgrade 快速升级 Oracle 数据库

等待升级完成即可!

AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库AutoUpgrade 快速升级 Oracle 数据库至此,AutoUpgrade工具升级结束!

四、升级后处理

1 配置sqlnet.ora

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

AutoUpgrade 快速升级 Oracle 数据库AutoUpgrade 快速升级 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;

AutoUpgrade 快速升级 Oracle 数据库AutoUpgrade 快速升级 Oracle 数据库

五、升级为PDB并且插入CDB

通过以上操作可以异机升级数据库,但是只升级到NON-CDB模式。那么如何直接升级成PDB呢? AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

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

AutoUpgrade 快速升级 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</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

AutoUpgrade 快速升级 Oracle 数据库

「目标端执行升级操作(deploy模式):」

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

AutoUpgrade 快速升级 Oracle 数据库AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

「等待转换完毕:」

AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

「升级后检查:」

AutoUpgrade 快速升级 Oracle 数据库

AutoUpgrade 快速升级 Oracle 数据库

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

参考文档:

  • Oracle AutoUpgrade between two servers
  • Oracle AutoUpgrade between two servers – and Plugin?
  • AutoUpgrade with Source and Target Database Homes on Different Servers

原文地址:https://mp.weixin.qq.com/s/ebpMdmozKOR6XZSMKsG2DQ

延伸 · 阅读

精彩推荐