[20150612]使用bvi查看数据块.txt

[20150612]使用bvi查看数据块.txt

--编写一个简单的脚本实现bvi查看数据块,主要我现在喜欢使用bbed查看,而修改选择bvi。
--通过例子来说明:

SCOTT@test> select rowid,dept.* from dept ;
ROWID                    DEPTNO DNAME          LOC
------------------ ------------ -------------- -------------
AABJVUAAEAAAAdzAAA           10 ACCOUNTING     NEW YORK
AABJVUAAEAAAAdzAAB           20 RESEARCH       DALLAS1
AABJVUAAEAAAAdzAAC           30 SALES          CHICAGO
AABJVUAAEAAAAdzAAD           40 OPERATIONS     BOSTON
AABJVUAAEAAAAd3AAA           50 MARKETING      LONDON

SCOTT@test> @ lookup_rowid AABJVUAAEAAAAdzAAA
      OBJECT         FILE        BLOCK          ROW DBA                  TEXT
------------ ------------ ------------ ------------ -------------------- ----------------------------------------
      300372            4         1907            0 4,1907               alter system dump datafile 4 block 1907

--如果通过bvi查看要先算偏移量,1907*block_size = 1907*8192=15622144.然后执行:

bvi -b 15622144 -s 8192 /u01/app/oracle11g/oradata/test/users01.dbf

$ cat bbvi.sql
column bvi_command format a90
select 'bvi -b '|| &2*BLOCK_SIZE||' -s '||block_size||' '||NAME bvi_command from v$datafile where file#=&1 ;

--顺便练习写一个shell脚本:

$ cat  bbvi
#! /bin/bash
# convert bvi runnning format
#  bbvi file# block#
# $1 = file#  $2 = block#

if [ $# -ne 2 ] ; then
        echo
        echo "USAGE: $0 file# block#"
        echo
        exit 1;
fi

bvi_command=`sqlplus -S / as sysdba set pagesize 0 feedback off verify off heading off echo off
select 'bvi -b '|| \$2*BLOCK_SIZE ||' -s '||block_size||' '||NAME bvi_command from v\\$datafile where file#=\$1 ;
exit;
END`

if [ -z "$bvi_command" ]; then
        echo "No rows returned from database"
        exit 0
else
        echo
        read -p "press ctrl+c break, press return run .. $bvi_command "
        echo
        eval $bvi_command
fi

时间: 2024-08-21 07:02:39

[20150612]使用bvi查看数据块.txt的相关文章

[20150929]检查数据块.txt

[20150929]检查数据块.txt --一般检查数据库的块是否存在损坏,使用dbv程序.例子: $ dbv file=/u01/app/oracle11g/oradata/test/system01.dbf DBVERIFY: Release 11.2.0.3.0 - Production on Tue Sep 29 07:48:28 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserv

[20161129]转储内存的内容还原成数据块.txt

[20161129]转储内存的内容还原成数据块.txt --昨天在做1128PAGETABLE SEGMENT HEADER损坏恢复,链接http://blog.itpub.net/267265/viewspace-2129195/ --在做还原成数据块时思路很乱,当时是一边做一边想,希望能找到好的方法,今天自己在重复做一次. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --

[20150513]人为破坏数据块.txt

[20150513]人为破坏数据块.txt --演示的目的,参考链接: http://www.askmaclean.com/archives/oracle-make-block-physical-corruption.html --不要在生产系统测试!!!!! 1.建立测试环境: SCOTT@test> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -

[20160531]windows下bbed修复corrupt数据块

[20160531]windows下bbed修复corrupt数据块.txt --昨天别人的问题,使用windows下的bbed修复corrupt数据块报错.我自己也重复测试看看: --bbed在windows的安装看: http://blog.itpub.net/267265/viewspace-2109019/ 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------

[20160831]关于数据块Checksum.txt

[20160831]关于数据块Checksum.txt --以前我学习bbed时做过一些测试,将'AAAA'替换成'BBBB',你可以发现数据块的Checksum并没有发生变化,当时并没有仔细探究, --现在想起来计算Checksum算法应该相对简单,就是做异或操作. --比如上面的字符'AAAA'如果2个字符按位做异或操作,变成00000000,这个正好巧合,如果修改成'CCCC',做相同的异或操作结果 --也是00000000. --如果按照这个推测修改为'CDCD',这样做异或操作的结果也

[20150522]bbed与数据块检查和.txt

[20150522]bbed与数据块检查和.txt --我现在基本拿bbed学习,基本是拿bbed查看,而使用bvi修改数据.我感觉这种方便1写. --实际上使用bbed的好处就是修改数据块检查和不一致,而使用bbed修改很简单仅仅需要执行sum apply就ok了. --对比dbv与bbed确定检查和位置. 1.建立测试环境: SCOTT@test> @ &r/ver1 PORT_STRING                    VERSION        BANNER -------

[20150527]bbed与数据块检查和2.txt

[20150527]bbed与数据块检查和2.txt http://blog.itpub.net/267265/viewspace-1666781/ --我现在基本拿bbed学习,基本是拿bbed查看,而使用bvi修改数据.我感觉这种方便1写. --实际上使用bbed的好处就是修改数据块检查和不一致,而使用bbed修改很简单仅仅需要执行sum apply就ok了. --对比dbv与bbed确定检查和位置. --实际上既然检查和在16,17字节,只要清零,加上dbv就很容易确定要修改的内容. 1.

[20161031]rman备份与数据文件OS块.txt

[20161031]rman备份与数据文件OS块.txt --每个数据文件都有一个OS块,位于数据文件的第1块(也是0块).通过bbed无法访问: BBED> set dba 7,0 BBED-00205: illegal or out of range DBA (File 7, Block 0) BBED> set dba 7,1         DBA             0x01c00001 (29360129 7,1) BBED> dump File: /mnt/ramdis

[20161110]数据文件的第0块.txt

[20161110]数据文件的第0块.txt --如果数据文件的第0块是OS块信息,以前的测试如果rman做备份集都不会备份. --如果这块损坏,里面讲问题不大,你甚至可以不修复,当然重建控制文件就出现问题. --而且解决也很简单,就是建立一样大小的数据文件,然后copy回去.做一个测试例子: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER -------------------