Oracle表空间使用率过大问题处理方法

一、 查看Oracle数据库内表空间使用情况

SELECT a.tablespace_name "表空间名",
       total "表空间大小",
       free "表空间剩余大小",
       (total - free) "表空间使用大小",
       total/(1024*1024*1024) "表空间大小(G)",
       free/(1024*1024*1024) "表空间剩余大小(G)",
       (total - free)/(1024*1024*1024) "表空间使用大小(G)",
       ROUND((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
          FROM DBA_FREE_SPACE
         GROUP BY tablespace_name) a,
       (SELECT tablespace_name, SUM(bytes) total
         FROM DBA_DATA_FILES
        GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;

二、 system表空间过大(使用率95%以上)

1) 检查aud$表是大小

--查看数据库表大小SQL
select bytes,owner,segment_name
from dba_segments
where segment_type='TABLE' order by bytes desc;

--查看aud$表大小SQL
select bytes,owner,segment_name
from dba_segments
where segment_type='TABLE' and segment_name = 'AUD$';

2) 如果aud$过大,清理之

导出aud$表后,用truncate清理

3) 如果出现aud$表为空,system表空间使用率照样达到99%,建议增加数据文件

a)  增加数据文件示例语句

批注:增加的表空间大小自己拟定

alter tablespace system add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SGTMS\SYSTEM02.DBF' size 50M autoextend on

b) 查询验证文件已成功添加

select * from dba_data_files;

三、 sysaux表空间(使用率95%以上)

1) 修改统计信息保存时间

a)
检查统计信息保存时间(默认应该是31天)

select dbms_stats.get_stats_history_retention from dual;

b) 如果31天将其改为7天

exec dbms_stats.alter_stats_history_retention(7);

c) 验证是否修改成功

select dbms_stats.get_stats_history_retention from dual;

2) 删除AWR报告快照

批注:Oracle 10g中快照会保留7天,11g的快照保留8天,超出会自动删除。AWR快照可以从其他数据库导入,而这部分数据会保存时间极长。有时候也会遇到自动快照不能自动收集,而手工创建的快照又可以成功,对于这种情况就需要把以前的快照清理掉。

删除AWR有两种方式进行删除:dbms_workload_repository,dbms_swrf_internal。dbms_workload_repository可以删除本地和其他数据库的快照,可以选择不同的快照来进行删除;dbms_swrf_internal只能对其他数据库的快照来进行操作,会把所有的快照直接干掉。

a) 使用dbms_workload_repository包删除

 select dbid, retention from dba_hist_wr_control;
 select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = '得到的dbid值';
 exec dbms_workload_repository.drop_snapshot_range('得到的min(snap_id)值','得到的max(snap_id)值','得到的dbid值');
 select * from dba_hist_snapshot where dbid = '得到的dbid值';

b) 使用dbms_swrf_internal包删除

 select dbid, retention from dba_hist_wr_control;
 select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = '得到的dbid值';
 exec dbms_swrf_internal.unregister_database('得到的dbid值');
 select * from dba_hist_snapshot where dbid = '得到的dbid值';
时间: 2024-10-06 20:21:44

Oracle表空间使用率过大问题处理方法的相关文章

【Oracle 常用查询】oracle表空间使用率统计查询

参考1 --查询表空间使用情况 SELECT Upper(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99') || '

oracle表空间使用率统计查询

今天发现有一张采样表从1月5号开始不记录数据了,所以想查看一下表空间使用率,在网上零零散散找了很多资料,现在记录如下,也不知道哪一个最准确.还有一个就是网上拷贝的sql代码格式太乱了,不好看,找到一个在线格式化工具. 参考1 --查询表空间使用情况 SELECT Upper(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使

oracle表空间使用率查询

sqlplus -s / as sysdba<<EOFset trimspool onset linesize 10000set pagesize 50000set heading onset term offset heading onset feedback off;set newp none;set echo offset markup html onspool onspool xj.xls--表空间使用率查询: select t.tablespace_name,t.total,f.fr

(转)oracle表空间使用率统计查询

转自:http://www.cnblogs.com/xwdreamer/p/3511047.html 参考文献 文献1:http://blog.itpub.net/24104518/viewspace-730682,字符有格式,需要清理一下 文献2:http://www.cnblogs.com/fengyun627/archive/2009/07/27/1532551.html 文献3:http://blog.csdn.net/hproc/article/details/7372265 sql语

oracle表空间使用率 脚本

参考文献 文献1:http://blog.itpub.net/24104518/viewspace-730682,字符有格式,需要清理一下 文献2:http://www.cnblogs.com/fengyun627/archive/2009/07/27/1532551.html 文献3:http://blog.csdn.net/hproc/article/details/7372265 sql语句格式化:http://web.chacuo.net/formatsql 参考1 --查询表空间使用情

ORACLE 表空间使用率查询

SELECT A.TABLESPACE_NAME, A.BYTES / (1024 * 1024 * 1024 ) TOTAL, B.BYTES / (1024 * 1024 * 1024 ) USED, C.BYTES / (1024 * 1024 * 1024 ) FREE, (B.BYTES * 100 ) / A.BYTES "% USED", (C.BYTES * 100 ) / A.BYTES "% FREE" FROM SYS.SM$TS_AVAIL

zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展.那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者.当检测到表空间没有开启自动扩展时,则触发Information信息.说明一下:ora

[记录]Zabbix3.4配置监控Oracle12c的存活状态和表空间使用率

Zabbix3.4配置监控Oracle的存活状态和表空间使用率 1.安装zabbix3.4 agent: # rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm # yum install zabbix-agent # service zabbix-agent start 2.配置zabbix_agentd.conf [[email protected] zabb

Nagios监控Oracle表空间出现Cannot determine ORACLE_HOME报错

在使用Nagios监控软件时,监控Oracle表空间使用率,遇到了如下错误: 表名监控状态是:UNKNOWN错误信息是:Cannot determine ORACLE_HOME for sid dbnms 由于我是使用root用户启动的nagios,也是用root执行的check_oracle插件的命令.所以首先分析的是环境变量的问题,然后我修改了root目录下的.bash_profile文件中的环境变量,如下: 但是还是出现了上面的错误. 然后我就直接more了下check_oracle插件的