奇宝库 > Oracle报ora-00603错误不能处理大数据并发的问题解决方案

Oracle报ora-00603错误不能处理大数据并发的问题解决方案

前天用户突然反映某软件总是报错ora-00603。起初,bit是常见的表空间不足之类的问题,但是看一下日志就知道没那么简单。

一些截获的日志如下:

2009年11月5日星期四15时28分53秒

文件d:\ Oracle \ admin \ orcl \ udump \ orcl _ ora _ 4684 . TRC中的错误:

ORA-00603: ORACLE服务器会话因致命错误而终止

ORA-01114:将块写入文件11时出现IO错误(块# 42773)

ORA-27041:无法打开文件

OSD-04002:无法打开文件

错误:(OS 32)另一个程序正在使用这个文件,进程不能访问它。

ORA-01114:将块写入文件11时出现IO错误(块# 42773)

ORA-27041:无法打开文件

OSD-04002:无法打开文件

错误:(OS 32)另一个程序正在使用这个文件,进程不能访问它。

ORA-01114:将块写入文件11时出现IO错误(块# 42773)

ORA-27041:无法打开文件

OSD-04002:无法打开文件

错误:(OS 32)另一个程序正在使用这个文件,进程不能访问它。

其中的文件11是我的程序使用的表空间的数据文件。表中有四个数据文件,加起来大概8G,整体利用率大概70%。数据文件编号分别为9、11、13和14。问题的档案号不一定,时间是随机的。一分钟重复以上日志是可能的,几秒钟重复一次也是可能的。

以下是orcl_ora_4684.trc文件的片段:

JServer版本9.2.0.1.0 -生产

Windows 2000版本5.2服务包2,CPU类型586

实例名:orcl

此实例装入的重做线程:1

Oracle流程编号:30

Windows线程id: 4684,映像:ORACLE。可执行程序的扩展名

***会话ID:(39.280)2009-11-05 15:28:52.000

*** 2009-11-05 15:28:52.000

ksedmp:内部或致命错误

ORA-01114:将块写入文件11时出现IO错误(块# 42773)

ORA-27041:无法打开文件。

OSD-04002:无法打开文件

错误:(OS 32)另一个程序正在使用这个文件,进程不能访问它。

ORA-01114:将块写入文件11时出现IO错误(块# 42773)

ORA-27041:无法打开文件。

OSD-04002:无法打开文件

错误:(OS 32)另一个程序正在使用这个文件,进程不能访问它。

ORA-01114:将块写入文件11时出现IO错误(块# 42773)

ORA-27041:无法打开文件。

OSD-04002:无法打开文件

错误:(OS 32)另一个程序正在使用这个文件,进程不能访问它。

此会话的当前SQL语句:

INSERT INTO 'VIO_JDCZP' ('XH '' HPHM '' HPZL '' PHOTO1 ')值(:1,2,3,4)将ROWID返回到:5

-调用堆栈跟踪-

以十六进制调用入口参数值

位置类型点(?意味着可疑的价值)

- - - -

_ ksedmp 147 CALLrel _ ksedst 0

.1.44 _ 7 . except . 114 CALLrel _ ksed MP 0 3

足球俱乐部(Football Club)

.1.1 _ 3 . except . 34 a CALLrel _ ksupop 0 2

f

_ TTC pip a86 call reg 00000000 5E 14 8 ace 738 0

_opitsk 2f4 CALLrel _ttcpip 0

_ opi ino 5fc call rel _ opit sk 0 0 a 616320 6d1f 564 C2 0

_ opi ODR 4cd call reg 0000000 3C 4 8 ACF BD 8

_ opi drv 233 call rel _ opi ODR 0 3C 4 8 ACF BD 8 0

_sou2o 19 CALLrel _opidrv 0

_opimai 10a CALLrel _sou2o 0

_ Oracle threadstart @ call rel _ opi mai 0

4 35c

7C824826呼叫注册0000000

根据该日志,“此会话的当前SQL语句:

Insert' VIO _ JDCZP' ('XH '' HPHM '' HPZL ''照片1 ')值(:1,2,3,4)将rowid返回到:5)表示“insert into' VIO _ JDCZP '被执行。”HPZL ","照片1 ")值(:1,2,3,4)将rowid返回成:5 "是个问题,所有错误都一样。将图片写入数据库。

该软件是CS结构的,共有八个客户端。八个客户端每3秒输入一条数据。数据包括一些文字信息,还有一张图片,大小从80KB到200KB不等。图片直接存储在数据库中。

现在单个用户进入不会有问题,八个用户一起进入很快就会出现这个问题。检查oracle的参数后,用户和会话的数量没有限制。

现在很奇怪ORACLE是一个大型数据库,不可能出现类似并发访问这种问题。从日志简单分析,是一个用户的数据没有被另一个用户写入时,数据文件被占用造成的。程序经过测试,使用transaction和不使用transaction的结果是一样的,基本可以排除transaction锁文件的原因。

两种解决方案:

1要将数据库升级到9.2.0.1或更高版本,您不必使用10G或类似的东西。升级到9.2.0.3或者更高,当然越高越好。

2图片不写入数据库,保存为文件之类的。

外国人解决问题的方法:

解决方案是(如本主题所述):

alter system set事件“10046 trace name context off”;

alter system set timed _ statistics=false;

执行完这两个脚本后,问题就解决了。

注意:

Timed _ staticstices用于启用或禁用定时统计数据(如杯时间和占用时间)以及动态性能表中各种统计数据的收集。

ORA-00603错误解决过程

今天查看作业运行状态时,发现一个数据同步的作业已经运行了很长时间,但是没有异常记录。手动执行后出现错误ORA-00603,解决过程如下:

1.insert操作报告ORA-00603错误,网上搜索说临时空间不够,但是实际用户使用的临时表空间并不是系统的临时空间,而是自定义的。

本文来自网络,不代表本站立场,转载请注明出处: