Oracle?sysaux表空間異常增長的完美解決方法
發(fā)現(xiàn)問題
某一業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫,sysaux表空間大小達到24GB+

查詢sysaux表空間中對象的大小,超過1GB的列出,發(fā)現(xiàn)ASH相關(guān)的表過大。
SEGMENT_NAME OWNER SEGMENT_TYPE MB ------------------------------ -------------------- ------------------ ------ WRH$_ACTIVE_SESSION_HISTORY SYS TABLE PARTITION 7151 WRH$_EVENT_HISTOGRAM_PK SYS INDEX PARTITION 1856 WRH$_EVENT_HISTOGRAM SYS TABLE PARTITION 1777 WRH$_LATCH SYS TABLE PARTITION 1657 WRH$_SQLSTAT SYS TABLE PARTITION 1344
查看快照在數(shù)據(jù)庫中的保留時長

可以看到,AWR設(shè)定的保留時間為8天,WRH$_ACTIVE_SESSION_HISTORY確保留了2140天的數(shù)據(jù),需清理。
查看AWR快照未清理原因

WRH$_ACTIVE_SESSION_HISTORY由于分區(qū)失敗,導(dǎo)致所有數(shù)據(jù)均在同一個表空間,所以刪除過期快照失敗。
問題原因分析:
Oracle根據(jù)保留策略決定需要清除哪些行。在大型AWR表的情況下使用了一種特殊的機制,我們將快照數(shù)據(jù)存儲在分區(qū)中。從這些表中清除數(shù)據(jù)的一種方法是刪除只包含超過保留條件的行的分區(qū)。在夜間清除任務(wù)中,只有當(dāng)分區(qū)中的所有數(shù)據(jù)都已過期時,我們才會刪除該分區(qū)。如果該分區(qū)至少包含一行,根據(jù)保留策略,該行不應(yīng)被刪除,那么該分區(qū)將不會被刪除,因此該表將包含舊數(shù)據(jù)。
如果沒有發(fā)生分區(qū)拆分(無論出于何種原因),那么我們最終可能會遇到這樣的情況:我們必須等待最新的條目過期,然后才能刪除它們所在的分區(qū)。這可能意味著,一些較舊的條目可以在有效期過后顯著保留。其結(jié)果是數(shù)據(jù)未按預(yù)期清除。
處理方法:
根據(jù)MOS:WRH$_ACTIVE_SESSION_HISTORY Does Not Get Purged Based Upon the Retention Policy (Doc ID 387914.1)處理步驟
1.Check the partition details for the offending table before the split:
SELECT owner, segment_name, partition_name, segment_type, bytes/1024/1024/1024 Size_GB FROM dba_segments WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';
2.Split the partitions so that there is more chance of the smaller partition being purged:
alter session set "_swrf_test_action" = 72;
NOTE: This command will split partitions for ALL partitioned AWR objects. It also initiates a single split; it does not need to be disabled and will need to be repeated if multiple splits are required.
3.Check the partition details for the offending table after the split:
SELECT owner, segment_name, partition_name, segment_type, bytes/1024/1024/1024 Size_GB FROM dba_segments WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';
以上步驟執(zhí)行完成后,再truncate原來的分區(qū),只保留新分區(qū),釋放空間
ALTER TABLE WRH$_ACTIVE_SESSION_HISTORY TRUNCATE PARTITION WRH$_ACTIVE_xxxxx;
檢查索引是否正常
select index_name,partition_name,status from dba_ind_partitions where index_name='WRH$_ACTIVE_SESSION_HISTORY_PK';
總結(jié)
到此這篇關(guān)于Oracle sysaux表空間異常增長解決的文章就介紹到這了,更多相關(guān)Oracle sysaux表空間異常增長內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Windows10不能安裝Oracle?11g的問題(附詳細安裝教程)
這篇文章介紹了解決Windows10不能安裝Oracle?11g的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Oracle 11g如何清理數(shù)據(jù)庫的歷史日志詳解
這篇文章主要給大家介紹了關(guān)于Oracle 11g如何清理數(shù)據(jù)庫歷史日志的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
Oracle查看和修改連接數(shù)(進程/會話/并發(fā)等等)
查詢數(shù)據(jù)庫當(dāng)前進程的連接數(shù)及會話的連接數(shù)、并發(fā)連接數(shù)以及會話情況等等,感興趣的你可以參考下哈,希望可以幫助到你2013-03-03

