永夜海 发表于 2018-9-11 11:35:58

Oracle bbed 使用

  1:安装: 11g R2 版的
  cd $ORACLE_HOME/
  find . -name ins_rdbms.mk
  cd rdbms/lib
  make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
  在11g会报错。需要在网上下载三个文件。或者你有10g 的库直接把10g的文件拷过来:
  附上下载地址: http://download.csdn.net/detail/jycjyc/4578006
  将下载到的bbedus.msb拷贝到上一级目录mesg中   cp lib/bbedus.msb mesg/
  之后再执行   make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
  $./bbed
  进去后bbed 密码是:blockedit
  2:配置查看:
  然后就是showall 看一下要做哪些预配:
  在另一个窗口中找出要操作的文件select * from v$datafile;
  那这里我们可以插入一条记录,看看文件究竟是被真的插入到那:用到dbms_rowid 这个包
  select dbms_rowid.ROWID_RELATIVE_FNO(rowid), dbms_rowid.ROWID_BLOCK_NUMBER(rowid),id from t4;
  查出来真正插入的数据在 2号文件121号块接下来设置filename ,file ,block ,blocksize ,mode
  setFILENAME '/u01/app/oracle/test/data/test_01.dbf'
  set file2
  set block 121
  setblocksize8192
  set mode edit                  //edit 是可以修改, browse 模式不允许进行修改
  bbed 中的查找: find
  bbed> set block 47   //读47号块
  bbed>dump               // 显示出dump
  > show all;
  可以看下偏移量。OFFSET
  以字符串查找/c
  >find /c BBBBBBB
  find 就是查找并重置偏移量。
  按十六进制查找:
  > find /x 42424242424242
  有时报invalid number   那是因为32 位 的错。
  修改命令: modify/c
  bbed > modify /c EEEEEEE
  此时再来查看原先的数据:
  select * from t1;
  如果现在报block corrupted:
  那这是由于校验和的问题:可以设置把校验和关掉:
  show parameter check;
  1)
  更改db_block_checksum = false;
  alter system set db_block_checksum=false;
  再刷新下buffer_cache ;
  alter systemflush buffer_cache;
  select * from t1;
  2) 还有一种更好的办法:
  直接更改校验和
  bbed> sum apply
  然后回去在刷新次buffer_cache
  alter system flush buffer_cache

页: [1]
查看完整版本: Oracle bbed 使用