使用dbms_file_transfer转换ASM文件

dbms_file_transfer是一个存储过程它是在Oracle 9i中引入的,这个包提供了在两个目录(在相同主 机或数据库)之间复制文件的方法。从Oracle 10gr1,ASM使用这个工具在ASM磁盘组之间复制文件, 并且它是实例化ASM DataGuard数据库的主要工具。在Oracle 10gr2中,dbms_file_transfer被增强 来支持ASM与non-ASM文件的组合传输。

dbms_file_trasnfer包能让DBA在两个目录之间复制文件。这个过程被用来在ASM磁盘组之间移动或复 制文件。对于以下情况可以使用这个过程来复制文件:
.从一个ASM磁盘组复制文件到另一个ASM磁盘组
.从一个ASM磁盘组复制文件到外部存储介质,比如操作系统级别的文件系统
.从操作系统级别的文件系统复制文件到ASM磁盘组
.从操作系统级别的文件系统复制文件到另一个目录或裸设备

下面的例子将演示如何使用dbms_file_transfer来将文件从一个目录移动到另一个目录:
1.识别要从一个目录移动或复制到另一个目录的数据文件

SQL> select file_name from dba_data_files;

FILE_NAME
------------------------------------------------------------
+DATADG/jyrac/datafile/users.263.930413057
+DATADG/jyrac/datafile/undotbs1.262.930413057
+DATADG/jyrac/datafile/sysaux.258.930413055
+DATADG/jyrac/datafile/system.259.930413057
+DATADG/jyrac/datafile/example.260.930413057
+DATADG/jyrac/datafile/undotbs2.261.930413057

2.识别要存储复制文件的目录(ASM或non-ASM),在这里文件被复制到操作系统文件系统中。

3.将数据文件脱机:

SQL> alter database datafile '+DATADG/jyrac/datafile/users.263.930413057' offline;

Database altered.

4.对原文件目录与目标目录使用以下操作来创建directory_name并将文件复制到新目录

SQL> alter database datafile '+DATADG/jyrac/datafile/users.263.930413057' offline;

Database altered.

SQL> create directory asmsrc as '+DATADG/jyrac/datafile/';

Directory created.

SQL> create directory osdest as '/rman_backup/transfer/';

Directory created.

SQL> begin
  2   dbms_file_transfer.copy_file ('ASMSRC','users.263.930413057','OSDEST','users01.dbf');
  3  end;
  4  /

PL/SQL procedure successfully completed.

5.将数据文件联机

SQL>  recover datafile '+DATADG/jyrac/datafile/users.263.930413057';
ORA-00279: change 3079902 generated at 12/12/2016 16:07:01 needed for thread 1
ORA-00289: suggestion : +ARCHDG/jyrac/1_1_930413221.dbf
ORA-00280: change 3079902 for thread 1 is in sequence #1


Specify log: {=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: change 3105677 generated at 12/13/2016 07:00:07 needed for thread 1
ORA-00289: suggestion : +ARCHDG/jyrac/1_2_930413221.dbf
ORA-00280: change 3105677 for thread 1 is in sequence #2


Log applied.
Media recovery complete.
SQL> alter database datafile '+DATADG/jyrac/datafile/users.263.930413057' online;

Database altered.

6.验证复制文件

[oracle@jyrac1 transfer]$ ls -lrt
total 5140
-rw-r----- 1 oracle asmadmin 5251072 Dec 13 10:35 users01.dbf

在11g就可以使用列简单的cp命令进行文件复制,不需要使用这种方法。

发表评论

电子邮件地址不会被公开。