将数据文件从asm移到普通文件系统

数据库可以关闭的场景:

1.关闭并重新mount数据库

$ sqlplus '/as sysdba'
SQL> shutdown immediate;
SQL> startup mount;

2.确保文件系统的空间大小够用

SQL> select file#,name,bytes/1024/1024 file_size_mb from v$datafile;

     FILE# NAME                                                         FILE_SIZE_MB
---------- ------------------------------------------------------------ ------------
         1 +DATA/test/datafile/system.285.914350599                             790
         2 +DATA/test/datafile/sysaux.276.914350599                            2140
         3 +DATA/test/datafile/undotbs1.280.914350599                           130
         4 +DATA/test/datafile/users.284.914350599                             2140

3.登录rman并copy数据文件

$ rman target /
RMAN> copy datafile 4 to '/oradata/test/users01.dbf';

4.更新控制文件中被移动文件的信息

$ sqlplus '/as sysdba'
SQL> alter database rename file '+DATA/test/datafile/users.284.914350599' to '/oradata/test/users01.dbf';

5.查看结果

SQL> select file#,name from v$datafile;

6.打开数据库

数据库处于运行状态:

如果数据库处于运行状态,要想移动数据文件,必须要将文件offline
1.查看包含该文件的表空间,并将数据文件offline

RMAN> report schema;
SQL> alter database datafile 4 offline;

2.确保文件系统的空间大小够用

SQL> select file#,name,bytes/1024/1024 file_size_mb from v$datafile;

     FILE# NAME                                                         FILE_SIZE_MB
---------- ------------------------------------------------------------ ------------
         1 +DATA/test/datafile/system.285.914350599                             790
         2 +DATA/test/datafile/sysaux.276.914350599                            2140
         3 +DATA/test/datafile/undotbs1.280.914350599                           130
         4 +DATA/test/datafile/users.284.914350599                             2140

3.登录rman并copy数据文件

$ rman target /
RMAN> copy datafile 4 to '/oradata/test/users01.dbf';

4.更新控制文件中被移动文件的信息

$ sqlplus '/as sysdba'
SQL> alter database rename file '+DATA/test/datafile/users.284.914350599' to '/oradata/test/users01.dbf';

5.查看结果

SQL> select file#,name from v$datafile;

6.将数据文件online
(1) 如果该数据文件所在的表空间是offline的,直接将数据文件online

SQL> alter database datafile 4 online;

(2) 如果该文件所在表空间是online的

SQL> recover automatic datafile 4;
SQL> alter database datafile 4 online;
或者使用rman
RMAN> recover datafile 4;
RMAN> sql "alter database datafile 4 online";

  

原文地址:https://www.cnblogs.com/abclife/p/5771938.html