使用rman的convert命令来实现,同样适用于10g
rman下:
convert datafile '+DATA/orclasm/datafile/testdg.277.868887219' format '/home/oracle/testdg.dbf';
sql下:
alter tablespace testdg offline ;
alter tablespace testdg rename datafile '+DATA/orclasm/datafile/testdg.277.868887219' to '/home/oracle/testdg1.dbf';
recover datafile 14;
alter tablespace testdg online;
[oracle@rhel6_lhr ~]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jan 13 13:35:46 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCLASM (DBID=3424884828)
RMAN> report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name ORCLASM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 890 SYSTEM *** +DATA/orclasm/datafile/system.256.850260145
2 940 SYSAUX *** +DATA/orclasm/datafile/sysaux.257.850260145
3 190 UNDOTBS1 *** +DATA/orclasm/datafile/undotbs1.258.851526539
4 2676 USERS *** +DATA/orclasm/datafile/users.259.850260147
5 345 EXAMPLE *** +DATA/orclasm/datafile/example.265.850260295
6 5 UNDOTBS2 *** +DATA/orclasm/datafile/undotbs2.267.851204361
7 50 TBS_RC *** +DATA/orclasm/datafile/tbs_rc.268.852116523
8 100 TS_LHR *** +DATA/orclasm/datafile/ts_lhr.269.852632495
9 1 ENCRYPTED_TS *** +DATA/orclasm/datafile/encrypted_ts.272.854650889
10 100 GOLDENGATE *** +DATA/orclasm/datafile/goldengate.273.862829891
11 50 APP1TBS *** +DATA/orclasm/datafile/app1tbs.274.866911939
12 50 APP2TBS *** +DATA/orclasm/datafile/app2tbs.275.866912075
13 50 IDXTBS *** +DATA/orclasm/datafile/idxtbs.276.866912133
14 2 TESTDG *** +DATA/orclasm/datafile/testdg.277.868887219
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 237 TEMP 32767 +DATA/orclasm/tempfile/temp.264.850260283
2 10 TEMP1 10 +DATA/orclasm/tempfile/temp1.270.853779297
RMAN> convert datafile '+DATA/orclasm/datafile/testdg.277.868887219' format '/home/oracle/testdg.dbf';
Starting conversion at target at 13-JAN-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input file name=+DATA/orclasm/datafile/testdg.277.868887219
converted datafile=/home/oracle/testdg.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Finished conversion at target at 13-JAN-15
Starting Control File and SPFILE Autobackup at 13-JAN-15
piece handle=/home/oracle/oracle_bk/orclasm/control_c-3424884828-20150113-04.bak comment=NONE
Finished Control File and SPFILE Autobackup at 13-JAN-15
RMAN>
[oracle@rhel6_lhr ~]$ vi d.sql
[oracle@rhel6_lhr ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue Jan 13 13:38:36 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> host more /home/oracle/d.sql
alter tablespace testdg offline ;
alter tablespace testdg rename datafile '+DATA/orclasm/datafile/testdg.277.868887219' to '/home/oracle/testdg1.dbf';
recover datafile 14;
alter tablespace testdg online;
SQL> @/home/oracle/d.sql
Tablespace altered.
Tablespace altered.
Media recovery complete.
Tablespace altered.
SQL> set pagesize 9999
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/orclasm/datafile/system.256.850260145
+DATA/orclasm/datafile/sysaux.257.850260145
+DATA/orclasm/datafile/undotbs1.258.851526539
+DATA/orclasm/datafile/users.259.850260147
+DATA/orclasm/datafile/example.265.850260295
+DATA/orclasm/datafile/undotbs2.267.851204361
+DATA/orclasm/datafile/tbs_rc.268.852116523
+DATA/orclasm/datafile/ts_lhr.269.852632495
+DATA/orclasm/datafile/encrypted_ts.272.854650889
+DATA/orclasm/datafile/goldengate.273.862829891
+DATA/orclasm/datafile/app1tbs.274.866911939
+DATA/orclasm/datafile/app2tbs.275.866912075
+DATA/orclasm/datafile/idxtbs.276.866912133
/home/oracle/testdg1.dbf
14 rows selected.
SQL>
run{
shutdown immediate;
startup mount;
set newname for datafile 14 to '/home/oracle/testdg.dbf';
restore datafile 14;
switch datafile 14;
recover datafile 14;
alter database open;
}
[oracle@rhel6_lhr ~]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jan 13 13:58:39 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCLASM (DBID=3424884828)
RMAN> report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name ORCLASM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 890 SYSTEM *** +DATA/orclasm/datafile/system.256.850260145
2 940 SYSAUX *** +DATA/orclasm/datafile/sysaux.257.850260145
3 190 UNDOTBS1 *** +DATA/orclasm/datafile/undotbs1.258.851526539
4 2676 USERS *** +DATA/orclasm/datafile/users.259.850260147
5 345 EXAMPLE *** +DATA/orclasm/datafile/example.265.850260295
6 5 UNDOTBS2 *** +DATA/orclasm/datafile/undotbs2.267.851204361
7 50 TBS_RC *** +DATA/orclasm/datafile/tbs_rc.268.852116523
8 100 TS_LHR *** +DATA/orclasm/datafile/ts_lhr.269.852632495
9 1 ENCRYPTED_TS *** +DATA/orclasm/datafile/encrypted_ts.272.854650889
10 100 GOLDENGATE *** +DATA/orclasm/datafile/goldengate.273.862829891
11 50 APP1TBS *** +DATA/orclasm/datafile/app1tbs.274.866911939
12 50 APP2TBS *** +DATA/orclasm/datafile/app2tbs.275.866912075
13 50 IDXTBS *** +DATA/orclasm/datafile/idxtbs.276.866912133
14 2 TESTDG *** +DATA/orclasm/datafile/testdg.279.868888623
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 237 TEMP 32767 +DATA/orclasm/tempfile/temp.264.850260283
2 10 TEMP1 10 +DATA/orclasm/tempfile/temp1.270.853779297
RMAN> @/home/oracle/c.sql
RMAN> run{
2> shutdown immediate;
3> startup mount;
4> set newname for datafile 14 to '/home/oracle/testdg.dbf';
5> restore datafile 14;
6> switch datafile 14;
7> recover datafile 14;
8> alter database open;
9> }
database closed
database dismounted
Oracle instance shut down
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 375828480 bytes
Fixed Size 2228464 bytes
Variable Size 268439312 bytes
Database Buffers 100663296 bytes
Redo Buffers 4497408 bytes
executing command: SET NEWNAME
Starting restore at 13-JAN-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=13 device type=DISK
datafile 14 is already restored to file /home/oracle/testdg.dbf
restore not done; all files read only, offline, or already restored
Finished restore at 13-JAN-15
datafile 14 switched to datafile copy
input datafile copy RECID=20 STAMP=868888765 file name=/home/oracle/testdg.dbf
Starting recover at 13-JAN-15
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 13-JAN-15
database opened
RMAN> **end-of-file**
RMAN> report schema;
Report of database schema for database with db_unique_name ORCLASM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 890 SYSTEM *** +DATA/orclasm/datafile/system.256.850260145
2 940 SYSAUX *** +DATA/orclasm/datafile/sysaux.257.850260145
3 190 UNDOTBS1 *** +DATA/orclasm/datafile/undotbs1.258.851526539
4 2676 USERS *** +DATA/orclasm/datafile/users.259.850260147
5 345 EXAMPLE *** +DATA/orclasm/datafile/example.265.850260295
6 5 UNDOTBS2 *** +DATA/orclasm/datafile/undotbs2.267.851204361
7 50 TBS_RC *** +DATA/orclasm/datafile/tbs_rc.268.852116523
8 100 TS_LHR *** +DATA/orclasm/datafile/ts_lhr.269.852632495
9 1 ENCRYPTED_TS *** +DATA/orclasm/datafile/encrypted_ts.272.854650889
10 100 GOLDENGATE *** +DATA/orclasm/datafile/goldengate.273.862829891
11 50 APP1TBS *** +DATA/orclasm/datafile/app1tbs.274.866911939
12 50 APP2TBS *** +DATA/orclasm/datafile/app2tbs.275.866912075
13 50 IDXTBS *** +DATA/orclasm/datafile/idxtbs.276.866912133
14 2 TESTDG *** /home/oracle/testdg.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 237 TEMP 32767 +DATA/orclasm/tempfile/temp.264.850260283
2 10 TEMP1 10 +DATA/orclasm/tempfile/temp1.270.853779297
RMAN>
alter tablespace testdg offline;
[root@rhel6_lhr ~]# su - grid
ASMCMD> cp +DATA/orclasm/datafile/testdg.dbf /home/grid/testdg.dbf
copying +DATA/orclasm/datafile/testdg.dbf -> /home/grid/testdg.dbf
ASMCMD>
[root@rhel6_lhr ~]# cp /home/grid/testdg.dbf /home/oracle/testdg.dbf
[root@rhel6_lhr ~]# chown oracle:oinstall /home/oracle/testdg.dbf
[root@rhel6_lhr ~]#
alter database rename file'+DATA/orclasm/datafile/testdg.dbf' to '/home/oracle/testdg.dbf';
alter tablespace testdg online ;
以上提供的各种办法各有优缺点,有的需要重启数据库,有的不需要,有的全在rman中执行,有的需要在sql下执行,大家需仔细领悟。