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 条评论
登录 后参与评论

相关文章

来自专栏吴生的专栏

MySQL 慢日志线上问题分析及功能优化

MySQL 慢日志(slow log)是 MySQL DBA 及其他开发、运维人员需经常关注的一类信息。使用慢日志可找出执行时间较长或未走索引等 SQL 语句,...

3866
来自专栏大数据

批处理实现最简化数据自动备份

最近一直在考虑oracle数据自动备份到本地的问题,也找机会当面向大牛请教过,得到了一堆关于DG、GG、RAC、DBLINK、ARCHLOG等方面的建议,还有个...

1877
来自专栏数据和云

MySQL 8.0.12 有什么新内容?

今年4月份,MySQL突然直接从8.0.5跳过多个版本号到8.0.11,直接宣布8.0.11 GA,告诉大家说,这个版本已经可以到线上用了。

701
来自专栏乐沙弥的世界

RMAN 概述及其体系结构

是一种用于集备份(backup)、还原(restore)和恢复(recover)数据库于一体的Oracle 工具,支持命令行及图形界面操作

761
来自专栏云计算教程系列

如何使用MySQLTuner优化MySQL性能

MySQLTuner是一个用Perl编写的脚本,帮助你提高MySQL性能及稳定性。它通过检索当前配置变量和状态数据,提供一些基本性能建议。

1165
来自专栏L宝宝聊IT

MySQL架构组成、物理文件组成

MySQL经过多年的改进和完善之后,已经基本具备了所有通用数据库管理系统所需要的相关功能。

482
来自专栏Hadoop实操

如何在CDH中使用HBase的Quotas设置资源请求限制

1562
来自专栏数据和云

Oracle的日志及日志文件

在Oracle数据库中,日志文件是用于数据恢复和事务重演的,这个日志文件对于Oracle数据库的作用是致命的,从这个角度来说,此日志完全不同于其他其他软件层面理...

33912
来自专栏WindCoder

Python对mysql数据库操作

使用MySQLdb模块。下载地址:http://sourceforge.net/projects/mysql-python/

551
来自专栏FreeBuf

收集各类安全设备、Nginx日志实现日志统一管理及告警

近来安全测试项目较少,想着把安全设备、nginx日志收集起来并告警, 话不多说,直接说重点,搭建背景:

1327

扫码关注云+社区