由于oracle表空间数据文件规划问题导致当前数据文件所在文件系统空间不足,当其他文件系统空间充足情况下,可将数据文件移动到空间充足的文件系统下。本文主要描述Oracle表空间数据文件移动的操作步骤。
业务表空间数据文件移动操作方法
1、查看当前待操作表空间DATATBS对应的数据文件的路径、状态。
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='DATATBS';
2、将数据文件所属的表空间DATATBS状态修改为offline。
SQL> ALTER TABLESPACE DATATBS OFFLINE;
3、将需要转移的数据文件转移到到指定的目录下。保证该目录oracle有读写权限。
SQL> ! cp '/opt/oracle/oradata/datatbs.dbf' '/home/oracle/datatbs.dbf';
4、重命名当前数据文件名为修改后的路径。
SQL> alter tablespace datatbs rename datafile '/opt/oracle/oradata/datatbs.dbf' to '/home/oracle/datatbs.dbf';
5、将DATA表空间状态修改为online。
SQL> alter tablespace datatbs online;
6、重新查看数据文件和表空间状态。
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='DATATBS';
temp表空间数据文件转移
1、给当前临时表空间增加一个数据文件
SQL> alter tablespace temp add tempfile '/dev/vgoracle/lvtemp' size 1000M;
2、重启数据库实例
SQL> shutdown immediate;SQL> startup;
3、先修改旧的临时表空间的数据文件状态为offline,然后删除文件
SQL> alter database tempfile '/home/oracle/oradata/ora11g/temp.dbf' offline;SQL> alter database tempfile '/home/oracle/oradata/ora11g/temp.dbf' drop;
undo表空间数据文件转移
参考中的<重建undo表空间>
FAQ
1、上述步骤5如果操作失败,出现提示ORA-01113/ORA-01113需要做介质回复,解决方法
SQL> shutdown immediate;SQL> startup mount;SQL> recover datafile '/home/oracle/datatbs.dbf'; --介质恢复,数据文件为转移后的数据文件绝对路径SQL> alter database open;