Oracle报ora-00603错误不能处理大数据并发的问题解决方案
前天用户突然反映一🧜个软件【gè ruǎn jiàn】总是报🉑ora-00603错误【cuò wù】。一开始一位就【yī wèi jiù】🎓是个普【shì gè pǔ】通的表⚡空间不足之类的,可是一看日志🈸却发现不是那【bú shì nà】么简单【me jiǎn dān】💹。
截取部分日志如下:
Thu Nov 05 15:28:53 2009
Errors in file d:\oracle\admin\orcl\udump\orcl_ora_4684.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01114: IO error writing block to file 11 (block # 42773)
ORA-27041: unable to open file
OSD-04002: 无法打🔠开文件【kāi wén jiàn】🏤
O/S-Error: (OS 32) 另一个🎯程序正【chéng xù zhèng】🍹在使用【zài shǐ yòng】🐩此文件【cǐ wén jiàn】🤜,进程无🏚法访问【fǎ fǎng wèn】📁。
ORA-01114: IO error writing block to file 11 (block # 42773)
ORA-27041: unable to open file
OSD-04002: 无法打🔠开文件【kāi wén jiàn】🏤
O/S-Error: (OS 32) 另一个🎯程序正【chéng xù zhèng】🍹在使用【zài shǐ yòng】🐩此文件【cǐ wén jiàn】🤜,进程无🏚法访问【fǎ fǎng wèn】📁。
ORA-01114: IO error writing block to file 11 (block # 42773)
ORA-27041: unable to open file
OSD-04002: 无法打🔠开文件【kāi wén jiàn】🏤
O/S-Error: (OS 32) 另一个🎯程序正【chéng xù zhèng】🍹在使用【zài shǐ yòng】🐩此文件【cǐ wén jiàn】🤜,进程无🏚法访问【fǎ fǎng wèn】📁。
里面的【lǐ miàn de】File 11就是我的那个程序使🏉用的表【yòng de biǎo】空间的【kōng jiān de】🚥一个数据文【jù wén】🐒件【jiàn】。表空间总共有四个数据文【jù wén】🐒件【jiàn】加起来🥚8G左右,总体使用率在【yòng lǜ zài】70%左右。数据文【jù wén】🐒件【jiàn】号分🖼别为【bié wéi】9,11,13,14。出问题📖的文件【jiàn】号不一【hào bú yī】定,时间也🏌是随机的,有可能【yǒu kě néng】😓一分钟🤗就会重【jiù huì chóng】复上面🥀那段日志【zhì】,有可能【yǒu kě néng】😓几秒就重复一次【cì】。
下面是🗨orcl_ora_4684.trc文件的【wén jiàn de】片段:
JServer Release 9.2.0.1.0 - Production
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Instance name: orcl
Redo thread mounted by this instance: 1
Oracle process number: 30
Windows thread id: 4684, image: ORACLE.EXE
*** SESSION ID:(39.280) 2025-07-05 00:04:48.000
*** 2025-07-05 00:04:48.000
ksedmp: internal or fatal error
ORA-01114: 将块【kuài】写🙉入文件🔷 11 时出现【shí chū xiàn】🐔 IO 错误【cuò wù】🈸 (块【kuài】🧝 # 42773)
ORA-27041: 无法打【wú fǎ dǎ】🌼开文件【kāi wén jiàn】🥉
OSD-04002: 无法打【wú fǎ dǎ】🌼开文件【kāi wén jiàn】🥉
O/S-Error: (OS 32) 另一个程序正👬在使用【zài shǐ yòng】此文件【cǐ wén jiàn】🎹,进程无【jìn chéng wú】📧法访问【fǎ fǎng wèn】。
ORA-01114: 将块【kuài】写🙉入文件🔷 11 时出现【shí chū xiàn】🐔 IO 错误【cuò wù】🈸 (块【kuài】🧝 # 42773)
ORA-27041: 无法打【wú fǎ dǎ】🌼开文件【kāi wén jiàn】🥉
OSD-04002: 无法打【wú fǎ dǎ】🌼开文件【kāi wén jiàn】🥉
O/S-Error: (OS 32) 另一个程序正👬在使用【zài shǐ yòng】此文件【cǐ wén jiàn】🎹,进程无【jìn chéng wú】📧法访问【fǎ fǎng wèn】。
ORA-01114: 将块【kuài】写🙉入文件🔷 11 时出现【shí chū xiàn】🐔 IO 错误【cuò wù】🈸 (块【kuài】🧝 # 42773)
ORA-27041: 无法打【wú fǎ dǎ】🌼开文件【kāi wén jiàn】🥉
OSD-04002: 无法打【wú fǎ dǎ】🌼开文件【kāi wén jiàn】🥉
O/S-Error: (OS 32) 另一个程序正👬在使用【zài shǐ yòng】此文件【cǐ wén jiàn】🎹,进程无【jìn chéng wú】📧法访问【fǎ fǎng wèn】。
Current SQL statement for this session:
INSERT INTO "VIO_JDCZP" ("XH","HPHM","HPZL","PHOTO1") VALUES (:1,:2,:3,:4) RETURNING ROWID into :5
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
_ksedmp+147 CALLrel _ksedst+0
..1.44_7.except.114 CALLrel _ksedmp+0 3
+fc
..1.1_3.except.34+a CALLrel _ksupop+0 2
f
_ttcpip+a86 CALLreg 00000000 5E 14 8ACE738 0
_opitsk+2f4 CALLrel _ttcpip+0
_opiino+5fc CALLrel _opitsk+0 0 0 A616320 6D1F564 C2 0
_opiodr+4cd CALLreg 00000000 3C 4 8ACFBD8
_opidrv+233 CALLrel _opiodr+0 3C 4 8ACFBD8 0
_sou2o+19 CALLrel _opidrv+0
_opimai+10a CALLrel _sou2o+0
_OracleThreadStart@ CALLrel _opimai+0
4+35c
7C824826 CALLreg 00000000
从这个日志中看【kàn】,“Current SQL statement for this session:
INSERT INTO "VIO_JDCZP" ("XH","HPHM","HPZL","PHOTO1") VALUES (:1,:2,:3,:4) RETURNING ROWID into :5”这句话📷说明了🥄是在执【shì zài zhí】行😿“INSERT INTO "VIO_JDCZP" ("XH","HPHM","HPZL","PHOTO1") VALUES (:1,:2,:3,:4) RETURNING ROWID into :5”这句话📷时出的问题【wèn tí】📶,而且说有的错【yǒu de cuò】误【wù】🈸都是这样【yàng】。这句话📷是将一【shì jiāng yī】个图片写入数据库🔐。
软件是CS结构的【jié gòu de】👉,总共有八个客【bā gè kè】🍥户端💋。八个客【bā gè kè】🍥户端每🕑3秒录入一条数据【jù】,数据【jù】包括一些【kuò yī xiē】🈹文本类【wén běn lèi】的信息还有就是有一🥉张图片【zhāng tú piàn】,图片大小在【xiǎo zài】80KB至200KB不等📱。图片是【tú piàn shì】直接存入数据【jù】库中的。
现在是【xiàn zài shì】单个用户录入【hù lù rù】⬅时不会出现问🎚题🖊,八个用【bā gè yòng】🥍户一起录入时很快就会出现这个问🐼题🖊。查了📌oracle的参数,没有用【méi yǒu yòng】户数方【hù shù fāng】面的限【miàn de xiàn】制和Session的限制。
现在就【xiàn zài jiù】✉是觉得【shì jiào dé】奇怪了🐤,ORACLE是大型数据库【shù jù kù】,不可能【bú kě néng】🗿会出现这种类🚨似于并发访问的【de】🌞问题的【de】🌞。从日志简单的【de】🕟分析上【fèn xī shàng】📵来看是一个用户数据写入未完成时【wán chéng shí】另一个【lìng yī gè】用户写【yòng hù xiě】🐱入数据😾造成数【zào chéng shù】据文件被占用【bèi zhàn yòng】造成的【de】🌞。程序里试验过🕖,使用事务和不使用事务结果💒是一样🆖的【de】🌞,基本上【jī běn shàng】可以排【kě yǐ pái】除事务🍣将文件给锁住的【de】🌞原因。
两个解决方法:
1 将数据库【jù kù】升级到🚏9.2.0.1以上【yǐ shàng】,不是一定得用10G之类的【de】🐞,升级成9.2.0.3或更高🐱的【de】📣,当然越【dāng rán yuè】👅高越好。
2 图片不【tú piàn bú】🚛写入数据库【jù kù】,存成文【cún chéng wén】件之类的【de】🐞。
老外的【lǎo wài de】解决问🍁题的方法【fǎ】:
The solution is (as proposed on this thread):
alter system set events '10046 trace name context off';
alter system set timed_statistics=false;
执行完🔹这两条✍脚本👛,问题果【wèn tí guǒ】然解决。
注【zhù】:
timed_staticstices 用于启动或禁【dòng huò jìn】止对定时统计信息🚦(如🗽CUP时间🌘、占用时间🌘),以及动态性能表中多【biǎo zhōng duō】🏝种统计【zhǒng tǒng jì】信息🚦的收集功能【gōng néng】。
ORA-00603错误解决过程
今天在查看job运行情况时🤪,发现一同步数【tóng bù shù】据的job执行了🔥很长时🎅间【jiān】,但也没有出现【yǒu chū xiàn】异常记录💐。手动执行之后出现ORA-00603错误【cuò wù】🛵,解决过⬛程如下:
1.插入操【chā rù cāo】作报🚡ORA-00603错误【cuò wù】🛵,上网搜【shàng wǎng sōu】🥞索说是【suǒ shuō shì】temp空间【jiān】不够,但实际【dàn shí jì】用户所【yòng hù suǒ】用的临时表空【shí biǎo kōng】间不是【jiān bú shì】系统的temp空间【jiān】,而自定♐
关键词👗:Oracle
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0