Chinaunix首页 | 论坛 | 博客
  • 博客访问: 547747
  • 博文数量: 128
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 1345
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-22 21:43
文章分类

全部博文(128)

文章存档

2009年(30)

2008年(98)

我的朋友

分类: Oracle

2008-10-27 23:21:10

set ORACLE_SID=OSS
set ORAHOME=D:\ORACLE\ORA92
set ORABASE=D:\ORACLE

mkdir %ORABASE%\admin\%ORACLE_SID%\bdump
mkdir %ORABASE%\admin\%ORACLE_SID%\cdump
mkdir %ORABASE%\admin\%ORACLE_SID%\create
mkdir %ORABASE%\admin\%ORACLE_SID%\pfile
mkdir %ORABASE%\admin\%ORACLE_SID%\udump
mkdir %ORABASE%\ora92\database
mkdir %ORABASE%\oradata\%ORACLE_SID%

:: 建立Oracle服务
%ORAHOME%\bin\oradim.exe -new  -sid %ORACLE_SID% -startmode m

:: 创建密码文件
%ORAHOME%\bin\orapwd.exe file=%ORAHOME%\database\PWD%ORACLE_SID%.ora password=change_on_install


##################
#  1.恢复spfile  #
##################
以pfile启动到nomount
SQL> startup force nomount pfile='D:\oracle\admin\OSS\pfile\init.ora'
ORACLE 例程已经启动。

Total System Global Area  143728252 bytes
Fixed Size                   454268 bytes
Variable Size              88080384 bytes
Database Buffers           54525952 bytes
Redo Buffers                 667648 bytes


C:\Documents and Settings\Administrator>set ORACLE_SID=OSS

C:\Documents and Settings\Administrator>rman target / nocatalog

恢复管理器: 版本9.2.0.8.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

连接到目标数据库: OSS(未安装)
正在使用目标数据库控制文件替代恢复目录


从RMAN的备份文件中恢复SPFILE
RMAN> restore spfile from 'D:\oracle\oradata\rman\OSS_34.DBF';

启动 restore 于 27-10月-08

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 已找到的自动备份: D:\oracle\oradata\rman\OSS_34.DBF
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 27-10月-08

如果是多个备份片的备份集,一般在第一个备份片文件
RMAN> restore spfile from 'D:\oracle\oradata\rman\OSS_35_1.DBF';

启动 restore 于 27-10月-08

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 已找到的自动备份: D:\oracle\oradata\rman\OSS_35_1.DBF
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 27-10月-08
RMAN>

####################
#  2.恢复控制文件  #
####################
方法1:RMAN>restore controlfile from ‘/…备份文件..’

RMAN> restore controlfile from 'D:\oracle\oradata\rman\OSS_35_1.DBF';

启动 restore 于 27-10月-08

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=D:\ORACLE\ORADATA\OSS\CONTROL02.CTL
输出文件名=D:\ORACLE\ORADATA\OSS\CONTROL03.CTL
完成 restore 于 27-10月-08

RMAN>

方法2:
declare
  devtype varchar2(256);
  done boolean;
begin
  devtype := sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
  sys.dbms_backup_restore.restoreSetDatafile;
  sys.dbms_backup_restore.restoreControlfileTo(cfname=>'D:\oracle\oradata\OSS\CONTROL02.CTL');
  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\oracle\oradata\rman\OSS_35_1.DBF',params=>null);
  sys.dbms_backup_restore.deviceDeallocate;
end;


验证是否恢复了控制文件
SQL> show parameter control_files

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files                        string
D:\oracle\oradata\oss\control0
2.ctl, D:\oracle\oradata\oss\c
ontrol03.ctl
SQL>


##################
# 3.mount数据库  #
##################
SQL> alter database mount;
数据库已更改。


当恢复控制文件后,可以查看备份集信息
C:\Documents and Settings\Administrator>rman target / nocatalog

恢复管理器: 版本9.2.0.8.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

连接到目标数据库: OSS (DBID=666923275)
正在使用目标数据库控制文件替代恢复目录

RMAN> list copy;


数据文件副本列表
关键字     文件 S 完成时间   Ckp SCN    Ckp 时间   名称
------- ---- - ---------- ---------- ---------- ----
4       5    A 24-10月-08 146655     24-10月-08 D:\ORACLE\ORADATA\RMAN\DF_5.DBF

已存档的日志副本列表
关键字     Thrd Seq     S 短时间     名称
------- ---- ------- - ---------- ----
18      1    5       A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00005.001
19      1    6       A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00006.001
20      1    7       A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00007.001
21      1    8       A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00008.001
22      1    9       A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00009.001
23      1    10      A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00010.001
24      1    11      A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00011.001

RMAN> list backup;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
19      Full    208M       DISK        00:00:34     27-10月-08
BP 关键字: 23   状态: AVAILABLE   标记:TAG20081027T221948
段名:D:\ORACLE\ORADATA\RMAN\OSS_34.DBF
  包含的 SPFILE: 修改时间: 24-10月-08
  备份集 19 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 175026     27-10月-08 D:\ORACLE\ORADATA\OSS\SYSTEM01.DBF
  2       Full 175026     27-10月-08 D:\ORACLE\ORADATA\OSS\UNDOTBS01.DBF
  3       Full 175026     27-10月-08 D:\ORACLE\ORADATA\OSS\INDX01.DBF
  4       Full 175026     27-10月-08 D:\ORACLE\ORADATA\OSS\TOOLS01.DBF
  5       Full 175026     27-10月-08 D:\ORACLE\ORADATA\OSS\USERS01.DBF

RMAN>


################
# 恢复数据文件 #
################
RMAN> restore database;

启动 restore 于 27-10月-08

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\ORADATA\OSS\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\ORADATA\OSS\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\ORADATA\OSS\INDX01.DBF
正将数据文件00004恢复到D:\ORACLE\ORADATA\OSS\TOOLS01.DBF
正将数据文件00005恢复到D:\ORACLE\ORADATA\OSS\USERS01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\ORACLE\ORADATA\RMAN\OSS_34.DBF tag=TAG20081027T221948 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 27-10月-08


由于没有redo log日志文件所以我们不应用日志恢复:

RMAN> recover database noredo;

启动 recover 于 27-10月-08
使用通道 ORA_DISK_1
完成 recover 于 27-10月-08


到此,已经拥有了参数文件,控制文件,数据文件了
还差日志文件

################
# 恢复日志文件 #
################
SQL> alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile;
alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile
*
ERROR 位于第 1 行:
ORA-32001: ????? SPFILE, ????????? SPFILE


SQL> shutdown immediate;
ORA-01109: ??????


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup force mount;
ORACLE 例程已经启动。

Total System Global Area  143728252 bytes
Fixed Size                   454268 bytes
Variable Size              88080384 bytes
Database Buffers           54525952 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile;

系统已更改。

SQL> shutdown immediate;
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup force
ORACLE 例程已经启动。

Total System Global Area  143728252 bytes
Fixed Size                   454268 bytes
Variable Size              88080384 bytes
Database Buffers           54525952 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open resetlogs;

数据库已更改。


至此,数据库恢复!
阅读(1587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~