使用rman移动数据文件在ASM和文件系统的双向复制
如题,mos上相关文章是支持到10.2.0.3的版本,想来该文章已经发布很久了
我用11gR2测试一下,还是test
SQL> alter database datafile 6 offline;
Database altered.
SQL> select file_name, file_id, online_status from dba_data_files;
FILE_NAME FILE_ID ONLINE_
-------------------- ---------- -------
+DATA/orcl/users01.d 4 ONLINE
bf
+DATA/orcl/undotbs01 3 ONLINE
.dbf
+DATA/orcl/sysaux01. 2 ONLINE
dbf
+DATA/orcl/system01. 1 SYSTEM
dbf
+DATA/orcl/undotbs02 5 ONLINE
.dbf
+DATA/orcl/test.dbf 6 RECOVER
6 rows selected.
[oracle@rac2 test]$ rman target /
RMAN> copy datafile 6 to '/u02/test/test.dbf';
Starting backup at 18-FEB-16
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=59 instance=orcl2 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=+DATA/orcl/test.dbf
output file name=/u02/test/test.dbf tag=TAG20160218T065036 RECID=1 STAMP=904114239
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:04
Finished backup at 18-FEB-16
SQL> alter database rename file '+DATA/orcl/test.dbf' to '/u02/test/test.dbf' ;
Database altered.
SQL> select file#, name from v$datafile;
FILE# NAME
---------- --------------------
1 +DATA/orcl/system01.
dbf
2 +DATA/orcl/sysaux01.
dbf
3 +DATA/orcl/undotbs01
.dbf
4 +DATA/orcl/users01.d
bf
5 +DATA/orcl/undotbs02
.dbf
6 /u02/test/test.dbf
6 rows selected.
SQL> alter database recover datafile 6;
Database altered.
SQL> alter database datafile 6 online;
Database altered.
使用rman跟asmcmd也差不多
SQL> select file_id,file_name,online_status from dba_data_files;
FILE_ID FILE_NAME ONLINE_
---------- -------------------- -------
4 +DATA/orcl/users01.d ONLINE
bf
3 +DATA/orcl/undotbs01 ONLINE
.dbf
2 +DATA/orcl/sysaux01. ONLINE
dbf
1 +DATA/orcl/system01. SYSTEM
dbf
5 +DATA/orcl/undotbs02 ONLINE
.dbf
6 /u02/test/test.dbf ONLINE
6 rows selected.
SQL> alter database datafile 6 offline;
Database altered.
RMAN> report schema;
Report of database schema for database with db_unique_name ORCL
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 740 SYSTEM *** +DATA/orcl/system01.dbf
2 540 SYSAUX *** +DATA/orcl/sysaux01.dbf
3 75 UNDOTBS1 *** +DATA/orcl/undotbs01.dbf
4 5 USERS *** +DATA/orcl/users01.dbf
5 25 UNDOTBS2 *** +DATA/orcl/undotbs02.dbf
6 20 TEST *** /u02/test/test.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 29 TEMP 32767 +DATA/orcl/temp01.dbf
RMAN> copy datafile 6 to '+DATA/orcl/test.dbf';
Starting backup at 18-FEB-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=/u02/test/test.dbf
output file name=+DATA/orcl/test.dbf tag=TAG20160218T070843 RECID=2 STAMP=904115326
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 18-FEB-16
SQL> alter database rename file '/u02/test/test.dbf' to '+DATA/orcl/test.dbf';
Database altered.
SQL> select file_id,file_name,online_status from dba_data_files;
FILE_ID FILE_NAME ONLINE_
---------- -------------------- -------
4 +DATA/orcl/users01.d ONLINE
bf
3 +DATA/orcl/undotbs01 ONLINE
.dbf
2 +DATA/orcl/sysaux01. ONLINE
dbf
1 +DATA/orcl/system01. SYSTEM
dbf
5 +DATA/orcl/undotbs02 ONLINE
.dbf
6 +DATA/orcl/test.dbf RECOVER
6 rows selected.
SQL> alter database recover datafile 6;
Database altered.
SQL> alter database datafile 6 online;
Database altered.
SQL> select file_id,file_name,online_status from dba_data_files;
FILE_ID FILE_NAME ONLINE_
---------- -------------------- -------
4 +DATA/orcl/users01.d ONLINE
bf
3 +DATA/orcl/undotbs01 ONLINE
.dbf
2 +DATA/orcl/sysaux01. ONLINE
dbf
1 +DATA/orcl/system01. SYSTEM
dbf
5 +DATA/orcl/undotbs02 ONLINE
.dbf
6 +DATA/orcl/test.dbf ONLINE
6 rows selected.