当前位置:  首页  >  PHP教程  >  PHP 应用  >  代码收藏

修改DatafileHeader规避ORA-01190

一触发ORA-01190错误的原因1先抛出一个ora-01190错误,此错误用bbed工具构造SQLstartupORACLEinstancestarted.TotalSystemGlobalArea322961408bytesFixedSize&nb

一触发ORA-01190错误的原因1先抛出一个ora-01190错误,此错误用bbed工具构造SQLstartupORACLEinstancestarted.TotalSystemGlobalArea322961408bytesFixedSize&nb

一 触发ORA-01190错误的原因

1 先抛出一个ora-01190错误,此错误用bbed工具构造

SQL> startup

ORACLE instance started.

Total System Global Area 322961408 bytes

Fixed Size 2020480 bytes

Variable Size 96471936 bytes

Database Buffers 218103808 bytes

Redo Buffers 6365184 bytes

Database mounted.

ORA-01190: control file or data file 11 is from before the last RESETLOGS

ORA-01110: data file 11: '/oracle/test/jiujian1.dbf'

2 oerr ora 01190 给出这个错误的解释

[oracle@oracle ~]$ oerr ora 01190

01190, 00000, "control file or data file %s is from before the last RESETLOGS"

// *Cause: Attempting to use a data file when the log reset information in

// the file does not match the control file. Either the data file

// or the control file is a backup that was made before the most

// recent ALTER DATABASE OPEN RESETLOGS.

// *Action: Restore file from a more recent backup.

以上英文大体意思是

调用数据文件时发现数据文件的resetlogs信息和控制文件中resetlogs信息不匹配。

3 查询数据文件头部和控制文件中关于resetlogs的信息

控制文件中关于resetlogs的相关信息如下:

SQL> select resetlogs_change#, to_char(resetlogs_time,'mm/dd/yyyy hh24:mi:ss') time from v$database;

RESETLOGS_CHANGE# TIME

----------------- ------- -------------------

2781464667 01/15/2013 21:51:45

各数据文件头中resetlogs的信息如下:

Fhrls:resetlogs scn值

Fhrlc:resetlogs count值

fhrlc_i:resetlogs count 转换成10进制的值

对于resetlogs count 的描述如下:

reset logs count and scn: The counter with the SCN is called the Reset Log Stamp,

and is a unique identification. The counter is in fact a timestamp

SQL> select hxfil,fhrls change#,fhrlc_i,fhrlc time from x$kcvfh;

HXFIL CHANGE# FHRLC_I TIME

---------- ---------------- ---------- -------------------- -----------------------

1 2781464667 804808305 01/15/2013 21:51:45

2 2781464667 804808305 01/15/2013 21:51:45

3 2781464667 804808305 01/15/2013 21:51:45

4 2781464667 804808305 01/15/2013 21:51:45

5 2781464667 804808305 01/15/2013 21:51:45

6 2781464667 804808305 01/15/2013 21:51:45

7 2781464667 804808305 01/15/2013 21:51:45

8 2781464667 804808305 01/15/2013 21:51:45

11 2781455194 804803925 01/15/2013 20:38:45

12 2781464667 804808305 01/15/2013 21:51:45

13 2781464667 804808305 01/15/2013 21:51:45

11 rows selected.

通过对比11号文件的resetlogs scn及resetlogs count值不难发现触发ora-01190的原因:即数据文件头部的 resetlogs scn 、resetlogs count 和控制文件中的resetlogs信息不匹配造成的。所以,如果要规避ora-01190错误,我们可以通过bbed修改数据文件头部resetlogs相关值

二 通过bbed修改数据文件头部规避此错误

1 resetlogs count 和resetlogs scn 在数据文件头部的位置

resetlogs count 位于数据文件头部偏移量112处

resetlogs scn 位于数据文件头部偏移量116处

BBED> p offset 112

kcvfh.kcvfhrlc

--------------

吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有