oracle将本地存储中的数据文件文件迁移到RAC环境下ASM中

发布时间:2021-03-16 00:00:00

RAC环境下,新增一数据文件,结果直接创建到了其中一个节点的本地存储上,现在因需进一步规范,要将本地存储中的数据文件迁移到ASM中。该如何操作呢?网上去搜的话发现这种问题还真不少,对应解决方案也各式各样。

若数据库是归档模式,那么我们实际可以利用rman的backup as copy datafile xxx format ''以及 switch datafile xxx to copy来操作,这样来解决是最简单且最不容易误操作的。

以下做一个实验来说明,整个过程如下:
环境:Oracle 11.2.0.4 RAC

1.模拟误操作添加一个数据文件到本地存储目录下

SQL> alter tablespace users add datafile '/u01/app/oradata/user02.dbf' size 200M;

Tablespace altered.

SQL> select file_id, file_name from dba_data_files;

   FILE_ID FILE_NAME
---------- ------------------------------------------------------------------
         1 +DATA/ORCL/DATAFILE/system.257.412351234
         3 +DATA/ORCL/DATAFILE/sysaux.258.969768741
         4 +DATA/ORCL/DATAFILE/undotbs1.259.643536435
         7 +DATA/ORCL/DATAFILE/users.260.732435132
        13 /u01/app/oradata/user02.dbf
         9 +DATA/ORCL/DATAFILE/undotbs2.263.421358841

6 rows selected.
查到这个误操作新增的数据文件号是13.

2.利用RMAN把13号文件备份副本(backup as copy)

RMAN> backup as copy datafile 13 format '+data';

Starting backup at 05-JAN-21
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=47 instance=ORCL1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00013 name=/u01/app/oradata/user02.dbf
output file name=+DATA/ORCL/DATAFILE/users.273.613715801 tag=TAG20171205T122439 RECID=4 STAMP=961935880
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 05-JAN-21

Starting Control File and SPFILE Autobackup at 05-JAN-21
piece handle=+FRA/ORCL/AUTOBACKUP/2021-01_05/s_961935881.262.961935883 comment=NONE
Finished Control File and SPFILE Autobackup at 05-JAN-21

3.将13号数据文件离线
可以只将错误的13号数据文件离线,减小影响;

RMAN> alter database datafile 13 offline;

Statement processed

4.切换13号数据文件到copy副本

RMAN> switch datafile 13 to copy;

datafile 13 switched to datafile copy "+DATA/ORCL/DATAFILE/users.273.613715801"

5.恢复13号数据文件

RMAN> recover datafile 13;

Starting recover at 05-JAN-21
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 05-JAN-21

6.将13号数据文件上线

RMAN> alter database datafile 13 online;

Statement processed

   FILE_ID FILE_NAME
---------- ------------------------------------------------------------------
         1 +DATA/ORCL/DATAFILE/system.257.412351234
         3 +DATA/ORCL/DATAFILE/sysaux.258.969768741
         4 +DATA/ORCL/DATAFILE/undotbs1.259.643536435
         7 +DATA/ORCL/DATAFILE/users.260.732435132
        13 +DATA/ORCL/DATAFILE/users.273.613715801
         9 +DATA/ORCL/DATAFILE/undotbs2.263.421358841

6 rows selected.
注:如果有特殊要求,backup as copy时直接将数据文件名改成规范的,比如在步骤2中可以这样指定具体的名字:

RMAN> backup as copy datafile 13 format '+data/ORCL/DATAFILE/users02.DBF';

<<