网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.SQL Server和Oracle数据锁定比较.
.Oracle数据库PL/SQL过程调试的输.
.Oracle中使用SQL MODEL定义行间计.
.Redhat7.2(7.1)下oracle8.17的安.
.Oracle中SQLPLUS的常用指令收集与.
.如何为Oracle导出文件加上时间戳.
.甲骨文、惠普、英特尔联合举办IS.
.Oracle 10g RMAN的备份测试.
.Install oracle client on Solar.
.Oracle9i 数据库管理实务讲座(六.
.oracle 使用杂记二.
.Oracle数据库技术(41).
.Ora2html--收集Oracle数据库信息.
.Linux下的远程控制—VNC.
.Orcas版C#3.0的新特性.
.Oracle9i初始化参数中文说明(12).
.ORACLE 应用经验(5)-表空间.
.讲解Oracle移动数据文件到新分区.
.创建Oracle10g ASM数据库.
.oracle中变异表触发器的处理。.

Oracle的一个内部工具block corruption

发表日期:2008-2-9


有人在Google新闻组上提出了一个问题:How can I get the BBED passWord?,继而引发了一场很有意思的讨论。 后来Pete Finnigan也在他的Blog写了一篇文章"An interesting thread on Oracle-l about BBED"描述这次有意思的探讨。 在讨论中,有一个有趣的观点提到,假如这个工具被广泛传播,那么可能有些人不是用BBED来修复数据,意外的破坏可能更为多见。最终的后果可能是Oracle彻底把这个工具移除。   BBED是Block Browser/Editor的缩写,是Oracle的一个内部工具,不对外发布文档及支持。   BBED随软件发布,但是我们需要进行简单的relink才能使用,relink请参考:How to compile Oracle10g BBED tools.   虽然BBED工具的使用存在很多风险,但是假如利用得当,可以以之解决很多棘手的问题。   本文简单介绍一下如何用BBED模拟坏块,以练习坏块修复等技术,此前我曾经介绍过另外一种方法,请参考:Oracle中模拟及修复数据块损坏   1.创建测试表   [oracle@jumper conner]$ sqlplus "/ as sysdba"   SQL*Plus: Release 9.2.0.4.0 - ProdUCtion on Sun Sep 11 19:59:27 2005   Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.   Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning option JServer Release 9.2.0.4.0 - Production   SQL> create table bbed tablespace users as select * from dba_tables;   Table created.   SQL> select count(*) from bbed;     COUNT(*) ----------        523   SQL> col segment_name for a10 SQL> select segment_name,file_id,block_id from dba_extents where segment_name='BBED';   SEGMENT_NA    FILE_ID   BLOCK_ID ---------- ---------- ---------- BBED                3          9 BBED                3         17 BBED                3         25   SQL> select count(*) from bbed;     COUNT(*) ----------        523   2.创建BBED参数文件等   [oracle@jumper conner]$ more filelist.txt
         1 /opt/oracle/oradata/conner/system01.dbf   440401920          2 /opt/oracle/oradata/conner/undotbs01.dbf  104857600          3 /opt/oracle/oradata/conner/users01.dbf     27262976 [oracle@jumper conner]$ more par.bbd blocksize=8192 listfile=filelist.txt mode=edit   3.使用BBED   [oracle@jumper conner]$ bbed parfile=par.bbd Password:   BBED: Release 2.0.0.0.0 - Limited Production on Sun Sep 11 20:01:01 2005   Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.   ************* !!! For Oracle Internal Use only !!! ***************   BBED> set file 3         FILE#           3   BBED> show         FILE#           3         BLOCK#          1         OFFSET          0         DBA             0x00c00001 (12582913 3,1)         FILENAME        /opt/oracle/oradata/conner/users01.dbf         BIFILE          bifile.bbd         LISTFILE        filelist.txt         BLOCKSIZE       8192         MODE            Edit         EDIT            Unrecoverable         IBASE           Dec         OBASE           Dec         WIDTH           80         COUNT           512         LOGFILE         log.bbd         SPOOL           No
  4.回滚误操作   假如操作中发生误操作,可以使用revert命令回滚。   BBED> modify /x 0x00c00011  File: /opt/oracle/oradata/conner/users01.dbf (3)  Block: 1                Offsets: 1000 to 1511           Dba:0x00c00001 ------------------------------------------------------------------------  00c00011 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000    <32 bytes per line>   BBED> revert All changes made in this session will be rolled back. Proceed? (Y/N) Y Reverted file '/opt/oracle/oradata/conner/users01.dbf', block 1 Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y   5.改写数据块   模拟坏块.   BBED> modify 1000 file 3 block 17  File: /opt/oracle/oradata/conner/users01.dbf (3)  Block: 17               Offsets: 1000 to 1511           Dba:0x00c00011 ------------------------------------------------------------------------  03e80000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000 002c002f 03535953 18415050 4c59245f 434f4e46 5f48444c  525f434f 4c554d4e 53065359 5354454d ffff02c1 0b02c129 02c10203 c2033804
 c3073825 ff02c102 06c51630 31252eff 02c10202 c1020359 4553014e ffffffff  ffffffff 0a202020 20202020 2020310a 20202020 20202020 20310520 2020204e  07454e41 424c4544 ffff024e 4fff014e 014e024e 4f074445 4641554c 54084449  5341424c 4544024e 4f024e4f ff084449 5341424c 4544024e 4fff0844 49534142  4c454408 44495341 424c4544 2c002f03 53595314 4150504c 59245f45 52524f52  5f48414e 444c4552 06535953 54454dff ff02c10b 02c12902 c10203c2 033804c3  073825ff 02c10206 c5163031 252eff02 c10202c1 02035945 53014eff ffffffff  ffffff0a 20202020 20202020 20310a20 20202020 20202020 31052020 20204e07  454e4142 4c4544ff ff024e4f ff014e01 4e024e4f 07444546 41554c54 08444953  41424c45 44024e4f 024e4fff 08444953 41424c45 44024e4f ff084449 5341424c  45440844 49534142 4c45442c 002f0353 59530c41 50504c59 245f4552 524f5206    <32 bytes per line>   6.检查数据块损坏   使用verify命令,可以发现刚才修改的file 3 block 17已经被标记为损坏。   BBED> verify DBVERIFY - Verification starting FILE = /opt/oracle/oradata/conner/users01.dbf BLOCK = 17   Block 17 is corrupt *** Corrupt block relative dba: 0x00c00011 (file 0, block 17) Bad check value found during verification Data in bad block -  type: 6 format: 2 rdba: 0x00c00011  last change scn: 0x0000.20a3b575 seq: 0x1 flg: 0x04  consistency value in tail: 0xb5750601  check value in block header: 0x3006, computed block checksum: 0xe803  spare1: 0x0, spare2: 0x0, spare3: 0x0 ***   DBVERIFY - Verification complete   Total Blocks Examined         : 1 Total Blocks Processed (Data) : 0 Total Blocks Failing   (Data) : 0 Total Blocks Processed (Index): 0 Total Blocks Failing   (Index): 0 Total Blocks Empty            : 0 Total Blocks Marked Corrupt   : 1 Total Blocks Influx           : 0   BBED> quit   7.使用DBV检查   [oracle@jumper conner]$ dbv file=users01.dbf blocksize=8192   DBVERIFY: Release 9.2.0.4.0 - Production on Sun Sep 11 20:13:23 2005   Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.   DBVERIFY - Verification starting : FILE = users01.dbf Page 17 is marked corrupt *** Corrupt block relative dba: 0x00c00011 (file 3, block 17) Bad check value found during dbv: Data in bad block -  type: 6 format: 2 rdba: 0x00c00011  last change scn: 0x0000.20a3b575 seq: 0x1 flg: 0x04
 consistency value in tail: 0xb5750601  check value in block header: 0x3006, computed block checksum: 0xe803  spare1: 0x0, spare2: 0x0, spare3: 0x0 ***   DBVERIFY - Verification complete   Total Pages Examined         : 128 Total Pages Processed (Data) : 107 Total Pages Failing   (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing   (Index): 0 Total Pages Processed (Other): 20 Total Pages Processed (Seg)  : 0 Total Pages Failing   (Seg)  : 0 Total Pages Empty            : 0 Total Pages Marked Corrupt   : 1 Total Pages Influx           : 0   8.全表扫描此时出现ORA-01578错误   重新启动数据库以后,执行全表扫描,此时错误出现:   SQL> startup force; ORACLE instance started.   Total System Global Area  101782828 bytes Fixed Size                   451884 bytes Variable Size              37748736 bytes Database Buffers           62914560 bytes Redo Buffers                 667648 bytes Database mounted. Database opened. SQL> select count(*) from bbed; select count(*) from bbed                      * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 3, block # 17) ORA-01110: data file 3: '/opt/oracle/oradata/conner/users01.dbf'   SQL>   以上方法仅供测试使用。

上一篇:Oracle学习应用之彻底地优化策略 人气:763
下一篇:checkpoint小议 人气:653
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