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

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错误。

 

 

本文作者:黎俊杰(网名:踩点),从事”系统架构、操作系统、存储设备、数据库、中间件、应用程序“六个层面系统性的性能优化工作

欢迎加入 系统性能优化专业群,共同探讨性能优化技术。群号:258187244

你可能感兴趣的:(ORA-00600,103,sort_area_size,kcblin_3,1032192)