ORA-7445(qxuagtag)错误

今天无意中碰到一个小bug


环境9204 FOR SOLARIS8,错误信息如下:

ORA-07445: exception encountered: core dump [0000000100D3E708] [SIGSEGV] [Address not mapped to object] [0x000000020] [] []
Current SQL statement for this session:
SELECT "A1"."PLAT_FATHER","ZH_NDMAIN"."F_LINK"@"GPODB.US.ORACLE.COM"("A1"."ID") FROM "PLT_PLAT" "A1" WHERE "A1"."PLAT_CLASS"=2 GROUP BY "A1"."PLAT_FATHER"

检查第一个有效的错误函数为:qxuagtag

观察这个SQL,发现居然是我自己执行的,只不过并不是在这个数据库上执行的,原始SQL也不是上面这个。

原始SQL语句为:SELECT PLAT_FATHER, F_LINK(ID) FROM PLT_PLAT WHERE PLAT_CLASS = 2 GROUP BY PLAT_FATHER。这个SQL当时是在数据库GPODB.US.ORACLE.COM中执行的。

F_LINK是自定义聚集函数,详细描述在这里:http://yangtingkun.itpub.net/post/468/3380

由于PLT_PLAT是一个指向远端数据库的同义词,Oracle自动将远端站点作为了驱动站点,所以将SQL语句发送到目标库执行,在执行过程中由于找不到远端(也就是原始站点)的数据库链而报错。

关于这个问题的详细描述以前也讨论过,详细可以参考:

自定义聚集函数访问远端对象(一):http://yangtingkun.itpub.net/post/468/112489

自定义聚集函数访问远端对象(二):http://yangtingkun.itpub.net/post/468/112499

自定义聚集函数访问远端对象(三):http://yangtingkun.itpub.net/post/468/113687

问题并不奇怪,不过奇怪的是Oracle报了一个ORA-7445错误,而且第一个错误函数qxuagtag比较少见。查询了半天的METALINK,没有找到一个类似的情况。

其实问题本身到没有多大,解决起来也很简单,在上面的三个链接中有详细的描述,这里给出一个简单的解决方法:

SQL> COL LINK_ID FORMAT A70
SQL> SELECT /*+ DRIVING_SITE(ID) */ PLAT_FATHER, F_LINK(ID) LINK_ID
2 FROM PLT_PLAT, DUAL D
3 WHERE PLAT_CLASS = '2'
4 GROUP BY PLAT_FATHER;

PLAT_FATHER LINK_ID
------------------------ --------------------------------------------------------------------------
FR20T0000020000000000001 FR20T0000020000000000006,FR20T0000020000000000008,FR20T0000020000000000021

1 row selected.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69319/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-69319/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值