ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle数据库管理 » 请问如何模拟块损坏

标题: [精华] 请问如何模拟块损坏
离线 weijsh
高级会员



精华贴数 0
个人空间 0
技术积分 3062 (490)
社区积分 3 (19730)
注册日期 2002-12-19
论坛徽章:1
会员2006贡献徽章     
      

发表于 2004-3-11 11:30 
好也好也


__________________
成名男子,成名难!!MSN: weijsh@yeah.net
Email:weijsh@yeah.net BLOG:http://blog.itpub.net/weijsh
只看该作者    顶部
离线 lenovosnb
香格里拉-心中的日月



精华贴数 0
个人空间 0
技术积分 3563 (409)
社区积分 24728 (47)
注册日期 2003-5-8
论坛徽章:19
生肖徽章2007版:猴2008北京奥运纪念徽章:水球网络板块每日发贴之星网络板块每日发贴之星网络板块每日发贴之星网络板块每日发贴之星
网络板块每日发贴之星     

发表于 2004-3-11 11:40 


QUOTE:
最初由 biti_rainy 发布


不允许重构的表,除了从备份恢复,几乎是没有办法

当然,详细的,还得看该block属于什么对象,是否重要……  是否有机会重构


多谢biti指点!


只看该作者    顶部
离线 bodyguard
EXPLORER


精华贴数 3
个人空间 0
技术积分 2752 (559)
社区积分 2751 (465)
注册日期 2001-11-7
论坛徽章:9
ITPUB元老管理团队2006纪念徽章祖母绿会员2007贡献徽章会员2006贡献徽章授权会员
生肖徽章2007版:牛2008北京奥运纪念徽章:射箭ITPUB新首页上线纪念徽章   

发表于 2004-3-30 13:58 
直接dd几个块就完工了


只看该作者    顶部
离线 guohaitao
中级会员


精华贴数 0
个人空间 0
技术积分 490 (3957)
社区积分 8 (11767)
注册日期 2002-3-14
论坛徽章:1
授权会员     
      

发表于 2004-4-9 04:13 
真是涨见识啊,感谢版主的回答


__________________
学习......ingguohaitao@263.net
只看该作者    顶部
离线 soro
一般会员


精华贴数 0
个人空间 0
技术积分 368 (5285)
社区积分 0 (65518)
注册日期 2002-9-19
论坛徽章:0
      
      

发表于 2004-4-22 18:00 
如果标记坏块时提示block checksum disable,该怎么办呢?

如:

E:\Oracle\oradata\eygle>dbv file=block.dbf blocksize=8192

DBVERIFY: Release 9.2.0.4.0 - Production on 星期一 3月 8 20:48:50 2004

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

DBVERIFY - 验证正在开始 : FILE = block.dbf
标记为损坏的页35
***
Corrupt block relative dba: 0x01000023 (file 4, block 35)
Bad check value found during dbv:
Data in bad block -
type: 6 format: 2 rdba: 0x01000023
last change scn: 0x0000.00049097 seq: 0x1 flg: 0x06
consistency value in tail: 0x90970601
check value in block header: 0xd6cb,  block checksum disable
spare1: 0x0, spare2: 0x0, spare3: 0x0
***


只看该作者    顶部
离线 cyr1974
淡泊明志 宁静志远


精华贴数 2
个人空间 0
技术积分 6688 (192)
社区积分 903 (1010)
注册日期 2003-2-12
论坛徽章:7
ITPUB元老会员2007贡献徽章生肖徽章2007版:猴生肖徽章2007版:鼠  
      

发表于 2004-9-12 14:53 
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10' ;

是否我在需要时随时根据情况定义数据库事件,但是后面的级别和参数怎样设置?


__________________
cyongrui@hotmail.com业余台球爱好者互相交流 共同进步
只看该作者    顶部
离线 juany
初级会员



精华贴数 0
个人空间 0
技术积分 56 (25347)
社区积分 0 (139753)
注册日期 2004-8-19
论坛徽章:0
      
      

发表于 2004-10-10 17:05 
STEP BY STEP,简单易懂,多谢


只看该作者    顶部
离线 jztbawvf
中级会员


精华贴数 0
个人空间 0
技术积分 452 (4292)
社区积分 15 (8624)
注册日期 2002-11-21
论坛徽章:0
      
      

发表于 2005-4-13 17:12 
eygle
真是大好人。


只看该作者    顶部
离线 orientzkd
小兵


精华贴数 0
个人空间 0
技术积分 6198 (215)
社区积分 1635 (683)
注册日期 2005-6-23
论坛徽章:19
会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章在线时间生肖徽章:鸡
生肖徽章:马生肖徽章:牛生肖徽章:羊生肖徽章:猴生肖徽章:兔数据库板块每日发贴之星

发表于 2005-8-16 15:55 
以下是个测试步骤:

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也可以用来编辑数据块的内容



我照着你的步骤做,可是不成功。
startup之后
SQL> select count(*) from orient.t;

  COUNT(*)
----------
      6400
并没有出现:ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏。。。。。

用dbv检查也没有错误。我的是oracle10g


只看该作者    顶部
离线 jinqibin
在监狱中工作的DBA



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

发表于 2005-8-17 12:49 
我按照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数据块文件的头部,现在该怎么恢复?这种情况在实际中有没有可能遇到?


只看该作者    顶部
相关内容


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