利用DBMS_FILE_TRANSFER传输数据库文件
2013-05-16 09:17
573 查看
从Oracle 10g开始,Oracle提供了DBMS_FILE_TRANSFER这么一个程序包,可以方便地在本地数据库和远程数据库,ASM和文件系统间传输数据库文件。这样数据库文件的传输就方便了许多,尤其是在传输基于ASM存储的数据文件时,不再局限于利用RMAN来进行传输。下面介绍一下这个包的用法。
DBMS_FILE_TRANSFER包一共包含了3个存储过程,分别提供本机之间、本机从远程主机抓取以及本机上传至远程主机三种传输数据库文件的功能。要求传输用户有对源目录读和对目标目录写的权限,单个数据库文件必须是512字节的整数倍并且文件大小必须小于或者等于2TB。
1、COPY_FILE。可以在数据库本机的文件系统之间,ASM磁盘组之间或者文件系统和ASM磁盘组之间方便地传输数据库文件。
DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object IN VARCHAR2,–源目录
source_file_name IN VARCHAR2,–源文件名
destination_directory_object IN VARCHAR2,–目标目录
destination_file_name IN VARCHAR2);–目标文件名
SQL> create directory data as ‘+DATA/HELLODB/DATAFILE’;
SQL> create directory test as ‘+TEST/HELLODB/DATAFILE’;
SQL> exec DBMS_FILE_TRANSFER.PUT_FILE(‘DATA’,'system.286.650339101′, ‘TEST’,'system.dbf’)
ASMCMD> ls -a
+TEST/HELLODB/DATAFILE/system.dbf => COPY_FILE.256.654701983
2、GET_FILE。从远程数据库读取数据库文件并在本机的文件系统或者ASM磁盘组上创建一份复制文件。
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
source_database IN VARCHAR2, –到远程数据库的db link名
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2);
begin
DBMS_FILE_TRANSFER.GET_FILE(‘DATA’,'system.286.650339101′, ‘lnk_test’,’TEST1′,’system.dbf’);
end;
/
3、PUT_FILE。在本地数据库将数据库文件传输至远程数据库的文件系统或者ASM磁盘组。
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2,
destination_database IN VARCHAR2); –到目标数据库的db link名
begin
DBMS_FILE_TRANSFER.COPY_FILE(‘DATA’,'system.286.650339101′, ‘TEST2′,’system.dbf’, ‘lnk_test’);
end;
/
DBMS_FILE_TRANSFER包一共包含了3个存储过程,分别提供本机之间、本机从远程主机抓取以及本机上传至远程主机三种传输数据库文件的功能。要求传输用户有对源目录读和对目标目录写的权限,单个数据库文件必须是512字节的整数倍并且文件大小必须小于或者等于2TB。
1、COPY_FILE。可以在数据库本机的文件系统之间,ASM磁盘组之间或者文件系统和ASM磁盘组之间方便地传输数据库文件。
DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object IN VARCHAR2,–源目录
source_file_name IN VARCHAR2,–源文件名
destination_directory_object IN VARCHAR2,–目标目录
destination_file_name IN VARCHAR2);–目标文件名
SQL> create directory data as ‘+DATA/HELLODB/DATAFILE’;
SQL> create directory test as ‘+TEST/HELLODB/DATAFILE’;
SQL> exec DBMS_FILE_TRANSFER.PUT_FILE(‘DATA’,'system.286.650339101′, ‘TEST’,'system.dbf’)
ASMCMD> ls -a
+TEST/HELLODB/DATAFILE/system.dbf => COPY_FILE.256.654701983
2、GET_FILE。从远程数据库读取数据库文件并在本机的文件系统或者ASM磁盘组上创建一份复制文件。
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
source_database IN VARCHAR2, –到远程数据库的db link名
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2);
begin
DBMS_FILE_TRANSFER.GET_FILE(‘DATA’,'system.286.650339101′, ‘lnk_test’,’TEST1′,’system.dbf’);
end;
/
3、PUT_FILE。在本地数据库将数据库文件传输至远程数据库的文件系统或者ASM磁盘组。
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2,
destination_database IN VARCHAR2); –到目标数据库的db link名
begin
DBMS_FILE_TRANSFER.COPY_FILE(‘DATA’,'system.286.650339101′, ‘TEST2′,’system.dbf’, ‘lnk_test’);
end;
/
相关文章推荐
- 利用DBMS_FILE_TRANSFER迁移数据库从AIX至Linux
- 使用 dbms_file_transfer 包在asm 和文件系统间拷贝文件
- 使用Oracle包DBMS_FILE_TRANSFER进行copy文件
- ssd sftp传输文件问题出现 failed to open a secure file transfer session
- XMPP SI FileTransfer服务传输文件过程详解
- 使用DBMS_FILE_TRANSFER配置DATA GURAD和克隆数据库
- 利用Socket.Send发送信息、Socket.SendFile传输文件
- ORACLE 使用dbms_file_transfer 包迁移表空间或文件
- 分享WCF文件传输实现方法---WCFFileTransfer
- 利用struts的FormFile上传excel文件,并导入插入数据库
- 使用DBMS_FILE_TRANSFER包拷贝文件
- Linux下利用sendfile函数传输文件
- DBMS_FILE_TRANSFER用法取asm下文件
- 使用DBMS_FILE_TRANSFER迁移ASM中的表空间和数据文件
- 通过SSH安全协议传输文件(SecureCRT, SSH Secure File Transfer Client)
- ORACLE中UTL_FILE ,DBMS-SQL进行数据库与文件互操作的存储过程
- 使用 dbms_file_transfer 方式测试增量传输表空间XTTS
- 使用dbms_file_transfer传输ASM file出现ORA-15001
- ssd sftp传输文件问题出现 failed to open a secure file transfer session
- XMPP SI FileTransfer服务传输文件过程详解