一、查询前用户的表空间信息
1、 查询当前用户的所有表空间
SELECT * FROM dba_tablespace;
2、 已G为单位
SELECT b.tablespace_name tbs_name, -- 表空间名
round(b.total / 1024, 2) tbs_realsize, -- 表空间实际大小(G)
round(c.tbs_size / 1024, 2) tbs_canresize, -- 表空间可恢复大小(G)
round((b.total - nvl(a.free, 0)) / 1024, 2) tbs_used, -- 表空间已使用大小(G)
round((b.total - nvl(a.free, 0)) / b.total, 4) * 100 per, -- 表空间使用率%
round((c.tbs_size - b.total + nvl(a.free, 0)) / 1024, 2) tbs_canuse -- 表空间剩余大小(G)
FROM (SELECT tablespace_name, round(SUM(bytes) / 1024 / 1024, 0) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, round(SUM(bytes) / 1024 / 1024, 0) total
FROM dba_data_files
GROUP BY tablespace_name) b,
(SELECT tablespace_name,
round(SUM(CASE
WHEN autoextensible = 'yes' THEN
maxbytes
ELSE
user_bytes
END) / 1024 / 1024,
0) tbs_size
FROM dba_data_files
GROUP BY tablespace_name) c
WHERE a.tablespace_name(+) = b.tablespace_name
AND b.tablespace_name = c.tablespace_name;
SQL> SELECT b.tablespace_name tbs_name,
2 round(b.total / 1024, 2) tbs_realsize,
3 round(c.tbs_size / 1024, 2) tbs_canresize,
4 round((b.total - nvl(a.free, 0)) / 1024, 2) tbs_used,
5 round((b.total - nvl(a.free, 0)) / b.total, 4) * 100 per,
6 round((c.tbs_size - b.total + nvl(a.free, 0)) / 1024, 2) tbs_canuse
7 FROM (SELECT tablespace_name, round(SUM(bytes) / 1024 / 1024, 0) free
8 FROM dba_free_space
9 GROUP BY tablespace_name) a,
10 (SELECT tablespace_name, round(SUM(bytes) / 1024 / 1024, 0) total
11 FROM dba_data_files
12 GROUP BY tablespace_name) b,
13 (SELECT tablespace_name,
14 round(SUM(CASE
15 WHEN autoextensible = 'yes' THEN
16 maxbytes
17 ELSE
18 user_bytes
19 END) / 1024 / 1024,
20 0) tbs_size
21 FROM dba_data_files
22 GROUP BY tablespace_name) c
23 WHERE a.tablespace_name(+) = b.tablespace_name
24 AND b.tablespace_name = c.tablespace_name;
TBS_NAME TBS_REALSIZE TBS_CANRESIZE TBS_USED PER TBS_CANUSE
------------------------------------------------------------ ------------ ------------- ---------- ---------- ----------
SYSAUX .54 .54 .5 93.09 .04
UNDOTBS1 .07 .07 .04 50.67 .04
USERS 0 0 0 40 0
SYSTEM .66 .66 .66 99.12 0
结果集如下:
TBS_NAME | TBS_REALSIZE | TBS_CANRESIZE | TBS_USED | PER | TBS_CANUSE |
---|---|---|---|---|---|
SYSAUX | .54 | .54 | .5 | 93.09 | .04 |
UNDOTBS1 | .07 | .07 | .04 | 50.67 | .04 |
USERS | 0 | 0 | 0 | 40 | 0 |
SYSTEM | .66 | .66 | .66 | 99.12 | 0 |
这个SQL查询用于检索数据库中表空间的信息。让我们逐步解释这个查询:
-
- b.tablespace_name as tbs_name:检索表空间的名称。
- ROUND(b.total/1024,2) as tbs_realsize:计算表空间的实际大小(以G为单位),并将结果四舍五入到两位小数。
- ROUND(c.tbs_size/1024,2) as tbs_canresize:计算表空间可以调整大小的空间大小(以G为单位),并将结果四舍五入到两位小数。
- ROUND((b.total-nvl(a.free,0))/1024,2) as tbs_used:计算表空间的已使用空间(以G为单位),并将结果四舍五入到两位小数。
- ROUND((b.total-nvl(a.free,0))/b.total,4)*100 as per:计算表空间使用的百分比,并将结果四舍五入到四位小数。
- ROUND((c.tbs_size – b.total + nvl(a.free,0))/1024,2) as tbs_canuse:计算表空间中可用的空间大小(以G为单位),并将结果四舍五入到两位小数。
总的来说,该查询提供了关于数据库中表空间大小、使用情况和可用空间的详细信息。
3、 已MB为单位
SELECT a.tablespace_name "TBS_NAME", -- 表空间名
total / (1024 * 1024) "TBS_REALSIZE(M)", -- 表空间实际大小(M)
free / (1024 * 1024) "TBS_CANUSE(M)", -- 表空间剩余大小(M)
(total - free) / (1024 * 1024) "TBS_USED(M)", -- 表空间已使用大小(M)
round((total - free) / total, 4) * 100 "PRE(%)" -- 表空间使用率 %
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
SQL> SELECT a.tablespace_name "TBS_NAME", -- 表空间名
2 total / (1024 * 1024) "TBS_REALSIZE(M)", -- 表空间大小(M)
3 free / (1024 * 1024) "TBS_CANUSE(M)", -- 表空间剩余大小(M)
4 (total - free) / (1024 * 1024) "TBS_USED(M)", -- 表空间使用大小(M)
5 round((total - free) / total, 4) * 100 "PRE(%)" -- 使用率 %
6 FROM (SELECT tablespace_name, SUM(bytes) free
7 FROM dba_free_space
8 GROUP BY tablespace_name) a,
9 (SELECT tablespace_name, SUM(bytes) total
10 FROM dba_data_files
11 GROUP BY tablespace_name) b
12 WHERE a.tablespace_name = b.tablespace_name;
TBS_NAME TBS_REALSIZE(M) TBS_CANUSE(M) TBS_USED(M) PRE(%)
------------------------------------------------------------ --------------- ------------- ----------- ----------
SYSAUX 550 38.1875 511.8125 93.06
UNDOTBS1 75 37.0625 37.9375 50.58
USERS 5 3.125 1.875 37.5
SYSTEM 680 5.5 674.5 99.19
结果集如下:
TBS_NAME | TBS_REALSIZE(M) | TBS_CANUSE(M) | TBS_USED(M) | PRE(%) |
---|---|---|---|---|
SYSAUX | 550 | 38.1875 | 511.8125 | 93.06 |
UNDOTBS1 | 75 | 37.0625 | 37.9375 | 50.58 |
USERS | 5 | 3.125 | 1.875 | 37.5 |
SYSTEM | 680 | 5.5 | 674.5 | 99.19 |
这个SQL查询用于检索数据库中表空间的信息。让我们逐步解释这个查询:
-
- a.tablespace_name “TBS_NAME”:检索表空间的名称。
- total / (1024 * 1024) “TBS_REALSIZE(M)”:计算表空间的实际大小(以MB为单位),并将结果命名为”TBS_REALSIZE(M)”。
- free / (1024 * 1024) “TBS_CANUSE(M)”:计算表空间的剩余大小(以MB为单位),并将结果命名为”TBS_CANUSE(M)”。
- (total – free) / (1024 * 1024) “TBS_USED(M)”:计算表空间的已使用大小(以MB为单位),并将结果命名为”TBS_USED(M)”。
- round((total – free) / total, 4) * 100 “PRE(%)”:计算表空间的使用率,并将结果命名为”PRE(%)”。
总的来说,该查询提供了关于数据库中表空间大小、使用情况和可用空间的详细信息,并以MB为单位。
二、以上俩段sql查出结果集存在差异的原因
在这两个SQL查询中,结果存在微小差异的原因可能是由于以下几个因素导致的:
以上是一些可能导致微小差异的原因。要深入了解这些差异,可能需要对数据和SQL查询进行更详细的分析。
原文地址:https://blog.csdn.net/qq_46645079/article/details/134643981
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_6319.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。