类型:数据库类大小:42.1M语言:中文评分:5.0标签:下载就在前天,用户突然报错,某软件总是报错ora-00603。一开始一个人只是常见的表空间不足,但是当你看日志的时候,你发现并没有那么简单。
如下截取一些日志:
11月05日星期四15:28:53 2009文件d:中的错误 ORACLE admin orcl udump orcl _ Ora _ 4684 . TRC : Ora-00603: ORACLE服务器会话因致命错误而终止ORA-01114:将块写入文件11时出现IO错误(块# 42773)Ora-270413:无法打开文件OSDOra-01114: io错误将块写入文件11(块# 42773) ora-27041:无法打开文件OSD-04002:无法打开文件O/S-Error: (OS 32)此文件正被另一个程序使用,无法被进程访问。Ora-01114: io错误将块写入文件11(块# 42773) ora-27041:无法打开文件OSD-04002:无法打开文件O/S-Error: (OS 32)此文件正被另一个程序使用,无法被进程访问。
里面的文件11是我的程序使用的表空间的数据文件。表空间中有4个数据文件,加起来约为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。可执行程序的扩展名
* * * SESSION id :(39.280)2009-11-05 15:28336052.000 * * * 2009-11-05 15336028:52.000 kse DMP :内部或致命错误ora-011143360向文件11(块# 42773)写入块时出现IO错误ora-2704160ORA-01114:向文件11写入数据块时出现IO错误(数据块# 42773) Ora-270413360无法打开文件OSD-04002:无法打开文件O/S-ERROR 3360 (OS 32)此文件正被另一个程序使用,无法被进程访问。ORA-01114:向文件11写入数据块时出现IO错误(数据块# 42773) Ora-270413360无法打开文件OSD-04002:无法打开文件O/S-ERROR 3360 (OS 32)此文件正被另一个程序使用,无法被进程访问。此会话的当前SQL语句:INSERT INTO 'VIO_JDCZP' ('XH ',' HPHM ',' HPZL ',' PHOTO1') VALUES (:1,2,3,4)return ROWID INTO :5-调用堆栈跟踪-调用hexlocation类型点(?意思是可疑的值)-----_ ksedmp 147 callRel _ ksedst 0.1.44 _ 7 . exception . 114 callRel _ kse DP 0 3 fc。 1.1 _ 3 . except . 34 a callReL _ ksupop 0 2f _ ttcpip a86 callReG 00000000 5E 14 8ACE 738 0 _ opit sk 2 F4 callReL _ ttcpip 0 _ opi ino 5 fc callReL _ opit sk 0 0 0 a 6163 20 6d1f 564 C2 0 _ opi ODR 4 CD callReG 000000000 3C 4 8ACFBD 8 _ opi drv 233 callReL _ opi ODR 0 3C 4 8ACR :4)将rowid返回到:5”表示执行“插入到‘VIO _ jdczp’(‘xh’‘hphm’‘hpzl’‘photo 1’)值(:1,2,3,3333)”这句话是将一张图片写入数据库。
软件为CS结构,共有8个客户端。八个客户端每3秒钟输入一条数据,包括一些文本信息和一张大小在80KB到200KB之间的图片。图片直接存储在数据库中。
现在单个用户进入没有问题,八个用户一起进入很快就会出现这个问题。我检查了oracle的参数,发现用户数量和Session没有限制。
现在感觉很奇怪,因为ORACLE是一个大型数据库,不可能有类似并发访问这样的问题。从简单的日志分析来看,是由于一个用户的数据写入不完整时,另一个用户写入数据导致数据文件被占用造成的。程序中测试过,使用事务的结果和不使用事务的结果是一样的,基本可以排除事务锁文件的原因。
两个解决方案:1要将数据库升级到9.2.0.1或更高版本,您不必将其升级到9.2.0.3或更高版本,但越高越好。图片不会写入数据库,而是保存为文件等等。
解决方案是(根据此线程的建议):更改系统设置事件“10046跟踪名称上下文关闭”;alter system set time _ statistics=false;执行这两个脚本后,问题就解决了。注意:Timed _ statistics用于启用或禁用Timed _ statistics(如CUP时间和占用时间)和动态性能表中各种统计信息的收集。
ORA-00603错误解决过程
今天看作业运行情况,发现一个数据同步的作业已经执行很久了,但是没有异常记录。ORA-00603手动执行后出现错误,解决过程如下:1。插入操作报告ORA-00603错误,互联网搜索说临时空间不足,但实际用户使用的临时表空间不是系统的临时空间,自定义的临时表空间大小没有超过,尝试添加数据文件无法解决问题。2.考虑到插入的语句通过dblink访问远程数据库,可能有数据量太大的原因。尽量只执行一条插入的语句,然后提交,但是只执行一条提交语句就出现错误,程序一直处于停滞状态。3.排除数据量大的原因,因为有类似的表通过dblink同步远程数据,怀疑个别表有问题,所以程序在代码插入表后通过,没有报错,目标是表结构或数据有问题。4.查看警报文件时,我发现了以下错误:以下提交时快照未刷新: ims.v $代理_不正确_信息。你可以理解这些信息。原来物化视图无法自动更新数据,是因为原始表执行了大量的插入操作,数据量大。同时,视图需要更新,导致数据写入拥塞。物化视图是昨天才创建的,所以改变需求方式更新物化视图就能解决问题。