如何从单个查询中获取所有表空间名称,分配大小,可用大小,容量?

Reg*_*gon 12 oracle

如何以下面的格式获取有关我数据库中所有表空间的信息.

TABLESPACE_NAME | FILE_NAME |  ALLOCATED_MB  | FREE_MB |  CAPACITY |
Run Code Online (Sandbox Code Playgroud)

有没有办法自动将所有表空间的每日大小存储在另一个表中?实际上我需要每天准备关于桌面空间的清单.所以我不想创建前端,根据每天存储表空间大小信息的表自动向我发送表空间大小详细信息.

Dba*_*Dba 20

尝试以下查询以获取oracle中的所有表空间详细信息.假设您具有访问dba表所需的权限.

SELECT a.file_name,
       substr(A.tablespace_name,1,14) tablespace_name,
       trunc(decode(A.autoextensible,'YES',A.MAXSIZE-A.bytes+b.free,'NO',b.free)/1024/1024) free_mb,
       trunc(a.bytes/1024/1024) allocated_mb,
       trunc(A.MAXSIZE/1024/1024) capacity,
       a.autoextensible ae
FROM (
     SELECT file_id, file_name,
            tablespace_name,
            autoextensible,
            bytes,
            decode(autoextensible,'YES',maxbytes,bytes) maxsize
     FROM   dba_data_files
     GROUP BY file_id, file_name,
              tablespace_name,
              autoextensible,
              bytes,
              decode(autoextensible,'YES',maxbytes,bytes)
     ) a,
     (SELECT file_id,
             tablespace_name,
             sum(bytes) free
      FROM   dba_free_space
      GROUP BY file_id,
               tablespace_name
      ) b
WHERE a.file_id=b.file_id(+)
AND A.tablespace_name=b.tablespace_name(+)
ORDER BY A.tablespace_name ASC; 
Run Code Online (Sandbox Code Playgroud)