ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle数据库管理 » 请问如何模拟块损坏

标题: [精华] 请问如何模拟块损坏
离线 jinqibin
在监狱中工作的DBA



精华贴数 0
个人空间 0
技术积分 168 (11146)
社区积分 0 (508414)
注册日期 2005-7-10
论坛徽章:1
数据库板块每日发贴之星     
      

发表于 2005-8-17 12:50 
我使用的数据库是O817。


只看该作者    顶部
离线 stonerose
一般会员



精华贴数 0
个人空间 0
技术积分 366 (5420)
社区积分 10 (10991)
注册日期 2005-3-15
论坛徽章:0
      
      

发表于 2005-8-23 16:05 
event的level该如何指定,有什么根据可依吗?


只看该作者    顶部
离线 liuyi8903
tony


精华贴数 0
个人空间 0
技术积分 812 (2369)
社区积分 71 (4181)
注册日期 2004-7-3
论坛徽章:1
      
      

发表于 2005-8-31 10:53 


QUOTE:
最初由 stonerose 发布
event的level该如何指定,有什么根据可依吗?

没看到piner发的文档里都有说明吗

如:
Event 10015 - Dump Undo Segment Headers
This event can be used to dump undo segment headers before and after transaction recovery
For example
    ALTER SESSION SET EVENTS
    '10015 trace name context forever, level 1';


只看该作者    顶部
离线 zhumingjun
一般会员



精华贴数 0
个人空间 0
技术积分 160 (11546)
社区积分 2 (23758)
注册日期 2002-7-10
论坛徽章:0
      
      

发表于 2006-2-6 15:16 


QUOTE:
最初由 jinqibin 发布
我按照EYGLE提供的办法进行了试验,结果好象是被我修改的地方不对,我修改数据块的文件头,数据库在开启是提示:ORA-01157:cannot identify/lock data file25 -- see dbwr trace file
ORA-01110:data file 25:"e:\oracle\oradata\orcl\apt.dbf",在DBWR TRACE FILE 中有:
ORA-27048:skgfifi:file header information is invalid.
OSD-04004:  invalid file header.
我怀疑是我破坏了APT数据块文件的头部,现在该怎么恢复?这种情况在实际中有没有可能遇到?


按照eygle的方法做了三次,
第一次修改数据文件的头部一些数据,数据库也是起不来,只能recover。
第二次,修改完以后出现
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号8,块号2)
ORA-01110: 数据文件 8: 'C:\ORACLE\ORADATA\ARES\BLOCK.DBF'
块号2感觉是表名块了,还是导不出来,数据全丢了。
第三次,才出现eygle演示的内容。


只看该作者    顶部
离线 everlasting_188
老会员



精华贴数 0
个人空间 0
技术积分 981 (1928)
社区积分 73 (4121)
注册日期 2004-6-23
论坛徽章:1
授权会员     
      

发表于 2006-2-6 16:12 
长知识!!


__________________
不为那无聊的回忆,只为那执着的明天!!!努力,聚焦,坚持!!!慎思、明辨、笃行!!!
只看该作者    顶部
离线 hrb_qiuyb
397分


来自 哈尔滨
精华贴数 5
个人空间 9358
技术积分 6783 (199)
社区积分 79 (3957)
注册日期 2002-4-2
论坛徽章:23
现任管理团队成员ITPUB元老2008年新春纪念徽章   
      

发表于 2006-2-6 16:29 
呵呵,DBA 的基本知识,制造坏块的方法很多的
可以用ultraedit,也可以用dd命令
同时也呆以用orapatch工具
$orapatch open tools001.dbf write
patch>set hex --要用十六进制
patch>display 177 --orapatch以512字节为工作模式,假定想破坏第11个block即为:8k/512*11+1(file header)
patch>find 00400003 --选一个要编辑的点
patch>modify 00400002 --破坏
patch>exit


__________________
看来是老喽,对技术不狂热了。。

俺的几个地:
我的Otn|我的IT168专栏|我的旧Blog|我的新Blog
只看该作者    顶部
离线 shilei1
老会员



精华贴数 0
个人空间 0
技术积分 1524 (1133)
社区积分 11 (10418)
注册日期 2004-12-11
论坛徽章:2
授权会员ITPUB新首页上线纪念徽章    
      

发表于 2006-2-7 10:40 


QUOTE:
最初由 eygle 发布
可以的,注意你的步骤

