Oracle查看表空间使用率以及爆满解决方案详解


Posted in Oracle onJuly 23, 2022

一、查看表空间使用率

1.查看数据库表空间文件:

--查看数据库表空间文件
select * from dba_data_files;

2.查看所有表空间的总容量:

--查看所有表空间的总容量
select dba.TABLESPACE_NAME, sum(bytes)/1024/1024 as MB  
from dba_data_files dba 
group by dba.TABLESPACE_NAME;

3.查看数据库表空间使用率

--查看数据库表空间使用率
select total.tablespace_name,round(total.MB, 2) as Total_MB,round(total.MB - free.MB, 2) as Used_MB,round((1-free.MB / total.MB)* 100, 2) || '%' as Used_Pct 
from (
select tablespace_name, sum(bytes) /1024/1024 as MB 
from dba_free_space group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files group by tablespace_name) total     
where free.tablespace_name = total.tablespace_name 
order by used_pct desc;

4.1.查看表空间总大小、使用率、剩余空间

--查看表空间总大小、使用率、剩余空间
select a.tablespace_name, total, free, total-free as used, substr(free/total * 100, 1, 5) as "FREE%", substr((total - free)/total * 100, 1, 5) as "USED%"
from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by a.tablespace_name

4.2.查看表空间使用率(包含temp临时表空间)

--查看表空间使用率(包含临时表空间)
select * from (
Select a.tablespace_name,
(a.bytes- b.bytes) "表空间使用大小(BYTE)",
a.bytes/(1024*1024*1024) "表空间大小(GB)",
b.bytes/(1024*1024*1024) "表空间剩余大小(GB)",
(a.bytes- b.bytes)/(1024*1024*1024) "表空间使用大小(GB)",
to_char((1 - b.bytes/a.bytes)*100,'99.99999') || '%' "使用率"
from (select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,
sum(bytes) bytes
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
d.bytes_used "表空间使用大小(BYTE)",
c.bytes/(1024*1024*1024) "表空间大小(GB)",
(c.bytes-d.bytes_used)/(1024*1024*1024) "表空间剩余大小(GB)",
d.bytes_used/(1024*1024*1024) "表空间使用大小(GB)",
to_char(d.bytes_used*100/c.bytes,'99.99999') || '%' "使用率"
from
(select tablespace_name,sum(bytes) bytes
from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
order by tablespace_name

5.查看具体表的占用空间大小

--查看具体表的占用空间大小
select * from (
select t.tablespace_name,t.owner, t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) mb
from dba_segments t
where t.segment_type='TABLE'
group by t.tablespace_name,t.OWNER, t.segment_name, t.segment_type
) t
order by t.mb desc

二、扩展大小或增加表空间文件

1.更改表空间的dbf数据文件分配空间大小

alter database datafile ‘...\system_01.dbf' autoextend on;
alter database datafile ‘...\system_01.dbf' resize 1024M;

2.1 为表空间新增一个数据文件(表空间满32G不能扩展则增加表空间文件)

alter tablespace SYSTEM add datafile '/****' size 1000m autoextend on next 100m;

2.2 如果是temp临时表新增表空间会报错:

0RA-03217: 变更TEMPORARY TABLESPACE 无效的选项

解决方法: datafile改为tempfile

alter tablespace TEMP01 add tempfile'/****' size 1000m autoextend on next 100m;

针对temp临时表空间使用率爆满问题

临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理,但有些时候我们会遇到临时段没有被释放,TEMP表空间几乎满使用率情况;

引起临时表空间增大主要使用在以下几种情况:

1、order by or group by (disc sort占主要部分);

2、索引的创建和重创建;

3、distinct操作;

4、union & intersect & minus sort-merge joins;

5、Analyze 操作;

6、有些异常也会引起TEMP的暴涨。

解决方法一:用上述方法给temp增加表空间文件

解决方法二:在服务器资源空间有限的情况下,重新建立新的临时表空间替换当前的表空间

--1.查看当前的数据库默认表空间:
select * from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';

--2.创建新的临时表空间
create temporary tablespace TEMP01 tempfile 
'/home/temp01.dbf' size 31G;

--3.更改默认临时表空间
alter database default temporary tablespace TEMP01;

--4.删除原来的临时表空间
drop tablespace TEMP02 including contents and datafiles;

--如果删除原来临时表空间报错ORA-60100:由于排序段,已阻止删除表空间...
--(说明有语句正在使用原来的临时表空间,需要将其kill掉再删除,此语句多为排序的语句)
--查询语句
Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space,
tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash
and s.address=su.sqladdr
order by se.username,se.sid;

--删除对应的'sid,serial#'
alter system kill session 'sid,serial#'

附:查看表空间是否具有自动扩展的能力

--查看表空间是否具有自动扩展的能力     
SELECT T.TABLESPACE_NAME,D.FILE_NAME,     
D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS     
FROM DBA_TABLESPACES T,DBA_DATA_FILES D     
WHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME     
 ORDER BY TABLESPACE_NAME,FILE_NAME;

总结

到此这篇关于Oracle查看表空间使用率以及爆满解决方案的文章就介绍到这了,更多相关Oracle查看表空间使用率内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Oracle 相关文章推荐
Oracle笔记
Apr 05 Oracle
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 Oracle
Oracle 区块链表创建过程详解
May 15 Oracle
使用Navicat Premium工具将oracle数据库迁移到MySQL
May 27 Oracle
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
Jun 04 Oracle
Oracle 死锁的检测查询及处理
Sep 25 Oracle
关于Oracle12C默认用户名system密码不正确的解决方案
Oct 16 Oracle
oracle删除超过N天数据脚本的方法
Feb 28 Oracle
Oracle 多表查询基本语法实例
Apr 18 Oracle
分析SQL窗口函数之排名窗口函数
Apr 21 Oracle
SQL试题 使用窗口函数选出连续3天登录的用户
Apr 24 Oracle
Oracle中日期的使用方法实例
Jul 07 #Oracle
oracle设置密码复杂度及设置超时退出的功能
Jun 28 #Oracle
Oracle删除归档日志及添加定时任务
Jun 28 #Oracle
oracle delete误删除表数据后如何恢复
Jun 28 #Oracle
ORACLE中dbms_output.put_line输出问题的解决过程
Jun 28 #Oracle
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
Jun 28 #Oracle
Oracle数据库事务的开启与结束详解
Jun 25 #Oracle
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
社区(php&&mysql)四
2006/10/09 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
用jscript实现新建word文档
2007/06/15 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
理解JS事件循环
2016/01/07 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
Python函数学习笔记
2008/10/07 Python
Python中IPYTHON入门实例
2015/05/11 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python画图高斯分布的示例
2019/07/10 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
老总助理工作岗位职责
2014/02/06 职场文书
个人工作主要事迹
2014/05/08 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
办公经费申请报告
2015/05/15 职场文书
校园广播稿范文
2015/08/19 职场文书