暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 19c: ORA-01110 重建控制文件 resetlogs 后发现少加数据文件的解决方案

原创 四九年入国军 2025-04-24
278

前提:  重建控制文件中少加一个数据文件,resetlogs后发现查表报错如下:
SQL> select *from scott.t1;
select *from scott.t1
                   *
ERROR at line 1:
ORA-00376: file 5 cannot be read at this time
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: '/u01/app/oracle/product/19.3.0/db/dbs/MISSING00005'



通过 reset database to incarnation 后依旧报错:

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01210: data file header is media corrupt
ORA-01110: data file : '/oradata/ORCL/test01.dbf'
ORA-01189: file is from a different RESETLOGS than previous files
ORA-01110: data file 5: '/oradata/ORCL/test01.dbf'





BBED> map /v
 File: /oradata/ORCL/users01.dbf (7)
 Block: 1                                     Dba:0x01c00001
------------------------------------------------------------
 Data File Header

 struct kcvfh, 1272 bytes                   @0       
    struct kcvfhbfh, 20 bytes               @0         --块头,主要包含block的rdba地址和block标志(是否坏块)
    struct kcvfhhdr, 76 bytes               @20        --头部结构,主要包括版本号,dbid,dbname,文件大小,文件类型等
    ub4 kcvfhrdb                            @96      
    struct kcvfhcrs, 8 bytes                @100       --create 时候的scn ,重要
    ub4 kcvfhcrt                            @108       --create  scn 对应的时间戳
    ub4 kcvfhrlc                            @112       --resetlogs  scn 对应的时间戳  
    struct kcvfhrls, 8 bytes                @116       --包含有resetlogs scn,重要
    ub4 kcvfhbti                            @124     
    struct kcvfhbsc, 8 bytes                @128       --意义不大,跟备份有关  SCN allocated when last backup started  
    ub2 kcvfhbth                            @136     
    ub2 kcvfhsta                            @138     
    struct kcvfhckp, 36 bytes               @484       --checkpoint 信息:包含检查点信息,如检查点SCN和时间戳
    ub4 kcvfhcpc                            @140       --datafile checkpoint count
	............... .
--查看 offset  112  116
d /v  dba  5,1  offset  112 count 10
d /v  dba  5,1  offset  116 count 10

--把上面查出的值依次复制到其他文件
modify /x  562a35 dba 1,1 offset  112
sum apply
modify /x  d14f1d dba 1,1 offset  116
sum apply 



--最后重建控制文件resetlogs后正常


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论