Oracle ASM使用asmcmd中的cp命令来执行远程复制
cp命令的语法如下:
cp src_file [--target target_type] [--service service_name] [--port port_num] [connect_str:]tgt_file
–target target_type是用来指定asmcmd命令执行复制操作必须要连接到的实例的目标类型。有效选项为ASM,IOS或APX。
–service service_name如果缺省值不是+ASM,用来指定Oracle ASM实例名
–port port_num 缺省值是1521,用来指定监听端口
connect_str用来指定连接到远程实例的连接串。connect_str对于本地实例的复制是不需要指定的。对于远程实例复制,必须指定连接串并且会提示输入密码。它的格式如下:
user@host.SID
user,host和SID都是需要指定的。缺省端口为1521,也可以使用–port选项来修改。连接权限(sysasm或sysdba)是由启动asmcmd命令时由–privilege选项所决定的。
src_file 被复制的源文件名,它必须是一个完整路径文件名或一个Oracle ASM别名。在执行asmcmd复制时,Oracle ASM会创建一个OMF文件例如:
diskgroup/db_unique_name/file_type/file_name.#.#
其中db_unique_name被设置为ASM,#为数字。在复制过程中cp命令会对目标地址创建目录结构并对实际创建的OMF文件创建别名。
tgt_file 复制操作所创建的目标文件名或一个别名目录名的别名。
注意,cp命令不能在两个远程实例之间复制文件。在执行cp命令时本地Oracle ASM实例必须是源地址或目标地址。
使用cp命令可以执行以下三种复制操作:
1.从磁盘组中复制文件到操作系统中
2.从磁盘组中复制文件到磁盘组中
3.从操作系统中复制文件到磁盘组中
注意有些文件是不能执行复制的,比如OCR和SPFILE文件。为了备份,复制或移动Oracle ASM SPFILE文件,可以使用spbackup,spcopy或spmove命令。为了复制OCR备份文件,源地址必须是磁盘组。
如果文件存储在Oracle ASM磁盘组中,复制操作是可以跨字节序的(Little-Endian and Big-Endian)。Orale ASM会自动转换文件格式。在非Oracle ASM文件与Oracle ASM磁盘组之间是可以对不同字节序平台进行复制的,在复制完成后执行命令来对文件进行转换操作即可。
首先显示+data/cs/datafile目录中的所有文件
ASMCMD [+data/cs/datafile] > ls -lt Type Redund Striped Time Sys Name DATAFILE UNPROT COARSE AUG 17 11:00:00 N jy01.dbf => +DATA/cs/DATAFILE/JY.331.976296525 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y USERS.275.970601909 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y UNDOTBS2.284.970602381 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y UNDOTBS1.274.970601905 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y TEST.326.976211663 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y SYSTEM.272.970601831 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y SYSAUX.273.970601881 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y JY.331.976296525 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y USERS.261.970598319 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y UNDOTBS1.260.970598319 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y SYSTEM.258.970598233 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y SYSAUX.259.970598293
将+data/cs/datafile/JY.331.976296525文件从磁盘组中复制到操作系统中
ASMCMD [+] > cp +data/cs/datafile/JY.331.976296525 /home/grid/JY.bak copying +data/cs/datafile/JY.331.976296525 -> /home/grid/JY.bak
将操作系统中的文件复制到磁盘组中
ASMCMD [+] > cp /home/grid/JY.bak +data/cs/datafile/JY.bak copying /home/grid/JY.bak -> +data/cs/datafile/JY.bak ASMCMD [+] > ls -lt +data/cs/datafile/ Type Redund Striped Time Sys Name DATAFILE UNPROT COARSE AUG 17 11:00:00 N jy01.dbf => +DATA/cs/DATAFILE/JY.331.976296525 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y USERS.275.970601909 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y UNDOTBS2.284.970602381 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y UNDOTBS1.274.970601905 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y TEST.326.976211663 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y SYSTEM.272.970601831 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y SYSAUX.273.970601881 DATAFILE UNPROT COARSE AUG 17 11:00:00 N JY.bak => +DATA/ASM/DATAFILE/JY.bak.453.984396007 DATAFILE UNPROT COARSE AUG 17 11:00:00 Y JY.331.976296525 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y USERS.261.970598319 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y UNDOTBS1.260.970598319 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y SYSTEM.258.970598233 DATAFILE UNPROT COARSE MAR 12 18:00:00 Y SYSAUX.259.970598293
将+data/cs/datafile/JY.331.976296525文件从磁盘组中复制到远程ASM实例的磁盘组中
ASMCMD [+] > cp +data/cs/datafile/JY.331.976296525 sys@10.138.130.175.+ASM1:+TEST/JY.bak Enter password: *********** copying +data/cs/datafile/JY.331.976296525 -> 10.138.130.175:+TEST/JY.bak ASMCMD [+test] > ls -lt Type Redund Striped Time Sys Name N rman_backup/ N arch/ Y JY/ Y DUP/ Y CS_DG/ Y ASM/ DATAFILE MIRROR COARSE AUG 17 16:00:00 N JY.bak => +TEST/ASM/DATAFILE/JY.bak.342.984413875
将+data/cs/datafile/JY.331.976296525文件从磁盘组中复制到远程ASM实例所在服务器的操作系统中
ASMCMD [+] > cp +data/cs/datafile/JY.331.976296525 sys@10.138.130.175.+ASM1:/home/grid/JY.bak Enter password: *********** copying +data/cs/datafile/JY.331.976296525 -> 10.138.130.175:/home/grid/JY.bak [grid@jytest1 ~]$ ls -lrt -rw-r----- 1 grid oinstall 104865792 Aug 17 16:21 JY.bak
使用asmcmd cp命令比使用dbms_file_transfer来方便些。