上 meatlink 上查查吧,7445 这样的问题,基本就是 bug 产生 的,打一个 patch 还是很有必要的。

解决方案 »

  1.   

    Applies to: 
    Oracle Database - Enterprise Edition - Version 8.1.7.0 to 10.2.0.5 [Release 8.1.7 to 10.2]
    Information in this document applies to any platform.Symptoms
    When attempting to run a SQL statement that uses BIND variables, the following errors can occur:ORA-600: internal error code, arguments: [kghGetHpSz1], [0x110756FC0], [], 
    [], [], [], [], []
    ORA-07445: exception encountered: core dump [kxspoac()+509] [SIGSEGV] [Address not mapped to object] [0x000000001] [] []
    Cause
    This can occur if a client application is attempting to BIND more data than the variables data type allows as seen in bug:8241410.This can be identified by examining the trace file for the ORA-600 / ORA-7445 error. e.g.:1.  The SQL statement uses BIND variables
         i.e. the statement has expressions that include references to BIND variable names :B1, :B2, etc.2.  The CURSOR for the SQL shows the corresponding Bind (i.e. :B1 -> Bind#0, :B2 -> Bind#1) has a set maximum length , but the application is trying to pass more bytes, e.g.:Bind#0
    oacdty=02 mxl=22(131075) mxlc=00 mal=00 scl=00 pre=00mxl=22 in the above means that the maximum length of the variable is 22 bytes.
    (131075) is the actual number of bytes being passed by the application.3.  Examination of the PROCESS STATE section of the trace file will show the client being used, e.g.:SO: 7000001c5a7c330, type: 4, owner: 7000001c577a2e0, flag: INIT/-/-/0x00
    (session) sid: 842 trans: 7000001b98247f0, creator: 7000001c577a2e0, 
    flag: (8000041) USR/- BSY/-/-/-/-/-
    DID: 0001-0124-00002DBA, short-term DID: 0001-0124-00002DBB
    txn branch: 0
    oct: 7, prv: 0, sql: 7000001c4ab8440, psql: 7000001c4b6a910, user: 55/<none>
    O/S info: user: oracle, term: RNLABCLIN1, ospid: 2452:2456, machine: AUSL_RN\RNLABCLIN1
    program: MyApplication.exe                       <---------- Client application being used
    application name: My OCI Application, hash value=0
    Solution
    1.Identify the offending user, machine & program using the trace file.
    2.Fix the application identified by the trace file, so that it does not exceed the BIND limit for the variable.
    3.If necessary, engage Oracle to confirm the information recorded in the trace file.
    cusor_sharing相关的BUG很多,建议把该参数值设为默认的exact