数据库Open状态下是不能写入数据文件的

以下是个测试步骤:

E:\Oracle\ora92\bin>sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on 星期一 3月 8 20:27:15 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


连接到:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF
E:\ORACLE\ORADATA\EYGLE\UNDOTBS01.DBF
E:\ORACLE\ORADATA\EYGLE\EYGLE01.DBF

SQL> create tablespace block
  2  datafile 'e:\oracle\oradata\eygle\block.dbf'
  3  size 1M
  4  extent management local;

表空间已创建。

SQL> alter user eygle default tablespace block;

用户已更改。

SQL> alter user eygle quota unlimited on block;

用户已更改。

SQL> connect eygle/eygle
已连接。

SQL> create table t as select * from dba_users;

表已创建。

SQL> insert into t select * from t;

已创建8行。

SQL> /

已创建16行。

SQL> /

已创建32行。

SQL> /

已创建64行。

SQL> /

已创建128行。

SQL> /

已创建256行。

SQL> /

已创建512行。

SQL> /

已创建1024行。

SQL> /

已创建2048行。

SQL> /

已创建4096行。

SQL> /
insert into t select * from t
*
ERROR 位于第 1 行:
ORA-01653: 表EYGLE.T无法通过8(在表空间BLOCK中)扩展


SQL> commit;

提交完成。

SQL> alter system checkpoint;

系统已更改。

SQL> select count(*) from t;

  COUNT(*)
----------
      8192

SQL> connect / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。


关闭数据库后用Ultredit编辑数据文件,随便更改几个字符.


SQL> startup
ORACLE 例程已经启动。

Total System Global Area  101785252 bytes
Fixed Size                   454308 bytes
Variable Size              75497472 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select count(*) from eygle.t;
select count(*) from eygle.t
                           *
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号4,块号35)
ORA-01110: 数据文件 4: 'E:\ORACLE\ORADATA\EYGLE\BLOCK.DBF'


SQL>

有个内部工具BBED也可以用来编辑数据块的内容


我在SHUTDWON IMMEDIATE后用Ultredit编辑数据文件,但还是可以统计行数,我是9I,结果不小心,在没有关闭数据库的情况下修改了block.dbf出现下列问题:

SQL> shutdown immediate
ORA-01122: 数据库文件 12 验证失败
ORA-01110: 数据文件 12: 'D:\ORACLE\ORA92\ORCL\BLOCK.DBF'
ORA-01251: 文件号12的未知文件标题版本读取

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  105978600 bytes
Fixed Size                   453352 bytes
Variable Size              58720256 bytes
Database Buffers           46137344 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-01122: 数据库文件 12 验证失败
ORA-01110: 数据文件 12: 'D:\ORACLE\ORA92\ORCL\BLOCK.DBF'
ORA-01251: 文件号12的未知文件标题版本读取

现在数据库不能OPEN

我做过表T的备份使用EXP在没有问题的情况下
现在应该怎么处理


只看该作者    顶部
离线 zhumingjun
一般会员



精华贴数 0
个人空间 0
技术积分 160 (11546)
社区积分 2 (23758)
注册日期 2002-7-10
论坛徽章:0
      
      

发表于 2006-2-7 10:42 
请问eygle,level1-10 怎么设置???????


只看该作者    顶部
在线/呼叫 eygle
天下有雪


精华贴数 65
个人空间 0
技术积分 206875 (1)
社区积分 6449 (240)
注册日期 2001-10-8
论坛徽章:61
现任管理团队成员ITPUB长老会成员ITPUB元老Heart of PUBITPUB维基人ITPUB北京九华山庄2008年会纪念徽章
管理团队2006纪念徽章授权会员2008年新春纪念徽章生肖徽章2007版:猴生肖徽章2007版:龙ITPUB新首页上线纪念徽章

发表于 2006-2-7 11:07 

__________________
只看该作者    顶部
离线 ok_zhixiang
高级会员



精华贴数 0
个人空间 0
技术积分 5102 (271)
社区积分 20 (7740)
注册日期 2005-5-26
论坛徽章:6
会员2007贡献徽章会员2006贡献徽章ITPUB新首页上线纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星
      

发表于 2006-2-7 11:41 
真是好文章呀,长见识^_^


__________________
My Blog: okzhixiang.itpub.netMSN: jacky_liang0301@hotmail.com
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问