当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

完整的oracle rman备份恢复的例子


  1、 建rman库作为repository
  $more createrman_db1.sh
  set echo on
  spool makedb1.log
  create database rman
  datafile '/export/home/oracle/oradata/rman_data/system.dbf' size 50m autoextend
  on next 640K
  logfile '/export/home/oracle/oradata/rman_data/redo0101.log' SIZE 10M,
  '/export/home/oracle/oradata/rman_data/redo0201.log' SIZE 10M
  maxdatafiles 30
  maxinstances 8
  maxlogfiles 64
  character set US7ASCII
  national character set US7ASCII
  ;
  disconnect
  spool off
  exit
  
  @/export/home/oracle/8.1.6/rdbms/admin/catalog.sql;
  
  REM ********** ALTER SYSTEM TABLESPACE *********
  ALTER TABLESPACE SYSTEM
  DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCR
  EASE 50);
  ALTER TABLESPACE SYSTEM
  MINIMUM EXTENT 64K;
  
  REM ********** TABLESPACE FOR ROLLBACK **********
  CREATE TABLESPACE RBS DATAFILE '/export/home/oracle/oradata/rman_data/rbs.dbf' s
  ize 50m
  AUTOEXTEND ON NEXT 512K
  MINIMUM EXTENT 512K
  DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 10 MAXEXTENTS UNLIMITED PC
  TINCREASE 0 );
  
  REM ********** TABLESPACE FOR TEMPORARY **********
  CREATE TABLESPACE TEMP DATAFILE '/export/home/oracle/oradata/rman_data/temp.dbf'
  size 50m
  AUTOEXTEND ON NEXT 64K
  MINIMUM EXTENT 64K
  DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCR
  EASE 0) TEMPORARY;
  
  REM **** Creating four rollback segments ****************
  CREATE PUBLIC ROLLBACK SEGMENT RBS_0 TABLESPACE RBS
  STORAGE ( OPTIMAL 64000K );
  ALTER ROLLBACK SEGMENT "RBS_0" ONLINE;
  
  
  REM **** SYS and SYSTEM users ****************
  alter user sys temporary tablespace TEMP;
  alter user system temporary tablespace TEMP;
  disconnect
  spool off
  exit
  
  $more createrman_db3.sh
  spool crdb3.log
  @/export/home/oracle/8.1.6/rdbms/admin/catproc.sql
  @/export/home/oracle/8.1.6/rdbms/admin/caths.sql
  @/export/home/oracle/8.1.6/rdbms/admin/otrcsvr.sql
  connect system/manager
  @/export/home/oracle/8.1.6/sqlplus/admin/pupbld.sql
  
  disconnect
  spool off
  exit
  
  2、建repository存放的表空间和rman用户
  $more createrman_db4.sh
  connect internal
  create tablespace rman_ts
  datafile '/export/home/oracle/oradata/rman_data/rman_ts.dbf'
  size 20M default storage (initial 100K next 100K pctincrease 0);
  create user rman_hainan identified by rman_hainan
  temporary tablespace TEMP
  default tablespace rman_ts quota unlimited on
  rman_ts;
  grant recovery_catalog_owner to rman_hainan;
  grant connect ,resource to rman_hainan;
  
  3、建catalog,注册目标数据库
  $more createrman_db5.sh
  rman catalog rman_hainan/rman_hainan@rman msglog=rman.log
  create catalog ;
  exit;
  rman target sys/oracle@db1
  connect catalog rman_hainan/rman_hainan@rman
  register database;
  exit;
  
  4、可以开始做备份了。
  5、做全备
  $more rmanshell
  . /export/home/oracle/.profile
  rman rcvcat rman_hainan/rman_hainan@rman target / cmdfile /export/home/oracle/ba
  ckup_level0.rcv log /export/home/oracle/backup.log
  
  $more backup_level0.rcv
  resync catalog;
  run {
  allocate channel t1 type disk;
  backup
  incremental level 0
  skip inaccessible
  tag hot_db_bk_level0
  filesperset 3
  format '/export/home/oracle/bk_%s_%p_%t.bk'
  (database);
  sql 'alter system archive log current';
  backup
  filesperset 10
  format '/export/home/oracle/a1_%s_%p_%t.ac'
  (archivelog all delete input);
  backup
  format '/export/home/oracle/df_t%t_s%s_p%p.ct'
  current controlfile ;
  }
  
  6、做增备
  $more rmanshell1
  rman rcvcat rman_hainan/rman_hainan@rman target / cmdfile backup_level1.rcv log
  backup.log
  
  $more backup_level1.rcv
  resync catalog;
  run {
  allocate channel t1 type disk;
  backup
  incremental level 1
  skip inaccessible
  tag hot_db_bk_level1
  filesperset 3
  format 'bk_%s_%p_%t.bk1'
  (database);
  sql 'alter system archive log current';
  backup
  filesperset 10
  format 'a1_%s_%p_%t.ac1'
  (archivelog all delete input);
  backup current controlfile;
  }
  
  1、 删除旧的全备
  $rman rcvcat rman_hainan/rman_hainan@rman target /
  
  Recovery Manager: Release 8.1.6.0.0 - Production
  
  RMAN-06005: connected to target database: TEST (DBID=1692992254)
  RMAN-06008: connected to recovery catalog database
  
  RMAN> list backupset;
  
  RMAN-03022: compiling command: list
  
  List of Backup Sets
  Key Recid Stamp LV Set Stamp Set Count Completion Time
  ------- ---------- ---------- -- ---------- ---------- ----------------------
  38 145 399987408 0 399987406 153 11-JUN-00
  
  根据key来删除旧的备份。
  
  RMAN> allocate channel for maintenance type disk;
  RMAN> change backupset 169 delete; ----------THIS IS THE COMMAND TO REMOVE THE ENTRY & OS FILE
  
  做完后可以看到list backupset和操作系统的文件都没有了。
  
  2、 恢复
  (1) 将数据库启动到nomount状态:
  $svrmgrl
  
  Oracle Server Manager Release 3.1.6.0.0 - Production
  
  Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
  
  Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
  With the Partitioning option
  JServer Release 8.1.6.0.0 - Production
  
  SVRMGR> connect internal
  Connected.
  SVRMGR> startup nomount;
  ORACLE instance started.
  Total System Global Area 339275684 bytes
  Fixed Size 94116 bytes
  Variable Size 318685184 bytes
  Database Buffers 16384000 bytes
  Redo Buffers 4112384 bytes
  SVRMGR> exit
  Server Manager complete.
  (2) 恢复控制文件:
  $rman rcvcat rman_hainan/rman_hainan@rman target /
  
  Recovery Manager: Release 8.1.6.0.0 - Production
  
  RMAN-06006: connected to target database: test (not mounted)
  RMAN-06008: connected to recovery catalog database
  
  RMAN> run {
  2> allocate channel d1 type disk;
  3> restore controlfile;
  4> release channel d1;
  5> }
  
  (3) 恢复数据文件
  
  RMAN> run {
  2> allocate channel d1 type disk;
  3> sql "alter database mount";
  4> restore datafile 1;
  5> restore datafile 2;
  6> restore datafile 3;
  7> restore datafile 4;
  8> release channel d1;
  9> }
  
  (4) 恢复日志文件
  
  RMAN> run {
  2> set archivelog destination to '/export/home/oracle/admin/test/arch';
  3> allocate channel d1 type disk;
  4> restore archivelog all;
  5> release channel d1;
  6> }
  会把所有的日志文件恢复。
  
  (5) 根据日志做recover
  $svrmgrl
  
  Oracle Server Manager Release 3.1.6.0.0 - Production
  
  Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
  
  Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
  With the Partitioning option
  JServer Release 8.1.6.0.0 - Production
  
  SVRMGR> connect internal
  Connected.
  SVRMGR> recover database using backup controlfile until cancel;
  ORA-00279: change 51054 generated at 06/11/2000 11:38:37 needed for thread 1
  ORA-00289: suggestion : /export/home/oracle/admin/test
相关内容
赞助商链接