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

Oracle数据库版本和补丁基础

2573

【免责声明】本公众号文章仅代表个人观点,与任何公司无关。

Oracle数据库之所以强大,和其30年来不断迭代以及更新是绝对分不开的。

而在这个迭代过程中,各种版本和补丁的概念也变得非常复杂,本文将帮助你理清Oracle版本相关知识以及补丁相关的概念。

数据库的版本

当你使用SQL*Plus等工具成功连接数据库库后,SQL命令提示符前通常会显示出下面的提示信息:

    --11g输出例
    $ sqlplus as sysdba
    SQL*Plus: Release 11.2.0.4.0 Production on Sun Apr 12 02:41:10 2020
    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL>

    --19c输出例

      $ sqlplus  as sysdba
      SQL*Plus: Release 19.0.0.0.0 - Production on Sun Apr 12 02:40:35 2020
      Version 19.3.0.0.0
      Copyright (c) 1982, 2019, Oracle.  All rights reserved.

      Connected to:
      Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
      Version 19.3.0.0.0

      这个由五位数字组成的如“11.2.0.4.0”、“19.3.0.0.0 ”的信息,表示的是Oracle数据库软件的发行版本信息。

      包括数据库软件发布流程以及Oracle 版本编号,以12.2版本为界限,Oracle进行了一次重要的调整。

          ・数据库 12.1 及以前版本,采用传统的 PSU/BP 流程以及版本编号。

          ・数据库 12.2 及之后版本,将采用新的RU和 RUR流程以及新的版本编号。

      12.2之前的版本编号

      12.2之前的Oracle数据库软件的详细发行版本号(Release Number),由以下内容组成。

        11.2.0.4.0
        | | | | |_ 平台相关发行版本号(Port Specific Maintenance Release
        | | | |___ 特定组件的版本号(Component-Specific Release Number
        | | |_____ 融合中间件的版本号(Internet Application Server (IAS) Release
        | |_______ 数据库维护版本发行号(Database Maintenance Release)
        |_________ 数据库主要发行版本号(Major Database Release

         

         各位数字的介绍:

         

          第1位:数据库主要发行版本号(Major Database Release
          Oracle进行了重大更新的版本,通常功能上的可能有巨大差别。如10g,11g,12c等。


          2位:数据库维护版本发行号(Database Maintenance Release)
          是对主要发行版本的更新。如10gR1,10gR2,11gR1,11gR2,12cR1,12cR2等。


          3位:融合中间件的版本(Internet Application Server (IAS) Release
          通常不是DB使用的版本号,主要目的是与中间件版本进行融合,
          9i前的旧版本中非0(如8.1.7.X),9i以后基本为0


          4位:特定组件的版本号(Component-Specific Release Number
          一般为PSR(Patch Set Release)号,是在主版本上发布的补丁集(Patchsets)


          5位:平台相关发行版本号(Port Specific Maintenance Release


          特定操作系统上软件产品的维护版本,一般为PSU(patch set update)号,是在某个特定的补丁集版本上的集中性地Bug修复。

          12.2之后的版本编号

          从2018年开始,为了更加适应云时代的需要,Oracle数据库产品的新版本发布时间变更成了每年一次, 数据库软件版本编号也采用新的形式。

          新的版本编号主要由三位数组成 – Year.Update.Revision即年.更新.发布。

              ・Year 是发布年份的后两位数字,比如19c,表示该版本发布于2019年。

              ・Update 表示Release Update,一般每个季度发布一次。

              ・Revision 表示基于某个RU的修订,一般每个RU最多两个RUR。

          例如:

                18.12.1.0.0
            18.12.2.0.0

            如何查看数据库版本和补丁状况

            可以通过如下方法查看数据库的版本和补丁状况:

            1. 通过v$version视图查看数据库版本

              --11g输出例
              SQL> select * from v$version;


              BANNER
              --------------------------------------------------------------------------------
              Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
              PL/SQL Release 11.2.0.4.0 - Production
              CORE 11.2.0.4.0 Production
              TNS for Linux: Version 11.2.0.4.0 - Production
              NLSRTL Version 11.2.0.4.0 - Production


              --19c输出例
              SQL> select * from v$version;


              BANNER
              --------------------------------------------------------------------------------
              BANNER_FULL
              ----------------------------------------------------------------------------------------------------
              BANNER_LEGACY CON_ID
              -------------------------------------------------------------------------------- ----------
              Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
              Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
              Version 19.3.0.0.0
              Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 0

              另外,也可以通过如下SQL查看数据库的版本。

              例:

                  SQL> select * from product_component_version;
                PRODUCT
                --------------------------------------------------------------------------------
                VERSION
                --------------------------------------------------------------------------------
                VERSION_FULL
                --------------------------------------------------------------------------------
                STATUS
                --------------------------------------------------------------------------------
                Oracle Database 19c Enterprise Edition
                19.0.0.0.0
                19.3.0.0.0
                Production

                SQL> SET SERVEROUTPUT ON
                SQL> EXEC dbms_output.put_line( dbms_db_version.version );
                    19
                PL/SQL procedure successfully completed.

                2.  通过opatch lsinventory 命令确认<ORACLE_HOME>的补丁状况和版本

                例:

                  $ ./opatch lsinventory
                  Oracle Interim Patch Installer version 11.2.0.3.4
                  Copyright (c) 2012, Oracle Corporation. All rights reserved.


                  Oracle Home : <ORACLE_HOME>
                  Central Inventory : refresh/home/app/oraInventory
                  from : <ORACLE_HOME>/oraInst.loc
                  OPatch version : 11.2.0.3.4
                  OUI version : 11.2.0.4.0
                  Log file location : <ORACLE_HOME>/cfgtoollogs/opatch/opatch2020-04-12_10-16-05AM_1.log
                  Lsinventory Output file location : <ORACLE_HOME>/cfgtoollogs/opatch/lsinv/lsinventory2020-04-12_10-16-05AM.txt
                  -------------------------------------------------------------------------------
                  Installed Top-level Products (1):


                  Oracle Database 11g 11.2.0.4.0
                  There are 1 products installed in this Oracle Home.
                  There are no Interim patches installed in this Oracle Home.
                  --------------------------------------------------------------------------------

                  3. 如果执行过PSU后期安装步骤的话

                  3.1 可以通过字典表的基表registry$history查看PSU状况. (12cR1之前的版本)

                    --11g输出例
                    set linesize 200
                    col action_time format a30
                    col ACTION format a10
                    col NAMESPACE format a15
                    col VERSION format a15
                    col comments format a60
                    col BUNDLE_SERIES format a20
                    col id format 99999
                    SQL>  select * from registry$history;
                    ACTION_TIME ACTION NAMESPACE VERSION ID COMMENTS BUNDLE_SERIES
                    ------------------------------ ---------- --------------- --------------- ------ ------------------------------------------------------------ --------------------
                    24-AUG-13 12.03.45.119862 PM APPLY SERVER 11.2.0.4 0 Patchset 11.2.0.2.0 PSU
                    24-AUG-17 10.54.11.141859 AM   APPLY      SERVER          11.2.0.4             0 Patchset 11.2.0.2.0                      PSU
                    SQL>

                    3.2  可以通过字典表的基表registry$sqlpatch查看PSU状况. (12cR1之后的版本)

                      SQL>select PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION from registry$sqlpatch;
                      --CDB/PDB环境
                      SQL> select con_id,patch_id, action, action_time, description, bundle_series from cdb_registry_sqlpatch order by action_time;

                      3.3 可以通过字典表cdb_registry_sqlpatch查看PSU状况. (18c之后的版本)

                        SQL> select con_id,patch_id, action, action_time, description, patch_type from cdb_registry_sqlpatch order by action_time;

                        后续文章更加精彩,欢迎关注本公众号。

                        ——End——

                        专注于技术不限于技术!

                        用碎片化的时间,一点一滴地提高数据库技术和个人能力。

                        欢迎关注!

                        数据库实战手册(从基础和实战角度了解Oracle数据库):

                        数据库性能问题分析和诊断方法概论

                        通过寄存服务来“理解”Oracle数据库基本体系结构和动作流程

                        数据库的“黑匣子”--故障诊断日志基础

                        数据库故障诊断基础工具之TFA

                        【图】一图了解Oracle数据库简史

                        【图】一图检验Oracle数据库空间管理的知识理解

                        【基础知识】ORACLE数据库错误概述

                        【基础知识】 ORA-600/ORA-700/ORA-7445内部错误的本质


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

                        评论