Oracle数据库块损坏的恢复

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:wanghao7511
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文通过实例讲解利用ORACLE的BBED工具对损坏的Block进行恢复,以供遇到类似问题的ORACLE数据库管理员借鉴参考。
  关键词:ORACLE;Block;BBED;恢复
  中图分类号:TP309.3 文献标识码:A 文章编号:1007-9599 (2011) 21-0000-01
  Oracle Database Block Corruption Recovery
  ——Analysis of BBED Application in the Database Recovery
  Chen Fei
  (Ministry of Public Security Traffic Management Research Institute,Wuxi 214151,China)
  Abstract:In this paper,examples to explain the use of ORACLE BBED tool to recover corrupted Block,for similar problems and experiences for the ORACLE database administrator.
  Keywords:ORACLE;Block;BBED;Recovery
  一、前言
  ORACLE数据库是目前市场上最主流的商用大型数据库,以其高可用性、优越的性能、强大的扩展性和良好的管理性占据了大部分的商用数据库市场份额。
  Block(块)是ORACLE数据库的基本存储单位,用来存储数据库的数据。block的损坏是DBA们经常遇到的问题,可以通过RMAN、DBMS_REPAIR等手段进行恢复。本文将着重介绍ORACLE的BBED工具在block损坏情况下的使用。
  二、BBED介绍
  BBED(Block Browerand Editor Tool)是ORACLE的一款内部工具,可以直接查看和修改数据库文件数据,甚至可以直接修改数据文件块的内容。但是该工具不受ORACLE支持,所以在一般情况下,请不要在生产环境中尝试使用该工具,可能会造成不可恢复的灾难性后果。
  BBED在WINDOWS平台的ORACLE版本中未提供,只能在UNIX/LINUX平台的ORACLE版本中使用。由于ORACLE不提倡使用此工具,所以未有现成的可执行文件,需要编译生成BBED的可执行文件。
  三、BBED的安装
  以LINUX平台的ORACLE 10g版本为例,如下:
  [oracle@linux1 ~]$ cd $ORACLE_HOME/rdbms/lib
  [oracle@linux1 lib]$ make –f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
  [oracle@linux1 lib]$ls –l bbed
  -rwxr-xr-x 1 oracle oinstall 536161 Nov 3 18:46 bbed
  注意:使用上述命令生成的bbed可执行文件在$ORACLE_HOME/rdbms/lib目录下,可以复制到其他位置或者其他同ORACLE版本的机器上运行。一般可以将bbed可执行文件复制到$ORACLE_HOME/bin目录,这样就可以不修改oracle用户的PATH变量。
  四、BBED的使用
  BBED是ORACLE内部使用的工具,ORACLE官方不提供技术支持,所以使用一定要谨慎。
  [oracle@linux1 bin]$ bbed
  Password:
  注意:为了安全,ORACLE设置了口令保护,默认的密码为blockedit。
  正式使用BBED之前,需要先创建两个配置文件,文件内容如下:
  [oracle@linux1 oracle]$ cat bbed.par
  blocksize=8192
  listfile=/oracle/filelist.txt
  mode=edit
  
  [oracle@linux1 bin]$ cat filelist.txt
  1 /oradata/orcl/system01.dbf 314572800
  2 /oradata/orcl/undotbs01.dbf 104857600
  3 /oradata/orcl/sysaux01.dbf 125829120
  4 /oradata/orcl/test.dbf 10485760
  5 /oradata/orcl/users01.dbf 5242880
  filelist.txt包含了数据库的datafile的信息,格式为:文件编号 文件名称 文件大小。filelist.txt文件的内容可由以下SQL语句得到:
  select file#||' '||name||' '||bytes from v$datafile;
  注意:filelist中的文件编号可以自己指定,不一定要与file#一致,bbed读取的文件编号是根据filelist.txt文件的内容来确定的,而不是file#。但是为了避免混淆,文件编号最好还是与file#保持一致。
  bbed.par和filelist.txt都生成后,可以使用parameter file连接bbed了:
  [oracle@linux1 oracle]$ bbed parfile=/oracle/bbed.par
  Password:
  BBED> help all
  从help all的输出中,我们可以看到全部的bbed的语法,最常用的有以下几个:
  set 设定当前的环境参数
  show 查看当前的环境参数
  dump 列出指定block的内容
  find 在指定的block中查找指定的字符串,结果是显示出字符串,及其偏移量--offset,偏移量就是在block中的字节数
  modify 修改指定block的指定偏移量的值,可以在线修改
  copy 把一个block的内容copy到另一个block中
  verify 检查当前环境是否有坏块
  sum 计算block的checksum(校验和),modify之后block就被标识为坏块,current checksum与reqired checksum不一致,sum命令可以计算出新的checksum并应用到当前块
  undo 回滚当前的修改操作
  revert 回滚所有之前的修改操作
  注意:虽然bbed可以在数据库open的状态下修改block,但是建议在做modify之前先shutdown数据库。避免ORACLE后台的checkpoint进程重写bbed对block的修改。也避免ORACLE在bbed修改完成之前读取正在修改的block或者申明这个block为corrupt(损坏的)。
  五、BBED使用示例
  (一)修改filelist.txt文件
  修改filelist.txt文件,将数据文件的备份文件也加入到filelist.txt中:
  [oracle@linux1 orcl]$ vi filelist.txt
  修改后的filelist.txt如下:
  1 /oradata/orcl/system01.dbf 314572800
  2 /oradata/orcl/undotbs01.dbf 104857600
  3 /oradata/orcl/sysaux01.dbf 125829120
  4 /oradata/orcl/test.dbf 10485760
  5 /oradata/orcl/users01.dbf 5242880
  6 /oradata/orcl/test.dbf.bak 10485760
  (二)备份数据文件
  SQL> create table bbed_test (id number(3),name varchar2(10));
  SQL> insert into bbed_test values(1,'aaa');
  SQL> insert into bbed_test values(2,'bbb');
  SQL> commit;
  SQL> select segment_name,tablespace_name from user_segments;
  SEGMENT_NAME TABLESPACE_NAME
  ------------------------------------- -----------------------------------------
  BBED_TEST TEST
  SQL> select
  rowid,
  dbms_rowid.rowid_relative_fno(rowid) rel_fno,
  dbms_rowid.rowid_block_number(rowid) blockno,
  dbms_rowid.rowid_row_number(rowid) rowno
  from bbed_test;
  ROWID REL_FNO BLOCKNO ROWNO
  ------------------ ---------- ---------- ----------
  AAACf8AAEAAAAAPAAA 4 15 0
  AAACf8AAEAAAAAPAAB 4 15 1
  SQL> shutdown immediate;
  [oracle@linux1 ~]$ cd /oradata/orcl
  [oracle@linux1 orcl]$ cp test.dbf test.dbf.bak
  (三)破坏block
  [oracle@linux1 ~]$ bbed parfile=/oracle/bbed.par
  Password:
  BBED> show
   FILE# 1
   BLOCK# 1
   OFFSET 0
   DBA 0x00400001 (4194305 1,1)
   FILENAME /oradata/orcl/system01.dbf
   BIFILE bifile.bbd
   LISTFILE /oracle/filelist.txt
   BLOCKSIZE 8192
   MODE Edit
   EDIT Unrecoverable
   IBASE Dec
   OBASE Dec
   WIDTH 80
   COUNT 512
   LOGFILE log.bbd
   SPOOL No
  
  BBED> set file 4
  [oracle@linux1 orcl]$ sqlplus "/as sysdba"
  SQL> startup
  SQL> select count(*) from chen.bbed_test;
  select count(*) from chen.bbed_test
   *
  ERROR at line 1:
  ORA-01578: ORACLE data block corrupted (file # 4, block # 15)
  ORA-01110: data file 4: '/oradata/orcl/test.dbf'
  (四)使用bbed恢复坏块
  SQL> alter tablespace test offline;
  BBED> set file 6
  BBED> copy file 6 block 15 to file 4 block 15
  SQL> alter tablespace test online;
  SQL> select count(*) from chen.bbed_test;
   COUNT(*)
  ----------
   2
  至此,数据块恢复成功。这个示例只是简单介绍了一个数据块恢复的大致流程,还有更多BBED工具的使用方法,大家可以在测试环境中实验,以便生产环境遇到类似问题时能够及时解决。
  参考文献:
  [1]盖国强.深入解析Oracle:DBA入门,进阶与诊断案例[M].人民邮电出版社,2009
  [2]陈吉平.构建Oracle高可用环境[M].电子工业出版社,2008.电子工业出版社,2008
其他文献
摘要:通过证明正规文法和有限自动机之间的等价性定理,给出正规文法和有限自动机之间的等价构造方法。  关键词:正规文法;有限自动机;等价性;构造方法  中图分类号:TP301.1 文献标识码:A文章编号:1007-9599 (2010) 05-0000-02    Equivalent Study Between Regular Grammar and Finite Automata  Ge Han
期刊
摘要:变电设备的可靠运行直接影响到输变电生产安全和经济效益,所以保证变电设备处于健康状态非常重要。本文分析了微机五防系统与继电保护回路在变电运行中的应用。  关键词:变电运行;微机五防;继电保护回路  中图分类号:TP606文献标识码:A文章编号:1007-9599 (2010) 01-0000-02    一、引言    随着微机防误闭锁装置的使用,操作票专家系统——微机开票系统也逐步得到了应用
期刊
摘 要: 人工智能时代各项技术不断革新,落地场景不断丰富。其中语音转写、机器写作、AI主播和短视频智能生产融合了语言科技的多项技术,如语音识别、语音合成、语言生成、语义理解、机器翻译等,其相关产品和应用进入新闻生产中采编、写稿、播报等各个环节,使新闻生产模式向智能化方向发展。  关键词: 语音转写; 机器写作; AI主播; 短视频智能生产  中图分类号:TP391 文献标识码:A 文章编
期刊
摘要:面对大量的计算机设备,传统的管理维护方法已不能胜任,必须充分利用局域网的特性,大量采用新技术,新手段,新软件的辅助,批量的管理维护,提高效率,让计算机设备更好地为实践教学服务。    关键词:计算机机房;管理维护;局域网;效率  中图分类号:TP307 文献标识码:A文章编号:1007-9599 (2010) 01-0000-01  伴随计算机相关课程的普及,大量计算机机房为满足实践教学需要
期刊
摘要:现代多媒体技术的日益成熟和广泛应用,正在深刻地改变着人们的传统观念、教育思想、教学方法和学习方式。本文就如何将传统教育和现代多媒体有机的结合,充分发挥各自的优势,来提高现代教学水平和艺术,阐述了自己的意见。    关键词:多媒体;传统教学;课件  中图分类号:TP37 文献标识码:A文章编号:1007-9599 (2010) 01-0000-01  多媒体教学在八十年代已经开始出现,随着计算
期刊
摘要:多传感器信息融合广泛应用于自动目标识别、战场监视、机器人、工业过程控制、遥感、图象处理、模式识别等领域。采用信任函数作为度量的证据理论可处理由不知道所引起的不确定性。本文对信息融合技术的概念以及重要融合方法进行初探。    关键词:多传感器;信息融合;融合方式;D—S证据理论  中图分类号:TP212 文献标识码:A文章编号:1007-9599 (2010) 01-0000-02  所谓信息
期刊
摘要:本文以山东省威海市为例,对当前新《劳动合同法》实施现状、农民工对新《劳动合同法》的了解情况及依法维权现状等进行了调查、思考与分析,揭示出在当前我国新《劳动合同法》的实施过程中政府、企业、工人进步的一面,也提出了法制建设所面临的经济与法律的脱节、法律宣传欠缺力度,普法徒具形式等方面的困境,并对促进农民工法律意识的提高提出了自己的看法与建议,认为应深入务实不懈地普法以及新《劳动合同法》应在企业与
期刊
摘 要: 教育部《工程教育专业认证标准》中明确要求(专业必须具有)“明确的、可衡量、公开的人才培养目标。根据经济建设和社会发展的需要、自身条件和发展潜力,确定在一定时期内培养人才的层次、类型和人才的主要服务面向。”以“软件工程”课程为例,基于CDIO-OBE理念,结合专业的培养需求和特点,构建一套课程目标达成度计算方法,以获得对该课程培养达成情况的有效评价结果。  关键词: CDIO-OBE; 软
期刊
摘要:对于计算机数据库SQL语句的优化问题,有的的优化专家认为,通过将性能相对低下的SQL语句优化使其转化为目的相同的性能优异的SQL语句,可以得到近40%的系统性能的提升,一直以来,这是计算机研究者热衷的问题。对人工智能自动SQL优化而言,通常指的是通过使用人工智能技术,自动的对SQL语句进行重新输入,从而将数据库中SQL语句优化为最优的等效SQL语句。  关键词:SQL语句;优化;智能;自动;
期刊
摘要:本文通过分析课程本身特点,利用激发学习兴趣、充分利用多媒体等教学手段、注重加强实训环节的教学等教学手段和技巧来提高教学质量。这对培养学生解决实际问题的能力、提高教学效果有着重要的现实意义。  关键词:学习动机;学习热情;实践能力  中图分类号:TP37 文献标识码:A文章编号:1007-9599 (2010) 05-0000-02  Explore Teaching Skills,Impro
期刊