救急!查询表空间使用情况的语句

xspf 2007-12-19 04:04:17
我想查一下数据库表空间使用情况。求来一个语句却发现USED和FREE加起来和TOTAL居然对不上。请各位高人指点一下。

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME
AND A.TABLESPACENAME = '表空间名';

另外,假如我只有以下这些表的访问权限,能不能查到指定表空间的使用情况呢?
DBA_EXTENTS
DBA_DATA_FILES
DBA_TAB_PARTITONS
DBA_TAB_SUBPARTITONS
DBA_OBJECTS
...全文
228 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xspf 2007-12-19
  • 打赏
  • 举报
回复
有dba_tablespaces权限该如何查询呢,救急,没有空试了。
谢谢各位。
zhangxf1981 2007-12-19
  • 打赏
  • 举报
回复
还需要2楼 提到的表的访问权限
ruihuahan 2007-12-19
  • 打赏
  • 举报
回复
dba_tablespaces
bai_jiong 2007-12-19
  • 打赏
  • 举报
回复
used与free加起来与TOTAL对不上,也没有什么奇怪的.

那是因为:

在INSERT 或者 UPDATE时,所使用了的空间,并不会在DELETE 或 UPDATE时都被ORACLE系统回收.
只有当DELETE 或UPDATE时,如果由此操作而空闲的空间足够让新记录进入数据库时,ORACLE才会自动回收空间,并更新一些相关的数据字典.

所以,你查出来USED与FREE相加与TOTAL不相符,也没有什么奇怪的.
xspf 2007-12-19
  • 打赏
  • 举报
回复
还有一点 dba_tablespaces 中查到的MAX_EXTENTS不就是表空间最大可扩展容量吗?和SYS.SM$TS_AVAIL中查到的字节数也对不上啊。

我接触Oracle没多久,问的问题有些初级,哪位高手给个答案救急下啊。

决定再加40分了。
hrb_qiuyb 2007-12-19
  • 打赏
  • 举报
回复
语句:
SELECT owner,segment_name,SUM(bytes)/1024/1024 FROM dba_extents
WHERE tablespace_name='表空间名'
GROUP BY owner,segment_name
ORDER BY 3 DESC

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