- 最后登录
- 2023-8-16
- 在线时间
- 1686 小时
- 威望
- 2135
- 金钱
- 50532
- 注册时间
- 2011-10-12
- 阅读权限
- 200
- 帖子
- 5207
- 精华
- 39
- 积分
- 2135
- UID
- 2
|
3#
发表于 2012-3-8 21:37:58
ODM Data:
11.1.0.7.0 x64 on Windows
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xFFFFFFFFFFFFFFFF] [PC:0x46F80D7, qesltcFastRowOperandsEvaluateSingle()+187]
Incident 21073 created, dump file: d:\app\administrator\diag\rdbms\orc92i\orc92i\incident\incdir_21073\orc92i_ora_11880_i21073.trc
ORA-07445: 出现异常错误: 核心转储 [qesltcFastRowOperandsEvaluateSingle()+187] [ACCESS_VIOLATION] [ADDR:0xFFFFFFFFFFFFFFFF] [PC:0x46F80D7] [UNABLE_TO_READ] []
可能是一个bug ,但是目前找不到 qesltcFastRowOperandsEvaluateSingle 函数相关的bug note, 唯一的一点信息:- Bind Variables Passed By Pro*C Wrongly set to NULL with 11g Client
- Applies to:
- Precompilers - Version: 11.1.0.6 to 11.1.0.7 - Release: 11.1 to 11.1
- Information in this document applies to any platform.
- Checked for relevance on 01-Feb-2011
- Symptoms
- Pro*C application intermittently fails with ORA-01400 when executing using 11g client client. The application is binding the data correctly but 10046 trace shows data is missing(NULL) and thus the error
- ORA-01400: cannot insert NULL into ("ORA_TEST"."RTNS_CFQ"."SECT_ENABLE_MASK")
- Error occurs only when using 11g client and doesn't occur with 10.2 client. Database version doesn't seem to matter.
- IF 'Not Null' constraint is not enabled on the column then NULL data is silently inserted/updated leading to data corruption
- Cause
- The cause of this problem has been identified and verified in an unpublished Bug 6957408
- The problem observed in oracle sqllib layer where the bind mode was not properly set.
- Possible Symptoms to check if you are hitting Bug6957408
- 1) Add debugging statements to your proc application to make sure the bind variables are set correctly
- 2) Generate 10046 trace(level 4) for the pro*C sessions and check what is the value passed to the bind variables
- For ex:-
- Bind#1
- oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
- oacflg=00 fl2=1000000 frm=00 csi=00 siz=0 off=128
- kxsbbbfp=2a96c3dd20 bln=22 avl=02 flg=01
- value=3
- Bind#2
- oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
- oacflg=00 fl2=1000000 frm=00 csi=00 siz=0 off=152
- kxsbbbfp=2a96c3dd38 bln=22 avl=00 flg=01
- EXEC #10:c=0,e=328,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1023083737,tim=1226523922263343
- ERROR #10:err=1400 tim=1226523922263373
- Note:- For bind2 value is missing/NULL
- 3) Generate error stack level 3 of ORA-01400 error
- With bug6957408 it is always either one of following
- qesltcFastRowOperandsEvaluateSingle or qesltcFastRowOperandsEvaluate that is calling kxcsnn() and signalling ORA-01400...
- 4) Build the failing application with HOLD_CURSOR=YES and see if it fixes the error
- 5) Bug 6957408 also occurs with Returning clause on the DML operation
- Solution
- Options to resolve the Error
- 1) Use workaround of HOLD_CURSOR=YES for precompiling the application
- Note.2055810.6 Ext/Pub Precompiler HOLD_CURSOR and RELEASE_CURSOR Options
- Note.51018.1 Ext/Pub Using ORACA to Monitor Effects of HOLD_CURSOR / RELEASE_CURSOR
- OR
- 2) Apply one-off patch for Bug 6957408
- Note:- Since the bug lies at the programmatic interface layer, the bug could affect other API / applications. Recommendation is to apply the patch to circumvent other manifestations in place of the work around when feasible.
- References
- BUG:7565718 - 11G PROC APPLICATION FAILS WITH ORA-01400 ERROR EVEN WITH VALID BINDS
- NOTE:2055810.6 - Precompiler HOLD_CURSOR and RELEASE_CURSOR Options
- NOTE:51018.1 - Using ORACA to Monitor Effects of HOLD_CURSOR / RELEASE_CURSOR
复制代码 |
|