当前位置:  数据库>oracle

通过BBED修复ORA-01190错误

    来源: 互联网  发布时间:2017-06-20

    本文导语: 1、配置BBET Oracle11g中缺省不提供BBET库文件,如果需要可以将10g中的文件copy到11g相应目录再执行安装: $ORACLE_HOME/rdbms/lib/ssbbded.o  $ORACLE_HOME/rdbms/lib/sbbdpt.o  $ORACLE_HOME/rdbms/mesg/bbedus.msb  在第一次使用时会发现有默认的口令,从这...

1、配置BBET

Oracle11g中缺省不提供BBET库文件,如果需要可以将10g中的文件copy到11g相应目录再执行安装:

$ORACLE_HOME/rdbms/lib/ssbbded.o 

$ORACLE_HOME/rdbms/lib/sbbdpt.o 

$ORACLE_HOME/rdbms/mesg/bbedus.msb

 在第一次使用时会发现有默认的口令,从这里可以看出oracle对bbed工具的限制,默认的密码是blockedit

SQL> col name for a50

SQL> select file#||' '||name||' '||bytes from v$datafile;

FILE#||''||NAME||''||BYTES

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

1 /u01/app/oracle/oradata/satdb/system01.dbf 786432000

2 /u01/app/oracle/oradata/satdb/sysaux01.dbf 618659840

3 /u01/app/oracle/oradata/satdb/undotbs01.dbf 94371840

4 /u01/app/oracle/oradata/satdb/users01.dbf 5242880

5 /u01/app/oracle/oradata/satdb/data01.dbf 104857600

6 /u01/app/oracle/oradata/satdb/fda_tbs01.dbf 524288000

[oracle@orcl ~]$ vi dbfiles.txt 

1 /u01/app/oracle/oradata/satdb/system01.dbf 786432000

2 /u01/app/oracle/oradata/satdb/sysaux01.dbf 618659840

3 /u01/app/oracle/oradata/satdb/undotbs01.dbf 94371840

4 /u01/app/oracle/oradata/satdb/users01.dbf 5242880

5 /u01/app/oracle/oradata/satdb/data01.dbf 104857600

6 /u01/app/oracle/oradata/satdb/fda_tbs01.dbf 524288000

[oracle@orcl ~]$ cat parameter.txt 

blocksize=8192

listfile=dbfiles.txt

mode=edit

2、模拟错误

SQL> select file#,status from v$datafile;

     FILE# STATUS

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

         1 SYSTEM

         2 ONLINE

         3 ONLINE

         4 ONLINE

         5 ONLINE

         6 ONLINE

6 rows selected.

SQL> alter database datafile 5 offline;

Database altered.

SQL> select file#,status from v$datafile;

     FILE# STATUS

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

         1 SYSTEM

         2 ONLINE

         3 ONLINE

         4 ONLINE

         5 RECOVER

         6 ONLINE

6 rows selected.

SQL> select hxfil,fhrba_seq from x$kcvfh;

     HXFIL  FHRBA_SEQ

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

         1          1

         2          1

         3          1

         4          1

         5          1

         6          1

6 rows selected.

SQL> select group#,archived,sequence#,status from v$log;

    GROUP# ARCHIV  SEQUENCE# STATUS

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

         1 YES             1 ACTIVE

         2 YES             2 ACTIVE

         3 NO              3 CURRENT

SQL> startup force mount;

ORACLE instance started.

Total System Global Area 1603411968 bytes

Fixed Size                  2253664 bytes

Variable Size             989858976 bytes

Database Buffers          603979776 bytes

Redo Buffers                7319552 bytes

Database mounted.

SQL> recover database until cancel;

ORA-00279: change 1268630 generated at 10/01/2015 11:36:55 needed for thread 1

ORA-00289: suggestion : /u01/app/oracle/arch2/1_1_891948516.dbf

ORA-00280: change 1268630 for thread 1 is in sequence #1

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/satdb/system01.dbf'

ORA-01112: media recovery not started

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/satdb/system01.dbf'

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SQL> startup force mount;

ORACLE instance started.

Total System Global Area 1603411968 bytes

Fixed Size                  2253664 bytes

Variable Size             989858976 bytes

Database Buffers          603979776 bytes

Redo Buffers                7319552 bytes

Database mounted.

注意:这里提示如果以resetlogs打开数据库,则13号文件会丢失。所以我们用如下命令增加关键字for drop 意思就是告诉数据库,这个数据文件我后面可能会丢弃,不会在online了。

SQL> alter database datafile 13 offline for drop;

Database altered.

SQL> alter database open resetlogs;

Database altered.

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

RESETLOGS_CHANGE# TIME

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

          1268631 10/01/2015 11:46:40

SQL> col fhrlc for a50

SQL> set linesize 400  

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

     HXFIL CHANGE#                             FHRLC_I TIME

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

         1 1268631                           891949600 10/01/2015 11:46:40

         2 1268631                           891949600 10/01/2015 11:46:40

         3 1268631                           891949600 10/01/2015 11:46:40

         4 1268631                           891949600 10/01/2015 11:46:40

         5 1267919                           891948516 10/01/2015 11:28:36

         6 1268631                           891949600 10/01/2015 11:46:40

