在这里需要感谢棉花糖给予无私帮助,真的谢谢他!
http://blog.itpub.net/67668/viewspace-353270/
处理过程可以参照http://www.itpub.net/viewthread.php?tid=1010027&extra=&page=1

下面我把问题的处理做一个小的总结,希望有所帮助
问题主要是: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
  2  FROM (SELECT VALUE FROM v$parameter WHERE NAME='user_dump_dest') a,
  3       (SELECT SUBSTR(VALUE,-6,1) symbol FROM v$parameter WHERE NAME='user_dump_dest') b,
  4       (SELECT instance_name FROM v$instance) c,
  5       (SELECT spid FROM v$session s,v$process p,v$mystat m
  6        WHERE s.paddr=p.addr AND s.SID=m.SID AND m.statistic#=0) d
  7  /

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  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FTITEM10G01',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EYGLE01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FTTEST01',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZXF1.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZXF2.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TZX01.DBF'
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  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FTITEM10G01',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EYGLE01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FTTEST01',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZXF1.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ZXF2.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TZX01.DBF'
CHARACTER SET ZHS16GBK
;
4.alter database mount; 把数据库启动到mount状态
5.SQL> recover database;
   ORA-00283: 恢复会话因错误而取消
   ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
因为采用的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 中

指定日志: {=suggested | filename | AUTO | CANCEL}

在这里有几个选项
suggested:在上面ORA-00289: 建议:....会按这个文件去恢复
filename:自己指定日志文件
auto:自动选择,但我个人觉得好像和suggestted一样呢:(
cancel:这个可以不从介质恢复。

我在这里选择auto和suggested无不行,报的错误如下:
指定日志: {=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: 未启动介质恢复

经过以上的步骤后来发现:
我这里的归档日志中要求的是日志文件不存在
指定日志: {=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#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS      
------ ---------- ---------- ---------- ---------- --- --------
     1          1          0   52428800          1 YES UNUSED
     3          1          0   52428800          1 YES CURRENT
     2          1          0   52428800          1 YES UNUSED
发现这里的理解有问题,因为采用的是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 中

指定日志: {=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>  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 中

指定日志: {=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的问题的更多相关文章

  1. 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》

    源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...

  2. listener.ora/sqlnet.ora/tnsnames.ora配置文件详解

    oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 英文说明: The ...

  3. oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性

    学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...

  4. ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

    不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数 ...

  5. oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件

    总结: 1 .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. 2 .sqlnet.ora确定解析方式 3 .listener.ora上设SID_NAME,通常用于JD ...

  6. oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)

    oracle网络配置三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下.1. sqlnet.o ...

  7. oracle错误(ORA:12154 ORA:01034 和 ORA:27101 ORA-18008 ORA-01081)

    按照正常操作流程,启动项目,发现项目报错,原因是连接不上oracle数据库, PLSQL连接时报错,错误码  ORA:12154 无法解析指定的连接标识符 第一次,遇到这个错误,在网上找了资料都是需要 ...

  8. 转载 数据库优化 - SQL优化

    判断问题SQL判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象CPU消耗严重IO等待严重页面响应时间过长应用的日志出现超时等错误可以使用sar命令,top命令查看当前系统状态. 也可以通 ...

  9. [转载] 数据库分析手记 —— InnoDB锁机制分析

    作者:倪煜 InnoDB锁机制常常困扰大家,不同的条件下往往表现出不同的锁竞争,在实际工作中经常要分析各种锁超时.死锁的问题.本文通过不同条件下的实验,利用InnoDB系统给出的各种信息,分析了锁的工 ...

  10. [转载]数据库存储图片(MSSQL/ORACLE/ACCESS

    下面我来汇总一下如何将图片保存到SqlServer.Oracle.Access数据库中.首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步1.将图片转换 ...

随机推荐

  1. iOS · UILabel加删除线

    创建自定义子类DeleteLineLabel,继承自UILabel,然后在自定义子类DeleteLineLabel中 方法一(上下文): - (void)drawRect:(CGRect)rect { ...

  2. Node包管理工具

    Node包管理工具 只是简单的介绍一些工具的使用,有利于开发过程.除了介绍Node包管理工具,还介绍了前端打包工具,前端模块管理工具 Node包管理工具:    --npm    --cnpm    ...

  3. 在jquery的ajax中添加自定义的header信息

    转自网络 1 $.ajax({ type: "POST", url: "http://192.168.0.88/action.cgi?ActionID=WEB_Reque ...

  4. oracle dblink的创建方式

    操作语句: create database link zfxtdblink connect to tianhe2014 identified by tianhe2014 using '199.169. ...

  5. IOS监听屏幕状态

    一.定义两个宏   //锁屏通知 #define NotificationOff CFSTR("com.apple.springboard.lockcomplete")   //解 ...

  6. Ubuntu .deb包安装方法

    使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包.刻盘,以后安装Ubuntu ...

  7. R语言多项式回归

    含有x和y这两个变量的线性回归是所有回归分析中最常见的一种:而且,在描述它们关系的时候,也是最有效.最容易假设的一种模型.然而,有些时候,它的实际情况下某些潜在的关系是非常复杂的,不是二元分析所能解决 ...

  8. EXCLE使用中常用函数和公式

    1.查找重复项 IF(COUNTIF(A:A,A1)>1"重复""") 或者 IF(COUNTIF($A$1:$A$100,A1)=1,"&qu ...

  9. Analyzer报表里显示的 * 星号、红叉、#井号的意义

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. 【译】css动画里的steps()用法详解

    原文地址:http://designmodo.com/steps-c... 原文作者:Joni Trythall 我想你在css 动画里使用steps()会和我一样有很多困惑.一开始我不清楚怎样使用它 ...