工作中,有时需要把文件从ASM中复制到文件系统中或者反过来,做一些维护操作,本文介绍了4种复制文件的的方法:ASMCMD中的cp命令(11g)

dbms_file_transfer包

rman的convert或backup as copy

FTP

下面分别介绍这4种方法

1、ASMCMD中的cp命令(11g)

cp命令是11g新增的命令,使用它可以轻松的把文件从ASM中复制到文件系统中或者反过来。还可以把ASM中的文件复制到网络上的其他服务器的文件系统中。#从ASM复制到文件系统

[grid@rac1 ~]$ asmcmd -p

ASMCMD [+] > cd data

ASMCMD [+data] > cd orcl

ASMCMD [+data/orcl] > cd datafile

ASMCMD [+data/orcl/datafile] > ls

SYSAUX.257.925306091

SYSTEM.256.925306089

UNDOTBS1.258.925306091

UNDOTBS2.264.925306377

USERS.259.925306091

ASMCMD [+data/orcl/datafile] > ls -l

Type      Redund  Striped  Time             Sys  Name

DATAFILE  UNPROT  COARSE   MAY 21 11:00:00  Y    SYSAUX.257.925306091

DATAFILE  UNPROT  COARSE   MAY 21 11:00:00  Y    SYSTEM.256.925306089

DATAFILE  UNPROT  COARSE   MAY 21 11:00:00  Y    UNDOTBS1.258.925306091

DATAFILE  UNPROT  COARSE   MAY 21 11:00:00  Y    UNDOTBS2.264.925306377

DATAFILE  UNPROT  COARSE   MAY 21 11:00:00  Y    USERS.259.925306091

ASMCMD [+data/orcl/datafile] > cp USERS.259.925306091 /home/grid/users.dbf

copying +data/orcl/datafile/USERS.259.925306091 -> /home/grid/users.dbf

ASMCMD [+data/orcl/datafile] >

#查看复制结果

[grid@rac1 ~]$ ll /home/grid/users.dbf

-rw-r-----. 1 grid oinstall 5251072 May 21 15:20 /home/grid/users.dbf

#从文件系统复制到ASM

ASMCMD [+data/orcl/datafile] > cp /home/grid/users.dbf +data/orcl

copying /home/grid/users.dbf -> +data/orcl/users.dbf

#查看复制结果

ASMCMD [+data/orcl/datafile] > cd +data/orcl

ASMCMD [+data/orcl] > ls -l

Type           Redund  Striped  Time             Sys  Name

Y    ARCHIVELOG/

Y    CONTROLFILE/

Y    DATAFILE/

Y    ONLINELOG/

Y    PARAMETERFILE/

Y    TEMPFILE/

N    spfileorcl.ora => +DATA/ORCL/PARAMETERFILE/spfile.268.925423909

N    users.dbf => +DATA/ASM/DATAFILE/users.dbf.271.944580085

cp的详细使用情况可以使用help cp命令获得。

如果ASM的版本是11g以前的版本可以使用如下三种方法复制文件。

2、dbms_file_transfer包

这个包是从Oracle 9不开始提供的,利用这个包可以在两个位置之间传输文件,这两个位置可以是同一台计算机或者网络上的两台计算机。Oracle10g扩展了这个包的功能,可以完成从一个ASM Diskgroup拷贝到另一个ASM Diskgroup、从ASM Diskgroup拷贝到普通文件系统、从普通文件系统拷贝到ASM Diskgroup、从文件系统拷贝到文件系统或者RAW Device。这个包提供了3个方法,可以完成不同的任务。方法功能说明

copy_file完成文件从本地一个目录拷贝到本地的另一个目录,这个方法不能完成远程传输

get_file这个方法完成把远程的文件拷贝到本地的目录中,类似于下载

put_file这个方法完成本地文件传送到远程的目的,类似于上传

使用方法:#创建目录

SQL> create directory asm_dir as '+data/ASM/DATAFILE/';

Directory created.

SQL> create directory os_dir as '/home/oracle';

Directory created.

#执行复制

SQL> exec dbms_file_transfer.copy_file('asm_dir','user2.dbf.272.944581345','os_dir','user.dbf');

PL/SQL procedure successfully completed.

#验证复制结果

[oracle@rac1 ~]$ ls -l /home/oracle/user.dbf

-rw-r-----. 1 oracle asmadmin 5251072 May 21 15:49 /home/oracle/user.dbf

#进行反向复制

SQL> exec dbms_file_transfer.copy_file('os_dir','user.dbf','asm_dir','user2.dbf');

