转://ASM与文件系统之间文件传输
熟悉数据库运维的程序猿都知道,数据的备份重于一切,随着业务的发展,数据量也会越来越大,有时候备份集会放在文件系统上面,有的备份集会放在asm存储上面,实现文件系统到文件系统之间的文件传输很简单,cp或者scp都能简单的实现。
但是很多情况下,我们的数据库服务器是挂了存储,划好了lun的,数据或者备份都放在大容量高性能的存储上,很多场景下文件系统可能满足不了这种需求,这时候就需要asm存储出场了,常见的如Oracle rac环境,standalone环境下。
这里就引发了这样一种思考,存放在asm存储里面的文件,如何取到本地文件系统或者直接传输到另外一台服务器上去?
即实现以下场景的文件传输:
1. ASM存储 -> ASM存储,
2. ASM存储 -> 文件系统,
3. 文件系统 -> ASM存储
面对这3种情况,想必不是很熟悉数据库的人员会没有思路,或者有思路却不知道如何操作。当然,在同一服务器上,我们照样可以用cp命令实现,甚至也可以基于rman命令去实现文件传输:
◆ 实现ASM存储到文件系统之间的文件传输:

◆比如实现文件系统到ASM存储之前的文件传输:

但是这样也稍显麻烦,如果要传输到另外一台服务器上去,我们还需要用到scp或者ftp命令,如果要传输的文件比较大数量比较多,那么瓶颈就来了,操作量大,过程繁琐,监控起来麻烦。
下面就跨服务器的情况下,简单实现asm存储 -> 文件系统之间的文件传输,做了一个操作案例,希望能够提供我们另外一种新的思路去实现文件的传输。
首先,开始案例之前,先介绍一下Oracle 10g就提供的DBMS_FILE_TRANSFER程序包,其作用可以实现本地与本地服务器,甚至本地与远程数据库服务器之间的文件传输,其中包括以下场景:
文件系统 -> 文件系统
ASM存储 -> ASM存储
ASM存储 -> 文件系统
文件系统 -> ASM存储
这个包的用法有3种:
在同一台服务器,我们可以用copy_file来实现asm存储到文件系统的文件传输。跨服务器之间我们推荐用: get_file 或者 put_file这两个存储过程实现文件传输,当然这个包功能很强大,比如可以支持在线备份,这里我们只介绍文件传输的使用。
当然这里有个大前提,对于asm存储,并不是随便创建个文件都能放到asm存储上面的,必须是Oracle的数据库相关的文件才允许放置到asm存储上,比如数据文件、日志文件、控制文件、参数文件以及备份文件等
原文如下:
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.
存储过程的描述如下:

要使用这个包,需要注意的2点权限问题:
对source_directory_object(源端)参数指定的目录对象有read权限
对 destination_directory_object(目标端)指定的目录对象有write权限
▲ Usage Notes
To run this procedure successfully, the current user must have the following privileges:
• READ privilege on the directory object specified in the source_directory_object parameter
• WRITE privilege on directory object specified in the destination_directory_object parameter
要使用这个包,有2个限制就是
1. 单个要传输的文件必须是512字节的整数倍
2. 要传输的文件的大小不能超过2TB,
不过这2点几乎不会成为瓶颈,因为很少有单个文件会超过2TB的:
官方解释如下:
Also, the copied file must meet the following requirements:
• The size of the copied file must be a multiple of 512 bytes.
• The size of the copied file must be less than or equal to two terabytes.
下面进入具体场景:
【场景一:本地数据库服务器之间的文件传输】
1. 在dump文件所在的数据库创建需要的目录。

目录已创建。

目录已创建。
2. 开始备份数据库,此场景共产生了6个dump文件

3. 利用copy_file存储过程实现本地asm存储到文件系统的传输

PL/SQL 过程已成功完成。
结果显示如下:

【场景二:跨服务器之间的文件传输】
1. 在另外一台服务器(作为目标端),加入源端的tns串

2. 在目标端创建dblink,通过dblink去访问源端(从这里可以看出,这种方式的文件传输也是依赖网络实现的)

数据库链接已创建。
3. 在目标端创建目录,存放从源端传输过来的文件

目录已创建。
4. 实现传输
下面的脚本是基于官方的命令,做了一些改动,写成一个脚本,实现更有针对性的文件传输

PL/SQL 过程已成功完成。
如果要传输的文件比较大,建议后台nohup实现:

