Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62863
  • 博文数量: 37
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-26 01:42
文章分类

全部博文(37)

文章存档

2011年(2)

2010年(20)

2009年(15)

我的朋友

分类: Oracle

2010-01-13 23:12:18

目标:在同平台下,模拟数据库宕机的情况下,利用RMAN恢复整个数据库。该模拟平台是window平台。

 

备份与恢复整个过程如以下步骤:

1)创建数据库ora2

2)利用RMAN备份整个数据库,包括参数文件,控制文件,数据文件,重做日志文件;

3)创建一张表jsjzx,插入两条记录,操作完提交,并且对日志文件进行切换;

4)关闭数据库ora2

5)删除数据库ora2

6)创建服务ora2

7)创建密码文件pwdora2.ora

8)创建adump,bdump,cdump,dpdump,pfile,udump文件;

9)利用备份文件进行恢复数据库。

结果:数据库ora2正常启动,并且表jsjzx中的数据存在。

 

备份过程

    由于要模拟的机器都是生产机,不允许关闭目标数据库,所以只能在打开状态下对目标数据库进行不一致备份,步骤如下:

1)首先,利用oracle自带的数据库配置助手,创建一个数据库ora2

2)其次,要模拟的数据库运行在归档模式下,因此,要将数据库ora2修改成归档模式。由于修改归档模式需要在加载数据库并且数据库未打开的状态下进行,因此要在mount的状态下启动数据库,但最后需要将数据库打开(因为模拟的是数据库打开的状态下备份数据库,否则,无法备份归档日志文件),如下命令:

D:\>set oracle_sid=ora2

D:\>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1 13 09:11:14 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1250452 bytes

Variable Size             171969388 bytes

Database Buffers          436207616 bytes

Redo Buffers                2940928 bytes

数据库装载完毕。

SQL> archive log list;

数据库日志模式             非存档模式

自动存档             禁用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     1

当前日志序列           2

SQL> alter database archivelog;

数据库已更改。

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     1

下一个存档日志序列   2

当前日志序列           2

SQL>alter database open;

数据库已打开。

3)启动RMAN并连接到目标数据库。

D:\>set oracle_sid=ora2

D:\>rman target system/oracle

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 1 13 09:14:12 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库: ORA2 (DBID=1599628932)

4)修改RMAN配置参数。

i)查看配置参数信息

RMAN> show all;

使用目标数据库控制文件替代恢复目录

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFORA2.ORA'; # default

ii)修改配置参数,当备份数据库的时候能够自动备份控制文件

RMAN> configure controlfile autobackup on;

新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

已成功存储新的 RMAN 配置参数

iii)创建目录d:\autobackup\cf,修改配置参数,使自动备份的控制文件以%F格式保存在d:\autobackup\cf目录下。其中,参数%F--复合format == c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIIIdbidYYYYMMDD为年月日,QQ为十六进制的备份片的多个copy的序号(00-ff)。

RMAN> configure controlfile autobackup format for device type disk to 'd:\autobackup\cf\%F';

新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\autobackup\cf\%F';

已成功存储新的 RMAN 配置参数

iv)创建目录d:\ora\bak,修改配置参数,使备份文件以%d_%T_%s格式保存在d:\ora\bak目录下。其中,参数%d--数据库的db_name;参数%T--年月日(YYYYMMDD=%Y%M%D参数%s--备份集序号;

RMAN> configure channel device type disk format 'd:\ora\bak\%d_%T_%s';

新的 RMAN 配置参数:

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'd:\ora\bak\%d_%T_%s';

已成功存储新的 RMAN 配置参数

v)再次查看配置参数信息

RMAN> show all;

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\autobackup\cf\%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'd:\ora\bak\%d_%T_%s';

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFORA2.ORA'; # default

5)备份整个数据库。

RMAN> run {backup full database include current controlfile;backup archivelog from time 'sysdate-3' format 'd:\ora\bak\arc_%U.bak';copy current controlfile to 'd:\ora\bak\control_bak.ctl';}

