首頁 資料庫 mysql教程 使用bbed修改文件头,推进scn,恢复offlinedrop的数据文件

使用bbed修改文件头,推进scn,恢复offlinedrop的数据文件

Jun 07, 2016 pm 04:13 PM
使用 修改 恢復 文件

最近处理了一起由于用户操作错误导致的数据库无法打开的情况。 用户数据库为windows 64bit,数据库版本为11.2.0.1,非归档模式。由于异常断电,数据库无法正常打开,而且经过用户的判断使用了错误的offline drop操作。导致数据库打开后,日志文件切换过多,

最近处理了一起由于用户操作错误导致的数据库无法打开的情况。

用户数据库为windows 64bit,数据库版本为11.2.0.1,非归档模式。由于异常断电,数据库无法正常打开,而且经过用户的判断使用了错误的offline drop操作。导致数据库打开后,日志文件切换过多,无法使用recover命令。

因为中间没有做其他操作,所以接到case后,这里将受损的几个数据文件copy到linux下使用bbed进行修改,再copy回windows,成功跳过recover,打开了offline drop的数据文件。

情景还原:

sys@UTF8A> select name ,checkpoint_change# from v$datafile ;
 
NAME                                              CHECKPOINT_CHANGE#
--------------------------------------------------------------------
/u01/apps/oracle/oradata/utf8a/system01.dbf                   1040256
/u01/apps/oracle/oradata/utf8a/sysaux01.dbf                   1040256
/u01/apps/oracle/oradata/utf8a/undotbs01.dbf                  1040256
/u01/apps/oracle/oradata/utf8a/users01.dbf                    1039896
 
 
sys@UTF8A> select sequence#, group#,first_change#,statusfrom v$log ;
 
 SEQUENCE#    GROUP# FIRST_CHANGE# STATUS
---------- ---------- -----------------------------
       19          1       1040256 CURRENT
       17          2       1040250 INACTIVE
       18          3       1040253 INACTIVE
 
 
