Oracle 从ASM复制文件到文件系统

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2b1a7d23a1c4df053afd4066a5caa9ca.html