ORA-07445错误修正

    技术2022-05-20  66

    今天早上,在客户现场接到一个请求,说日常使用的一个功能无法使用,界面上报错: 处理SQL出错 java.sql.SQLException: 无法从套接字读取更多的数据 把相应的sql语句拿出来看了下,是个insert...select语句,把这个语句放到sqlplus客户端执行报错: ORA-03113:通信通道的文件结束 ORA-02114:未连接到ORACLE 觉得非常诡异,看这个语句没什么特殊的,虽然写的不怎么样还N长,直觉后台发生了其他情况,语句去看了alert日志,果然: Fri Feb 25 12:53:11 2011 Errors in file /oracle/admin/CRMII/udump/crmii_ora_11278.trc: ORA-07445: 出现异常错误: 核心转储 [kkfies()+99] [SIGSEGV] [Address not mapped to object] [0x000000004] [] [] 再去检查相关的trace文件,截取如下: /oracle/admin/CRMII/udump/crmii_ora_11278.trc Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production With the Partitioning, OLAP and Data Mining options ORACLE_HOME = /oracle/ora10g System name: Linux Node name: crmdb2 Release: 2.6.9-55.ELlargesmp Version: #1 SMP Fri Apr 20 16:46:56 EDT 2007 Machine: x86_64 Instance name: CRMII Redo thread mounted by this instance: 1 Oracle process number: 30 Unix process pid: 11278, image: oracleCRMII@crmdb2

    *** ACTION NAME:(SQL 窗口 - Insert Into Tkhqkh (I) 2011-02-25 12:53:11.334 *** MODULE NAME:(PL/SQL Developer) 2011-02-25 12:53:11.334 *** SERVICE NAME:(CRMII) 2011-02-25 12:53:11.334 *** SESSION ID:(1569.9051) 2011-02-25 12:53:11.334 Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object), addr: 0x4, PC: [0x2179077, kkfies()+99] *** 2011-02-25 12:53:11.341 ksedmp: internal or fatal error ORA-07445: 出现异常错误: 核心转储 [kkfies()+99] [SIGSEGV] [Address not mapped to object] [0x000000004] [] [] Current SQL statement for this session: Insert Into Tkhqkh   (Id, Khq, Tjfs, Tjr, Tjrq, Khh)   Select Func_Nextid('tKHQKH'),          7204,          1,          3123,      。。。   。。。   。。。 ----- Call Stack Trace ----- 这个ORA-07445才是真正的内鬼,这个错误号和ORA-00600一样,应该是有bug。 于是上google搜索相关信息,都没有找到有效的解决办法,询问dba,告知修改_optimizer_cost_based_transformation为off,这是个隐含参数,检查下这个参数: SQL> conn /as sysdba Connected. SQL> set linesize 132 SQL> column name format a30 SQL> column value format a25 SQL> select   2    x.ksppinm  name,   3    y.ksppstvl  value,   4    y.ksppstdf  isdefault,   5    decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,   6    decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj   7  from   8    sys.x$ksppi x,   9    sys.x$ksppcv y  10  where  11    x.inst_id = userenv('Instance') and  12    y.inst_id = userenv('Instance') and  13    x.indx = y.indx and  14    x.ksppinm like '%_&par%'  15  order by  16    translate(x.ksppinm, ' _', ' ')  17  / Enter value for par: optimizer_cost_based_transformation old  14:   x.ksppinm like '%_&par%' new  14:   x.ksppinm like '%_optimizer_cost_based_transformation%'

    NAME                           VALUE                     ISDEFAULT ISMOD      ISADJ ------------------------------ ------------------------- --------- ---------- ----- _optimizer_cost_based_transfor LINEAR                    TRUE      FALSE      FALSE mation 接下来修改这个参数: SQL> alter system set "_optimizer_cost_based_transformation"=off scope=both;   System altered 再执行这个语句,问题得到解决,应用层面也没有问题了。 但是,还是怕怕的,修改隐含参数很少干过,不知道有什么附带症状没有,待观察。 -The End-

     


    最新回复(0)