18:41:05 sales@orcl> CREATE DIRECTORY data_src AS '+DATAL_MDG/orcl/datafile';
Directory created
18:41:48 sales@orcl>
Directory created
18:41:59 sales@orcl> CREATE TABLESPACE tt_tabspa DATAFILE '+DATAL_MDG' SIZE 1G;
Tablespace created
18:42:20 sales@orcl> SELECT a.file_name,a.tablespace_name,a.bytes/1024/1024/1024 sz FROM Dba_Data_Files a WHERE a.tablespace_name='TT_TABSPA';
FILE_NAME TABLESPACE_NAME SZ
-------------------------------------------------------------------------------- ------------------------------ ----------
+DATAL_MDG/orcl/datafile/tt_tabspa.3604.929990537 TT_TABSPA 1
18:42:39 sales@orcl> alter tablespace TT_TABSPA OFFLINE;
Tablespace altered
18:43:21 sales@orcl>
18:44:03 sales@orcl> begin
2 dbms_file_transfer.copy_file('data_src','tt_tabspa.3604.929990537','data_target','tt_tabspa2.dbf');
3 end;
4 /
PL/SQL procedure successfully completed
18:44:06 sales@orcl>
18:45:21 sales@orcl> alter database rename file'+DATAL_MDG/orcl/datafile/tt_tabspa.3604.929990537'
2 TO '+DATA_SALSES_MDG/orcl/datafile/tt_tabspa2.dbf';
Database altered
18:45:21 sales@orcl>
18:45:22 sales@orcl> alter tablespace TT_TABSPA online;
Tablespace altered
18:45:39 sales@orcl>
18:46:04 sales@orcl> SELECT a.file_name,a.tablespace_name,a.bytes/1024/1024/1024 sz ,a.status FROM Dba_Data_Files a WHERE a.tablespace_name='TT_TABSPA';
FILE_NAME TABLESPACE_NAME SZ STATUS
-------------------------------------------------------------------------------- ------------------------------ ---------- ---------
+DATA_SALSES_MDG/orcl/datafile/tt_tabspa2.dbf TT_TABSPA 1 AVAILABLE
18:46:04 sales@orcl>
18:46:04 sales@orcl> SELECT a.tablespace_name,a.status FROM Dba_Tablespaces a WHERE a.tablespace_name='TT_TABSPA';
TABLESPACE_NAME STATUS
------------------------------ ---------
TT_TABSPA ONLINE
18:46:45 sales@orcl>
18:50:04 sales@orcl> DROP DIRECTORY data_src;
Directory dropped
18:50:19 sales@orcl> DROP DIRECTORY data_target;
Directory dropped
18:50:29 sales@orcl>
以上操作步骤主要使用了dbms_file_transfer包copy 数据库文件,这与在文件系统中手动copy原理上没有太大区别,但这个包在ASM 及ASM之间移动非常方便