ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN学习笔记

RMAN学习笔记

原创 Linux操作系统 作者:mhaoy 时间:2009-05-13 16:35:57 0 删除 编辑

前几天听了垃圾广告上的海明老师RMAN视频教程,感觉讲得不错,自己做了些笔记,方便回忆

 

RMAN备份
1. 注意运行的rman命令,在linux下有很多个rman命令,一定要确保运行的是oracle下的rman,通过如下设置可以确保运行的rman是oracle下的rman
   解决方案:
   切换到oralce用户,编辑.bash_profile文件,确保最后一个PATH变量设置成如下形式
   PATH=$ORACLE_HOME/bin:$PATH
2. 确保oracle数据库是运行在archivelog模式下,否则不能用rman进行备份和恢复
   解决方案:
   用sys用户作为系统管理员登录sqlplus,输入archive log list可以查看数据库的模式,如果不是archivelog模式,则运行(在sqlplus下运行)
   2.1 shutdown normal或shutdown immediate关闭数据库
   2.2 startup mount 启动数据库到mount状态
   2.3 如果要启用归档模式,运行alter database archivelog 命令 (如果需要停止归档模式,运行alter database noarchivelog 命令)
   2.4 (可选)Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
   在pfile/spfile中设置如下参数:
   log_archive_start = true
   
   重启数据库此参数生效,此时数据库处于自动归档模式。
   也可以在数据库启动过程中,手工执行:
   archive log start
   
   使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式
3.非catalog全备份
   3.1 在oracle用户下运行rman(默认是nocatalog)或rman nocatalog进入rman
   3.2 连接到target数据库:在rman下运行connect target /
   3.3 查看备份信息:list backupset
   3.4 全备份数据库 backup database;
   3.5 list backupset
   3.6 根据3.5的信息,查看备份后生成的相应的文件
   3.7 在rman下运行show all查看参数
   3.8 因为是用非catalog方式备份,所有备份信息保存在control file里面,而control file是二进制文件,需要用"strings 控制文件名"来查看
4.非catalog 0级增量备份
   4.1 backup incremental level=0 database;(backup incremental level 0 database;)
   4.2 跟全备份的唯一区别(几乎完全一样):往后的后续增量备份不能在全备份上进行,可以在0级增量备份集上进行
5.非catalog 1级增量备份(先要和0级的比较,所以时间也很长,但如果数据库没多大变化则文件应该很小)
   5.1 backup incremental level 1 database
注:如果备份失败,会产生垃圾backupset,用change backupset 3 delete;进行删除,其中3是backupset编号
注:闪回恢复区问题
SQL> show parameter db_recovery_file_dest;
解决方法:
.增大闪回恢复区
ALTER SYSTEM SET db_recovery_file_dest_size=40g scope=both;

2.将归档设置到其他目录,修改alter system set log_archive_dest = 其他路径
可事先用show parameter log_archive_dest查看

3.转移或者删除闪回恢复区里的归档日志。

 


6. 启用自动备份
在root下输入   crontab -e -u oracle
45 23 * * 0 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl0.log cmdfile=/u01/rmanbak/script/bakl0
45 23 * * 1 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl2.log cmdfile=/u01/rmanbak/script/bakl2
45 23 * * 2 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl2.log cmdfile=/u01/rmanbak/script/bakl2
45 23 * * 3 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/script/bakl1
45 23 * * 4 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl2.log cmdfile=/u01/rmanbak/script/bakl2
45 23 * * 5 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl2.log cmdfile=/u01/rmanbak/script/bakl2
45 23 * * 6 /u01/oracle/bin/rman target / msglog=/u01/rmanbak/bakl2.log cmdfile=/u01/rmanbak/script/bakl2


service crond restart(重启crontab服务)

7. controlfile丢失(rman)
   dbid=3801665252
   configure controlfile autobackup off;(默认)
   configure controlfile autobackup on;(修改后controlfile 会自动备份)
   //delete backupset 24;
8. 口令文件丢失(补充) (跟rman备份完全无关,随时可以恢复)
 cd /u01/oracle/dbs/
 orapwd file=orapwwilson password=passw0rd entries=5
9. spfile丢失 (/u01/oracle/dbs/spfilewilson.ora)丢失后启动数据库不行
  startup nomount;
  set dbid 3801665252
  resotre spfile from autobackup;(可能找不到,用下一条指令指定文件)
  resotre spfile from '自动备份的controlfile';
  shuddown immediate;
  startup(如果不能启动需要 set dbid)
  set dbid 3801665252
  startup
10. controlfile丢失
  shutdown abort;(controlfile丢失后,用shutdown immediate不能关数据库)
  startup nomount;
  restore controlfile from autobackup;
  alter database mount;
  recover database;
  alter database open resetlogs;(之后要做full database backup,否则12步会失败,因为resetlogs后onlineredolog丢失<有待研究>)
11. redofile丢失(在sqlplus下执行)<在rman下执行可能有些问题>
  shutdown immediate;(这里指online redolog file)
  startup mount
  recover database until cancel;
  alter database open resetlogs;(之后要做full database backup,否则12步会失败,因为resetlogs后onlineredolog丢失<有待研究>)
12. datafile丢失 (老师演示不成功,其实很简单)(后来演示成功了)
  rman target /
   sql "alter database datafile 3 offline" (3是datafile的编号,用rman查看)
   restore datafile 3
   recover datafile 3
   sql "alter database datafile 3 online"
13.tablespace丢失
  rman target /
   sql "alter tablespace users offline immediate" 
   restore tablespace users
   recover tablespace users
   sql "alter database users online"
14.非catalog完全恢复(在sqlplus下执行,先shutdown abort;)
   startup nomount;(在rman下执行)
   restore controlfile from autobackup;
   alter database mount;
   restore database;
   recover database;(失败,redolog丢失)<替换方案,在sqlplus下,recover database until cancel,也失败,也因为没有redolog>
   {//替代方案
     sqlplub /nolog
     conn /as sysdba;
     create pfile from spfile
     vi /u01/oracle/dbs/initwilson.ora    (在最后添加:*._allow_resetlogs_corruption='TRUE')
     在sqlplus下:shutdown immediate;
     startup pfile=/u01/oracle/dbs/initwilson.ora mount
     alter database open resetlogs;
   }
   alter database open resetlogs;
15. 基于时间点的恢复(不演示)
run{
 set until time "to_date('07/01/02 15:00:00','mm/dd/yy hh24:mi:ss'"
 restore database;
 recover database;
 alter database open resetlogs;
}
16.基于SCN的恢复
   startup mount;
   restore database UNTIL SCN 10000; (10000为SCN号,用rman查看)
   recover database UNTIL SCN 10000;
   alter database open resetlogs;(一见到这行就表明不是完全恢复,有可能丢失)
17.基于日志系列恢复(select * from v$log;)<不演示>
  startup mount;
  restore database UNTIL SEQUENCE 100 thread 1;
  recover database UNTIL SEQUENCE 100 thread 1;
  alter database open resetlogs;
18. restore跟recover(处理redolog)都是成对出现的
19. report schema
    list backup
    crosscheck backup
    delete

请登录后发表评论 登录
全部评论

注册时间:2009-05-13

  • 博文量
    54
  • 访问量
    95192