opatch_bug_9772888

相信很多升级到oracle 10205这个版本的用户都碰见过比较noisy的信息提示:

"WARNING:Could not lower the asynch I/O limit to 160 for SQL direct I/O. It is set to -1"


可能不会在alert.log中出现,可能仅仅会出现在udump中,以trace文件的形式出现,不断的产生大小1k左右的文件。

其实影响比较小,在MOS上有一篇文档介绍了相关的bug信息。

Bug 9772888 – Needless "WARNING:Could not lower the asynch I/O limit to .. for SQL direct I/O It is set to -1" messages [ID 9772888.8]

这篇文章比较详细的记录了这个"噪音",并给出了相应的解决方案。
—————————————————————————————-
This issue is fixed in
12.1 (Future Release)
11.2.0.2 (Server Patch Set)
10.2.0.5.2 Patch Set Update
10.2.0.5 Patch 1 on Windows Platforms

—————————————————————————————


文档中的workaround也解释说,相关的patch也仅仅是帮助"not produce noise"..

————————————————————————————————–
Description
Trace files may be seen with warning of the form:
 WARNING:Could not lower the asynch I/O limit to 160 for SQL direct I/O.
 It is set to -1
 
This bug is specifically for the case of messages showing "It is set
to -1" in the message.
 
Workaround
  Ignore the message – it is spurious and of no value.
  The fix only hides the message so that it does not produce "noise"
——————————————————————–

如果是windows平台的server,可以参考最后一个解决方案:10.2.0.5 Patch 1 on Windows Platforms

多说一句,MOS上准备的patch似乎按照这样的逻辑分类:windows、非windows,所有windows相关的patch都是单独分类的。(有待求证)

"10.2.0.5.2 Patch Set Update"都是非windows平台的补丁。

后续开始opatch 相关补丁的过程,如果在windows平台上,还需要注意一些文件被占用的问题,如下。

"补丁程序13460968: ORACLE 10G 10.2.0.5 PATCH 14 BUG FOR WINDOWS (64-BIT AMD64 AND INTEL EM64"

是在没有购买"Software Extended Support"服务情况下,能够取得的10205最高的patch bundle了,而非windows平台的补丁是以PatchSetUpdate的形式出现的。

opatch的过程不算麻烦,按照readme使用opatch apply即可,但是在windows下面需要注意将oracle相关的进程关闭掉,即使关闭掉所有与oracle相关的服务,可能仍然会遇见文件占用问题。

——————————————————————————————————————————
Running prerequisite checks…
信息:Space Needed : 1091658872
信息:Prereq checkPatchApplicableOnCurrentPlatform Passed for patch : 13460968
信息:
Following files are active :
E:oracleproduct10.2.0db_1binoci.dll
信息:Prerequisite check "CheckActiveFilesAndExecutables" failed.
The details are:

Following files are active :
E:oracleproduct10.2.0db_1binoci.dll

严重:OUI-67074:在先决条件检查期间 ApplySession 失败: Prerequisite check "CheckActiveFilesAndExecutables" failed.
信息:系统无任何变化, OPatch 不会尝试还原系统
信息:Finishing ApplySession at Tue Dec 04 16:51:42 CST 2012
信息:Total time spent waiting for user-input is 0 seconds.  Finish at Tue Dec 04 16:51:42 CST 2012
信息:堆栈说明: oracle.opatch.PrereqFailedException: Prerequisite check "CheckActiveFilesAndExecutables" failed.
信息:堆栈跟踪: oracle.opatch.OPatchSessionHelper.runApplyPrereqs(OPatchSessionHelper.java:4416)
信息:堆栈跟踪: oracle.opatch.ApplySession.processLocal(ApplySession.java:3695)
信息:堆栈跟踪: oracle.opatch.ApplySession.process(ApplySession.java:5577)
信息:堆栈跟踪: oracle.opatch.OPatchSession.main(OPatchSession.java:1719)
信息:堆栈跟踪: oracle.opatch.OPatch.main(OPatch.java:630)
———————————————————————————————–

报错显示E:oracleproduct10.2.0db_1binoci.dll还是active、被占用的,在windows平台上,很可能是windows服务中某些关联的服务是在OS启动时,自启动的。
而这些服务与ORACLE_HOME中的某些文件占用是存在关联关系的。关闭掉Distribute Transaction Coordinator服务,问题得到解决,opatch apply一路顺利。

一般按照readme执行完毕opatch apply之后还有一些post script需要执行,来完成收尾的工作。

(1)
For each database instance running out of the ORACLE_HOME being patched, connect to the database using SQL*Plus as SYSDBA and run catcpu.sql as follows:

> cd %ORACLE_HOME%BUNDLEPatch14
> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catcpu.sql
SQL> QUIT

(2)
If catcpu.sql reports any Invalid Objects, compile the invalid objects as follows.

(For large numbers of objects, this compilation step can take some time. If you are applying this patch through the Oracle Enterprise Manager console, you will be prompted to run this compilation script.)

> cd %ORACLE_HOME%rdbmsadmin
> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlprp.sql 0

To check for invalid objects, execute the following statement:

SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';

整个opatch apply 13460968的过程基本结束,有个奇怪问题,几次10201打patchset到10205都遇到一个invalid的object无法处理,一个类型为type的对象,名称叫STR_SPLIT。

–EOF–