数据库出现ORA-00283/ORA-01610的问题
来源:互联网 发布:js手机端touch事件 编辑:程序博客网 时间:2024/06/08 19:23
处理过程可以参照http://www.itpub.net/viewthread.php?tid=1010027&extra=&page=1
==================================================================================================
问题应该是控制文件中的检查点信息与system01没有保持一致的原因,但不知如何去恢复
问题描述:
第一步:
在做试验的过程中,先shutdown abort数据库
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS
10
11
12
13
14
.......
25
26
控制文件已创建。
第二步:
这时便出现了如下的错误。
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
我重新关闭数据库
SQL> startup mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
数据库装载完毕。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'
做到这里,我便不知如何去处理了,请各位帮着看看,是什么问题,谢了
重建控制文件要clean shutdown instance后再做
已经干净的关闭数据库了。
但仍出现上面的错误。
而且我在看eygle的书中,可以采用这样的方式恢复 但我这里即找不到归档日志。(选择cancel时会报下面的错)
ORA-01112: 未启动介质恢复
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 6388485 (在 06/22/2008 14:45:49 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1_9_%
ORA-00280: 更改 6388485 (用于线程 1) 在序列 #9 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志 'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
第一步:
在做试验的过程中,先shutdown abort数据库
SQL> shutdown abort;
你测试的那里用的是shutdown abort啊
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 6388485 (在 06/22/2008 14:45:49 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1_9_%
ORA-00280: 更改 6388485 (用于线程 1) 在序列 #9 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
把auto改成在线日志
重新创建了控制文件,采用noresetlogs的方式,可以了,但用resetlogs方式仍然不可以,不知道为什么?
--采用noresetlogs的方式恢复数据库步骤如下:
SQL> startup nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
控制文件已创建。
SQL> recover database;
完成介质恢复。
SQL> alter database open;
数据库已更改。
norestlogs,控制文件的scn是来自当前日志的high scn,而resetlogs控制文件的scn是来自数据文件
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 6388485 (在 06/22/2008 14:45:49 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1_9_%
ORA-00280: 更改 6388485 (用于线程 1) 在序列 #9 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
把auto改成在线日志做恢复应该也ok的
特别的奇怪,我这里的归档日志中要求的是日志文件不存在
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1_9_45W1NQDP_.ARC
ORA-00310: 归档日志包含序列 9; 要求序列 10
ORA-00334: 归档日志:
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1
_9_45W1NQDP_.ARC'
因为sequence 10还没归档啊,输入在线日志做测试
采用auto的方式,也是寻找序列为10的归档日志
ORA-00308: 无法打开归档日志
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1
_10_%U_.ARC'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
选择cancel
ORA-01112: 未启动介质恢复
==================================================================================================
下面我把问题的处理做一个小的总结,希望有所帮助
问题主要是:resetlogs/noresetlogs与控制文件方面的(参照eygle的书)
第一:
要弄清楚resetlogs与noresetlogs的区别
norestlogs,控制文件的scn是来自当前日志的high scn,而resetlogs控制文件的scn是来自数据文件。
我在这里开始没有弄明白,我以noresetlogs进行恢复没有问题,后来请教了棉花糖才知道为什么noresetlogs可以成功,而resetlogs没有成功。
第二:
如何时取得创建控制文件的脚本,方法如下:
sql>alter database backup to trace;
然后通过查询跟踪文件的脚本可以查询到相关的详细信息
SQL> SELECT a.VALUE||b.symbol||c.instance_name||'_ora_'||d.spid||'.trc' TRACE_FILE_NAME
TRACE_FILE_NAME
---------------------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP\orcl_ora_5724.trc
在这orcl_ora_5724.trc脚本中可以找到创建控制文件的两种方式noresetlogs/resetlogs.
第三:模拟出错的过程
shutdown abort来进行关闭据库。
第四:利用noresetlogs来进行控件文件以及数据库的恢复
1.启动到数据库为nomount状态
sql>startup nomount;
2.开始创建控制文件
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS
LOGFILE
-- STANDBY LOGFILE
DATAFILE
CHARACTER SET ZHS16GBK
;
3.recover database; //恢复数据库
4.打开数据库 alter database open;
因为noresetlogs是用当前日志的high scn来恢复,所以基本没有问题。
第四:利用resetlogs来进行控件文件以及数据库的恢复,这里出现的一些问题
1.shutdown abort
2.数据库启动到nomount状态
3.创建控制文件
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS
LOGFILE
-- STANDBY LOGFILE
DATAFILE
CHARACTER SET ZHS16GBK
;
4.alter database mount; 把数据库启动到mount状态
5.SQL> recover database;
因为采用的resetlogs方式,所以会出现如上的错误
这时需要用如下的方式进行恢复
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 6432534 (在 06/22/2008 16:39:31 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2008_06_22\O1_MF_1_
13_%U_.ARC
ORA-00280: 更改 6432534 (用于线程 1) 在序列 #13 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
在这里有几个选项
suggested:在上面ORA-00289: 建议:....会按这个文件去恢复
filename:自己指定日志文件
auto:自动选择,但我个人觉得好像和suggestted一样呢:(
cancel:这个可以不从介质恢复。
我在这里选择auto和suggested无不行,报的错误如下:
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志 'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
采用cancel报如下错:
ORA-01112: 未启动介质恢复
经过以上的步骤后来发现:
我这里的归档日志中要求的是日志文件不存在
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1_9_45W1NQDP_.ARC
ORA-00310: 归档日志包含序列 9; 要求序列 10
ORA-00334: 归档日志:
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2008_06_22O1_MF_1
_9_45W1NQDP_.ARC'
查看日志文件:
select * from v$log;
GROUP#
------ ---------- ---------- ---------- ---------- --- --------
发现这里的理解有问题,因为采用的是resetlogs,所以日志文件肯定是unused的,呵, 这里要多谢棉花糖的。
6.仔细查看eygle的书这时有一句话
"如果在线日志未损坏,则可以指定在线日志文件执行恢复",这时棉花糖也指出了这点:
“哦,忘了你的是resetlogs,你的在线日志还在吧 ,把在线日志的路径输入啊,比如这样D:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG ,你把所有的日志测试过去,有一个应该是能用来做恢复”
经过再次尝试终于成功了
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 6432534 (在 06/22/2008 16:39:31 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2008_06_22\O1_MF_1_
13_%U_.ARC
ORA-00280: 更改 6432534 (用于线程 1) 在序列 #13 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
ORA-00310: 归档日志包含序列 12; 要求序列 13
ORA-00334: 归档日志: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'
SQL>
ORA-00279: 更改 6432534 (在 06/22/2008 16:39:31 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2008_06_22\O1_MF_1_
13_%U_.ARC
ORA-00280: 更改 6432534 (用于线程 1) 在序列 #13 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
已应用的日志。
完成介质恢复。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
数据库已更改。
- 数据库出现ORA-00283/ORA-01610的问题
- 数据库出现ORA-00283/ORA-01610的问题
- Oracle 数据库登录时出现ORA-12514 、ORA-01034、ORA-27101、ORA-01033 错误的解决
- 数据库出现ORA-01033问题 解决方法
- oracle出现ORA-16038,ORA-19809,ORA-00312问题的解决方法
- ORA-00283 & ORA-01610 的处理方法
- 插入数据库数据时出现ORA-00911: 无效字符问题,
- Oracle10GODP连接11G数据库,出现ORA - 1017用户名/口令无效; 登录被拒绝 的问题
- Oracle10GODP连接11G数据库,出现ORA - 1017用户名/口令无效; 登录被拒绝 的问题
- Oracle10GODP连接11G数据库,出现ORA - 1017用户名/口令无效; 登录被拒绝 的问题
- oracle数据库恢复报ORA-00283,ORA-01610错误原因
- 出现的问题: A、使用命令行无法登录oracle或者显示ORA-01109:数据库未打开; B、使用PL/SQL登录出现 ORA-01033:ORACLE initialization or
- ORA-01033问题后又出现ORA-01145问题的解决方案
- 控制文件(control)被误删恢复方法(ORA-00283/ORA-01610的问题)
- 记一则数据库恢复出现ora-600的案…
- ORA-21500,ORA-24550,ORA-01000 ,ORA-06512同时出现,问题定位及解决办法
- oracle数据库中ORA问题
- ora-16014;ora-00312 常见的问题
- liunx必知必会(1)
- 杭电2567寻梦(字符串处理)
- Algorithm 2
- 垃圾收集器-GC以及判断对象存活的算法以及引用类型
- PHP实现微信申请退款
- 数据库出现ORA-00283/ORA-01610的问题
- Facebook 进军之路(附面经)
- 170726 逆向-ScanRouter(2)
- C++ 视频课笔记8
- hdu 1398 Square Coins(生成函数)
- 指针的方式逆序数组
- Unity中实现一个状态机
- 解除浏览中百度对大文件下载限制
- 抽象类