数据文件管理

#查看表空间的空闲空间和已使用空间大小
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

猜你喜欢

转载自www.cnblogs.com/vmsysjack/p/12433772.html