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

时间:2023-12-26 11:42:13

场景一:数据库可以关闭
1.关闭并mount数据库

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

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

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 '+test';

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

$ rman target /
RMAN> switch datafile 4 to copy;

5.查看结果

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

6.打开数据库

场景二:数据库不可以关闭
1.将表空间offline

SQL> select tablespace_name, file_name from dba_data_files where file_id=4;

 TABLESPACE_NAME    FILE_NAME
------------------ ------------------------------
USERS /oradata/test/users01.dbf SQL> alter tablespace USERS offline;

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

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 '+test';

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

$ rman target /
RMAN> switch datafile 4 to copy;

5.查看结果

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

6.将表空间online

SQL> alter tablespace users online;