也可以利用动态性能视图 V$SESSION_LONGOPS去监控与估算整个传输的过程与时间。
至此,已经实现了 跨数据库服务器之间的 asm存储 -> 文件系统之间的文件传输,像其他场景asm存储->asm存储,文件系统->asm存储实现的方法是一致的。这个场景实现了对备份文件的传输,当然也可以根据具体的需求,对数据文件也可以进行文件传输。
结果展示如下:

转://ASM与文件系统之间文件传输的更多相关文章
- Linux 服务器之间文件传输
linux的scp命令: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器. 有时我们需要获得远程服务器上 ...
- 开发板与pc之间文件传输:kermit and lrzsz
imx6开发板与pc机之间通过串口传输文件步骤: 1. 安装好kermit并可以使用 2. 交叉编译lrzsz开源软件并把可执行程序lrz lsz拷贝到开发板 2.1 下载并解压lrzsz-0.12. ...
- 树莓派与Linux系统之间文件传输
最近因为要学习Python,于是把放在家里接了一年灰的树莓派又给搜出来了,刚买那会也捣鼓了好一阵子, 基本操作都学会了,但现在又忘光了,只能又从头开始搞了,首先第一个要解决的是怎么把文件从电脑传输到树 ...
- linux之间文件传输(之scp)
linux的scp命令 linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录: ==================scp 命令==================scp 可以 ...
- linux之间文件传输问题
如果linux服务器使用了秘钥登陆,可以先关闭秘钥登陆 http://blog.chinaunix.net/uid-23634108-id-2393471.html 然后:scp -P 端口号 no ...
- scp实现mac与linux服务器之间文件传输
1.mac上传文件到linux服务器 scp 文件名 用户名@服务器ip:目标路径如:scp /Users/test/testFile test@xxx.xxx.xxx.xxx:/test/ 2.ma ...
- linux服务器之间文件传输
有时候我们会遇到,把一个服务器上的文件夹,传到另一个服务器 我们需要先把文件夹打包成 tar.gz,这种格式在任何linux版本上都能压缩/解压 #解压命令 tar -zxvf xxx.tar.gz ...
- WinSCP-windows与Linux之间文件传输
WinSCP是一款Windows下通过使用SSH协议的开源工具,用于连接Linux操作系统,可以上传或者下载文件使用! 开源顾名思义,无需注册,安装即可使用!(安装请自行百度WinSCP) 打开桌面上 ...
- Windows与Linux之间文件传输
(1).使用WinSCP工具,实现将Windows的文件上传到Linux指定目录下 (1).输入主机名.用户名.密码,选择登录,成功连接至Linux系统 (2).在左侧列表,选择要上传文件,单击右键选 ...
随机推荐
- Java Spring cron表达式使用详解
Java Spring cron表达式使用详解 By:授客 QQ:1033553122 语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek ...
- 12 Linux Which Command, Whatis Command, Whereis Command Examples
This Linux tutorial will explain the three "W" commands. The three "W"s are what ...
- Android文件的流操作工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...
- DOM技术
DOM概述 DOM:Document Object Model(文档对象模型)(DOM核心就是 文档变对象,标签也变对象,属性也变对象,反正就是把标记文档拆散) 用来将标记型对象封装成对象,并将标记型 ...
- Shell中判断语句if中-z至-d的意思
[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...
- window.print()小知识
window.print() 实际上,是浏览器打印功能菜单的一种程序调用.与点击打印功能菜单一样,不能精确分页,不能设置纸型,套打的问题更加无从谈起,只不过,可以让用户不用去点菜单,直接点击网页中的 ...
- 客户化软件时代的前夜 ZT
制造业:从手工模式到大规模生产,再到大规模定制 工业革命开始以后,机器全面代替了手工工具.随着工业经济的不断发展,机器的使用导致了两种截然不同的方式.一种是手工生产基本思想的延续,另一种则是大规模生产 ...
- MyBatis笔记----报错:Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决方法
报错 Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound st ...
- [20190305]删除审计登录信息不适合使用logrotate.txt
[20190305]删除审计登录信息不适合使用logrotate.txt --//生产系统数据库sys用户登录会在/u01/app/oracle/admin/${ORACLE_SID}/adump/目 ...
- [20180926]共享池中的NETWORK BUFFER.txt
[20180926]共享池中的NETWORK BUFFER.txt --//最近几天一直在探究SQL*Net more data from client 相关等待事件,发现SDU相关,自己也网上探究一 ...