现在的位置: 首页 > 综合 > 正文

数据库日志报:ORA-27300: OS 系统相关操作: spcdr:9261:4200 失败, 状态为: 997

2013年09月18日 ⁄ 综合 ⁄ 共 6074字 ⁄ 字号 评论关闭

 操作系统是:window 2003 server
 数据库版本:10.2.0.1

 警告日志alter_SID.log出现下面错误:

ORA-27300: OS 系统相关操作: spcdr:9261:4200 失败, 状态为: 997
ORA-27301: OS 故障消息: 重叠 I/O 操作在进行中。
ORA-27302: 错误发生在: skgpspawn

alter_SID.log日志:
--------------------------------------------------------------------------------------------------------------------------

Wed Jul 13 14:55:29 2011
Process startup failed, error stack:
Wed Jul 13 14:55:29 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_psp0_2984.trc:
ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997
ORA-27301: OS failure message: 重叠 I/O 操作在进行中。
ORA-27302: failure occurred at: skgpspawn

Wed Jul 13 14:55:30 2011
Process J001 died, see its trace file
Wed Jul 13 14:55:30 2011
kkjcre1p: unable to spawn jobq slave process
Wed Jul 13 14:55:30 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_cjq0_3248.trc:

Wed Jul 13 14:55:35 2011
Process startup failed, error stack:
Wed Jul 13 14:55:35 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_psp0_2984.trc:
ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997
ORA-27301: OS failure message: 重叠 I/O 操作在进行中。
ORA-27302: failure occurred at: skgpspawn

Wed Jul 13 14:55:36 2011
Process J001 died, see its trace file
Wed Jul 13 14:55:36 2011
kkjcre1p: unable to spawn jobq slave process
Wed Jul 13 14:55:36 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_cjq0_3248.trc:

Wed Jul 13 14:56:36 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_j001_1652.trc:
ORA-12012: error on auto execute of job 1
ORA-04030: out of process memory when trying to allocate 8148 bytes (kxs-heap-w,qesaQBInit:buffer)

Wed Jul 13 14:56:36 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_j001_1652.trc:
ORA-00604: error occurred at recursive SQL level 2
ORA-04030: out of process memory when trying to allocate 44 bytes (kxs-heap-d,allocator state)
ORA-12012: error on auto execute of job 1
ORA-04030: out of process memory when trying to allocate 8148 bytes (kxs-heap-w,qesaQBInit:buffer)

Wed Jul 13 14:59:26 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_j000_876.trc:
ORA-12012: 自动执行作业 1 出错
ORA-04030: 在尝试分配 16428 字节 (pga heap,kgh stack) 时进程内存不足

Wed Jul 13 14:59:26 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_j000_876.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-04030: 在尝试分配 16092 字节 (pga heap,kgh stack) 时进程内存不足
ORA-12012: 自动执行作业 1 出错
ORA-04030: 在尝试分配 16428 字节 (pga heap,kgh stack) 时进程内存不足

Wed Jul 13 15:00:45 2011
Process startup failed, error stack:
Wed Jul 13 15:00:45 2011
Errors in file e:\oracle\product\10.2.0\admin\sxserver\bdump\sxserver_psp0_2984.trc:
ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997
ORA-27301: OS failure message: 重叠 I/O 操作在进行中。
ORA-27302: failure occurred at: skgpspawn

--------------------------------------------------------------------------------------------------------------------------

据说这是一个oracle的BUG,你可以查下官方,应该可以找到的:

下面是解决办法:

ORA-27300: OS 系统相关操作: spcdr:9261:4200 失败, 状态为: 997
要命的Oracle bug ,耗尽内存,导致数据库挂掉
这个问题用Oracle10.2.0.1.0版本安装在32位的Windows系统上,非常常见。随便在google就找到很多。
通常会导致系统耗尽内存,导致Oracle数据库挂掉。
把Oracle数据库重启可以临时解决,但过几天还会发生ORA-04030内存耗尽的情况。最好还是打上补丁。


连接数据库时出现,
ORA-12518: TNS: 监听程序无法分发客户机连接

1、用sysdba连接不是数据库,数据库已经挂了