启动 backup 13-1 -10

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

SYSTEM01.DBF

输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

SYSAUX01.DBF

输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

UNDOTBS01.DBF

输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 13-1 -10

通道 ORA_DISK_1: 已完成段 1 13-1 -10

段句柄=D:\ORA\BAK\ORA2_20100113_5 标记=TAG20100113T092244 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

通道 ORA_DISK_1: 正在启动段 1 13-1 -10

通道 ORA_DISK_1: 已完成段 1 13-1 -10

段句柄=D:\ORA\BAK\ORA2_20100113_6 标记=TAG20100113T092244 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01

完成 backup 13-1 -10

 

启动 backup 13-1 -10

当前日志已存档

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动存档日志备份集

通道 ORA_DISK_1: 正在指定备份集中的存档日志

输入存档日志线程 =1 序列 =2 记录 ID=1 时间戳=708168182

通道 ORA_DISK_1: 正在启动段 1 13-1 -10

通道 ORA_DISK_1: 已完成段 1 13-1 -10

段句柄=D:\ORA\BAK\ARC_07L3BIFM_1_1.BAK 标记=TAG20100113T092302 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02

完成 backup 13-1 -10

 

启动 backup 13-1 -10

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 启动数据文件副本

复制当前控制文件

输出文件名 = D:\ORA\BAK\CONTROL_BAK.CTL 标记 = TAG20100113T092304 recid = 2 时间戳 = 708168184

通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01

完成 backup 13-1 -10

 

启动 Control File and SPFILE Autobackup 13-1 -10

handle=D:\AUTOBACKUP\CF\C-1599628932-20100113-01 comment=NONE

完成 Control File and SPFILE Autobackup 13-1 -10

由以上过程可知,首先备份整个数据库,包括数据文件和控制文件,保存在D:\ORA\BAK目录下,以%d_%T_%s格式保存,这里以ORA2_20100113_5ORA2_20100113_6命名。其次,备份三天内的归档日志文件,保存在D:\ORA\BAK目录下,以arc_%U.bak 格式保存,其中,参数%U--复合format =%u_%p_%c;参数%u--8位字母唯一串;参数%p—备份片序号;参数%c—备份片的多个copy的序号。这里以ARC_07L3BIFM_1_1.BAK命名。然后,复制当前控制文件到目录D:\ORA\BAK下,以CONTROL_BAK.CTL命名。最后,自动备份控制文件和参数文件,保存在D:\AUTOBACKUP\CF目录下,以%F=c-IIIIIIIIII-YYYYMMDD-QQ格式保存,这里以C-1599628932-20100113-01命名。

备份完成以后,发现归档日志也自动保存到D:\oracle\product\10.2.0\flash_recovery_area\

ORA2\ARCHIVELOG\2010_01_13目录下,以01_MF_1_2_5NT830VT_.ARC命名。

6)创建目录d:\ora\bak\spfile,将d:\oracle\product\10.2.0\db_1\database目录下的初始化参数文件initora2.orad:\oracle\product\10.2.0\db_1\dbs目录下的参数文件spfileora2.ora复制到d:\ora\bak\spfile目录下。

(7) 利用LIST BACKUP OF DATABASE 命令查看建立的备份集与备份片段信息。

RMAN> list backup of database;

使用目标数据库控制文件替代恢复目录

备份集列表

===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

------- ---- -- ---------- ----------- ------------ ----------

4       Full    511.34M    DISK        00:00:08     13-1 -10

        BP 关键字: 4   状态: AVAILABLE  已压缩: NO  标记: TAG20100113T092244

段名:D:\ORA\BAK\ORA2_20100113_5

  备份集 4 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

  ---- -- ---- ---------- ---------- ----

  1       Full 545398     13-1 -10 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\SYSTEM01.DBF

  2       Full 545398     13-1 -10 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\UNDOTBS01.DBF

  3       Full 545398     13-1 -10 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\SYSAUX01.DBF

  4       Full 545398     13-1 -10 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\USERS01.DBF

阅读(796) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~