暂无图片
分享
卢春龙
2019-05-24
查看表空间剩余数量空间跟查看数据文件不一样,数据文件还有好几个,怎么看到剩余表空间这么小

查看表空间剩余数量空间跟查看数据文件不一样,数据文件还有好几个,怎么看到剩余表空间这么小

image.png

image.png


收藏
分享
8条回答
默认
最新
卢春龙

ALTER TABLESPACE users ADD DATAFILE '+DATA/orcltst/datafile/users03' SIZE 1G AUTOEXTEND ON NEXT 100M;

ALTER TABLESPACE users ADD DATAFILE '+DATA' SIZE 1G AUTOEXTEND ON NEXT 100M;

这两种方式多可以吗?增加数据文件有什么差别吗?

暂无图片 评论
暂无图片 有用 0
Gavin Chan
  1. 两种方式扩容表空间均可以,区别在于一个自定义为数据文件指定了名称,一个是关于asm+omf的一个管理方式,oracle会自己给表空间命名(比如你图片圈出来的,就是分别用这两种方式创建的)

暂无图片 评论
暂无图片 有用 0
Gavin Chan

至于大小的问题,首先你的数据文件是自动扩展的,其次,需要看看你的查询语句....

暂无图片 评论
暂无图片 有用 0
卢春龙

--查询剩余表空间,发现数据文件还有几个没有达到32G

SELECT a.tablespace_name "表空间名",


a.bytes / 1024 / 1024 "表空间大小(M)",


(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)",


b.bytes / 1024 / 1024 "空闲空间(M)",


round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比"


FROM (SELECT tablespace_name, sum(bytes) bytes


FROM dba_data_files


GROUP BY tablespace_name) a,


(SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest


FROM dba_free_space


GROUP BY tablespace_name) b


WHERE a.tablespace_name = b.tablespace_name


ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC


暂无图片 评论
暂无图片 有用 0
卢春龙

image.png

D_CLOUDYL 还有几个数据文件没用使用,一个32G不可能剩余是18G


暂无图片 评论
暂无图片 有用 0
yuqi.zhou

查询语句有问题,你的空闲空间b.bytes / 1024 / 1024来源于dba_free_space,里面是没有计算可扩展的空间


提供一个语句给你:

SELECT T.TABLESPACE_NAME TABLESPACE_NAME,
       T.CONTENTS,
       T.STATUS,
       ROUND(SUM(A.BYTES) / 1048576) ALL_MB,
       ROUND(SUM(NVL(F.BYTES, 0)) / 1048576) FREE_MB,
       ROUND(SUM(A.MAXBYTES) / 1048576) MAX_MB,
       ROUND((SUM(A.MAXBYTES - A.BYTES) + SUM(NVL(F.BYTES, 0))) / 1048576) MAX_FREE_MB,
       round((SUM(A.BYTES) - SUM(NVL(F.BYTES, 0))) * 100 / SUM(A.MAXBYTES), 2) "PCT_USED(%)"
  FROM (select file_id,
               tablespace_name,
               file_name,
               decode(MAXBYTES, 0, BYTES, MAXBYTES) maxbytes,
               BYTES
          from DBA_DATA_FILES) A,
       DBA_TABLESPACES T,
       (SELECT FILE_ID, SUM(BYTES) BYTES
          FROM DBA_FREE_SPACE
         GROUP BY FILE_ID) F
 WHERE A.FILE_ID = F.FILE_ID(+)
   AND A.TABLESPACE_NAME = T.TABLESPACE_NAME
 GROUP BY T.TABLESPACE_NAME, T.CONTENTS, T.STATUS
ORDER BY "PCT_USED(%)";

暂无图片 评论
暂无图片 有用 0
卢春龙

谢谢

暂无图片 评论
暂无图片 有用 0
卢春龙
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