AutoUpgrade 快速升级 Oracle 数据库

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

前言

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

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

一、环境准备

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

📢 注意: 源库为生产环境 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<<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

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

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

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

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

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

cd /soft/logs
python -m SimpleHTTPServer 8000

打开网页访问: http://10.211.55.110:8000/lucifer/100/prechecks/lucifer_preupgrade.html

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

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

📢 注意: 可以通过 status -job 101 命令查看当前JOB的运行情况。

三、正式升级

1、关闭源库

sqlplus / as sysdba
shutdown immediate

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

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

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

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

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

6、监控升级情况

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

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

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

等待升级完成即可!

至此,AutoUpgrade工具升级结束!

四、升级后处理

1 配置sqlnet.ora

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

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;

五、升级为PDB并且插入CDB

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

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

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

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

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

「等待转换完毕:」

「升级后检查:」

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

参考文档:

  • Oracle AutoUpgrade between two servers
  • Oracle AutoUpgrade between two servers – and Plugin?
  • AutoUpgrade with Source and Target Database Homes on Different Servers
责任编辑:姜华 来源: Lucifer三思而后行
相关推荐

2011-05-26 13:29:30

ORACLE数据库升级

2009-12-14 16:00:32

Ruby操作Oracl

2023-12-26 07:40:34

2010-04-23 09:23:44

Oracle 数据库

2011-05-26 10:30:12

Oracle数据库约束

2011-03-10 13:24:26

2015-08-21 12:59:38

Oracle数据库

2010-04-30 12:09:26

Oracle数据库

2011-03-16 08:54:45

Oracle数据库索引

2011-05-19 13:25:14

Oracle数据库

2011-03-30 08:56:43

Zabbix数据库

2011-03-29 10:47:49

ORACLE数据库

2010-04-19 16:01:54

2010-06-17 12:59:07

Oracle

2010-04-14 15:14:11

Oracle数据库

2010-04-02 13:59:08

Oracle数据库

2011-03-07 13:30:53

Oracle数据库

2011-05-24 14:27:42

2011-10-09 09:38:03

OracleNoSQL

2010-08-10 15:02:18

Oracle认证数据库
点赞
收藏

51CTO技术栈公众号