DBMS_FILE_TRANSFER为ASM的文件传输提供了新的选择

编辑手记:从Oracle 10g开始,Oracle提供了DBMS_FILE_TRANSFER程序包,为本地数据库和远程数据库间,ASM和文件系统间传输数据库文件提供了新的选择。Oracle内部的小小变化,往往给运维带来极大的便利。本文拣选自《循序渐进Oracle》,我们再次回顾学习。

有了DBMS_FILE_TRANSFER,数据库文件的传输就方便了许多,尤其是在传输基于ASM存储的数据文件时,不再局限于利用RMAN来进行传输,为我们提供了更多的选择。

在使用DBMS_FILE_TRANSFER时一些注意事项:

1、DBMS_FILE_TRANSFER具备一定的限制,单个数据库文件必须是512字节的整数倍并且文件大小必须小于或者等于2TB,但是这基本上算不上什么弱点,我们的绝大多数需求都可以被满足。

2、DBMS_FILE_TRANSFER支持在线备份,如果传输正在被修改的文件,很可能会导致文件的不一致。这时候通过DBMS_FILE_TRANSFER传输的文件要做recovery才能使用,为了保持一致性,建议将文件offline再进行DBMS_FILE_TRANSFER传输。

3、如果利用DBMS_FILE_TRANSFER进行备份,建议自定义备份策略,并将文件置于hot backup 模式。

4、对于文件系统,传输的文件可以是各种类型的文件,但如果源端或者目标端是ASM存储,则只能是数据库文件。

5、为了正常执行该程序包,执行用户必须有以下权限:

对source_directory_object参数指定的目录对象有read权限;对 destination_directory_object指定的目录对象有write权限

接下来我们一起来学习DBMS_FILE_TRANSFER 包的使用:

DBMS_FILE_TRANSFER 包一共包含了3个存储过程,分别提供本机之间拷贝(COPY_FILE)、本机从远程主机获取(GET_FILE)以及本机上传至远程主机(PUT_FILE)三种传输数据库文件的功能。

以上过程的参数中,除了文件名称外,最关键的是DIRECTORY目录参数,这个目录需要预先设定,并且要求传输用户对相应的目录具有读或者写的权限。

看以下测试,首先通过asmcmd在DATADG下创建一个asmbk目录:

然后在数据库内部创建两个DIRECTORY:

现在DBMS_FILE_TRANSFER就可以大显身手,快速的帮助我们解决文件传输的问题:

看一下ASM磁盘组上的内容,实际上文件的位置是在DATAFILE下,asmbk下存放的是一个别名:

DBMS_FILE_TRANSFER包更强大的功能是基于网络的远程PUT_FILE和COPY_FILE功能,这两个功能通过db link实现。以下是一个简单测试。

首先在远程数据库创建测试用户及目录,并进行授权:

接下来在本地数据库配置tnsnames.ora文件,并创建DB Link:

接下来就可以通过DB Link进行远程的文件操作了,PUT_FILE可以将文件传输至远程主机:

在远程节点可以立刻检查到这个文件的存在:

进一步的,可以将远程文件读取到本地:

本地ASM存储中,马上获得了这个文件:

而进一步的,将表空间置于热备模式下,可以通过DBMS_FILE_TRANSFER包将数据库热备到远程主机,甚至可以基于次来创建远程的Dataguard数据库,有时在数据库巨大,备份恢复空间不足时,通过这种方式进行数据传输与备库创建未尝不是一种妙解:

DBMS_FILE_TRANSFER为我们提供了多一个选择和灵活性,很多时候,Oracle的一个小小的增强如果能够恰如其份的利用,就能够发挥巨大的优势。了解了Oracle的种种可能之后,我们才能够灵活运用,如臂使指。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2717
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4787
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3225
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

5656
来自专栏落花落雨不落叶

canvas画简单电路图

64411
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4948
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4878
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4055
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2110
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32210

扫码关注云+社区