监控安装 ERP

系统集成论坛

 找回密码
 注册通行证

QQ登录

只需一步,快速开始

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

Oracle数据库备份与恢复方法介绍

[复制链接]
跳转到指定楼层
1
发表于 2011-8-11 22:04:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
华为金牌代理
经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分、没有过时之说,合适才是最重要的,自己好才是真的好。各种方法各有长短,谁也代替不了谁,只有根据实际情况搭配使用,才能发挥最大的作用,否则只能是东施效颦。

1. oracle的备份,包括noarchivelog模式的备份(冷备份)、archivelog模式的备份(热备份、rman备份)、逻辑备份(不分模式)。
1.1. 冷备份:
-- 1)关闭数据库
   shutdown;  
-- 2)备份数据文件、控制文件、重做日志文件
  -- A、 查找备份文件的位置
     SELECT * FROM V$DATAFILE;     --查数据文件
     select * from v$controlfile;  --查控制文件
     select * from v$logfile;      --查日志文件
  -- B、 备份数据文件、控制文件、重做日志文件
    $ copy D:\oracle\oradata\ora9\*.dbf d:\bak\*.*;
    $ copy D:\oracle\oradata\ora9\*.ctl d:\bak\*.*;
    $ copy D:\oracle\oradata\ora9\*.log d:\bak\*.*;

1.2. 热备份:
-- 1)查询备份的数据文件与哪一个表空间有关
  SELECT V$TABLESPACE.NAME,V$DATAFILE.NAME
    FROM V$TABLESPACE JOIN V$DATAFILE USING(TS#);
-- 2)备份数据文件
  alter tablespace 表空间 BEGIN BACKUP;
  $ COPY 数据文件  存放路径  
  ALTER TABLESPACE 表空间 END BACKUP;
-- 3)查询是否还有表空间处于备份模式
   SELECT * FROM V$BACKUP;  --STATUS不是ACTIVE即可以
   SELECT V$TABLESPACE.NAME,V$BACKUP.STATUS,V$DATAFILE.NAME
     FROM V$TABLESPACE JOIN V$DATAFILE USING (TS#) JOIN V$BACKUP USING (FILE#);
-- 4)备份控制文件
   ALTER DATABASE BACKUP CONTROLFILE TO '目标路径及文件名';

1.3. rman备份:
  -- 1)一个简单的rman全库备份:
  > rman nocatalog target "sys/sys"
  RMAN> restore controlfile from autobackup;
  RMAN> configure controlfile autobackup on;
  RMAN> backup database;

  -- 2)备份数据文件、控制文件、归档日志
  RMAN> BACKUP DATAFILE 数据文件名;
  RMAN> BACKUP CURRENT CONTROLFILE;
  RMAN> BACKUP ARCHIVELOG ALL;

-- 3)备份控制文件trace
  SQL> alter session set tracefile_identifier=system ;
  SQL> alter database backup controlfile to trace;
  SQL> alter database backup controlfile to 'd:\temp\controlfile.bak';

-- 4)备份表空间
  RMAN>  backup  tablespace 表空间名;
  -- rman备份比较复杂,只举些简单的例子。

1.4. 逻辑备份
  -- 1)数据库方式(导出用户要具有exp_full_database权限)
    exp scott/tiger@ora9    full=y file="D:\full.dmp"
  -- 2)用户方式
    exp userid=scott/tiger@ora9 owner=scott file=d:\scott.dmp log=d:\scott.log
  -- 3)表方式
    exp scott/tiger@ora9 tables=(emp,dept) file="d:\emp.dmp"

2. oracle的恢复(简单举例):
2.1 冷备份的恢复,
  1). STARTUP MOUNT;
  2). ALTER DATABASE DATAFILE 数据文件 OFFLINE DROP;  
  3). ALTER DATABASE OPEN;

2.2 热备份恢复:
  1). STARTUP MOUNT;
  2). ALTER DATABASE DATAFILE 数据文件 OFFLINE; -- //system01.dbf不能设置未OFFLINE状态
  3). ALTER DATABASE OPEN;

2.3 rman备份恢复:
-- 1) 使用rman恢复归档数据库:
rman target /
rman> startup mount
rman> restore database;
rman> recover database;
rman> alter database open;

--2) 使用rman恢复表空间:
rman> restore tablespace
rman> recover tablespace
rman>
run{
sql " alter tablespace users offline immediate";
restore tablespace users;
recover tablespace users;
sql " alter tablespace users online ";
}

2.4 .逻辑恢复
  --1)数据库方式(导入用户要具有exp_full_database权限)
    imp system/system@ora10 full=y file="f:\full.dmp"
  --2)用户方式
    imp userid=scott/tiger@ora10 fromuser=scott  touser=scott file=d:\scott.dmp log=d:\scott.log
  --3)表方式
    imp system/system@ora10 fromuser=scott touser=scott file="f:\emp.dmp"
  --注意:导出用户要和导入用户相同可以用上面的方法,否则用
    imp scott/tiger@ora10 full=y file="f:\emp.dmp"

3. oracle备份与恢复方法的选择:
   1).对于一些小系统、小数据量、没有在线要求的数据库,采用冷备份,简单方便、可靠(所有文件时间点一致),但如果是这类系统个人觉得使用oracle就是一种浪费,学习除外。
   2).对于7X24小时的大系统、帐营支撑系统、客服系统的数据库,使用归档模式运行,采用全库备份与逻辑备份相结合的方式。
  3).对于经营分析系统、BI系统、查询系统等数据库,可采用逻辑备份与表空间备份相结合的方式,对变化数据进行增量备份。
  4).对于一些字典数据库、静态数据较多的数据库,可采用逻辑备份,定期备份相关重要数据。
   
   对于上面提到的方法,只是个表面的东西而已,要想保证数据库高效、安全、稳定的运行,必须要有完整的、切实可行的数据库运行管理制度,并且严格执行实施,否则再好的方法都是水中月、镜中花。


作者:srsunbing
我分享,我成长!系统集成 XTJC.COM
您需要登录后才可以回帖 登录 | 注册通行证

本版积分规则

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

GMT+8, 2024-11-22 22:21 , Processed in 0.118165 second(s), 27 queries .

系统集成论坛

BBS.XTJC.COM

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