Oracle:如何在没有 dba 权限时检查 tablespace 使用的 space

Oracle: how to check space used by a tablespace when no dba privs

我需要检查 tablespace 使用的 space,但我没有 dba 权限。有办法吗?

不幸的是,如果没有对 dba_free_spacedba_segments 视图的明确许可,您将只能使用用户的默认表空间:

SELECT
  ts.tablespace_name,
  TO_CHAR(SUM(NVL(fs.bytes,0))/1024/1024, '99,999,990.99') AS MB_FREE
FROM
  user_free_space fs,
  user_tablespaces ts,
  user_users us
WHERE
  fs.tablespace_name(+)   = ts.tablespace_name
AND ts.tablespace_name(+) = us.default_tablespace
GROUP BY
  ts.tablespace_name;

如果您需要检查没有用户将其作为默认表空间的表空间的大小,您将不得不返回给您的 DBA。
默认使用系统表空间进行测试:

使用应用程序表空间作为默认表空间进行测试:

此模式没有对 dba 视图的查询:

select * from dba_free_space;
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
Error at Line: 13 Column: 15