前言
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<>/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</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 <>/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</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 <>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</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
原文地址:https://mp.weixin.qq.com/s/ebpMdmozKOR6XZSMKsG2DQ