监控安装 ERP

系统集成论坛

 找回密码
 注册通行证

QQ登录

只需一步,快速开始

路由器交换机防火墙系统集成商城 优质产品采购平台
查看: 3178|回复: 10
打印 上一主题 下一主题

Oracle数据库的备份与恢复技术

  [复制链接]
跳转到指定楼层
1
发表于 2009-2-11 15:34:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
华为金牌代理
  1 引言

随着计算机信息化的普及和大量数据的电子化,数据安全显得尤为重要。一旦造成数据丢失,将会付出巨大的工作量去弥补数据,也可能因此造成不可挽回的损失。因此对从事数据库管理的DBA 来说,做好数据的备份与恢复是一项很重要的工作,本文专门针对Oracle数据库的备份与恢复进行探讨。

  Oracle数据库有四种常用的备份方法,它们分别是导出/导入(EXP/IMP)、热备份、冷备份、rman备份。

  2 导出、导入(Export、Import)

利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去,这是人们最常用,也是比较可靠的一种备份恢复方法。在数据库的版本升级时一般采用这种方法。Oracle支持三种方式类型的输出,下面举例说明(jnth是用户名,thpassword是用户密码, oracle是数据库服务命名, yxgl_a、yxgl_b, yxgl_c是表名):

  2.1 表方式(T方式),将指定表的数据导出

  备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式,若备份到本地文件,使用如下命令:

  exp jnth/thpassword@oracle rows=y indexes=n compress=n buffer=50000000 file=080813.dmp log=080813.log tables= yxgl_a,yxgl_b,yxgl_c

  2.2 用户方式(U方式),将指定用户的所有对象及数据导出

  备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式,若备份到本地文件,使用如下命令:

  exp jnth/thpassword@oracle owner=jnth rows=y indexes=n compress=n buffer=50000000 file=080813.dmp log=080813.log

  2.3 全库方式(Full方式),将数据库中的所有对象导出

  备份完整的数据库,备份命令为:

  exp system/manager@oracle rows=y indexes=n compress=n buffer=50000000 full=y file=080813.dmp log=080813.log

  数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。

  2.4 恢复备份数据中的指定表

  若从本地文件恢复,使用如下命令:

  imp jnth/thpassword@oracle fromuser=jnth touser=jnth rows=y indexes=n commit=y buffer=50000000 ignore=n file=080813.dmp log=080813.log tables=yxgl_a,yxgl_b,yxgl_c

  2.5 按照用户模式备份的数据进行恢复

  A. 恢复备份数据的全部内容

  若从本地文件恢复,使用如下命令:

  imp jnth/thpassword@oracle fromuser=jnth touser=jnth rows=y indexes=n commit=y buffer=50000000 ignore=n file=080813.dmp log=080813.log

  B. 恢复备份数据中的指定表

  若从本地文件恢复,使用如下命令:

  imp jnth/thpassword@oracle fromuser=jnth touser=jnth rows=y indexes=n commit=y buffer=50000000 ignore=n file=080813.dmp log=080813.log tables=yxgl_a,yxgl_b,yxgl_c

  2.6 如果备份方式为完全模式,采用下列恢复方法

  若从本地文件恢复,使用如下命令:

  imp system/manager@oracle rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=080813.dmp log=080813.log

  导出、导入(Export、Import)的优点:

  ●简单易行;

  ●可靠性高;

  ●不影响数据库的正常运行。

  缺点:

  ●只能提供到“某一时间点上”的恢复,不能最大可能的恢复数据;

  ●数据量大时,恢复较慢。

 3 冷备份

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。

  3.1 冷备份中必须拷贝的文件包括

  所有数据文件

  所有控制文件

  所有联机REDO LOG文件

  Init.ora文件(可选)

  值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。

  3.2下面是做冷备份的完整例子

  3.2.1 关闭数据库

  sqlplus /nolog

  sql>connect /as sysdba

  sql>shutdown normal;

  3.2.2 用拷贝命令备份全部的数据文件、重做日志文件、控制文件、初始化参数文件

  可以通过命令select v$tablespace.name,v$datafile.name from v$tablespace, v$datafile where v$tablespace.ts#= v$datafile.ts#;查看相关文件的具体位置。或通过查看Enterprise Manager Console 的初始化参数知道这些文件的具体位置。

  3.2.3 重启Oracle数据库

  sql>startup

  3.3 冷备份的优点

  ●非常快速、容易的备份方法,只需简单拷贝文件;

  ●非常容易恢复到某个时间点上,只需将文件再拷贝回去;

  ●能与归档方法相结合,做数据库“最佳状态”的恢复;

