1. 程式人生 > >oracle故障處理之刪除大表空間hang住

oracle故障處理之刪除大表空間hang住

背景

資料庫分割槽表資料越來越大,需要對過期話的資料進行遷移,以及大的分割槽表需要進行資料的清理和刪除,達到釋放磁碟空間的目的。

問題說明

環境:linux 6.X

資料庫:oracle 11.2.0.4 (PSU為2016年6月份的)

問題說明:

S_T_RTNRP_STATUS_2017是分割槽表,每天一個分割槽,且一共使用了2.5TB的空間,現在需要進行空間清理,操作步驟是先對錶進行truncate,然後刪除表,後對相應的表空間的每個資料檔案進行resize成1g,在進行刪除表空間語句

drop tablespace SMART_NRRPSTA_2017 including contents and datafiles。

但是,從2018.11.14 20:00一直到15日10:00,表空間沒有刪除,且資料字典中都能夠查詢得到資料檔案,hang住。

如下:

 

處理過程

1)      初步懷疑(以為是上次遺留問題)

初步懷疑是ASM程序問題,因為之前我刪除過一個大的表空間,是在業務期,業務使用者在查詢大的報表,IO開銷很嚴重,中途暫停,表空間沒有清理乾淨,後面再進行刪除,表空間刪除了,但是ASM磁碟組中資料檔案有的沒有進行刪除,初步懷疑是上次遺留問題,認為是上次沒有釋放的ASM程序阻塞表空間的刪除。

檢視阻塞的等待事件:

 

檢視等待事件中,執行時間很長的是class slave wait這類等待事件,檢視有關這類事件的程序號,以及資訊:

ps -ef |grep 41751

ps -ef |grep 68563

ps -ef |grep 25232

ps -ef |grep 34478

ps -ef |grep 12445

ps -ef |grep 34699

ps -ef |grep 25217

ps -ef |grep 68559

ps -ef |grep 62666

ps -ef |grep 20972

ps -ef |grep 11554

ps -ef |grep 68590

看到的全是ora_o開頭的程序,查詢相關資料,百度到的蓋國強老師的論壇:http://www.eygle.com/archives/2012/06/oracle_o001_o00n_cpu.html以及MOS

賬號裡面的資料,說的大部分是Oracle ora_o程序 100% CPU佔用的案例,但是事實的ora_o程序並沒有佔用很高的CPU,也沒有程序阻塞,官方也沒有對其程序進行詳細說明。

 

後面我還是把相關程序殺掉(由於生產環境,不敢全部殺死,也不敢直接執行kil -9 作業系統命令,先在資料庫層殺一個看看,發現殺掉後,系統自動啟動一個新的程序,後面才全部執行)

alter system kill session '504,53407';

alter system kill session '599,61619';

alter system kill session '498,38267';

alter system kill session '366,62377';

alter system kill session '401,27591';

alter system kill session '446,5345 ';

alter system kill session '230,11603';

alter system kill session '81,26169  ';

alter system kill session '468,16725';

alter system kill session '686,48001';

alter system kill session '384,40041';

等了一會兒,發現drop tablespace語句仍然是無進展,一樣的hang住,在support上查詢,懷疑是BUG也發現情況不符合。

2)      柳暗花明

開始懷疑不是上一次遺留的問題,懷疑是其他程序導致表空間刪除hang住。

進行AWR,生成的時間是刪除hang住那段時間:

DB time如下

 

發現DB time/(DB time+Elapsed)時間比例並不是特別高,

檢視TOP 10等待事件

 

佔用第一個的是TT等待事件,檢視整個會話的等待事件:

select event,count(1) from gv$session group by event order by 2;

 

檢視具體的TT - contention等待事件:

 

突然想起來了,自己搭建的一套OEM監控資料庫,其中sysman使用者登入,sys使用者監控磁碟組,這兩個會話阻塞導致drop tablespace hang住。

3)      處理措施

停止RAC兩個節點的OEM agent

如下圖:

 

停止後,檢視alert日誌:

 

成功刪除了表空間並釋放了磁碟組的空間。

4)      總結

1、  遇到問題要根據實際情況解決。

2、  感謝阿里的周衛豐周大牛幫我一起解決故障(雖然是小問題)。