oracle 10g SYSAUX表空間快速增長之WRI$_OPTSTAT_HISTGRM_HISTORY篇
在下午的檢查中,還發現另外幾個物件在sysaux表空間中佔據很大的空間:I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST,大小為4124M,WRI$_OPTSTAT_HISTGRM_HISTORY,大小為2893M,前者是後者的索引,此表是用來儲存歷史的的收集統計資訊的。
檢視metalink相關文章:
Statistics space used by SM/OPTSTAT in the SYSAUX tablespace is not reclaimed after purging [ID 454678.1]
Reduce SYSAUX Tablespace Occupancy Due to Fragmented TABLEs and INDEXes [ID 1271178.1]
發現metalink上認為的是這個表索引的碎片比較多,需要重整。在oracle10g中,重整表的方式有多種,為了不重新rebuild index,且不影響現在的業務,沒有采用move的方式,而是採用shrink 的方式對索引進行了收縮:
ALTER INDEX I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST SHRINK SPACE;
shrink後,此索引的大小縮至286.75M,同時此表的大小也有很明顯的縮小,現在只有309M,效果挺明顯;
再對WRI$_OPTSTAT_HISTGRM_HISTORY shrink:
ALTER TABLE WRI$_OPTSTAT_HISTGRM_HISTORY SHRINK SPACE;
報:ORA-10631: SHRINK clause should not be specified for this object
經過分析,原來此表上有函式索引,此索引正是上面的那個索引: I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST ,有函式索引的表是不能進行shrink操作的。
如果時間允許,可以嘗試按照move的方式對這些表重整一下,並重建索引。
-- To implement the solution, please execute the following steps::
1- Take a full backup of the database
2- Move the tables:
sql> alter table WRI$_OPTSTAT_TAB_HISTORY move;
sql> alter table WRI$_OPTSTAT_OPR move;
sql> alter table WRI$_OPTSTAT_IND_HISTORY move;
sql> alter table WRI$_OPTSTAT_HISTHEAD_HISTORY move;
sql> alter table WRI$_OPTSTAT_HISTGRM_HISTORY move;
sql> alter table WRI$_OPTSTAT_AUX_HISTORY move;
3- For indexes, find the indexes for the above tables and rebuild them. In case an index is unusable, please see the following example:
SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_TAB_ST';
Assuming that indexes: I_WRI$_OPTSTAT_IND_OBJ#_ST & I_WRI$_OPTSTAT_TAB_ST are unusable, then, we have to do the following:
a.Determine the DDL's for the indexes using dbms_metadata package as shown in the example below
SQL> set long 4000
SQL> select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_IND_OBJ#_ST','SYS') from dual;
SQL> select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_TAB_ST','SYS') from dual;
b.Then drop and recreate the indexes using the obtained DDL's.
c.Once done you can confirm the status by running the following query for example :
SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_IND_OBJ#_ST';
SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_TAB_ST';
4- sql> exec dbms_stats.alter_stats_history_retention(8);
--> This will ensure that statistics history will be retained for at least 8 days.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12129601/viewspace-714269/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 10g SYSAUX表空間快速增長之WRH$_SQL_PLAN篇Oracle 10gUXSQL
- ORACLE 10g SYSAUX表空間快速增長之WRH$_ACTIVE_SESSION_HISTORY篇Oracle 10gUXSession
- oracle 10g SYSAUX表空間快速增長之STREAMS$_APPLY_SPILL_MESSAGES篇Oracle 10gUXAPP
- oracle之 SYSAUX表空間維護OracleUX
- Oracle清理SYSAUX表空間OracleUX
- ORACLE的SYSAUX 表空間OracleUX
- 10g ORACLE_HOME空間滿導致SYSAUX表空間離線OracleUX
- 10G 新特性系列: SYSAUX 表空間UX
- SYSAUX表空間清理之SM/OPTSTATUX
- 32、SYSAUX表空間UX
- oracle表空間增長趨勢分析Oracle
- AWR資料導致SYSAUX表空間一直增長的問題UX
- oracle10g的sysaux空間暴增與空間回收-轉載OracleUX
- oracle 表空間關閉自增長 autoextend offOracle
- 2.5.4.1 關於SYSAUX表空間UX
- 認識 SYSAUX 表空間(zt)UX
- oracle sysaux表空間滿了處理辦法OracleUX
- oracle 10g表空間操作Oracle 10g
- AWR佔用sysaux表空間太大UX
- SYSAUX表空間管理及恢復UX
- Oracle SYSAUX表空間使用率超過警戒閥值OracleUX
- 收縮表空間 for Oracle 10gOracle 10g
- 4.2.1.7 規劃 SYSTEM 和 SYSAUX 表空間UX
- sysaux 表空間爆滿處理方法UX
- sysaux 表空間不足問題處理UX
- 修復受損的SYSAUX表空間UX
- Oracle10g以上sysaux表空間的維護和清理OracleUX
- Oracle 10g大檔案表空間Oracle 10g
- 從system/sysaux空間轉移TABLE&Index到其它表空間UXIndex
- oracle UNDO表空間一個bug——undo表空間快速擴充套件Oracle套件
- oracle 10g以後查詢表空間使用率的快速方法Oracle 10g
- Oracle SYSAUX 表空間使用率100% 導致的DB 故障OracleUX
- Oracle 10g大檔案表空間(轉)Oracle 10g
- [Oracle 10g] 大檔案表空間(zt)Oracle 10g
- OGG相關的CPATURE導致SYSAUX表空間異常暴增處理UX
- Oracle案例08——xx.xx.xx.xx,表空間 SYSAUX 使用率>95%%OracleUX
- Oracle SQL 基本操作之 表空間OracleSQL
- Oracle 10g 物理DataGuard擴充套件表空間Oracle 10g套件