Oracle数据库版本和补丁基础

2022-08-19 21:18:44 浏览数 (1)

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

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

数据库的版本

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

代码语言:javascript复制
--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输出例

代码语言:javascript复制
$ 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),由以下内容组成。

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

各位数字的介绍:

代码语言:javascript复制
第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。

例如:

代码语言:javascript复制
    18.12.1.0.0
    18.12.2.0.0

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

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

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

代码语言:javascript复制
--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查看数据库的版本。

例:

代码语言:javascript复制
  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>的补丁状况和版本

例:

代码语言:javascript复制
$ ./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之前的版本)

代码语言:javascript复制
--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之后的版本)

代码语言:javascript复制
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之后的版本)

代码语言:javascript复制
SQL> select con_id,patch_id, action, action_time, description, patch_type from cdb_registry_sqlpatch order by action_time;

0 人点赞