PL/SQL procedure successfully completed.

#验证

ASMCMD [+data/ASM/DATAFILE] > ls -l

Type      Redund  Striped  Time             Sys  Name

N    user2.dbf => +DATA/ORCL/DATAFILE/COPY_FILE.273.944581883

3、rman的convert和backup as copy命令

3.1 convert命令

convert命令是用于对数据文件进行字节格式转换的。Oracle可以在不同OS平台间进行表空间传(TTS),如果两个平台的字节格式不一致,则需要参数据文件进行格式转换,这个转换可以 在源数据库进行,也可以在目的数据库中执行。如果在源数据库中执行,则需要使用convert tablespace命令,如果在目的数据库中执行,则需要使用convert datafile命令。

虽然convert这个命令主要用于跨平台传输表空间,它也可以完成ASM和本地文件系统间拷贝文件,并且也是很简单的一种方法。#使用convert datafile从ASM复制到文件系统

RMAN> convert datafile '+data/orcl/datafile/USERS.259.925306091' format '/home/oracle/user3.dbf';

Starting conversion at target at 21-MAY-17

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile conversion

input file name=+DATA/orcl/datafile/users.259.925306091

converted datafile=/home/oracle/user3.dbf

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

Finished conversion at target at 21-MAY-17

#验证

[oracle@rac1 ~]$ ls -l /home/oracle/user3.dbf

-rw-r-----. 1 oracle asmadmin 5251072 May 21 16:00 /home/oracle/user3.dbf

#使用convert tablespace,使用时需要把users表空间置为只读

RMAN> sql 'alter tablespace users read only';

using target database control file instead of recovery catalog

sql statement: alter tablespace users read only

RMAN> convert tablespace users format '/home/oracle/users%U.dbf';

Starting conversion at source at 21-MAY-17

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=81 instance=orcl1 device type=DISK

channel ORA_DISK_1: starting datafile conversion

input datafile file number=00004 name=+DATA/orcl/datafile/users.259.925306091

converted datafile=/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

Finished conversion at source at 21-MAY-17

#验证

[oracle@rac1 ~]$ ll /home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf

-rw-r-----. 1 oracle asmadmin 5251072 May 21 16:03 /home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf

#从文件系统拷贝到ASM

RMAN> convert datafile '/home/oracle/user3.dbf','/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf' format '+data';

Starting conversion at target at 21-MAY-17

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=64 instance=orcl1 device type=DISK

channel ORA_DISK_1: starting datafile conversion

input file name=/home/oracle/user3.dbf

converted datafile=+DATA/orcl/datafile/users.274.944582713

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting datafile conversion

input file name=/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf

converted datafile=+DATA/orcl/datafile/users.275.944582713

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

Finished conversion at target at 21-MAY-17

#从日志中看出转换的文件名

#converted datafile=+DATA/orcl/datafile/users.274.944582713

#converted datafile=+DATA/orcl/datafile/users.274.944582713

3.2 backup as copy命令

backup as copy命令是以镜像的方式对文件进行备份,自然可以把文件从ASM复制到文件系统中。这也是从文件系统迁移到ASM时可以选择的方法之一。#执行复制

RMAN> backup as copy datafile '+DATA/orcl/datafile/users.259.925306091' format '/home/oracle/user4.dbf';

Starting backup at 21-MAY-17

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=69 instance=orcl1 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00004 name=+DATA/orcl/datafile/users.259.925306091

output file name=/home/oracle/user4.dbf tag=TAG20170521T161225 RECID=17 STAMP=944583145

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 21-MAY-17

#验证

[oracle@rac1 ~]$ ls -l /home/oracle/user4.dbf

-rw-r-----. 1 oracle asmadmin 5251072 May 21 16:12 /home/oracle/user4.dbf

4.FTP方法

FTP方法可以像库中复制使用传统文件传输协议(FTP)对普通文件执行常规操作那样,对ASM文件和目录执行操作。通过这种方式访问ASM文件的典型应用是从一个数据库向另一个数据库中复制ASM文件。需要XML DB支持,配置起来最麻烦,有兴趣的同学可以参考《Oracle Database 11g RAC手册原书第2版》或官方文档:http://docs.oracle.com/cd/E11882_01/server.112/e18951/asmfiles.htm#BABJCCEI

参考《大话Oracle RAC》

