使用DBMS_FILE_TRANSFER.COPY_FILE访问ASM file.
需要特别说明的是:
[@more@]
ASM磁盘组与文件系统之间的拷贝只能是数据库数据文件之间的拷贝,其他类型的文件不支持.(Oracle11g文档: You can copy any type of file to and from a local file system. However, you can copy only database files (such as datafiles, tempfiles, controlfiles, and so on) to and from an ASM disk group.)
1. 1. ASM磁盘组之间的拷贝数据库文件.
SQL> create directory data as '+DATA/DBKING/DATAFILE';
Directory created.
SQL> create directory test as '+TEST/TESTDB/DATAFILE';
Directory created.
拷贝磁盘组’+DATA’的数据文件到磁盘组’+TEST’
SQL> BEGIN
DBMS_FILE_TRANSFER.COPY_FILE('data','USERS.261.798456431','test','user01.dbf');
END;
/
PL/SQL procedure successfully completed.
2.ASM磁盘组拷贝数据库文件到文件系统.
SQL> create directory loc as '/tmp';
Directory created.
SQL> create directory data as '+TEST/DBKING/DATAFILE';
Directory created.
拷贝磁盘组’+TEST’的数据文件到文件系统/TMP目录下
SQL> BEGIN
dbms_file_transfer.copy_file('test','USERS.261.798456431','loc','users01.dbf');
END;
/
PL/SQL procedure successfully completed.
3.拷贝文件系统的数据库文件到ASM磁盘组.
SQL> create directory loc as '/tmp';
Directory created.
SQL> create directory data as '+DATA/DBKING/DATAFILE';
Directory created.
拷贝文件系统/TMP目录下的数据文件到磁盘组’+TEST’
SQL> BEGIN
dbms_file_transfer.copy_file('loc','users01.dbf','test','users02.dbf');
END;
/
PL/SQL procedure successfully completed.
4. DBMS_FILE_TRANSFER.COPY_FILE结构:
SOURCE_DIRECTORY_OBJECT VARCHAR2 -源目录(需要手工创建)
SOURCE_FILE_NAME VARCHAR2 -源文件名
DESTINATION_DIRECTORY_OBJECT VARCHAR2 –目标目录(需要手工创建)
DESTINATION_FILE_NAME VARCHAR2 –目标文件名