●低度维护,高度安全。

  3.4 缺点

  ●单独使用时,只能提供到“某一时间点上”的恢复;

  ●实施冷备份的全过程中,数据库必须是关闭状态,因此会影响正常工作;

  ●不能按表或按用户恢复。

  4 热备份

  热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。

点评

www.trtaotong.com/book/5wgz2aJpYXgO/ 极品偷心贼  发表于 2015-3-21 21:56
http://www.bbczj.com/ bb小说网  发表于 2015-3-7 20:58
2
 楼主| 发表于 2009-2-11 15:36:44 | 只看该作者
华为金牌代理
  4.1 查看归档模式

  SQL> archive log list;

  数据库日志模式   存档模式

  自动存档       启用

  存档终点      c:oracleora92RDBMS

  最早的概要日志序列   11

  下一个存档日志序列   13

  当前日志序列      13

  SQL>

  4.2 如数据库在非归档模式下的,如下命令更改非归档模式为归档模式

  SQL> shutdown immediate; (立即关闭数据库)

  SQL> startup mount (启动实例并加载数据库,但不打开)

  SQL> alter database archivelog; (更改数据库为归档模式)

  SQL> alter database open; (打开数据库)

  SQL> alter system archive log start; (启用自动归档)

  SQL> exit (退出)

  4.3 一旦数据库运行在archivelog状态下,就可以做备份了热备份的命令文件由三部分组成

  4.3.1 数据文件的备份

  (1) 设置表空间为备份状态

  SQL>alter tablespace rlgl begin backup;

  表空间已更改。

  (2) 备份表空间的数据文件

  用操作系统的复制拷贝数据文件。

  (3) 回复表空间为正常状态

  SQL> alter tablespace sysbs end backup

  表空间已更改。

  4.3.2 备份归档日志文件

  在sqlplus上执行alter system switch logfile命令来强迫日志切换,以便所有的日志都被归档。通过在执行archive log list命令获取当前的日志顺序号,从最早的概要日志序列到当前日志序列的联机redo日志都应该拷贝出来。

  4.3.3 使用alter database backup controlfile to trace;命令获得控制文件的一个备份,可以到%oracle_base%admin %oracle_sid%udump目录中寻找最新的跟踪文件,其中有重建控制文件的全部命令。

  4.4 恢复实例,假设表空间JNTH中的数据文件jinth1.dbf损坏

  SQL> startup

  ORACLE 例程已经启动。 

  Total System Global Area 135338868 bytes

  Fixed Size 453492 bytes 

  Variable Size 109051904 bytes 

  Database Buffers 25165824 bytes 

  Redo Buffers 667648 bytes 

  数据库装载完毕。 

  ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件 

  ORA-01110: 数据文件 8: ’E:ORACLEORADATA JNTH1.DBF’ 

  恢复过程:

  (1)可以先将损坏的表空间文件脱机。

  SQL> alter database datafile ’e:oracleoradatajnth1.dbf’ offline; 

  数据库已更改。

  (2)打开数据库。

  SQL> alter database open; 

  数据库已更改。 

  (3)将拷贝的文件jnth1.dbf拷贝回先前的文件夹E:ORACLEORACLEDATA。

  (4)恢复数据库文件。

  SQL>recover datafile ’e:oracleoradatajnth1.dbf’; 

  介质恢复完成。

  (5)关闭数据库。

  SQL>shutdown immediate;

  (6)重新打开数据库。

  SQL> startup; 

  4.5 热备份的优点

  ●可在表空间或数据库文件级备份,备份的时间短;

  ●备份时数据库仍可使用;

  ●可以恢复到某一时间点上;

  ●恢复快速。

  4.6 缺点

  ●不能出错,否则将不能正常恢复数据;

●维护较困难,需要一定的oracle数据库知识。

  5 RMAN ( Recovery Manager, 恢复管理器 )备份恢复

  RMAN ( Recovery Manager, 恢复管理器)是从Oracle8开始提供的一套用于备份和恢复的有利工具,它有两种使用界面:GUI(图形用户界面)和CLI(命令行界面)。使用RMAN可以完成 Oracle 数据库备份和恢复的各种任务。现在许多oracle 备份恢复软件的内核实际上就是RMAN(例如 VERITAS NetBackup 备份软件)。

