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)的更多相关文章

  1. Oracle查看表空间使用情况

     查看表空间使用情况 select upper(f.tablespace_name) "表空间名",        d.tot_grootte_mb "表空间大小(m ...

  2. 【转】mysql查看表空间占用情况

    ${database} 为数据库的名称 /*1.查看索引 (1)单位是GB*/ SELECT CONCAT(ROUND(SUM(index_length)/(**), ), ' GB') AS 'To ...

  3. oracle 查看表空间使用情况

    查看表空间剩余: ||'M' from dba_free_space group by tablespace_name 查看表空间总大小.使用大小.剩余大小,使用率.剩余率 ) useded, tru ...

  4. [转] 使用SQL脚本查看表空间使用率和使用dba_tablespace_usage_metrics视图的差别

    传统的SQL脚本查看表空间使用率,使用的关键视DBA_DATA_FILE和DBA_FREE_SPACE. Oracle 11g引入了DBA_TABLESPACE_USAGE_METRICS视图.其实, ...

  5. 查看Oracle表空间使用情况与增大表空间

    1,查看表空间使用情况 SELECT D.TABLESPACE_NAME, SPACE || 'M' "SUM_SPACE(M)", BLOCKS "SUM_BLOCKS ...

  6. oracle查看表空间的大小及使用情况sql语句

    --------------------------tablespace------------------------------------------------ 1.//查看表空间的名称及大小 ...

  7. Oracle 查看表空间的大小及使用情况sql语句

    --1.查看表空间的名称及大小 )), ) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.t ...

  8. oracle查看表空间的真实使用情况

    --查看表空间的真实使用情况 set linesize 500 pagesize 500 col tablespace_name format a25 col TP_REAL_GB format a1 ...

  9. Oracle数据库查看表空间sql语句

    转: Oracle数据库查看表空间sql语句 2018-09-03 15:49:51 兰海泽 阅读数 6212   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

随机推荐

  1. ArcGIS 合并相邻Polygon

    先说效果: 合并前效果:

  2. PVE手册资料

    PVE 软件源/etc/apt/souces.list apt-get update命令获取软件源中的软件包信息 企业版软件源 /etc/apt/sources.list.d/pve-enterpri ...

  3. SDOI2012 走迷宫

    走迷宫 Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发 ...

  4. typename T::SubType * ptr;

    #include <iostream> using namespace std; template<class T> class MyClass{ public: typena ...

  5. 命令查询windows&Linux系统版本信息

    Linux 查询系统名字输入"cat /proc/version",说明正在运行的内核版本uname -rwindows 查询系统名字win+r -> winversyste ...

  6. Ajax无法访问回调函数seccess问题

    1,后台返回的数据是标准json格式,前端dataType也是josn, 2,没有跨域访问, 但是一直只执行error方法, 原因出在: 应设置为button按钮,指明类型为button

  7. abp radio表单元素 消失了

    框架将原本的元素都隐藏掉了,取而代之的是根据label定义了自己的样式,如下: [type="radio"]:not(:checked)+label {    padding-le ...

  8. Event 事件(最简单实用)

    public partial class Form1 : Form { /// <summary> /// 定义事件 /// </summary> public event E ...

  9. (14)树莓派 - 修改pi账号密码,开启root账号

    https://blog.csdn.net/yoie01/article/details/45115067 1.修改PI账号的密码 password pi 2.开启root账号树莓派使用的linux是 ...

  10. python函数 | 三元运算

    三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值 格式: [on_true] if [expression] else [on_false] 三元运算只适用于简单的if else判断,再多一层 ...