一、背景介绍

Oracle数据库dbf文件创建好之后会持续占用当前所在磁盘空间,如果磁盘空间占满或者磁盘空间明显不够用的时候,需要把dbf文件进行迁移,例如在windows系统中由C盘迁移到D盘,或者在linux系统中由挂载的a目录迁移到b目录中。

数据库文件迁移需要停业务,避免在迁移过程中持续产生新数据造成前后不一致。

迁移的整体流程为:离线表空间->迁移文件->更改表空间映射的数据文件位置->上线表空间->删除原有数据文件->释放原有磁盘空间。

二、迁移流程

1.查看要改变的表空间的数据文件信息

SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='EXAMPLE';

TABLESPACE_NAME FILE_NAME ONLINE_

--------------- ----------------------------------- -------

EXAMPLE D:\ORADATA\ORCL\EXAMPLE01.DBF ONLINE

2.将目标表空间设置为脱机状态

SQL> alter tablespace EXAMPLE offline;

3.再次查看目标表空间的状态,确保其已经是脱机状态

SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='EXAMPLE';

TABLESPACE_NAME FILE_NAME ONLINE_

--------------- ----------------------------------- -------

EXAMPLE D:\ORACLE\ORADATA\EXAMPLE01.DBF OFFLINE

4.将原来的数据文件移动(或复制)到新的路径

SQL> host cp /opt/oracle/oradata/orcl/example01.dbf /mnt/sdc1/oradata/

此处用cp命令意思是“copy”,拷贝较稳妥,防止文件直接迁移之后如果有问题还可以继续恢复用以前的文件。如果现场操作较稳妥,可以直接用mv意思“move”移动。

如果遇到系统提示无权限,或者无法找到文件或无法移动等信息时,说明新的目录需要赋予oracle用户读写权限,此时用root用户运行以下命令:

chmod 777 /mnt/sdc1/oradata/

5.修改该表空间的数据文件路径

SQL> alter tablespace EXAMPLE rename datafile 'D:\ORADATA\ORCL\EXAMPLE01.DBF' to 'D:\ORACLE\ORADATA\EXAMPLE01.DBF';

6.查看该表空间修改后的信息,确保信息无误

SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='EXAMPLE';

TABLESPACE_NAME FILE_NAME ONLINE_

--------------- ----------------------------------- -------

EXAMPLE D:\ORACLE\ORADATA\EXAMPLE01.DBF OFFLINE

7.修改该表空间为在线状态

SQL> alter tablespace EXAMPLE online;

8.查看该表空间最后结果

SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='EXAMPLE';

TABLESPACE_NAME FILE_NAME ONLINE_

--------------- ----------------------------------- -------

EXAMPLE D:\ORACLE\ORADATA\EXAMPLE01.DBF ONLINE

备注:本方法对SYSAUX、USERS表空间也适用

9.删除旧的文件

将之前的旧数据文件删除后,磁盘空间可能暂时无法得到释放,这种情况是因为oracle仍然存在占用数据文件的进程未被杀掉,此时运行以下命令先查找这个表空间涉及的进程有哪些:

lsof |grep delete|grep example

再根据对应的进程号直接运行kill -9命令,进而杀掉进程。

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: