如何使用SQL语句查询数据库及表的空间容量

如何使用SQL语句查询数据库及表的空间容量,第1张

--1、查看表空间的名称及大小

select

t.tablespace_name,

round(sum(bytes/(1024*1024)),0)

ts_size

from

dba_tablespaces

t,

dba_data_files

d

where

t.tablespace_name

=

d.tablespace_name

group

by

t.tablespace_name

--2、查看表空间物理文件的名称及大小

select

tablespace_name,

file_id,

file_name,

round(bytes/(1024*1024),0)

total_space

from

dba_data_files

order

by

tablespace_name

3.查看所有表空间使用情况

select

b.file_id

文件ID号,

b.tablespace_name

表空间名,

b.bytes/1024/1024||'M'字节数,

(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M'

已使用,

sum(nvl(a.bytes,0))/1024/1024||'M'

剩余空间,

round(100

-

sum(nvl(a.bytes,0))/(b.bytes)*100,2)||

'%'

占用百分比

from

dba_free_space

a,dba_data_files

b

where

a.file_id=b.file_id

group

by

b.tablespace_name,b.file_id,b.bytes

order

by

b.file_id

总有一款适合你!

没问题,varchar和nvarchar是不定长的,数据库会根据存放的实际字节分配长度的,不会直接分配4000字节。除了存放英文字母的时候会占用两个字节,有点浪费。

char和nchar是定长的,不够的部分会自动补齐,分配指定字节长度的空间

你说的30M的文件是指备份吧?

备份文件大小并不代表还原出来的数据库文件大小。有时候日志文件很大,其中大部分都是未使用的空间,而没有进行收缩就进行备份的话,备份文件中记录的还是日志文件的大小,在还原的时候就还是很大。你可以执行restore filelistonly来查看备份中文件的大小。比如你的备份文件是d:\db.bak,语句就是

restore filelistonly from disk='d:\db.bak'

在结果集中,size是文件的字节数。如果很大,最好还原到有足够空间的分区,注意要加move选项。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/6702528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存