一 触发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.
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的信息如下:
对于resetlogs count 的描述如下:
reset logs count and scn: The counter with the SCN is called the Reset Log Stamp,
and is a unique identification.
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
12 2781464667 804808305 01/15/2013 21:51:45
13 2781464667 804808305 01/15/2013 21:51:45
11 rows selected.
二 通过bbed修改数据文件头部规避此错误
1 resetlogs count 和resetlogs scn 在数据文件头部的位置
BBED> p offset 112
kcvfh.kcvfhrlc
--------------
ub4 kcvfhrlc @112 0x2ff85555 resetlogs count
BBED> p offset 116
kcvfh.kcvfhrls.kscnbas
----------------------
ub4 kscnbas @116 0xa5c9a35a resetlogs scn
2 用bbed 调整这两处的值
调整resetlogs count如下
BBED> dump /v dba 1,1 offset 112 count 30
File: /oracle/test/system1.dbf (1)
Block: 1 Offsets: 112 to 141 Dba:0x00400001
-------------------------------------------------------
7166f82f 5bc8c9a5 00000000 00000000 l qf?[壬?.......
00000000 00000000 00000420 dc07 l ........... ?
BBED> dump /v dba 11,1 offset 112 count 30
File: /oracle/test/jiujian1.dbf (11)
Block: 1 Offsets: 112 to 141 Dba:0x02c00001
-------------------------------------------------------
5aa3c9a5 00000000 00000000 l UU?ZI?.......
00000000 00000000 00000400 9b02 l ..............
BBED> modify /x 7166
File: /oracle/test/jiujian1.dbf (11)
Block: 1 Offsets: 112 to 141 Dba:0x02c00001
------------------------------------------------------------------------
5aa3c9a5 00000000 00000000 00000000 00000000 00000400 9b02
调整 resetlogs scn值如下
BBED> dump /v dba 1,1 offset 116 count 30
File: /oracle/test/system1.dbf (1)
Block: 1 Offsets: 116 to 145 Dba:0x00400001
-------------------------------------------------------
00000000 00000000 00000000 l [壬?...........
00000000 00000420 dc070000 df70 l ....... ?..遬
BBED> dump /v dba 11,1 offset 116 count 30
File: /oracle/test/jiujian1.dbf (11)
Block: 1 Offsets: 116 to 145 Dba:0x02c00001
-------------------------------------------------------
00000000 00000000 00000000 l ZI?...........
00000000 00000400 9b020000 b155 l ............盪
BBED> modify /x 5bc8
File: /oracle/test/jiujian1.dbf (11)
Block: 1 Offsets: 116 to 145 Dba:0x02c00001
------------------------------------------------------------------------
00000000 00000000 00000000 00000000 00000400 9b020000 b155
最后sum apply 使更改生效
BBED> sum apply
Check value for File 11, Block 1:
current = 0x77a2, required = 0x77a2
接下来请看第2页精彩内容: