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

TABLESPACE_NAME | FILE_NAME |  ALLOCATED_MB  | FREE_MB |  CAPACITY |


有没有办法将所有表空间的每日大小自动存储在另一个表中?实际上,我每天需要准备有关表空间的清单。因此,我不会创建前端,该前端会根据该表自动向我发送有关表空间大小详细信息的电子邮件,该表每天存储有关表空间大小的信息。

最佳答案

尝试以下查询以获取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;

关于oracle - 如何从单个查询中获取所有表空间名称,分配大小,可用大小,容量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19240276/

10-12 07:29