統計分析表的預存程序遇ORA-00600錯誤分析與處理,預存程序ora-00600
1、 統計分析表的預存程序部分內容
CREATEOR REPLACE procedure SEA.sp_analyze_XXX_ais 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'; EXECUTEIMMEDIATE v_sql_1; EXECUTEIMMEDIATE 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'; EXECUTEIMMEDIATE v_sql_1; EXECUTEIMMEDIATE v_sql_2; |
問題即解決,後續運行再也沒有報過ORA-00600錯誤。
本文作者:黎俊傑(網名:踩點),從事”系統架構、作業系統、存放裝置、資料庫、中介軟體、應用程式“六個層面系統性的效能最佳化工作
歡迎加入 系統效能最佳化專業群,共同探討效能最佳化技術。群號:258187244