Oracle数据库文件(.dbf文件)迁移

一、背景介绍

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命令,进而杀掉进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值