5.1 切换服务器归档模式

  C:sqlplus /nolog (启动sqlplus)

  SQL> conn / as sysdba (以DBA身份连接数据库)

  SQL> archive log list (查看是否是归档模式,更改归档模式在热备份时已介绍)

  5.2 连接

  C:rman target=rman/rman@oracle (启动恢复管理器,oracle是服务名,根据自己的实际情况设定)

  5.3 基本设置

  RMAN> configure default device type to disk; (设置默认的备份设备为磁盘)

  RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数)

  RMAN> configure channel 1 device type disk format 'e:backup1backup_%U'; (设置备份的文件格式,只适用于磁盘设备)

  RMAN> configure channel 2 device type disk format 'e:backup2backup_%U'; (设置备份的文件格式,只适用于磁盘设备)

  RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份)

  RMAN> configure controlfile autobackup format for device type disk to 'e:backup1ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式)

  5.4 查看所有参数设置

  RMAN> show all;

  5.5 查看数据库方案报表

  RMAN> report schema;

  5.6 备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志

  RMAN> backup database plus archivelog delete input;

  5.7 备份表空间及归档的重做日志,并删除旧的归档日志

  RMAN> backup tablespace system plus archivelog delete input;

  5.8 备份归档日志

  RMAN> backup archivelog all delete input;

  5.9 复制数据文件

  RMAN> copy datafile 1 to 'e:backup1datafile1.ora';

  5.10 查看备份和文件复本

  RMAN> list backup;

  5.11验证备份

  RMAN> validate backupset 3;

  5.12从自动备份中恢复服务器参数文件

  RMAN> shutdown immediate; (立即关闭数据库)

  RMAN> startup nomount; (启动实例到nomount 状态)

  RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)

  5.13 恢复和复原全数据库

  RMAN> shutdown immediate; (立即关闭数据库)

  RMAN> exit (退出)

  将数据文件jnth1.ora,

  C: ren E:oracleoradataoraclejnth1.ora jnth1.bak;  

  C: ren E:oracleoradataoraclejnth2.ora jnth2.bak;  

  C:rman target=rman/rman@oracle (启动恢复管理器)

  RMAN> startup pfile=C:oracleadminoraclepfile initoracle.ora (指定初始化参数文件启动数据库)

  RMAN> restore database; (还原数据库)

  RMAN> recover database; (恢复数据库)

  RMAN> alter database open; (打开数据库)

  5.14 Rman备份的优点

  ●支持在线热备份;

  ●支持多级增量备份;

  ●减小所需要备份量;

  ●备份,恢复使用简单。

  5.15 Rman备份的缺点

●维护较复杂,需要一定的专业知识。

  6 结束语

本文根据多年的工作经验就一些基础性的知识进行探讨,在实际工作中利用这些基础知识,结合操作系统的计划任务或第三方的软件就可以实现数据的自动、定时、定量的备份与恢复。

  参考文献

  [1] Oracle OCP培训教材

  [2] Oracle9i Ddatabase Administration Fundamentals I

  [3] Oracle9i Ddatabase Administration Fundamentals II

  收稿日期:8月29日  修改日期:9月12日

作者简介:郑永生(1973-),男,山东省宁津县人,现在华能德州电厂信息中心工作,工程师。现从事工作:数据库管理、设计与优化。


作者:郑永生

0

主题

8

帖子

33

积分

实习生

3
发表于 2009-4-11 22:54:53 | 只看该作者
华为金牌代理
学习了
4
发表于 2009-11-11 11:40:05 | 只看该作者
提示: 该帖被管理员或版主屏蔽

0

主题

2

帖子

22

积分

实习生

5
发表于 2009-11-17 21:40:23 | 只看该作者
学习了

2

主题

100

帖子

135

积分

实习生

6
发表于 2009-11-20 09:42:19 | 只看该作者
学习

0

主题

3

帖子

23

积分

实习生

7
发表于 2011-1-12 11:37:47 | 只看该作者
好牛!谢谢分享!

0

主题

5

帖子

25

积分

实习生

8
发表于 2011-3-4 09:31:40 | 只看该作者
慢慢学习

35

主题

552

帖子

963

积分

正式员工

9
发表于 2011-3-27 21:52:23 | 只看该作者
学习了,多谢。。
您需要登录后才可以回帖 登录 | 注册通行证

本版积分规则

联系我们| 手机版|系统集成论坛 ( 京ICP备11008917号 )

GMT+8, 2024-5-4 16:05 , Processed in 0.182936 second(s), 31 queries .

系统集成论坛

BBS.XTJC.COM

快速回复 返回顶部 返回列表