2、alert_sid.log
Sun Apr 19 10:05:56 2009
Process startup failed, error stack:
Sun Apr 19 10:05:56 2009
Errors in file e:\oracle\product\10.2.0\admin\xboms\bdump\xboms_psp0_3124.trc:
ORA-27300: OS 系统相关操作: spcdr:9261:4200 失败, 状态为: 997
ORA-27301: OS 故障消息: 重叠 I/O 操作在进行中。
ORA-27302: 错误发生在: skgpspawn

由此导致频繁的报下面的错误:
Sun Apr 19 10:24:08 2009
Errors in file e:\oracle\product\10.2.0\admin\xboms\bdump\xboms_arc0_3032.trc:
ORA-04030: 在尝试分配 82444 字节 (pga heap,control file i/o buffer) 时进程内存不足

查看:http://**/viewthread.php?tid=129216
and  http://www.itpub.net/thread-1146317-1-1.html

this is a bug !
oracle承认这是一个bug(10.2.0.2.0之前10g版本),BUG 5607984 - ORACLE DOES NOT CLOSE TCP CONNECTIONS. REMAINS IN CLOSE_WAIT STATE. [On Windows 32-bit].
可打补丁patch number 5639232 ,该补丁有100多MB大。

在操作系统的boot.ini文件中增加'/3G',然后降低SGA。

 

1.在命令行打开c:\boot.ini 文件,在文件的末尾加上 “/3GB”

如:c:\boot.ini文件内容:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /noexecute=optout /fastdetect /3GB

 

metalink上的解释如下:

ChangesThe '/3GB'  switch was added to the  'boot.ini'  file at the OS level but the errors are eventually encountered when the database is under heavy load. CauseOS resource issue.
The maximum amount of addressable memory by a process ('oracle.exe' for example) running in a
32-Bit Windows environment has been reached.

In a 32-Bit Windows environment, the total addressable memory by a single process is a 4GB. On Windows, the OS reserves half of this memory by default for kernel memory, leaving 2GB of addressable memory for a user process. By placing the '/3GB' switch in the 'boot.ini'  file, this changes the ratio of kernel memory and user memory. When he  '/3GB'  switch is in place, processes (such as 'oracle.exe’) can address 3GB of virtual memory out of the total 4GB of addressable memory. However, once the 3GB of virtual memory is depleted, the process will fail. SolutionTo implement the solution, please execute the following steps:

Tune the application running on the 32-bit environment so that it will not consume greater than 2.7GB of virtual memory when the  '/3GB'  switch is set in the  'boot.ini'  file. In the case of Oracle encountering the OS resource issue, the options are:

1) Reduce the amount of SGA needed to be allocated for the database.
2) Limit the number of dedicated connections to the database and the amount of memory each user process will consume.
3) Change from dedicated connections to multi-threaded server (MTS) connections as MTS only uses a fraction of the amount of memory allocated to each user process when initial connection to the database is established.

See Metalink Note 225349.1 for an in depth discussion regarding memory usage in a 32-bit Windows environment

===========================

ORA-27300 ORA-27301 ORA-27302 in alert log. Cannot connect to database.
  文档 ID:  注释:371074.1 类型:  PROBLEM
  上次修订日期:  30-JAN-2008 状态:  MODERATED

In this Document
  Symptoms
  Changes
  Cause
  Solution
  References

-------------------------------------------------------------------------------

2.降低SGA

SGA:数据缓存、共享池、大池、Java池...
PGA:堆栈空间、用户会话数据、游标状态...

 

修改SGA必须保持的原则:

1.sga_target不能大于sga_max_size,可以设置为相等。

2.SGA加上PGA等其他进程占用的内存总数必须小于操作系统的物理内存。

做如下操作前,必须备份dbs目录下的所有文件.

方法一:直接SQL命令行修改:

SQL>alter system set sga_target=1400M scope=spfile;

 

方法二:通过EM修改:

以SYS登陆到EM:管理->(数据库配置)所有初始化参数—>SPFile->
                在此界面可以直接定义sga_target与sga_max_size
然后重启数据库即可!

【上篇】
【下篇】

抱歉!评论已关闭.