表空间添加数据文件的基本操作

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值