当前位置 博文首页 > lucifer三思后行:都2021了,还愁Oracle升级步骤麻烦吗?学会本

    lucifer三思后行:都2021了,还愁Oracle升级步骤麻烦吗?学会本

    作者:[db:作者] 时间:2021-06-07 18:14

    参考:

    Oracle AutoUpgrade between two servers

    Oracle AutoUpgrade between two servers – and Plugin?

    官方文档:AutoUpgrade with Source and Target Database Homes on Different Servers

    一、环境准备

    测试环境安装过程忽略,可参考:

    10分钟!一键部署Oracle 11GR2单机

    30分钟!一键部署Oracle 19C单机CDB+PDB

    脚本使用和下载可参考Github:https://github.com/pc-study/InstallOracleshell

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

    节点主机版本主机名实例名Oracle版本IP地址
    源库redhat 6.9luciferlucifer11204(未安装补丁)10.211.55.110
    目标库redhat 7.9cdb19c?19.3.0(补丁 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.

    二、升级前准备

    由于AutoUpgrade工具需要JDK版本1.8以上,11GR2的jdk版本为1.5不支持,所以使用19C的ORACLE_HOME中JDK版本。

    拷贝19C的jdk到源库:

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

    1、设置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

    Notes:可以通过 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

    Notes:可以通过 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

    环境变量:

    ################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

    Notes:源端目录可以随意填写一个目录,例如:/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。

    3、目标端创建并编辑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

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

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

    等待转换完毕。

    6、升级后检查

    关于我:

    CSDN博客:lucifer三思后行

    微信公众号:Lucifer三思而后行

    下面的是我的公众号二维码图片,欢迎关注。

    Lucifer三思而后行