6 rows selected.

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

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

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

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

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

SQL> alter database datafile 5 online;

alter database datafile 5 online

*

ERROR at line 1:

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

ORA-01110: data file 5: '/u01/app/oracle/oradata/satdb/data01.dbf'

[oracle@orcl ~]$ bbed parfile=parameter.txt  password=blockedit

BBED: Release 2.0.0.0.0 - Limited Production on Thu Oct 1 11:52:29 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> dump /v dba 1,1 offset 112 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  112 to  141  Dba:0x00400001

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

 20122a35 975b1300 00000000 00000000 l  .*5.[..........

 00000000 00000000 00000420 cf00     l ........... ..

 

BBED> dump /v dba 5,1 offfset 112 count 30

BBED-00202: invalid parameter (offfset)

BBED> dump /v dba 5,1 offset 112 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  112 to  141  Dba:0x01400001

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

 e40d2a35 cf581300 00000000 00000000 l ..*5.X..........

 00000000 00000000 00000400 7f00     l ..............

 

BBED> modify /x 2012

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1                Offsets:  112 to  141           Dba:0x01400001

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

 20122a35 cf581300 00000000 00000000 00000000 00000000 00000400 7f00 

 

BBED> dump /v dba 1,1 offset 116 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  116 to  145  Dba:0x00400001

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

 975b1300 00000000 00000000 00000000 l .[..............

 00000000 00000420 cf000000 8811     l ....... ......

 

BBED> dump /v dba 5,1 offset 116 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  116 to  145  Dba:0x01400001

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

 cf581300 00000000 00000000 00000000 l .X..............

 00000000 00000400 7f000000 780d     l ............x.

 

BBED> modify /x 975b

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1                Offsets:  116 to  145           Dba:0x01400001

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

 975b1300 00000000 00000000 00000000 00000000 00000400 7f000000 780d 

 

BBED> sum apply

Check value for File 5, Block 1:

current = 0xefbf, required = 0xefbf

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

     HXFIL CHANGE#                             FHRLC_I TIME

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

         1 1268631                           891949600 10/01/2015 11:46:40

         2 1268631                           891949600 10/01/2015 11:46:40

         3 1268631                           891949600 10/01/2015 11:46:40

         4 1268631                           891949600 10/01/2015 11:46:40

         5 1268631                           891949600 10/01/2015 11:46:40

         6 1268631                           891949600 10/01/2015 11:46:40

6 rows selected.

注意下面,我们上面虽然用bbed调整了数据文件头部的restlogs scn 和resetlogs count 使之和控制文件保持一样,不过我们online 数据文件时会接着报需要介质恢复。如下:

SQL> alter database datafile 5 online;

alter database datafile 5 online

*

ERROR at line 1:

ORA-01113: file 5 needs media recovery

ORA-01110: data file 5: '/u01/app/oracle/oradata/satdb/data01.dbf'

4、用bbed调整数据文件头部检查点以及scn相关值

我们还应改如下偏移量

ub4 kcvfhcpc @140 0x00000308------检查点计数

ub4 kcvfhccc @148 0x00000307------总是比检查点计算少1

ub4 kcvcptim @492 0x2f9af923-----检查点时间

ub4 kscnbas @484 0x8013ea80-------- scn的低位

ub2 kscnwrp @488 0x0000--------- scn的高位

BBED> dump /v dba 1,1 offset 140 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  140 to  169  Dba:0x00400001

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

 cf000000 88112a35 ce000000 00000000 l ......*5........

 00000000 00000000 00000000 0000     l ..............

 

BBED> dump /v dba 5,1 offset 140 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  140 to  169  Dba:0x01400001

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

 7f000000 780d2a35 7e000000 00000000 l ....x.*5~.......

 00000000 00000000 00000000 0000     l ..............

 

BBED> modify /x cf

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1                Offsets:  140 to  169           Dba:0x01400001

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

 cf000000 780d2a35 7e000000 00000000 00000000 00000000 00000000 0000 

 

BBED> dump /v dba 1,1 offset 148 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  148 to  177  Dba:0x00400001

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

 ce000000 00000000 00000000 00000000 l ................

 00000000 00000000 00000000 0000     l ..............

 

BBED> dump /v dba 5,1 offset 148 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  148 to  177  Dba:0x01400001

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

 7e000000 00000000 00000000 00000000 l ~...............

 00000000 00000000 00000000 0000     l ..............

 

BBED> modify /x ce

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1                Offsets:  148 to  177           Dba:0x01400001

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

 ce000000 00000000 00000000 00000000 00000000 00000000 00000000 0000 

 

BBED> dump /v dba 1,1 offset 492 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  492 to  521  Dba:0x00400001

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

 23122a35 01000000 01000000 02000000 l #.*5............

 10000000 02000000 00000000 0000     l ..............

 

BBED> dump /v dba 5,1 offset 492 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  492 to  521  Dba:0x01400001

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

 d70f2a35 01000000 01000000 2b020000 l ..*5........+...

 100085a6 02000000 00000000 0000     l ..............

 

BBED> modify /x 2312

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1                Offsets:  492 to  521           Dba:0x01400001

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

 23122a35 01000000 01000000 2b020000 100085a6 02000000 00000000 0000 

 

BBED> dump /v dba 1,1 offset 484 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  484 to  513  Dba:0x00400001

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

 9a5b1300 00000000 23122a35 01000000 l .[......#.*5....

 01000000 02000000 10000000 0200     l ..............

 

BBED> dump /v dba 5,1 offset 484 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  484 to  513  Dba:0x01400001

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

 975b1300 00000000 23122a35 01000000 l .[......#.*5....

 01000000 2b020000 100085a6 0200     l ....+.........

 

BBED> modify /x 9a5b

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1                Offsets:  484 to  513           Dba:0x01400001

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

 9a5b1300 00000000 23122a35 01000000 01000000 2b020000 100085a6 0200 

 

BBED> dump /v dba 1,1 offset 488 count 30

 File: /u01/app/oracle/oradata/satdb/system01.dbf (1)

 Block: 1       Offsets:  488 to  517  Dba:0x00400001

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

 00000000 23122a35 01000000 01000000 l ....#.*5........

 02000000 10000000 02000000 0000     l ..............

 

BBED> dump /v dba 5,1 offset 488 count 30

 File: /u01/app/oracle/oradata/satdb/data01.dbf (5)

 Block: 1       Offsets:  488 to  517  Dba:0x01400001

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

 00000000 23122a35 01000000 01000000 l ....#.*5........

 2b020000 100085a6 02000000 0000     l +.............

 

BBED> sum apply

Check value for File 5, Block 1:

current = 0xf246, required = 0xf246

BBED> exit

SQL> alter database datafile 5 online;

alter database datafile 5 online

*

ERROR at line 1:

ORA-01113: file 5 needs media recovery

ORA-01110: data file 5: '/u01/app/oracle/oradata/satdb/data01.dbf'

SQL> recover datafile 5;

Media recovery complete.

SQL>  alter database datafile 5 online;

Database altered.

5、检查数据及状态

SQL> select file#,status from v$datafile;

     FILE# STATUS

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

         1 SYSTEM

         2 ONLINE

         3 ONLINE

         4 ONLINE

         5 ONLINE

         6 ONLINE

6 rows selected.

SQL> conn lineqi/lineqi

Connected.

SQL> select table_name,tablespace_name from user_tables;

SQL> col tablespace_name for 50

SQL> set linesize 400 

SQL> /

TABLE_NAME                                                   TABLESPACE_NAME

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

EMP1                                                         DATA

TEMP2                                                        DATA

TEST                                                         DATA

SYS_FBA_DDL_COLMAP_87367                                     FDA_TBS1

SYS_FBA_TCRV_87367                                           FDA_TBS1

SYS_FBA_HIST_87367

SYS_TEMP_FBT

TTT                                                          DATA

8 rows selected.

SQL> select * from ttt;

        ID NAME

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

         1 aa


    
 
 

您可能感兴趣的文章:

  • SQL Server误区30日谈 第21天 数据损坏可以通过重启SQL Server来修复
  • 在Linux系统上recv返回错误,通过errno得到的错误消息为"Interrupted system call"
  • g++编译联接都通过,运行却提示"段错误",怎么回事?
  • 急!!! 怎么通过core文件,查找程序中的错误!???
  • 我是编译通过了,但是运行时却有这样的错误,怎么回事啊?
  • linux通过网上邻居访问windowsXP时记住错误密码的问题
  • 编译javac HelloWorld.java通过后生成class文件,但运行时总出现noclass错误!
  • VC++实现通过API来查看程序错误信息的方法
  • linphonec编译通过,但是运行的时候却提示很多错误......请高手看看
  • 200分!!嵌入式Linux下通过TCP访问服务器,Socket被服务器重置,错误号104??(高手请进)解决后加送100分!!!
  • 通过umask来设定系统默认权限得到的是错误的结果,这是怎么回事??
  • 下面这个程序编译后通过,运行时显示“段错误”,为什么呀,怎么改?
  • 一个简单的程序,编译可以通过但是,不出现结果,错误提示为无数个at Test.<init>(TestNonStatic.java:8),怎么回事
  • C语言创建链表错误之通过指针参数申请动态内存实例分析
  • 求助:这个程序有什么错误,虽然编译通过,但是这个地址没有连接上
  • item[i] =Float.parseFloat(name2) 编译通过 测试时却出现错误这是怎么回事,该怎么改?????
  • 编了一段很小的程序,报了一个很低级的错误(编译通过)
  • 通过一段代码纠正概念错误
  • 一个很简单的通过socket发送接受文件的程序,出现了segmentation fault错误。请各位帮忙
  • 昨晚,通过朋友的帮助,现在程序还有一点错误,急盼回答!(在线等待)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker run命令运行新的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 通过docker ps命令检查运行中的docker镜像
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Session id实现通过Cookie来传输方法及代码参考
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 通过docker search命令搜索可用docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Python3通过request.urlopen实现Web网页图片下载
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3