1、 查看表空间大小
select ta."表空间名",ta."已使用空间(M)",tb."实际表空间大小(M)",round(ta."已使用空间(M)"/tb."实际表空间大小(M)"*100,2) "使用率%" from
(select a."表空间名",a."已使用空间(M)" from (SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB-F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2)) "使用比%",
F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)",TO_CHAR(ROUND(F.TOTAL_BYTES/D.TOT_GROOTTE_MB*100,2)) "剩余比%"
FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES)/(1024*1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES)/(1024*1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME =F.TABLESPACE_NAME ) a) ta
inner join
(select b."表空间名",sum(decode(b."文件最大空间(M)",0,b."已使用空间(M)",b."文件最大空间(M)")) "实际表空间大小(M)" from (SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') 时间,T.TABLESPACE_NAME "表空间名",D.FILE_NAME "数据文件",
D.AUTOEXTENSIBLE "是否自动扩展",ROUND(D.BYTES/(1024*1024), 2) "已使用空间(M)",ROUND((D.MAXBYTES-D.BYTES)/(1024*1024), 2) "文件剩余空间(M)",ROUND(D.MAXBYTES/(1024*1024), 2) "文件最大空间(M)",D.STATUS
FROM DBA_TABLESPACES T,DBA_DATA_FILES D
WHERE 1=1 and T.TABLESPACE_NAME =D.TABLESPACE_NAME) b
group by b."表空间名") tb
on ta."表空间名"=tb."表空间名"
order by 1 desc,2;
2、确定 磁盘或者存储空间的大小
如果是文件系统管理表空间
linux df -TH
或者
unix df -k
或者
aix df -g
如果是asm 管理的表空间
select NAME,STATE ,TOTAL_MB ,FREE_MB from v$asm_diskgroup;
查看表空间 大小,确定表空间有足够的空间来添加数据文件,否则磁盘空间容易爆掉
3、查看表空间,并添加数据文件
查看 表空间现有数据文件
select * From dba_data_files where tablespace_name='NNC_DATA01'
给表空间添加数据文件
alter tablespace NNC_DATA01 add datafile '/cwtest/zjscw/nnc_data01_2.dbf' size 100m
alter database datafile '/cwtest/zjscw/nnc_data01_2.dbf' resize 2000m
建议在业务低峰期添加数据文件,并且扩大数据文件,按照2G逐步递增。
4‘ alter database datafile offline drop 与 alter tablespace drop datafile 区别
alter database datafile 'file_name' offline drop
该命令不会删除数据文件,只是将数据文件的状态更改为recover。 offline drop命令相当于把一个数据文件至于离线状态,并且需要恢复,并非删除数据文件。 数据文件的相关信息还会存在数据字典和控制文件中。
对于归档模式:
alter database datafile 'file_name' offline 和 offline drop 没有什么区别。 因为offline 之后多需要进行recover 才可以online。
对于非归档模式:
如果是非归档模式,只能是offline drop. 因为非归档模式没有归档文件来进行recover操作,当然,如果offline 之后,速度足够块,online redo里的数据还没有被覆盖掉,那么这种情况下,还是可以进行recover的。
alter tablesapce tablespace_name drop datafile 'datafile_name'
该语句会删除控制文件和磁盘上的文件,删除之后的原数据文件序列号可以重用。注意,该语句只能是datafile online的时候才可以使用。如果说对应的数据文件已经是offline for drop,那么仅针对 dictionary managed tablespaces 可用。
alter tablespace test drop datafile 8;
命令不能drop 非空的数据文件, 如果要drop 某个数据文件,需要先把对象移除走,等drop 完成后,在移回来。
SELECT owner ownr,
segment_name name,
segment_type TYPE,
extent_id exid,
file_id fiid,
block_id blid,
blocks blks
FROM dba_extents
WHERE file_id = 8
ORDER BY block_id;
alter database datafile '+DATA/rac/datafile/data01_4.dbf' offline;
alter tablespace data01 drop datafile 6; 会报错
alter database datafile 6 online; 提示需要recover。 这也就是需要归档文件的原因
recover datafile 6;
alter database datafile 6 online;
删除表空间
drop tablespace data01 including contents and datafiles;