1简单说明:
版本:11.2.0.3
平台:linux-x86-64 到 win7-64bit
实例: bdstar1,bdstar2 还原到 bdstar 上
参考:三思笔记数据库备份与恢复
2 windows平台系统恢复环境创建
创建实例:oradim -new -sid bdstar
编写一个简单的参数文件:
*.audit_file_dest='E:\app\Administrator\admin\bdstar\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='E:\app\Administrator\oradata\bdstar\control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='bdstar'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=bdstarXDB)'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=184549376
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=553648128
*.undo_tablespace='UNDOTBS1'
bdstar.__oracle_base='E:\app\Administrator'#ORACLE_BASE set from environment
3控制文件的创建
set oracle_sid=bdstar --设置环境变量
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on星期二 9月 11 10:02:23 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup nomount
ORACLE例程已经启动。
Total System Global Area 551165952 bytes
Fixed Size 2257072 bytes
Variable Size 171970384 bytes
Database Buffers 369098752 bytes
Redo Buffers 7839744 bytes
SQL> create spfile from pfile;
--转入到RMAN还原控制文件
RMAN > set dbid=165487523 --dbid可是从备份文件的log日志获得
--从linux中将备份全部复制到windows下的d:\oraback\下
RMAN > restore controfile from 'd:\oraback\1_32_793037884.dbf' --该文件为linux rac下autobackup control文件
RMAN > alter database mount;
--下面就可以看到RAC数据库中的一些基本情况了,根据这些基本情况进行还原
SQL> select file#,name from v$datafile;
FILE# NAME
------------------------------------------------------------------------------------------
1 +DATA/bdstar/datafile/system.256.793037767
2 +DATA/bdstar/datafile/sysaux.257.793037769
3 +DATA/bdstar/datafile/undotbs1.258.793037769
FILE# NAME
------------------------------------------------------------------------------------------
4 +DATA/bdstar/datafile/users.259.793037771
5 +DATA/bdstar/datafile/undotbs2.264.793038149
6 +DATA/bdstar/datafile/tbs_spotlight.268.793381581
已选择6行。
SQL> select file#,name from v$tempfile;
FILE# NAME
------------------------------------------------------------------------------------------
1 +DATA/bdstar/tempfile/temp.263.793037901
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/bdstar/onlinelog/group_2.262.793037887
+DATA/bdstar/onlinelog/group_1.261.793037885
+DATA/bdstar/onlinelog/group_3.265.793038337
+DATA/bdstar/onlinelog/group_4.266.793038339
4恢复数据文件
--载入你的备份,使RMAN识别你的备份集
RMAN> catalog backuppiece 'd:\oraback\cre0_16_793617290.db';
已将备份片段列入目录
备份片段句柄=D:\ORABACK\CRE0_16_793617290.DB RECID=10 STAMP=793646472
RMAN> catalog backuppiece 'd:\oraback\cre0_17_793617290.db';
已将备份片段列入目录
备份片段句柄=D:\ORABACK\CRE0_17_793617290.DB RECID=11 STAMP=793646486
RMAN> catalog backuppiece 'd:\oraback\cre0_18_793617292.db';
已将备份片段列入目录
备份片段句柄=D:\ORABACK\CRE0_18_793617292.DB RECID=12 STAMP=793646496
RMAN> catalog backuppiece 'd:\oraback\cre0_19_793617316.db';
已将备份片段列入目录
备份片段句柄=D:\ORABACK\CRE0_19_793617316.DB RECID=13 STAMP=793646514
RMAN> catalog backuppiece 'd:\oraback\cre0_23_793617422.arc';
已将备份片段列入目录
备份片段句柄=D:\ORABACK\CRE0_23_793617422.ARC RECID=14 STAMP=793646540
RMAN> catalog backuppiece 'd:\oraback\cre0_24_793617499.arc';
已将备份片段列入目录
备份片段句柄=D:\ORABACK\CRE0_24_793617499.ARC RECID=15 STAMP=793646554
--将数据文件恢复到新的位置
RMAN> run{
2> set newname for datafile 1 to 'E:\app\Administrator\oradata\bdstar\system.dbf
';
3> set newname for datafile 2 to 'E:\app\Administrator\oradata\bdstar\sysaux.dbf
';
4> set newname for datafile 3 to 'E:\app\Administrator\oradata\bdstar\undotbs1.d
bf';
5> set newname for datafile 4 to 'E:\app\Administrator\oradata\bdstar\users.dbf'
;
6> set newname for datafile 5 to 'E:\app\Administrator\oradata\bdstar\undotbs2.d
bf';
7> set newname for datafile 6 to 'E:\app\Administrator\oradata\bdstar\tbs_spotli
ght.dbf';
8> set newname for tempfile 1 to 'E:\app\Administrator\oradata\bdstar\temp01.dbf
';
9> restore database;
10> switch datafile all;
11> switch tempfile all;
12> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore于 10-9月 -12
使用通道 ORA_DISK_1
数据文件 2已经还原到文件 E:\app\Administrator\oradata\bdstar\sysaux.dbf中
数据文件 4已经还原到文件 E:\app\Administrator\oradata\bdstar\users.dbf中
通道 ORA_DISK_1:正在开始还原数据文件备份集
通道 ORA_DISK_1:正在指定从备份集还原的数据文件
通道 ORA_DISK_1:将数据文件 00001还原到 E:\app\Administrator\oradata\bdstar\sys
tem.dbf
通道 ORA_DISK_1:将数据文件 00005还原到 E:\app\Administrator\oradata\bdstar\und
otbs2.dbf
通道 ORA_DISK_1:正在读取备份片段 D:\ORABACK\CRE0_16_793617290.DB
通道 ORA_DISK_1:段句柄 = D:\ORABACK\CRE0_16_793617290.DB标记 = LEVEL_0
通道 ORA_DISK_1:已还原备份片段 1
通道 ORA_DISK_1:还原完成,用时: 00:00:35
通道 ORA_DISK_1:正在开始还原数据文件备份集
通道 ORA_DISK_1:正在指定从备份集还原的数据文件
通道 ORA_DISK_1:将数据文件 00003还原到 E:\app\Administrator\oradata\bdstar\und
otbs1.dbf
通道 ORA_DISK_1:将数据文件 00006还原到 E:\app\Administrator\oradata\bdstar\tbs
_spotlight.dbf
通道 ORA_DISK_1:正在读取备份片段 D:\ORABACK\CRE0_17_793617290.DB
通道 ORA_DISK_1:段句柄 = D:\ORABACK\CRE0_17_793617290.DB标记 = LEVEL_0
通道 ORA_DISK_1:已还原备份片段 1
通道 ORA_DISK_1:还原完成,用时: 00:00:03
完成 restore于 10-9月 -12
数据文件 1已转换成数据文件副本
输入数据文件副本 RECID=7 STAMP=793646621文件名=E:\APP\ADMINISTRATOR\ORADATA\BDS
TAR\SYSTEM.DBF
数据文件 2已转换成数据文件副本
输入数据文件副本 RECID=8 STAMP=793646621文件名=E:\app\Administrator\oradata\bds
tar\sysaux.dbf
数据文件 3已转换成数据文件副本
输入数据文件副本 RECID=9 STAMP=793646621文件名=E:\APP\ADMINISTRATOR\ORADATA\BDS
TAR\UNDOTBS1.DBF
数据文件 4已转换成数据文件副本
输入数据文件副本 RECID=10 STAMP=793646621文件名=E:\app\Administrator\oradata\bd
star\users.dbf
数据文件 5已转换成数据文件副本
输入数据文件副本 RECID=11 STAMP=793646621文件名=E:\APP\ADMINISTRATOR\ORADATA\BD
STAR\UNDOTBS2.DBF
数据文件 6已转换成数据文件副本
输入数据文件副本 RECID=12 STAMP=793646621文件名=E:\APP\ADMINISTRATOR\ORADATA\BD
STAR\TBS_SPOTLIGHT.DBF
临时文件 1在控制文件中已重命名为 E:\app\Administrator\oradata\bdstar\temp01.dbf
RMAN> recover database
2> ;
启动 recover于 10-9月 -12
使用通道 ORA_DISK_1
正在开始介质的恢复
通道 ORA_DISK_1:正在开始将归档日志还原到默认目标
通道 ORA_DISK_1:正在还原归档日志
归档日志线程=2序列=26
通道 ORA_DISK_1:正在读取备份片段 D:\ORABACK\CRE0_23_793617422.ARC
通道 ORA_DISK_1:段句柄 = D:\ORABACK\CRE0_23_793617422.ARC标记 = TAG20120910T09
1635
通道 ORA_DISK_1:已还原备份片段 1
通道 ORA_DISK_1:还原完成,用时: 00:00:03
通道 ORA_DISK_1:正在开始将归档日志还原到默认目标
通道 ORA_DISK_1:正在还原归档日志
归档日志线程=1序列=30
通道 ORA_DISK_1:正在还原归档日志
归档日志线程=1序列=31
通道 ORA_DISK_1:正在还原归档日志
归档日志线程=2序列=27
通道 ORA_DISK_1:正在读取备份片段 D:\ORABACK\CRE0_24_793617499.ARC
通道 ORA_DISK_1:段句柄 = D:\ORABACK\CRE0_24_793617499.ARC标记 = TAG20120910T09
1635
通道 ORA_DISK_1:已还原备份片段 1
通道 ORA_DISK_1:还原完成,用时: 00:00:03
归档日志文件名=E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\RDBMS\ARC0000000030_
0793037884.0001线程=1序列=30
归档日志文件名=E:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\RDBMS\ARC0000000026_
0793037884.0002线程=2序列=26
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover命令 (在 09/10/2012 17:25:54上) 失败
RMAN-11003:在分析/执行 SQL语句期间失败: alter database recover logfile 'E:\APP
\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\RDBMS\ARC0000000026_0793037884.0002'
ORA-10562: Error occurred while applying redo to data block (file# 2, block# 402
84)
ORA-10564: tablespace SYSAUX
ORA-01110:数据文件 2: 'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\SYSAUX.DBF'
ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 70514
ORA-00600:内部错误代码,参数: [6122], [0], [24024], [0], [], [], [], [], [], []
, [], []
6重新编写控制文件
SQL > alter database backup controlfile to trace as 'd:/oraback/controlfile.sql'
--转存目前数据库控制文件,根据该文件重新创建控制文件。
--以上的错误正常,由于日志不一致造成的。关闭数据库启动到nomount阶段
SQL > STARTUP NOMOUNT
SQL > CREATE CONTROLFILE REUSE DATABASE "BDSTAR" RESETLOGS NOARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\redo01.dbf' SIZE 50M BLOCKSIZE 512,
GROUP 2 'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\redo02.dbf' SIZE 50M BLOCKSIZE 512
DATAFILE
'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\SYSTEM.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\SYSAUX.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\UNDOTBS1.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\USERS.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\UNDOTBS2.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\TBS_SPOTLIGHT.DBF'
CHARACTER SET ZHS16GBK
--关闭重启
SQL> startup mount
ORACLE例程已经启动。
Total System Global Area 551165952 bytes
Fixed Size 2257072 bytes
Variable Size 167776080 bytes
Database Buffers 373293056 bytes
Redo Buffers 7839744 bytes
数据库装载完毕。
SQL> alter database open resetlogs; -- 这一步很关键啊,为什么后加实例2的两个日志文件,这需要思考的地方。
alter database open resetlogs
*
第 1行出现错误:
ORA-38856:无法将实例 UNNAMED_INSTANCE_2 (重做线程 2)标记为启用
SQL> alter database add logfile thread 2 group 3 'E:\APP\ADMINISTRATOR\ORADATA\B
DSTAR\redo03.dbf' size 100M,group 4 'E:\APP\ADMINISTRATOR\ORADATA\BDSTAR\redo04.
dbf' size 100M;
数据库已更改。
SQL> alter database open resetlogs;
数据库已更改。
7恢复成功后的后续处理
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------------- ------------- -------------- ------------ --------------
1 1 1 52428800 512 1 NO
CURRENT 3134189 10-9月 -12 2.8147E+14
2 1 0 52428800 512 1 YES
UNUSED 0 0
3 2 1 104857600 512 1 NO
CURRENT 3134189 10-9月 -12 2.8147E+14
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------------- ------------- -------------- ------------ --------------
4 2 0 104857600 512 1 YES
UNUSED 0 0
--删除thread 2的日志
SQL> alter database disable thread 2;
数据库已更改。
SQL> alter database drop logfile group 3;
数据库已更改。
SQL> alter database drop logfile group 4;
数据库已更改。
SQL> show parameter undo_tablespace ;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> drop undo_tablespace undotbs2;
drop undo_tablespace undotbs2
*
第 1行出现错误:
ORA-00950:无效 DROP选项
SQL> select name from v$tablespace where name like 'UNDO%'
2 ;
NAME
------------------------------
UNDOTBS1
UNDOTBS2
SQL> DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES;
表空间已删除。
--创建临时表空间
SQL> alter tablespace temp add tempfile 'E:\app\Administrator\oradata\bdstar\tem
p01.dbf' size 50m;
表空间已更改。
SQL> ARCHIVE LOG LIST;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 E:\app\Administrator\product\11.2.0\dbhome_1\RDBMS
最早的联机日志序列 1
当前日志序列 1