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

相关文章

来自专栏Java开发者杂谈

Mysql锁初步

存储引擎 要了解mysql的锁,就要先从存储引擎说起。 常用存储引擎列表如下图所示: ? 最常使用的两种存储引擎: Myisam是Mysql的默认存储引擎。当c...

3338
来自专栏数据库

浅谈MySQL的事务隔离级别

推荐阅读 微服务: springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 希望这篇文章能够阐...

2068
来自专栏数据和云

【云端起舞】在Oracle公有云上创建克隆数据库

作者简介: Joel Perez Oracle ACE总监, Maximum Availability OCM,OTN 专家,全球第一批ACE称号获得者,...

30511
来自专栏决胜机器学习

《高性能MySQL》读书笔记(二) ——MySQL存储引擎概述

《高性能MySQL》读书笔记(二)——MySQL存储引擎概述 (原创内容,转载请注明来源,谢谢) 一、基础信息 mysql将数据库保存在数据目录下...

3835
来自专栏北京马哥教育

理解MySql事务隔离机制、锁以及各种锁协议

一直以来对数据库的事务隔离机制的理解总是停留在表面,其内容也是看一遍忘一边。这两天决定从原理上理解它,整理成自己的知识。查阅资料的过程中发现好多零碎的概念如果串...

3589
来自专栏架构师之路

一分钟了解mongodb

一分钟了解mongodb mongo的由来 截取自英文俚语humongous,意为”巨大的”,是否表明mongodb在设计之初就是为大数据量处理而生呢? mon...

3527
来自专栏ImportSource

白话数据库中的MVCC

说MVCC(Multiversion concurrency control,多版本并发控制)之前,先从数据库的ACID说起。ACID其中一个就是I。也就是Is...

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

如何在CentOS 7上安装和配置Sphinx

Sphinx是一个开源搜索引擎,允许全文搜索。众所周知,它能非常有效地对大数据进行搜索。要编制索引的数据通常来自非常不同的来源:SQL数据库,纯文本文件,HTM...

2011
来自专栏Java呓语

第7章、备份与恢复

默认情况下mysqldump导出的是标准的SQL语法,因此你可以使用标准输出写入文件。

702
来自专栏杨建荣的学习笔记

MySQL中的事务和锁简单测试(r10笔记第46天)

一直以来,对于MySQL中的事务和锁的内容是浅尝辄止,没有花时间了解过,在一次看同事排查的故障中有个问题引起了我的兴趣,虽然过去了很久,但是现在简单总结一下还是...

3407

扫码关注云+社区