#查看表空间的空闲空间和已使用空间大小
select file_name,total_size,total_size-free_size USED_SIZE,free_size
from (select file_id,file_name,bytes/1024/1024 TOTAL_SIZE from dba_data_files) F,
(select file_id,sum(bytes)/1024/1024 FREE_SIZE FROM DBA_FREE_SPACE GROUP BY FILE_ID) E
WHERE F.FILE_ID=E.FILE_ID;
---
删除损坏的数据文件,并将数据文件脱机并删除
alter database datafile ... offline for drop
---
移动同一个表空间的数据文件并改名
案例一:需要对每个数据文件执行恢复
1. alter tablespace users datafile offline;
2. 物理移动数据文件
3. alter tablespace users rename datafile '/opt/...users01.dbf' to '/disk/users01.dbf';
4. recover datafile '/disk/users01.dbf'; 或者 recover datafile file_id; #需要查询users01.dbf对应的file_id
5. 将表空间联机
或者
案例二: 不需要对每个数据文件进行恢复
1. alter tablespace users offline; #所有数据文件全部离线
2. 物理移动数据文件
3. alter tablespace users rename datafile '/opt/...users01.dbf' to '/disk/users01.dbf';
4. 将表空间联机
---
以表空间为单位移动数据文件并改名
1. startup mount
2. 物理移动表空间
3. alter database rename file '/opt.../user01.dbf','/opt/.../example01.dbf'
to '/disk/...user01.dbf','/disk/....example01.dbf'
4. alter database open;
---
删除空的数据文件,指该文件分配的所有区都被回收
1. alter tablespace users drop datafile '/opt/...user01.dbf';
2. alter tablespace temp drop tempfile '/opt/...temp01.dbf';
3. alter database tempfile '/opt/...temp01.dbf' drop;
注意:
alter tablespace users offline; #表空间status信息会变成offline,不需要恢复,直接online
alter tablespace users datafile offline; #表空间status信息还是read write,需要对数据文件进行recover,然后online