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数据库对long类型字段进行模糊匹配的解决思路
Apr 07 Oracle
Oracle设置DB、监听和EM开机启动的方法
Apr 25 Oracle
oracle覆盖导入dmp文件的2种方法
May 21 Oracle
Oracle11g R2 安装教程完整版
Jun 04 Oracle
Oracle创建只读账号的详细步骤
Jun 07 Oracle
ORACLE数据库应用开发的三十个注意事项
Jun 07 Oracle
Oracle 触发器trigger使用案例
Feb 24 Oracle
oracle删除超过N天数据脚本的方法
Feb 28 Oracle
分析SQL窗口函数之聚合窗口函数
Apr 21 Oracle
Oracle用户管理及赋权
Apr 24 Oracle
解决Oracle数据库用户密码过期
May 11 Oracle
Oracle中日期的使用方法实例
Jul 07 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
使用PHP Socket写的POP3类
2013/10/30 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
js实现select下拉框选择
2020/01/11 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python面试题之列表声明实例分析
2019/07/08 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
领导班子整改方案
2014/10/25 职场文书
JavaScript实现简单计时器
2021/06/22 Javascript
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers