今天通过客户端远端导出一个9201数据库的时候,中途出现ORA-12571错误。
数据库版本为9201,本地的导出客户端版本也是9201,结果出现了下面的错误信息:
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production已导出ZHS16GBK字符集和AL16UTF16 NCHAR字符集注:将不导出对表/视图/序列/角色的授权.正在导出pre-schema过程对象和操作.正在导出用户INFO的外部函数库名称.导出PUBLIC类型同义词.导出私有类型同义词.正在导出用户INFO的对象类型定义即将导出INFO的对象...
.正在导出数据库链接.正在导出序号.正在导出群集定义.即将导出INFO的表通过常规路径...
. .正在导出表ALL_SCORE_LINSHIBIAO 183905行被导出. .正在导出表A_BJ_CONTRACT 13567行被导出.
.
.
. .正在导出表T_PLAT_PRODUCT_ALL 120847行被导出. .正在导出表T_PLAT_PRODUCT_BAK 3061030行被导出EXP-00056:遇到ORACLE错误12571
ORA-12571: TNS:包写入程序失败EXP-00056:遇到ORACLE错误24324
ORA-24324:未初始化服务句柄EXP-00056:遇到ORACLE错误24324
ORA-24324:未初始化服务句柄EXP-00056:遇到ORACLE错误24324
ORA-24324:未初始化服务句柄EXP-00056:遇到ORACLE错误24324
ORA-24324:未初始化服务句柄EXP-00000:导出终止失败
检查alert文件,发现alert文件中有一个错误信息的描述:
Errors in file d:\oracle\admin\newzb\udump\newzb_ora_752.trc:
除了日期信息外,就只有这么一个日志信息,看来这个错误也比较特别。
虽然alert里面没有进一步描述,好在还有trace文件可以看:
Dump file d:\oracle\admin\newzb\udump\newzb_ora_752.trc
Wed Sep 03 09:12:04 2008
ORACLE V9.2.0.1.0 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Instance name: newzb
Redo thread mounted by this instance: 1
Oracle process number: 23
Windows thread id: 752, image: ORACLE.EXE
*** 2008-09-03 09:12:04.000
*** SESSION ID:(9.26502) 2008-09-03 09:12:04.000
FATAL ERROR IN TWO-TASK SERVER: error = 12571
*** 2008-09-03 09:12:04.000
ksedmp: internal or fatal error
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
_ksedmp+147 CALLrel _ksedst+0
__VInfreq__opitsk+3 CALLrel _ksedmp+0 2 25C34D4 311B
eb
_opiino+5fc CALLrel _opitsk+0 0 0 C59F068 8FFF554 B4 0
_opiodr+4cd CALLreg 00000000 3C 4 993FBD8
_opidrv+233 CALLrel _opiodr+0 3C 4 993FBD8 0
_sou2o+19 CALLrel _opidrv+0
_opimai+10a CALLrel _sou2o+0
_OracleThreadStart@ CALLrel _opimai+0
4+35c
7C824826 CALLreg 00000000
--------------------- Binary Stack Dump ---------------------
从DUMP的开头部分,至少可以肯定,问题是由于ORA-12571错误产生的。
下面进一步检查trace文件:
8FFF550 000000B8 53454428 50495243 4E4F4954 [....(DESCRIPTION]
8FFF560 4441283D 53455244 50283D53 4F544F52 [=(ADDRESS=(PROTO]
8FFF570 3D4C4F43 29504354 534F4828 37313D54 [COL=TCP)(HOST=17]
8FFF580 2E302E32 32342E34 4F502829 313D5452 [2.0.4.42)(PORT=1]
8FFF590 29313235 4F432829 43454E4E 41445F54 [521))(CONNECT_DA]
8FFF5A0 283D4154 3D444953 7A77656E 53282962 [TA=(SID=newzb)(S]
8FFF5B0 45565245 45443D52 41434944 29444554 [ERVER=DEDICATED)]
8FFF5C0 44494328 5250283D 4152474F 3A433D4D [(CID=(PROGRAM=C:]
8FFF5D0 61726F5C 5C656C63 3961726F 69625C32 [\oracle\ora92\bi]
8FFF5E0 58455C6E 58452E50 48282945 3D54534F [n\EXP.EXE)(HOST=]
8FFF5F0 322D4350 28293236 52455355 6E61793D [PC-262)(USER=yan]
8FFF600 6E61696A 29292929 05397F00 00BC614E [jian))))..9.Na..]
从这个部分已经可以确定导致问题的程序就是EXP,进一步检查TRACE:
Process global information:
process: 249523C0, call: 00000000, xact: 00000000, curses: 00000000, usrses: 2413F068
----------------------------------------
SO: 249523C0, type: 2, owner: 00000000, flag: INIT/-/-/0x00
(process) Oracle pid=23, calls cur/top: 00000000/2417066C, flag: (0) -
int error: 0, call error: 0, sess error: 0, txn error 0
(post info) last post received: 0 0 20
last post received-location: ksqrcl
last process to post me: 2494e040 1 6
last post sent: 0 0 15
last post sent-location: ksasnd
last process posted by me: 2494e040 1 6
(latch info) wait_event=0 bits=0
Process Group: DEFAULT, pseudo proc: 24970008
O/S info: user: SYSTEM, term: ZBDATA, ospid: 752
OSD pid info: Windows thread id: 752, image: ORACLE.EXE
----------------------------------------
SO: 24E989C4, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3f7a0 incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E96E28, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3efbc incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E975D0, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3e53c incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E9748C, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3dd58 incno=0 pending i/o cnt=1
----------------------------------------
SO: 24E97420, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3dabc incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E97348, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3dff4 incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E97270, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3d820 incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E97204, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f409f4 incno=0 pending i/o cnt=0
----------------------------------------
SO: 24E97198, type: 8, owner: 249523C0, flag: INIT/-/-/0x00
(FOB) flags=2 fib ptr=24f3c074 incno=1 pending i/o cnt=0
----------------------------------------
SO: 2413F068, type: 4, owner: 249523C0, flag: INIT/-/-/0x00
(session) trans: 00000000, creator: 249523C0, flag: (10000041) USR/- -/-/-/-/-/-
DID: 0001-0017-00000002, short-term DID: 0000-0000-00000000
txn branch: 00000000
oct: 0, prv: 0, sql: 18D21044, psql: 18D21044, user: 62/INFO
O/S info: user: yanjian, term: PC-262, ospid: 4832:6004, machine: WORKGROUP\PC-262
program: EXP.EXE
last wait for 'null event' blocking sess=0x0 seq=25502 wait_time=4
=54435000, =1, =0
temporary object counter: 1
----------------------------------------
会话信息进一步确定了EXP导致了问题的产生。
检查metalink,发现和当前问题最为接近的bug是Bug 4102426,Oracle在文档Doc ID:Note:4102426.8中进行简单的描述。
Oracle分别在9207、10105和10201中fixed了这个bug。
在不升级的情况下,使用DIRECT=Y的直接路径方式导出,代替常规EXP,成功避免了错误的产生。另外,这个错误似乎并非每次都可以重现,同样的导出操作可能第二次就可以成功执行。