• 统计分析表的存储过程遇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

  • 相关阅读:
    JAVA面试题 启动线程是start()还是run()?为什么?
    Java面试题 equals()与"=="的区别?
    Java面试题之数据库三范式是什么?
    很全的Python 面试题 github
    链家二手房 爬虫
    15个重要Python面试题 测测你适不适合做Python?
    静态链接和动态链接
    Python里的拷贝
    GIL线程全局锁 协程
    Python中的作用域
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7171848.html
Copyright © 2020-2023  润新知