sys@UTF8A> recover datafile 4  ;
ORA-00279: change 1039896 generated at03/30/2015 09:31:05 needed for thread 1
ORA-00289: suggestion :/u01/apps/oracle/product/11.2.0/dbhome_1/dbs/arch1_12_827004096.dbf
ORA-00280: change 1039896 for thread 1 isin sequence #12
 
 
Specify log: {<RET>=suggested |filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log'/u01/apps/oracle/product/11.2.0/dbhome_1/dbs/arch1_12_827004096.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file ordirectory
Additional information: 3
 
 
ORA-00308: cannot open archived log'/u01/apps/oracle/product/11.2.0/dbhome_1/dbs/arch1_12_827004096.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file ordirectory
Additional information: 3
登入後複製


sequence已经过去,无法执行恢复,所以这里只能使用bbed修改文件头了。归档以及备份真的很重要。

block为8192。

flist:

1/u01/apps/oracle/oradata/utf8a/system01.dbf 754974720

2/u01/apps/oracle/oradata/utf8a/sysaux01.dbf 566231040

3/u01/apps/oracle/oradata/utf8a/undotbs01.dbf 83886080

4/u01/apps/oracle/oradata/utf8a/users01.dbf 9175040

如何初始化bbed环境,以及各种bbed版本的下载,见我的博客

http://blog.csdn.net/renfengjun/article/details/7944629

这里不再重复赘述。

先关闭数据库并且启动到mount状态。

sys@UTF8A> selectfile#,change#,online_status from v$recover_file ;
 
    FILE#    CHANGE# ONLINE_
---------- ---------- -------
        4    1039896 OFFLINE
 
sys@UTF8A> select name ,checkpoint_change# from v$datafile ;
 
NAME                                              CHECKPOINT_CHANGE#
--------------------------------------------------------------------
/u01/apps/oracle/oradata/utf8a/system01.dbf                   1041564
/u01/apps/oracle/oradata/utf8a/sysaux01.dbf                   1041564
/u01/apps/oracle/oradata/utf8a/undotbs01.dbf                  1041564
/u01/apps/oracle/oradata/utf8a/users01.dbf                    1039896
登入後複製


记得修改前先备份所有的数据库文件。

BBED> set file 4
       FILE#           4
 
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes                   @484    
  struct kcvcpscn, 8 bytes                @484    
      ub4 kscnbas                           @484      0x000fde18
     ub2 kscnwrp                          @488      0x0000
  ub4 kcvcptim                            @492      0x34321859
  ub2 kcvcpthr                            @496      0x0001
  union u, 12 bytes                       @500    
     struct kcvcprba, 12 bytes            @500    
        ub4 kcrbaseq                      @500      0x0000000c
        ub4 kcrbabno                      @504      0x00000015
        ub2 kcrbabof                      @508      0x0010
  ub1 kcvcpetb[0]                          @512      0x02
  ub1 kcvcpetb[1]                         @513      0x00
  ub1 kcvcpetb[2]                         @514      0x00
  ub1 kcvcpetb[3]                         @515      0x00
  ub1 kcvcpetb[4]                         @516      0x00
  ub1 kcvcpetb[5]                         @517      0x00
  ub1 kcvcpetb[6]                         @518      0x00
  ub1 kcvcpetb[7]                         @519      0x00
 
登入後複製

注意offset 484 , kscnbas为数据文件现在的scn。

使用计算器计算后0x000fde18,得到的十进制数字为1039896,确认无误,只要修改scn为最新的1041564,即可打开损坏的数据文件。

BBED> d /v dba 4,1 offset 484 count 16
 File: /u01/apps/oracle/oradata/utf8a/users01.dbf(4)
 Block: 1      Offsets:  484 to  499 Dba:0x01000001
-------------------------------------------------------
 18de0f00 00000000 59183234 01000000 l ......Y.24....
 
 <16 bytes per line>
 
登入後複製


因为是这里为linux x64 ,为little endian。

1039896=18de0f00

1041564=9ce40f00

直接修改即可。

BBED> set【本文来自鸿网互联 (http://www.68idc.cn)】 mode edit
       MODE            Edit
 
BBED> m /x 9ce40f dba 4,1 offset 484
 File:/u01/apps/oracle/oradata/utf8a/users01.dbf (4)
 Block: 1                Offsets:  484 to 499           Dba:0x01000001
------------------------------------------------------------------------
 9ce40f00 00000000 59183234 01000000
 
 <32 bytes per line>
 
 
 
BBED> m /x 9ce40f dba 4,1 offset 484
 File: /u01/apps/oracle/oradata/utf8a/users01.dbf(4)
 Block: 1                Offsets:  484 to 499           Dba:0x01000001
------------------------------------------------------------------------
 9ce40f00 00000000 59183234 01000000
 
 <32 bytes per line>
 
BBED> sum
Check value for File 4, Block 1:
current = 0x5f67, required = 0x65e3
 
BBED> sum apply
Check value for File 4, Block 1:
current = 0x65e3, required = 0x65e3
登入後複製


完成任务

 
sys@UTF8A> alter database datafile 4online ;
 
Database altered.
 
sys@UTF8A> selectfile#,change#,online_status from v$recover_file ;
 
    FILE#    CHANGE# ONLINE_
---------- ---------- -------
        4    1041564 ONLINE
 
sys@UTF8A> alter database datafile 4online ;
 
Database altered.
 
sys@UTF8A> alter database open ;
alter database open
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4:'/u01/apps/oracle/oradata/utf8a/users01.dbf'
 
 
sys@UTF8A> recover datafile 4 ;
Media recovery complete.
sys@UTF8A> alter database open ;
 
Database altered.
 
sys@UTF8A> select * from scott.emp where rownum<2 ;
 
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM    DEPTNO
---------- ---------- --------- ---------- --------- -------------------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
登入後複製


完成后记得逻辑导出所有用户数据,并且完善备份计划。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 Mar 29, 2024 pm 08:41 PM

釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法

crystaldiskmark是什麼軟體? -crystaldiskmark如何使用? crystaldiskmark是什麼軟體? -crystaldiskmark如何使用? Mar 18, 2024 pm 02:58 PM

crystaldiskmark是什麼軟體? -crystaldiskmark如何使用?

夸克網盤的檔案怎麼轉移到百度網盤? 夸克網盤的檔案怎麼轉移到百度網盤? Mar 14, 2024 pm 02:07 PM

夸克網盤的檔案怎麼轉移到百度網盤?

出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法 出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法 Mar 21, 2024 pm 09:17 PM

出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法

抖音怎麼恢復聊天火花 抖音怎麼恢復聊天火花 Mar 16, 2024 pm 01:25 PM

抖音怎麼恢復聊天火花

hiberfil.sys是什麼檔案? hiberfil.sys可以刪除嗎? hiberfil.sys是什麼檔案? hiberfil.sys可以刪除嗎? Mar 15, 2024 am 09:49 AM

hiberfil.sys是什麼檔案? hiberfil.sys可以刪除嗎?

foob​​ar2000怎麼下載? -foobar2000怎麼使用 foob​​ar2000怎麼下載? -foobar2000怎麼使用 Mar 18, 2024 am 10:58 AM

foob​​ar2000怎麼下載? -foobar2000怎麼使用

抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? 抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? Mar 22, 2024 pm 12:51 PM

抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些?

See all articles