Oracle應用目錄空間滿,日誌報錯ORA-00600定位方法
某日,突然出現/oracle應用目錄空間滿,通過”du -sh”命令依次查詢空間異常目錄,發現在/oracle/app/oracle/diag/rdbms/oracleinstance/oracleinstance目錄下incident和trace佔用了異常大空間。
如下記錄了定位詳細問題的方法。
1.確認Oracle告警
開啟/oracle/app/oracle/diag/rdbms/oracleinstance/oracleinstance/trace/alert_minos.log檔案,發現諸多“ORA-00600”相關的告警。
2.查詢告警所在表或索引
進入oracle日誌目錄:/oracle/app/oracle/diag/rdbms/oracleinstance/oracleinstance/trace目錄,執行命令:
grep seg\/obj\: *.trc>abc.txt
然後開啟abc.txt檔案,找到所有的trc裡的object id,將object id由16進位制轉化為10進位制,比如下面的:0x14df4,對應10進製為:85492。
oracleinstance_ora_10715.trc: seg/obj: 0x14df4 csc: 0x00.f622486 itc: 2 flg: E typ: 1 - DATA
登陸資料庫
sqlplus sys/[email protected]資料庫id as sysdba
執行命令
select * from dba_objects where object_id=85492;
命令會顯示id對應的表,或者索引表名稱
如果是索引表,執行下面的命令可以查詢到索引表對應的表
select owner,index_name, table_owner,table_name from dba_indexes where index_name like 'PK_INDEXNMAE';
如果是表,執行下面的命令可以查詢到對應的索引表
select owner,index_name,table_owner,table_name from dba_indexes where table_name like 'TABLENAME';
3. 對問題表進行分析
analyze table USERNAME.TABLENAME validate structure cascade;
如果分析結果異常,則報錯:ORA-XXXX: xxxxxxxxxx - see trace file
如果分析結果正常,則顯示的訊息:Table analyzed.
4.問題修復
根據報錯的資訊,進行相應修復,具體修復方法請按照表分析的的異常碼進行查詢方法。
如果修復方法是需要重建表對應索引,則執行如下操作:
企業版:
alter index USERNAME.PK_INDEXNMAE rebuild online;
標準版:
alter index USERNAME.PK_INDEXNMAE rebuild;