频道栏目
首页 > 资讯 > Sybase > 正文

统计分析表的存储过程遇ORA-00600错误分析与处理

15-06-25        来源:[db:作者]  
收藏   我要投稿

1、 统计分析表的存储过程部分内容

CREATE OR REPLACE procedure SEA.sp_analyze_XXX_a is

v_sql_1 varchar2(2000);

v_sql_2 varchar2(2000);

v_sql_3 varchar2(2000);

v_startdate date;

err varchar2(2000);

 

begin

v_sql_1 := 'alter session set workarea_size_policy=manual';

v_sql_2 := 'alter session set sort_area_size=2147483640';

EXECUTE IMMEDIATE v_sql_1;

EXECUTE IMMEDIATE v_sql_2;

……

此存储过程,为了加快统计分析表与索引的速度,采用了在执行统计分析语句前,将session的sort_area_size加大到2GB,以加大在内存中排序的比例的策略,故使用了下面两条语句:

v_sql_1 :='altersession set workarea_size_policy=manual';

v_sql_2 :='altersession set sort_area_size=2147483640';

这种做法,对加快统计分析的速度来说,是绝对有效的,而且效果会非常明显。

2、 存储过程运行经常报ORA-00600错误而中断

完整报错信息:

ORA-00600: 内部错误代码, 参数: [kcblin_3], [103], [1032192],[8192], [8193], [312], [664], [], [], [], [], []

3、原因分析

通过在metalink上找到此错误相关的参考文档:1177363.1

原因为,如果设置了memory_target来管理SGA和PGA,同时,手动设置了PGA的值,有可能会导致报出ORA-00600 [kcblin_3]错误

4、 验证自己的环境配置

SQL>showparameter memory_target

NAME TYPE VALUE

------------------------- --------------------- ------------------

Memory_target bit integer 200G

SQL>showparameter pga_aggregate_target

NAME TYPE VALUE

------------------------------- ---------------------- -----------

pga_aggregate_target bit integer 20G

果然是既配置了memory_target,,又手动配置了PGA的值。

5、 解决方法

删除或注释存储过程中的下面四行代码,

v_sql_1 := 'alter session set workarea_size_policy=manual';

v_sql_2 := 'alter session set sort_area_size=2147483640';

EXECUTE IMMEDIATE v_sql_1;

EXECUTE IMMEDIATE v_sql_2;

问题即解决,后续运行再也没有报过ORA-00600错误。

相关TAG标签
上一篇:记一次服务器沦陷后的分析
下一篇:mysql预编译处理(mysqli、PDO)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站