查看表空间使用情况(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版权协议,转载请附上原文出 ...
随机推荐
- python基础语法14 面向对象
面向对象 1.什么是面向对象? 面向对象是一门编程思想! - 面向过程编程思想: 核心是 “过程” 二字,过程指的是解决问题的步骤,即先干什么再干什么! 基于该编程思想编写程序,就好比在设计一条工厂流 ...
- Type Encodings
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles ...
- UFUN函数 UF_CSYS函数 UF_MTX函数(如何创建坐标系);
// (题目不够长,写在这了) // 函数有 // UF_MTX3_initialize,UF_CSYS_create_matrix,UF_CSYS_create_csys,UF_CSYS_ask_c ...
- 退役III次后做题记录(扯淡)
退役III次后做题记录(扯淡) CF607E Cross Sum 计算几何屎题 直接二分一下,算出每条线的位置然后算 注意相对位置这个不能先搞出坐标,直接算角度就行了,不然会卡精度/px flag:计 ...
- C函数之index、strtoul
index函数 函数定义: #include<strings.h> char *index(const char *s, int c); 函数说明: 找出参数s字符串中第一个出现参数c的地 ...
- linux高性能服务器编程 (二) --IP协议详解
第二章 IP协议详解 什么是IP协议:IP 协议是TCP/IP协议族的动力,它为上层提供了无状态.无连接.不可靠的服务. IP 头部信息:头部信息会出现在每一个IP数据报上,便于记录IP通信的源端IP ...
- python 判断操作系统以及操作系统版本号
>>> import platform >>> platform.platform() 'Darwin-17.7.0-x86_64-i386-64bit' > ...
- 【CSP模拟赛】Freda的旗帜
题目描述 要开运动会了,Freda承担起了制作全校旗帜的工作.旗帜的制作方法是这样的:Freda一共有C种颜色的布条,每种布条都有无数个,你可以认为这些布条的长.宽.厚都相等,只有颜色可能不同.每个 ...
- 油猴ajaxhook
// ==UserScript== // @name ajaxHook // @namespace http://tampermonkey.net/ // @version 0.1 // @descr ...
- docker-nginx 与 tomcat--dockerfile
nginx: FROM nginx:latest COPY nginx/sources.list /etc/apt/sources.list #RUN apt-get update && ...