alertlog中大量job報錯的解決

2021-05-26 08:26:02 字數 2957 閱讀 6477

今天上班的時候一看,發現資料庫的目錄97%了,頓時覺得奇怪,都已經寫了shell定期刪除oracle目錄下的檔案,怎麼會突然就這麼滿了呢,估計又是出問題了,果然一看alertlog全是下面這樣的報錯,生成了大量的trace

thu jun 16 13:54:44 2011

errors in file /oracle/admin/zhdu/bdump/zhdu2_j000_19455.trc:

thu jun 16 13:56:51 2011

errors in file /oracle/admin/zhdu/bdump/zhdu2_j000_19455.trc:

thu jun 16 13:58:40 2011

trace dumping is performing id=[cdmp_20110616135840]

thu jun 16 14:00:50 2011

errors in file /oracle/admin/zhdu/bdump/zhdu2_j000_19455.trc:

thu jun 16 14:04:54 2011

errors in file /oracle/admin/zhdu/bdump/zhdu2_j001_27814.trc:

thu jun 16 14:08:54 2011

errors in file /oracle/admin/zhdu/bdump/zhdu2_j000_29512.trc:

開啟trace檔案發現有這樣的報錯資訊

*** 2011-06-04 06:00:18.414

ksedmp: internal or fatal error

current sql statement for this session:

delete from wfe_activity where processinsid = :b1

----- pl/sql call stack -----

object      line  object

handle    number  name

c0000000ce7a4a60        94  procedure ccatsupt.cp_wf_archive_flowinstance

c0000000bc1d74e8         1  anonymous block

看來是過程ccatsupt.cp_wf_archive_flowinstance 的94行

delete from wfe_activity where processinsid = :b1

這條sql執行的時候丟擲來的,仔細檢查了這個過程發現過程本身倒沒有什麼問題,這下感覺非常奇怪,alertlog 裡面沒有 ora錯誤,無從查起,花了很長時間都無法定位到問題,後來trace檔案中的

c0000000bc1d74e8         1  anonymous block

ora-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], , , ,

mon jun 27 12:10:55 2011

errors in file /oracle/admin/zhdu/udump/zhdu2_ora_471.trc:

ora-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], , , ,

mon jun 27 12:11:31 2011

errors in file /oracle/admin/zhdu/udump/zhdu2_ora_785.trc:

ora-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], , , ,

mon jun 27 12:12:09 2011

errors in file /oracle/admin/zhdu/udump/zhdu2_ora_25118.trc:

ora-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], , , ,

這下鬱悶了,看了下trace檔案內容基本如下:

*** 2011-06-27 11:47:46.396

*** action name:() 2011-06-27 11:47:46.396

*** module name:(jdbc thin client) 2011-06-27 11:47:46.396

*** service name:(zhdu) 2011-06-27 11:47:46.396

*** session id:(371.6344) 2011-06-27 11:47:46.396

*** session id:(371.6344) 2011-06-27 11:47:46.396

objd mismatch typ=6, seg.obj=128602, diskobj=146729, ds***=100000, dsobj=128602, tid=128602, cls=1

集合google出來的資料,發現問題是:

diskobj 是物件的data object id

dsobj 是object id

根據objectid來查詢:

sql> select t.object_id,t.data_object_id from dba_objects t where t.object_id = 146729;

object_id data_object_id

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

146729 394023

sql>

可以發現這個物件的data_object_id已經變了,而又由於此時pmon程序正在對這個表的資料進行事物的回滾操作,當pmon根據以上資訊檢查物件是發現物件不存在,於是就丟擲了以上錯誤。

Python中大量插入資料到SQLITE

這是我的第乙個python和sqlte的文章,雖然短小,但相信對遇到的會很有用。當你需要向sqlite資料庫插入上百萬條資料時,你會怎麼做?for i in range 0 len s list db.execute insert into txt txt values i,這樣效率奇低,你會怎麼做...

大表中大量資料更新問題

最近遇到個大批量資料更新表字段問題,需要將a表中m欄位儲存的字串進行某種統一格式的替換,where條件類似m like aaa 源資料有1700萬條,需要更新的資料有200多萬條。因為所更新的字段沒有索引,如果用 update set from where m like aaa 更新時需要鎖表,這在...

方法中大量if判斷,利用列舉進行優化

在乙個方法類中有大量if語句判斷,有沒有大佬幫忙看看,怎麼用列舉的方式進行優化 public locatedatasourceeventhandler sourcelist string requestid,string reportname if reportname.contains wb zt...