oracle 拷贝文件到asm,Oracle 从ASM复制文件到文件系统相关推荐

  1. python复制文件的方法是_Python中复制文件的9种方法

    Python 中有许多"开盖即食"的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作.在这篇文章中,你将会看到一些用 Python 实现文件复制的 ...

  2. win7系统怎么拷贝到u盘_win7/10系统复制文件到u盘提示文件过大怎么办

    相信很多用户都遇到过这种情况,在你拷贝文件到u盘时,u盘剩余空间明明很大,但是却复制不进去,电脑提示"对于目标文件系统 文件过大".那遇到这种情况,到底是为什么?我们该怎么解决呢? ...

  3. linux命令 把文件夹拷贝一遍_cp 快捷命令:复制文件到多个目录

    导读 在学习 Linux 的过程中,对于新手而言总是会使用几个命令来完成一个简单的任务.对正在熟悉使用终端的人这是很容易理解的行为.然而,如果你想要成为一个老手,学习我说的"快捷命令&quo ...

  4. gradle拷贝静态资源文件_android-Gradle Copy任务不会复制文件

    我要执行以下任务,将文件从我的android项目资源文件复制到单元测试中ClassLoader实例可访问的其他路径. task copyResDirectoryToClasses(type: Copy ...

  5. 怎么往云服务器上复制文件,如何往云服务器上复制文件

    如何往云服务器上复制文件 内容精选 换一换 Linux操作系统的弹性云服务器默认只能通过root帐号使用mount命令进行挂载文件系统,但可通过赋予其他普通用户root权限,达到使非root的普通用户 ...

  6. bat复制文件到指定目录同名_scp复制文件时排除指定文件

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解如何在scp复制文件时排除指定文件. 举例 ...

  7. 禁止复制服务器文件夹,远程桌面服务器 禁止复制文件夹

    远程桌面服务器 禁止复制文件夹 内容精选 换一换 若SDK已有插件满足开发需求,则直接执行以下的编译运行操作.若已有插件不满足开发需求,用户需要开发自定义插件并编写相应的CMakeLists文件,执行 ...

  8. 错误0x800703e3服务器传输文件,0x80070571错误无法编辑或复制文件怎么办

    本文讲解了 一些如正在读取数据时突然强行将硬盘断开或者断电等因素导致的 硬盘磁盘分区损坏的修复办法 1.故障现象.不管是移动硬盘还是优盘,包括本地电脑上的硬盘分区,双击打开时,提示:"无法打 ...

  9. 服务器复制文件出现io错误,win7系统复制文件时发生IO错误的解决方法

    很多小伙伴都遇到过win7系统复制文件时发生IO错误的困惑吧,一些朋友看过网上零散的win7系统复制文件时发生IO错误的处理方法,并没有完完全全明白win7系统复制文件时发生IO错误是如何解决的,今天 ...

  10. transferto 文件不存在_通过通道复制文件transferTo

    import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; import java.nio.channels.* ...

最新文章

  1. 病毒入侵计算机的危害,那些年电脑中过的病毒,中病毒的危害又有哪些
  2. Django搭建个人博客:渲染Markdown文章目录
  3. ES等待任务——是master节点上的task任务
  4. wpf控件设计时支持(3)
  5. Leetcode--55. 跳跃游戏
  6. vue点击按钮上传图片_关于javascript:Vue-点击按钮提交表单
  7. C++重载下标运算符
  8. Linux笔记-inode基本概念
  9. Delphi 完整的Bug决议工具EurekaLog的使用
  10. Mysql 添加用户 授权等操作
  11. jquery 图片切换插件(初版)
  12. 【最详细】Tcpdump使用实验
  13. Android4.1MediaPlayer无缝播放
  14. JAVA学习心得——DBUtil工具类
  15. 单片机STM32入门——(2)按键控制
  16. 苹果双系统怎么切换_苹果电脑双系统的好处
  17. Linux下进入PostgresSQL数据库有哪些比较常用的操作命令
  18. 鸿蒙系统(HarmonyOS)应用开发入门篇
  19. Android 布局旋转 横屏竖屏
  20. 27英寸显示器多大 长宽多少厘米

热门文章

  1. spark RDD详解及源码分析
  2. 《大型网站技术架构》1:概述
  3. 使用C语言读取properties文件V1.0
  4. 把远程仓库的项目,clone到eclipse里面
  5. 深度学习表征的不合理有效性——从头开始构建图像搜索服务(二)
  6. 关于金钱的几个小故事(r12笔记第8天)
  7. Python 第一篇:python简介和入门
  8. SpringFramework4系列之SpringJMS:(一)搭建JMS-注解加XML版
  9. 构造器和析构器 - C++快速入门15
  10. PHP 实现移除数组中项目为空的元素或为某值的元素