暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 11g 与 19c 共存的场景

生有可恋 2022-10-18
3622

当数据库的规模太大时,一般会将这个库独立出来单独管理。相反如果有很多规模小于500G的小库零零散散的分布在各个单机环境中,此时推荐使用CDB、PDB 的形式集中管理。

对于医院的应用场景,核心数据库HIS规模已经超10T,此时将数据库由11g升级到 12c 或之后的 19c 可插拔数据库架构已经没有太大必要,相反还需要将所有的客户端版本升级到 11.2.0.4 以上。目前医院的数据库重新规划之后决定只用保留两套库,其中规模比较大的HIS库还是延用11g,避免因升级造成的动荡,其它的数据规模小的数据库全部以 PDB 形式合并到 19c 中。

在服务器硬件性能足够的情况下,一套硬件可以用来跑两套不同版本的数据库。通过定义不同的 ORACLE_HOME,可以将不同版本的数据库安装到不同的目录中。此时需要定义两套 bash 的环境参数,默认 shell 调用的顺序为 /etc/bash.bashrc -> etc/bash_profile -> ~/.bash_profile -> ~/.bashrc ,通过保留两套 .bash_profile 即可实现 11g 和 19c 的版本切换。

11g 的 bash 环境:

    # .bash_profile_11g


    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi


    # User specific environment and startup programs


    PATH=$PATH:$HOME/.local/bin:$HOME/bin;export PATH
    umask 022
    ORACLE_SID=his1;export ORACLE_SID
    ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;export ORACLE_HOME
    ORACLE_TREM=xterm;export ORACLE_TERM
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOMR/rdbms/jlib;export CLASSPATH
    NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss";export NLS_DATE_FORMAT
    PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:/usr/sbin;export PATH


    复制

    19c 的 bash 环境:

      # .bash_profile_19c


      # Get the aliases and functions
      if [ -f ~/.bashrc ]; then
      . ~/.bashrc
      fi


      # User specific environment and startup programs


      PATH=$PATH:$HOME/.local/bin:$HOME/bin;export PATH
      umask 022
      export ORACLE_BASE=/u01/app/oracle
      export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
      export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
      export LD_LIBRARY_PATH=$ORACLE_HOME/lib
      export LANG=en_US
      #export NLS_LANG=american_america.ZHS16GBK
      #export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
      export ORACLE_SID=xycdb1
      复制

      可以保留一套 .bash_profile 让其成为默认设置,另一套重命名为 .bash_profile_11g,当需要切环境时执行 source .bash_profile_11g 切换 Oracle 环境。

      在两套库共存的系统上,同样可以通过 ps 命令查看当前两套库的 SID :

        $ ps -eaf| grep  ora_pmon | grep -v grep
        oracle 89472 1 0 Aug11 ? 01:03:40 ora_pmon_his1
        oracle 89562 1 0 Aug11 ? 00:20:05 ora_pmon_xycdb1
        复制

        连接数据库还是通过设置 ORACLE_SID 来指定需要连接的数据库,同样可以将 ORACLE_SID 配置在 .bash_profile 中,随数据库版本环境一起切换。使用前可以使用 env 命令确认当前的 Oracle 环境变量。

        当一个操作系统上部署了多套库,我们一般通过 ORACLE_SID 来区分连接的是哪套库。如果不同库还用的是不同的 Oracle 版本,此时除了区分 ORACLE_SID,还要重新设置 PATH 等环境变量,因为不同版本用的客户端也是不同的。高版本 sqlplus 客户端,连带的命令也是不一样的。

        比如 11g 的 sqlplus,其上 show 命令支持的子命令为:

          SQL> show REL
          release 1102000400
          SQL> ? show


          SHOW
          ----


          Shows the value of a SQL*Plus system variable, or the current
          SQL*Plus environment. SHOW SGA requires a DBA privileged login.


          SHO[W] option


          where option represents one of the following terms or clauses:
          system_variable
          ALL
          BTI[TLE]
          ERR[ORS] [{FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER
          | VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS} [schema.]name]
          LNO
          PARAMETERS [parameter_name]
          PNO
          RECYC[LEBIN] [original_name]
          REL[EASE]
          REPF[OOTER]
          REPH[EADER]
          SGA
          SPOO[L]
          SPPARAMETERS [parameter_name]
          SQLCODE
          TTI[TLE]
          USER


          复制

          而到了 19c ,除了支持之前的 show user, show sga 还加了 cdb、pdb 相关的指令:

            SQL> show rel
            release 1915000000
            SQL> ? show


            SHOW
            ----


            Shows the value of a SQL*Plus system variable, or the current
            SQL*Plus environment. SHOW SGA requires a DBA privileged login.


            SHO[W] option


            where option represents one of the following terms or clauses:
            system_variable
            ALL
            BTI[TLE]
            CON_ID
            CON_NAME
            EDITION
            ERR[ORS] [{ANALYTIC VIEW | ATTRIBUTE DIMENSION | HIERARCHY | FUNCTION
            | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER | VIEW | TYPE
            | TYPE BODY | DIMENSION | JAVA CLASS} [schema.]name]
            LNO
            PARAMETERS [parameter_name]
            PDBS
            PNO
            RECYC[LEBIN] [original_name]
            REL[EASE]
            REPF[OOTER]
            REPH[EADER]
            SGA
            SPOO[L]
            SPPARAMETERS [parameter_name]
            SQLCODE
            TTI[TLE]
            USER
            复制

            19c 多出来的指令:

              SQL> show con_id


              CON_ID
              ------------------------------
              1
              SQL> show con_name


              CON_NAME
              ------------------------------
              CDB$ROOT
              SQL> show pdbs


              CON_ID CON_NAME OPEN MODE RESTRICTED
              ---------- ------------------------------ ---------- ----------
              2 PDB$SEED READ ONLY NO
              3 HLWSDB READ WRITE NO
              4 PACSDB READ WRITE NO
              5 ZZXTDB READ WRITE NO
              6 TMIS READ WRITE NO
              7 TXDBNQ READ WRITE NO
              8 WALLASON READ WRITE NO


              复制

              不同版本的 sqlplus 客户端可执行文件所在的目录:

                [19c]$ which sqlplus
                /u01/app/oracle/product/19.3.0/dbhome_1/bin/sqlplus
                [11g]$ which sqlplus
                /u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus
                复制

                对于组成 RAC 的 11g 和 19c,监听、ASM等集群组件可以共用,高版本兼容低版本,所以使用一套 grid 即可:

                  $ whoami
                  grid
                  $ which lsnrctl
                  /u01/app/19.3.0/grid/bin/lsnrctl
                  $ which asmcmd
                  /u01/app/19.3.0/grid/bin/asmcmd
                  $ which crsctl
                  /u01/app/19.3.0/grid/bin/crsctl
                  复制


                  全文完。

                  如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

                  文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论