转://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).在左侧列表,选择要上传文件,单击右键选 ...
随机推荐
- js实现本地图片文件拖拽效果
如何拖拽图片到指定位置,具体方法如下 在从本地上传图片的时候,如果使用拖拽效果,想想应该是更加的高大上,下面直接上js代码 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- 如何用ABP框架快速完成项目(9) - 用ABP一个人快速完成项目(5) - 不要执着于设计模式和DDD理论,避免原教旨主义
为什么要写这节文章呢? 首先主动看我这系列文章和参加活动课程的同学, 肯定是积极好学的. 所以很大概率是学过设计模式和DDD理论的. 很大概率不是走一点都不懂设计模式和DDD理论这个极端, 而是走 ...
- 接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishou ...
- ionic 兼容title居中显示和tab栏在显示底部
在app.js里的 .config 里添加配置,同时在函数中引入 $ionicConfigProvider,具体格式如下所示: .config(function($stateProvider, $ur ...
- 「Android」adb调试源码(针对dumpsys SurfceFlinger、trace.txt获取)
首先对ADB作简单的阐述,接下来对adb shell dumpsys SurfaceFlinger服务的dump信息的查看.以及ANR问题如何获取trace文件并简单分析. -×*********** ...
- 【最新】Android使用jenkins全自动构建打包-Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)
Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容: 1.windows上部署Jenkins https://jenkins.io 2.基于SVN或Git https://git ...
- Android Studio--gradle:download 过慢甚至超时timeout报错
问题描述 今天第一次学习安卓,配置环境花了不少时间其他都比较容易的解决了 gradle 因为会从外国的网站下载东西会非常的慢(具体原理我也不清楚),所以最好让下载地址变成国内的 解决方案(最后有升级方 ...
- 你不可不知的Java引用类型之——WeakReference源码详解
定义 WeakReference是弱引用,该引用不会影响垃圾回收器对对象的回收,不会影响对象的生命周期. 说明 当虚拟机在某个时间点决定要回收一个弱可达(weakly-reachable)对象时,会自 ...
- javascript实现的浏览器下载文件
function download(src) { var $a = document.createElement('a'); $a.setAttribute("href", src ...
- Java的内存 -JVM 内存管理
一.综述 如果你学过C或者C++,那么你应该感受过它们对内存那种强大的掌控力.但是强大的能力往往需要更强大的控制力才能保证能力不被滥用,如果滥用C/C++的内存管理那么很容易出现指针满天飞的情况,不出 ...