MiBDP,数据开发、项目团队、数据应用和产品在路上,金融保险、互联网网游、电商、新零售行业、大数据和AI在路上。对数仓、模型、ETL、数据产品应用了解。DTCC 2013演讲嘉宾,曾做过两款大获好评的数据产品平台。知识星球ID:35863277
分类: Oracle
2007-08-03 13:13:36
今天在做用户管理备份的不完全恢复操作时,由于马虎在数据库打开的情况下restore数据文件,导致在后来的recover时出现错误(在重建日志的情况下打开数据库没响应,然后就强制关闭数据库)以下是错误现场及解决的方法
DB version:102010 Os: Win Xp Sp2
现场:[CODE]
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 209715200 bytes
Fixed Size 1248164 bytes
Variable Size 71304284 bytes
Database Buffers 134217728 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
恢复数据库报错~前面我重建了日志文件强制关闭了数据库
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-00600: 内部错误代码, 参数: [3020], [2], [1715], [8390323], [], [], [], []
ORA-10567: Redo is inconsistent with data block (file# 2, block# 1715)
ORA-10564: tablespace UNDOTBS1
ORA-01110: 数据文件 2: 'D:\ORACLE\PRODUCT\
ORA-10560: block type 'KTU UNDO BLOCK'
--600是oracle内部经常出现的一个错误,错误原因很多
[/CODE]
下面是alert日志内容
[COLOR=red]alert.log日志[/COLOR]
[CODE]
Database mounted in Exclusive Mode
Completed: ALTER DATABASE MOUNT
Thu Aug 02 14:44:47 2007
ALTER DATABASE RECOVER database
Thu Aug 02 14:44:47 2007
Media Recovery Start
Thu Aug 02 14:44:48 2007
Recovery of Online Redo Log: Thread 1 Group 2 Seq 2 Reading mem 0
Mem# 0 errs 0: D:\ORACLE\PRODUCT\
Thu Aug 02 14:44:51 2007
Errors in file d:\oracle\product\
ORA-00600: 内部错误代码, 参数: [3020], [2], [1715], [8390323], [], [], [], []
ORA-10567: Redo is inconsistent with data block (file# 2, block# 1715)
ORA-10564: tablespace UNDOTBS1
ORA-01110: 数据文件 2: 'D:\ORACLE\PRODUCT\
ORA-10560: block type 'KTU UNDO BLOCK'
[/CODE]
再查看相应的trc跟踪文件colin_ora_2684.trc:
-----------------
查了相关的文档后考虑使用基于撤销的恢复尝试恢复
解决:
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
把所有的冷备文件拷贝到目标位置
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 209715200 bytes
Fixed Size 1248164 bytes
Variable Size 71304284 bytes
Database Buffers 134217728 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
下面是使用基于取消的恢复,使用备份控制文件从联机备份中恢复。
SQL> recover database until cancel using backup controlfile;
ORA-00279: 更改 1057512 (在 08/02/2007 10:20:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\PRODUCT\
ORA-00280: 更改 1057512 (用于线程 1) 在序列 #11 中
指定日志: {
auto
ORA-00279: 更改 1057867 (在 08/02/2007 11:42:15 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\PRODUCT\
ORA-00280: 更改 1057867 (用于线程 1) 在序列 #1 中
ORA-00279: 更改 1078070 (在 08/02/2007 11:48:43 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\PRODUCT\
ORA-00280: 更改 1078070 (用于线程 1) 在序列 #2 中
ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\PRODUCT\
ORA-00308: 无法打开归档日志 'D:\ORACLE\PRODUCT\
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
--接下来在重建日志方式下打开数据库
SQL> alter database open resetlogs;
数据库已更改。
这里一定要使用重建日志的方式打开数据库
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 0
下一个存档日志序列 1
当前日志序列 1
汉!还好恢复回来了,赶快来个全库备份吧(本来也是需要的因为我们重建了所有的日志)
RMAN> run {
2> allocate channel d1 type disk;
3> backup database format 'd:\dfbak\%d_%s_%T.bak';
4> backup format 'log_%d_%s_%_T'
5> (archivelog all delete all input);
6> release channel d1;
7> }
分配的通道: d1
通道 d1: sid=142 devtype=DISK
启动 backup 于 02-8月 -07
通道 d1: 启动全部数据文件备份集
通道 d1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\
输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\
输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\
输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\
通道 d1: 正在启动段 1 于 02-8月 -07
通道 d1: 已完成段 1 于 02-8月 -07
段句柄=D:\DFBAK\COLIN_15_20070802.BAK 标记=TAG20070802T171405 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:02:05
通道 d1: 启动全部数据文件备份集
通道 d1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 d1: 正在启动段 1 于 02-8月 -07
通道 d1: 已完成段 1 于 02-8月 -07
段句柄=D:\DFBAK\COLIN_16_20070802.BAK 标记=TAG20070802T171405 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 02-8月 -07
启动 backup 于 02-8月 -07
当前日志已存档
通道 d1: 正在启动存档日志备份集
通道 d1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =1 记录 ID=5 时间戳=628284564
................................................................................................................
通道 d1: 正在启动段 1 于 02-8月 -07
通道 d1: 已完成段 1 于 02-8月 -07
段句柄=D:\ORACLE\PRODUCT\
171627 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:00:27
通道 d1: 正在删除存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\
07_07_18\O1_MF_1_1_39VYDKYF_.ARC 记录 ID=5 时间戳 =628284564
.........................................................
通道 d1: 正在启动存档日志备份集
通道 d1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =9 记录 ID=1 时间戳=628251497
输入存档日志线程 =1 序列 =10 记录 ID=2 时间戳=628251661
输入存档日志线程 =1 序列 =11 记录 ID=3 时间戳=628251700
输入存档日志线程 =1 序列 =12 记录 ID=4 时间戳=628273330
通道 d1: 正在启动段 1 于 02-8月 -07
通道 d1: 已完成段 1 于 02-8月 -07
段句柄=D:\ORACLE\PRODUCT\
171627 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:00:05
通道 d1: 正在删除存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\
07_07_18\O1_MF_1_9_39TY
.......................................................
通道 d1: 正在启动存档日志备份集
通道 d1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =1 记录 ID=18 时间戳=629572586
通道 d1: 正在启动段 1 于 02-8月 -07
通道 d1: 已完成段 1 于 02-8月 -07
段句柄=D:\ORACLE\PRODUCT\
171627 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:00:03
通道 d1: 正在删除存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\
07_08_02\O1_MF_1_1_
通道 d1: 正在启动存档日志备份集
通道 d1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =1 记录 ID=16 时间戳=629570587
输入存档日志线程 =1 序列 =2 记录 ID=17 时间戳=629570588
通道 d1: 正在启动段 1 于 02-8月 -07
通道 d1: 已完成段 1 于 02-8月 -07
段句柄=D:\ORACLE\PRODUCT\
171627 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:00:02
通道 d1: 正在删除存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\
.....................................................
完成 backup 于 02-8月 -07
释放的通道: d1
RMAN>