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

简介:

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

  • ASMCMD中的cp命令(11g)

  • dbms_file_transfer包

  • rman的convert或backup as copy

  • FTP

下面分别介绍这4种方法

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#从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 这个方法完成本地文件传送到远程的目的,类似于上传

使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#创建目录
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和本地文件系统间拷贝文件,并且也是很简单的一种方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#使用 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时可以选择的方法之一。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#执行复制
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


      本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1927904,如需转载请自行联系原作者



相关文章
|
9月前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
|
22天前
|
存储 监控 Oracle
Oracle 的集群文件系统(Cluster File System)有哪些特点?
Oracle 集群文件系统(CFS)是 Oracle 集群架构的关键组件,允许多节点共享存储资源。其特点包括:多节点访问和高可用性、确保数据一致性的并发控制与锁管理、通过缓存和负载均衡优化性能、支持动态扩展和分布式架构、提供权限管理和加密保障安全性、与 Oracle RAC 和 ASM 集成,以及具备图形化管理界面和监控工具。
|
3月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
111 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
3月前
|
SQL Oracle 关系型数据库
Oracle 从 DMP 文件中恢复指定表的步骤
Oracle 从 DMP 文件中恢复指定表的步骤
161 7
|
3月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
3月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
108 1
|
4月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
5月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
3月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
4月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,

热门文章

最新文章

推荐镜像

更多