表空间查看以及表空间对象占用

查看表空间

dba_free_space数据库空余空间
dba_data_files数据库文件总占用
dba_tablespaces数据库表空间信息

select
a.a1 表空间名称,
c.c2 类型,
c.c3 区管理,
b.b2/1024/1024 表空间大小M,
(b.b2-a.a2)/1024/1024 已使用M,
substr((b.b2-a.a2)/b.b2*100,1,5) 利用率
from
(select  tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b2 from dba_data_files group by tablespace_name) b,
(select tablespace_name c1,contents c2,extent_management c3  from dba_tablespaces) c
where a.a1=b.b1 and c.c1=b.b1;

----------------------------------

查看表空间中各对象的占用量

dba_segments 数据库段信息

select t.owner,
       t.segment_name,
       t.segment_type,
       partition_name,
       t.tablespace_name,
       t.blocks * 8 / 1024 sizem
  from dba_segments t
  where tablespace_name='xxxxxx'
order by t.blocks desc;
group by t.cp_id

-----------------------------------

查看tablespace对应的datafiles文件路径

select tablespace_name,file_name from dba_data_files
where tablespace_name='TABLESAPCE_NAME'

------------------------------------

增加表空间容量(默认初始100M,可扩展)
alter tablespace xxx add datafile 'xxx\xxx\xxx.dbf' size 100m

搜下资料,文件最大值与数据库block大小以及系统文件最大值有关,按照Oracle文档的描述,每个datafile的最大容量为(2^22-1)个block,即4194303个block,当前数据库的block大小是8k,也就是说最大的文件大小是32G,以Oracle的限制,如果要建普通的datafile,最大的大小就是 (2^22-1)*32K = 128G,注:Oracle最大支持block为32k。存在这个限制是因为Oracle的内部ROWID使用22位2进制数来存储不同的block号,所以22位最多代表(2^22-1)个block。oracle10g引入bigfile tablespace可以最大到128T,不过此时只允许创建一个datafile,而不允许再添加datafile。

你可能感兴趣的:(tablespaces)