当前位置: 首页 > article >正文

oracle常用通用sql脚本——查询前用户的表空间信息

oracle常用通用sql脚本——查询前用户的表空间信息

  • 一、查询前用户的表空间信息
    • 1、 查询当前用户的所有表空间
    • 2、 已G为单位
    • 3、 已MB为单位
  • 二、以上俩段sql查出结果集存在差异的原因

一、查询前用户的表空间信息

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_NAMETBS_REALSIZETBS_CANRESIZETBS_USEDPERTBS_CANUSE
SYSAUX.54.54.593.09.04
UNDOTBS1.07.07.0450.67.04
USERS000400
SYSTEM.66.66.6699.120

这个SQL查询用于检索数据库中表空间的信息。让我们逐步解释这个查询:

  1. 主要的SELECT语句检索以下列:

    • 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为单位),并将结果四舍五入到两位小数。
  2. 该查询使用三个子查询来收集必要的数据:

    • 子查询’a’从dba_free_space表中检索每个表空间的可用空间,并按tablespace_name进行分组。
    • 子查询’b’从dba_data_files表中检索每个表空间的总空间,并按tablespace_name进行分组。
    • 子查询’c’从dba_data_files表中检索每个表空间的总大小,包括可以调整大小的空间,并按tablespace_name进行分组。
  3. 主查询然后使用WHERE子句将这些子查询连接起来,以tablespace_name进行关联。

总的来说,该查询提供了关于数据库中表空间大小、使用情况和可用空间的详细信息。

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_NAMETBS_REALSIZE(M)TBS_CANUSE(M)TBS_USED(M)PRE(%)
SYSAUX55038.1875511.812593.06
UNDOTBS17537.062537.937550.58
USERS53.1251.87537.5
SYSTEM6805.5674.599.19

这个SQL查询用于检索数据库中表空间的信息。让我们逐步解释这个查询:

  1. 主要的SELECT语句检索以下列:

    • 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(%)"。
  2. 该查询使用两个子查询来收集必要的数据:

    • 子查询’a’从dba_free_space表中检索每个表空间的可用空间,并按tablespace_name进行分组。
    • 子查询’b’从dba_data_files表中检索每个表空间的总空间,并按tablespace_name进行分组。
  3. 主查询然后使用WHERE子句将这些子查询连接起来,以tablespace_name进行关联。

总的来说,该查询提供了关于数据库中表空间大小、使用情况和可用空间的详细信息,并以MB为单位。

二、以上俩段sql查出结果集存在差异的原因

在这两个SQL查询中,结果存在微小差异的原因可能是由于以下几个因素导致的:

  1. 数据精度:在SQL中进行浮点数运算时,可能会存在精度损失。这可能导致在计算中产生微小的差异。

  2. 舍入方式:在不同的计算中可能使用了不同的舍入方式,例如四舍五入、向上取整等,这可能会导致微小差异。

  3. 数据来源:两个SQL查询中的数据来源可能不完全相同,可能存在一些微小的差异,例如数据表中的存储方式不同等。

  4. 单位转换:在结果显示时进行了单位转换,可能存在单位转换时的微小差异。

以上是一些可能导致微小差异的原因。要深入了解这些差异,可能需要对数据和SQL查询进行更详细的分析。


http://www.kler.cn/news/149943.html

相关文章:

  • 快速操控鼠标行为!Vue鼠标按键修饰符让你事半功倍
  • Qt 自定义标题栏
  • UE 事件分发机制(二) day10
  • lightdb substr函数支持浮点类型
  • 基于Qt QChart和QChartView实现正弦、余弦、正切图表
  • Socket的实现过程
  • 【Python 训练营】N_11 模拟进度条
  • 【Vue】生命周期一文详解
  • WinApp自动化测试之工具的选择
  • java开发需要用到的软件,必备软件工具一览
  • Clickhouse使用总结
  • 搜索与图论算法总结
  • 基于C#实现优先队列
  • Ubuntu上的常用软件配置
  • 人工智能与供应链行业融合:预测算法的通用化与实战化
  • 如何使用ArcGIS Pro制作一张北极俯视地图
  • 初识向量数据库
  • yolov4、yolov5优化策略
  • Vue基本使用(一)
  • [Docker]九.Docker compose讲解
  • AIGC:文本生成视频
  • 【笔记】windows+pytorch:部署一下stable diffusion和NeRF
  • C++ day44完全背包问题 零钱兑换Ⅱ 组合总和Ⅳ
  • C语言基础--#if与#endif
  • 深入了解Spring Boot中@Async注解的8大坑点
  • ISCTF2023 部分wp
  • 网络安全 | 使用人工智能阻止网络攻击
  • 微服务实战系列之Redis(cache)
  • 行情分析——加密货币市场大盘走势(11.29)
  • 七、Lua字符串