查看表空间使用情况(SQL)
1: --查询表空间使用情况
2: SELECT Upper(F.TABLESPACE_NAME) "表空间名",
3: D.TOT_GROOTTE_MB "表空间大小(M)",
4: D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
5: To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
6: || '%' "使用比",
7: F.TOTAL_BYTES "空闲空间(M)",
8: F.MAX_BYTES "最大块(M)",
9: D.AUTOEXTENSIBLE "是否自增长",
10: D.INCREMENTSIZE "自增长大小(M)"
11: FROM (SELECT TABLESPACE_NAME,
12: Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
13: Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
14: FROM SYS.DBA_FREE_SPACE
15: GROUP BY TABLESPACE_NAME) F,
16: (SELECT DD.TABLESPACE_NAME,
17: Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB,
18: AUTOEXTENSIBLE,
19: --INCREMENT_BY的单位是数据块的大小。数据块大小一般为默认8k
20: Round(INCREMENT_BY * (select value/1024 from v$parameter where name='db_block_size')/1024, 2) INCREMENTSIZE
21: FROM SYS.DBA_DATA_FILES DD
22: GROUP BY DD.TABLESPACE_NAME,AUTOEXTENSIBLE,INCREMENT_BY) D
23: WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
24: ORDER BY "表空间名"
显示结果如下:
参考:https://www.cnblogs.com/xwdreamer/p/3511047.html
自己进行了一些优化,根据表空间的创建时间进行排序。在优化时之所以没有使用三表直接联合查询(from a,b,c where a.xx=b.xx and b.xx=c.xx的方式),是为了提高查询效率。
SELECT Upper(A.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - A.TOTAL_BYTES "已使用空间(M)",
To_char(Round((D.TOT_GROOTTE_MB - A.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') || '%' "使用比",
A.TOTAL_BYTES "空闲空间(M)",
A.MAX_BYTES "最大块(M)",
D.AUTOEXTENSIBLE "是否自增长",
D.incrementSize "自增长大小(M)",
D.CREATE_TIME "创建时间"
FROM (select T.TABLESPACE_NAME,
Round(Sum(T.BYTES) / (1024 * 1024), 2) AS TOTAL_BYTES,
Round(Max(T.BYTES) / (1024 * 1024), 2) AS MAX_BYTES
from SYS.DBA_FREE_SPACE t
group by t.TABLESPACE_NAME) A,
(SELECT B.autoextensible,
Round(Sum(B.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB,
Round(B.increment_by *
(select value
from v$parameter
where name = 'db_block_size') / (1024 * 1024),
2) AS incrementSize,--自增长大小为数据库中数据块的个数,一个数据块一般为8k
B.TABLESPACE_NAME,
min(C.CREATION_TIME) CREATE_TIME--获取创建时间,如果有多个数据文件,获取到最初时间
FROM SYS.DBA_DATA_FILES B, v$DATAFILE C
WHERE B.file_id = C.FILE#
group by B.TABLESPACE_NAME, B.autoextensible, B.increment_by) D
WHERE A.TABLESPACE_NAME = D.TABLESPACE_NAME
order by D.CREATE_TIME;
显示结果如下:
增加使用该表空间的用户信息:
--1查询表空间以及其使用情况以及对应用户
select zzz.TABLESPACE_NAME "表空间名",
zzz.TOT_GROOTTE_MB "表空间大小(M)",
zzz.incrementSize "自增长大小(M)",
zzz.use_percentage "使用比",
zzz.CREATE_TIME "创建时间",
xxx.all_users "用户名"
from (SELECT A.TABLESPACE_NAME,
D.TOT_GROOTTE_MB,
D.TOT_GROOTTE_MB - A.TOTAL_BYTES,
To_char(Round((D.TOT_GROOTTE_MB - A.TOTAL_BYTES) /
D.TOT_GROOTTE_MB * 100,
2),
'990.99') || '%' use_percentage,
A.TOTAL_BYTES freesize,
A.MAX_BYTES maxblock,
D.AUTOEXTENSIBLE,
D.incrementSize,
D.CREATE_TIME
FROM (select T.TABLESPACE_NAME,
Round(Sum(T.BYTES) / (1024 * 1024), 2) AS TOTAL_BYTES,
Round(Max(T.BYTES) / (1024 * 1024), 2) AS MAX_BYTES
from SYS.DBA_FREE_SPACE t
group by t.TABLESPACE_NAME) A,
(SELECT B.autoextensible,
Round(Sum(B.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB,
Round(B.increment_by *
(select value
from v$parameter
where name = 'db_block_size') / (1024 * 1024),
2) AS incrementSize, --自增长大小为数据库中数据块的个数,一个数据块一般为8k
B.TABLESPACE_NAME,
min(C.CREATION_TIME) CREATE_TIME --获取创建时间,如果有多个数据文件,获取到最初时间
FROM SYS.DBA_DATA_FILES B, v$DATAFILE C
WHERE B.file_id = C.FILE#
group by B.TABLESPACE_NAME, B.autoextensible, B.increment_by) D
WHERE A.TABLESPACE_NAME = D.TABLESPACE_NAME
order by D.CREATE_TIME) zzz
left join (select t.default_tablespace,
to_char(wmsys.wm_concat(username)) all_users
from dba_users t
group by t.default_tablespace) xxx
on zzz.TABLESPACE_NAME = xxx.default_tablespace
写的比较急,没有进行仔细优化,希望大家多多指教!
查看表空间使用情况(SQL)的更多相关文章
- Oracle查看表空间使用情况
查看表空间使用情况 select upper(f.tablespace_name) "表空间名", d.tot_grootte_mb "表空间大小(m ...
- 【转】mysql查看表空间占用情况
${database} 为数据库的名称 /*1.查看索引 (1)单位是GB*/ SELECT CONCAT(ROUND(SUM(index_length)/(**), ), ' GB') AS 'To ...
- oracle 查看表空间使用情况
查看表空间剩余: ||'M' from dba_free_space group by tablespace_name 查看表空间总大小.使用大小.剩余大小,使用率.剩余率 ) useded, tru ...
- [转] 使用SQL脚本查看表空间使用率和使用dba_tablespace_usage_metrics视图的差别
传统的SQL脚本查看表空间使用率,使用的关键视DBA_DATA_FILE和DBA_FREE_SPACE. Oracle 11g引入了DBA_TABLESPACE_USAGE_METRICS视图.其实, ...
- 查看Oracle表空间使用情况与增大表空间
1,查看表空间使用情况 SELECT D.TABLESPACE_NAME, SPACE || 'M' "SUM_SPACE(M)", BLOCKS "SUM_BLOCKS ...
- oracle查看表空间的大小及使用情况sql语句
--------------------------tablespace------------------------------------------------ 1.//查看表空间的名称及大小 ...
- Oracle 查看表空间的大小及使用情况sql语句
--1.查看表空间的名称及大小 )), ) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.t ...
- oracle查看表空间的真实使用情况
--查看表空间的真实使用情况 set linesize 500 pagesize 500 col tablespace_name format a25 col TP_REAL_GB format a1 ...
- Oracle数据库查看表空间sql语句
转: Oracle数据库查看表空间sql语句 2018-09-03 15:49:51 兰海泽 阅读数 6212 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
随机推荐
- 基于TCP和UDP的Socket通信
TCP的Socket通信 TCP是面向连接的,安全的协议,它是一对一的关系 server client 上面只是单个客户端同服务器通信,可使用多线程编程实现多个客户端的通信 UDP的Socket通信 ...
- React.js Tutorial: React Component Lifecycle
Introduction about React component lifecycle. 1 Lifecycle A React component in browser can be any of ...
- 什么叫pure function(纯函数)
(来自:http://en.wikipedia.org/wiki/Pure_function) 在计算机编程中,假如满足下面这两个句子的约束,一个函数可能被描述为一个纯函数: 给出同样的参数值,该函数 ...
- IDEA创建Mybatis的配置文件---sqlMapConfig.xml
Mybatis的配置文件不像Spring的配置文件,在Maven当中添加过依赖之后就可以在下面这个地方打开,需要自己去手动去编写配置文件,但是自己编写的话会记不住要引入的DTD,所以就需要自己创建一个 ...
- [Javascript] ES6 Class Constructors and the Super Keyword
When the ES6 class shipped back in 2015, a number of additional keywords came with it. Two of these ...
- minikube 安装试用
目前使用k8s 要么用的物理机搭建的环境,要么就是使用docker for mac 中kubernetes 的特性,为了本地调试方便,使用下minikube minukube 包含的特性 负载均衡器 ...
- linux命令之------Mv命令
Mv命令 1)作用:用来为文件或目录改名/或将文件或目录一如其他位置 2)-i:若指定目录已有同名文件,则先询问是否覆盖旧文件: 3)-f:在mv操作要覆盖某已有的目标文件时,不给任何指示: 4)案例 ...
- jQuery基础案例
一.隔行换色 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- Centos7 U盘安装&命令大全
软件下载 1.centos下载,下载地址https://www.centos.org/download/ 我选择的镜像是:CentOS-7-x86_64-DVD-1804.iso 2.UltraISO ...
- OO助教的退休感想
深夜失眠+刚赶完火车的胡言乱语,切莫当真,择日修改 一年前,我在学姐的怂恿鼓励下,加上了吴老师的微信,表达了想担任下学期的OO助教的想法.三天后,我到新主楼参加OO助教的面试,其实还是蛮紧张的,毕竟自 ...