Oracle SYSAUX空间问题的解决方法

通过修改了AWR收集频率之后(http://zxf261.blog.51cto.com/701797/762046),发现SYSAUX表空间还是占用严重。

下面介绍一下如何清理SYSAUX表空间

一.清理SYSAUX下的历史统计信息

1.将历史统计信息保留时间设为无限

exec dbms_stats.alter_stats_history_retention(-1);

2.truncate较大的TABLE

truncate table sys.WRI$_OPTSTAT_HISTHEAD_HISTORY;

truncate table sys.WRI$_OPTSTAT_HISTGRM_HISTORY;

3.清理历史统计信息

exec dbms_stats.purge_stats(sysdate-101);

exec dbms_stats.purge_stats(sysdate-51);

exec dbms_stats.purge_stats(sysdate-5);

4.将历史统计信息保留时间设为10天

exec dbms_stats.alter_stats_history_retention(10);

5.将历史统计信息相关的表进行MOVE

alter table sys.WRI$_OPTSTAT_HISTHEAD_HISTORY move tablespace sysaux;

alter index sys.I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST rebuild online;

alter index sys.I_WRI$_OPTSTAT_HH_ST rebuild online;

alter table sys.WRI$_OPTSTAT_HISTGRM_HISTORY move tablespace sysaux;

alter index sys.I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST rebuild online;

alter index sys.I_WRI$_OPTSTAT_H_ST rebuild online;

alter table sys.WRI$_OPTSTAT_IND_HISTORY move tablespace sysaux;

alter index sys.I_WRI$_OPTSTAT_IND_OBJ#_ST rebuild online;

alter index sys.I_WRI$_OPTSTAT_IND_ST rebuild online;

alter table sys.WRI$_OPTSTAT_TAB_HISTORY move tablespace sysaux;

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

alter index sys.I_WRI$_OPTSTAT_TAB_OBJ#_ST rebuild online;

alter index sys.I_WRI$_OPTSTAT_TAB_ST rebuild online;

ALTER TABLE SYS.WRI$_OPTSTAT_OPR MOVE TABLESPACE SYSAUX;

ALTER TABLE SYS.WRI$_OPTSTAT_AUX_HISTORY MOVE TABLESPACE SYSAUX;

ALTER INDEX SYS.I_WRI$_OPTSTAT_AUX_ST REBUILD ONLINE;

ALTER INDEX SYS.I_WRI$_OPTSTAT_OPR_STIME REBUILD ONLINE;

6.对MOVE表的统计信息进行收集

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_HISTHEAD_HISTORY’,cascade => TRUE);

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_HISTGRM_HISTORY’,cascade => TRUE);

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_IND_HISTORY’,cascade => TRUE);

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_TAB_HISTORY’,cascade => TRUE);

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_OPR’,cascade => TRUE);

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_AUX_HISTORY’,cascade => TRUE);

二.清理SYAUX下的无效ASH信息

1.检查是否有无效的ASH信息

select count(*)

from sys.wrh$_active_session_history a

where not exists (select 1

from sys.wrm$_snapshot b

where a.snap_id = b.snap_id

and a.dbid = b.dbid

and a.instance_number = b.instance_number);

2.清理无效的ASH信息

delete

from sys.wrh$_active_session_history a

where not exists (select 1

from sys.wrm$_snapshot b

where a.snap_id = b.snap_id

and a.dbid = b.dbid

and a.instance_number = b.instance_number);

3.对ASH表清理后的碎片整理

alter table sys.wrh$_active_session_history enable row movement;

alter table sys.wrh$_active_session_history shrink space cascade;

alter table sys.wrh$_active_session_history disable row movement;

4.收集碎片整理后表的统计信息

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRH$_ACTIVE_SESSION_HISTORY’,cascade => TRUE);

3.检查表空间可收缩的的位置

select a.FILE#,

a.NAME,

a.BYTES / 1024 / 1024 mb,

ceil(HWM * A.BLOCK_SIZE) / 1024 / 1024 RESIZETO,

‘ALTER DATABASE DATAFILE ”’ || A.NAME || ”’ RESIZE ‘ ||

(trunc(CEIL(HWM * A.BLOCK_SIZE) / 1024 / 1024)+20) || ‘M;’ RESIZECMD

from v$datafile a,

(SELECT C.file_id, MAX(C.block_id + C.blocks – 1) HWM

FROM DBA_EXTENTS C

GROUP BY FILE_ID) B

WHERE A.FILE# = B.FILE_ID

AND a.tablespace=’SYSAUX’

ORDER BY 5;

三.SYSAUX清理后的检查

1.清理后的无效INDEX检查

select * from dba_indexes where status<>‘VALID’ AND STATUS<>‘N/A’;

SELECT * FROM DBA_IND_PARTITIONS WHERE STATUS<>‘USABLE’ AND STATUS<>‘N/A’;

SELECT * FROM DBA_IND_SUBPARTITIONS WHERE STATUS<>‘USABLE’;

上面语句应均无数据返回,如有则对这些INDEX进行重建

2.清理后的INDEX并行度检查

select * from dba_indexes where degree not in (’1′,’0′,’DEFAULT’);

本文出自 “richard的笔记-积微成著” 博客,请务必保留此出处http://zxf261.blog.51cto.com/701797/776496

时间: 2024-10-03 14:54:37

Oracle SYSAUX空间问题的解决方法的相关文章

ORACLE中一些问题的解决方法

oracle|解决|问题  ORACLE中一些问题的解决方法 在ORACLE管理和应用中,难免出现一些问题.通常,ORACLE会显示错误标号和简短说明,我们可以根据显示的信息去处理问题.但有时显示的信息很少,处理起来有些麻烦.本文讨论了这样几个问题,根据一些资料和经验,提出了解决方法.   一.             ORA-00604 error occurred at recursive SQL level 这个信息表明,在数据库执行内部SQL语句时,发生了错误.比如,要往表中插入一行数据

Win7系统存储空间不足怎么办?Win7磁盘空间不足的解决方法

步骤: 1.先点击左下的"开始"菜单 ,并直接输入磁盘清理,点击磁盘清理的程序.如图: 2.在弹出的"磁盘清理"界面,下拉菜单中选择需要清理的磁盘(一般来说C盘比较需要清理,因为系统缓存.垃圾文件.浏览痕迹都会在系统盘)点击确定: 3.等待系统开机扫描: 4.扫描完成后,勾选需要清理的选项,点击"确定"即可清理干净. 以上就是小编带来的Win7磁盘空间不足的解决方法,感谢大家的阅读!

EXP-00008: ORACLE error 904 encountered的解决方法

error|oracle|解决 [错误情况] [oracle@ccdevsvr admin]$ exp wmap/pass@jackeydb Export: Release 8.1.7.4.0 - Production on Fri Oct 8 11:28:37 2004 (c) Copyright 2000 Oracle Corporation.  All rights reserved. Connected to: Oracle9i Release 9.2.0.1.0 - Productio

Oracle存储过程编译卡死的解决方法

解决方法如下: 1:查V$DB_OBJECT_CACHE SELECT * FROM V$DB_OBJECT_CACHE WHERE name='CRM_LASTCHGINFO_DAY' AND LOCKS!='0'; 注意:CRM_LASTCHGINFO_DAY为存储过程的名称. 发现locks=2, 2:按对象查出sid的值 select /*+ rule*/  SID from V$ACCESS WHERE object='CRM_LASTCHGINFO_DAY'; 注意:CRM_LAST

Excel2003内存或磁盘空间不足的解决方法

你遇到过Excel提示内存不足的问题吗?Excel提示内存不足怎么办?不要紧,本文就来帮你解决Excel提示内存不足的问题. Excel处理过于庞大的数据量时,其性能会低于专业的数据库软件,并完全依赖于电脑的硬件配置.因此,当排序或筛选的数据区域过大时,Excel可能会提示用户"内存不足".此时,可以采用以下的解决方法. 1.增加电脑的物理内存. 2.优化电脑的性能,如关闭暂时不需要的其他程序,清理系统分区以保留足够剩余空间,删除Windows临时文件等. 3.减小排序的数据区域.

【Oracle】RMAN-03009 ORA-01400 错误解决方法

  生产库备份遇到ORA-01400 错误~当rman 不使用 catalog时,RMAN 命令可以正常实施~!当rman 备份使用catalog数据库时,执行rman 命令总是报错:ORA-01400:cannot insert NULL into ("RMAN_YANGDB"."RLH"."LOW_TIME") RMAN> resync catalog; starting full resync of recovery catalog

Linux系统SureHA集群oracle脚本问题测试及解决方法

其中需要监控脚本.   ec01_watch.sh内容如下(根据实际情况将ec01替换为客户实例名):    代码如下 复制代码 check=`ps -eaf |grep ora_pmon_ec01 |grep -v grep |awk '{print $2}'`  while [ $check ]  do   sleep 3   check=`ps -eaf |grep ora_pmon_ec01 |grep -v grep |awk '{print $2}'`  done 数据库正常启动后,

XP系统开机提示注册表空间不足的解决方法

  今天小编在打开电脑的时候,突然跳出个"注册表空间不足"的提示,只有在关闭此窗口的情况下,才能正常的运行电脑.打开之后电脑的使用和往常没有什么区别,但是每次运行电脑的时候都会先跳出这样的提示,虽然没有什么影响,但是总觉得哪里出了什么问题,而且老是跳出这样的提示也很烦人,下面小编就来教大家如何彻底关闭"注册表空间不足"的提示. XP注册表空间不足解决的方法 具体的操作方法如下: 1.首先我们点击自己电脑的开始菜单,点击左下角的图标,弹出栏目我们找到里面的运行选项,点

关于在Windows中安装Oracle碰到ORA-12638错误的解决方法

oracle|window|错误|解决 今天应邀安装一个Windows上的Oracle9i数据库 不想居然碰到了一些问题 1.安装完Oracle9201软件 2.安装完Oracle9205 patchset 3.dbca创建数据库,创建过程中碰到ORA-12638错误,凭证检索失败,创建数据库失败 4.由于保存了创建脚本,所以决定用脚本执行,看看错在哪儿 5.dbca先删除了刚才创建了半半拉拉的数据库 6.运行脚本,在connect system/change_on_install as sys