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


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两种方式扩容表空间均可以,区别在于一个自定义为数据文件指定了名称,一个是关于asm+omf的一个管理方式,oracle会自己给表空间命名(比如你图片圈出来的,就是分别用这两种方式创建的)
评论
有用 0至于大小的问题,首先你的数据文件是自动扩展的,其次,需要看看你的查询语句....
评论
有用 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
D_CLOUDYL 还有几个数据文件没用使用,一个32G不可能剩余是18G
评论
有用 0查询语句有问题,你的空闲空间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
墨值悬赏

