- 浏览: 192965 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
[b]bbed就是英文block browse block edit的缩写,用来直接查看和修改数据文件数据的一个工具。[/b]
新建一个表,插入5条测试数据:
create table chenlintest (id number(5) , name varchar(10)) tablespace users;
SQL> insert into chenlintest values(1,'aa');
1 row created.
SQL> insert into chenlintest values (888 ,'chenlin') ;
1 row created.
SQL> insert into chenlintest values (999 ,'china') ;
1 row created.
SQL> insert into chenlintest values (999 ,'usa') ;
1 row created.
SQL> insert into chenlintest values (1001 ,'sydney') ;
1 row created.
Commit complete.
SQL> select * from chenlintest ;
ID NAME
---------- ----------
1 aa
999 usa
1001 sydney
888 chenlin
999 china
SQL> SELECT
dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
dbms_rowid.rowid_block_number(rowid) BLOCKNO,
dbms_rowid.rowid_row_number(rowid) ROWNO,
id,namefrom chenlintest;
REL_FNO BLOCKNO ROWNO ID NAME
---------- ---------- ---------- ---------- ----------
4 234300 0 1 aa
4 234300 1 999 usa
4 234300 2 1001 sydney
4 234300 3 888 chenlin
4 234300 4 999 china
通过上面的sql语句可以看出,chenlintest这个表的所有数据都在第4号文件的第234300个block块上。
现在我们尝试去修改 aa ,也就是第一行。
设置bbed 的 2个配置文件,
[b]一个是 file.txt文件[/b]:
这个文件对应的3个列为,file_id,path,block_size,可以使用SQL生成:
select file#||' '||name||' '||bytes from v$datafile ;
[oracle@dell1 home]$ /home/oracle> cat file.txt
1 /opt/oracle/oradata/ge01/system01.dbf 870318080
2 /opt/oracle/oradata/ge01/users_cms.dbf 524288000
3 /opt/oracle/oradata/ge01/sysaux01.dbf 1866465280
4 /opt/oracle/oradata/ge01/users01.dbf 18971361280
5 /opt/oracle/oradata/ge01/users02.dbf 1073741824
6 /opt/oracle/oradata/ge01/perstat.dbf 209715200
7 /opt/oracle/oradata/ge01/undotbs02.dbf 1073741824
8 /opt/oracle/oradata/ge01/ttuser.dbf 41943040
9 /opt/oracle/oradata/ge01/idx_2k 20971520
[b]
一个是bbed.txt:
这个文件是bbed的配置文件,配置了blocksize,listfile,mode 三个参数,我们在启动的时候,使用这个文件把bbed拉起来[/b]。
SQL> show parameter db_block_size
NAME TYPE VALUE
----------------------------- ----------- -------------
db_block_size integer 8192
SQL>
[oracle@dell1 home]$ cat bbed.txt
blocksize=8192
listfile=/home/oracle/file.txt
mode=edit
/*
mode=edit 默认是borwser 浏览模式
可以使用 set mode edit 来切换
*/
-- bbed的安装
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
*/
-- 进入bbed
[oracle@dell1 home]$./bbed parfile=/home/oracle/bbed.txt 或者直接是 ./bbed
[oracle@dell1 lib]$ pwd
/opt/oracle/product/10g/rdbms/lib
[oracle@dell1 lib]$ ll | grep bbed
-rwxr-xr-x 1 oracle oinstall 536154 May 14 14:47 bbed
[oracle@dell1 lib]$
[oracle@dell1 lib]$ ./bbed
Password: blockedit
BBED: Release 2.0.0.0.0 - Limited Production on Mon May 14 17:45:20 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> help all 查看所有命令帮助
[b]最常用的有show , map , dump ,set dba , set file ,set block 等
下面是几个常用的:
set 设定当前的环境
show 查看当前的环境参数,跟sqlplus的同名命令类似。
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 回滚当前的修改操作,如果手误做错了,undo一下就ok了,回到原来的状态。
revert 回滚所有之前的修改操作,意思就是 undo all[/b]
BBED> show
FILE# 0
BLOCK# 1
OFFSET 0
DBA 0x00000000 (0 0,1)
FILENAME
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE 8192
MODE Browse
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
BBED> set file 4
BBED-00312: no LISTFILE specified /* LISTFILE为空,说明我们刚刚新建的 file.txt未正确引入进来 */
BBED> set list '/home/oracle/file.txt'
LISTFILE /home/oracle/file.txt
BBED> info
File# Name Size(blks)
----- ---- ----------
1 /opt/oracle/oradata/ge01/system01.dbf 106240
2 /opt/oracle/oradata/ge01/users_cms.dbf 64000
3 /opt/oracle/oradata/ge01/sysaux01.dbf 227840
4 /opt/oracle/oradata/ge01/users01.dbf 524287
5 /opt/oracle/oradata/ge01/users02.dbf 131072
6 /opt/oracle/oradata/ge01/perstat.dbf 25600
7 /opt/oracle/oradata/ge01/undotbs02.dbf 131072
8 /opt/oracle/oradata/ge01/ttuser.dbf 5120
9 /opt/oracle/oradata/ge01/idx_2k 2560
BBED> set file 4
FILE# 4
--4号文件为 /opt/oracle/oradata/ge01/users01.dbf
BBED> set block 234300
BLOCK# 234300
BBED> set block +10
BLOCK# 234310
BBED> set block -10
BLOCK# 234300
--偏移量是相对某个block里的偏移量,可以用+和-进行操作
还有很多种,不多写了,参见:[url]http://blog.csdn.net/tianlesoftware/article/details/5006580[/url]
BBED> map
File: /opt/oracle/oradata/ge01/users01.dbf (4)
Block: 234300 Dba:0x0103933c
------------------------------------------------------------
KTB Data Block (Table/Cluster)
struct kcbh, 20 bytes @0
struct ktbbh, 72 bytes @20
struct kdbh, 14 bytes @100
struct kdbt[1], 4 bytes @114
sb2 kdbr[5] @118
ub1 freespace[7980] @128
ub1 rowdata[80] @8108
ub4 tailchk @8188
通过map之后,可以看出真正block的结构体系, 块中的存储是由下往上存储的,( @ 表示偏移量 ),
freespace 在真正的行数据 rowdata 之上,这个@8108开始,到@8188 ,后面放的是数据内容。
我们上面说过的,要改的aa数据就在这2个偏移量中。
BBED> set offset 8108
OFFSET 8108
BBED> dump /v --查看offset 为8180 -8192的数据值
File: /opt/oracle/oradata/ge01/users01.dbf (4)
Block: 234300 Offsets: 8108 to 8191 Dba:0x0103933c
-------------------------------------------------------
2c020203 c20b0206 7379646e 65792c02 l ,.......sydney,.
0203c20a 64037573 612c0202 03c20a64 l ....d.usa,.....d
05636869 6e612c00 0203c209 59076368 l .china,.....Y.ch
656e6c69 6e3c0202 02c10402 63633c02 l enlin<......cc<.
0202c103 0262622c 000202c1 02026161 l .....bb,......aa
04066fe1 l ..o.
<16 bytes per line>
[oracle@dell1 home]$ select dump('aa',1016) from dual;
DUMP('AA',1016)
-----------------------------------------------------------------------------
Typ=96 Len=2 CharacterSet=US7ASCII: 61,61
可以使用fild查找:
在find之前先设置想要查找的 file 和 block,默认是十进制的ascii编码,/x 表示16进制,find的结果显示出offset,即字符出现的位置。
通过find查找,“aa”的位置,我们发现6161就是 aa
如果还不确认,可以通过dump来实现
第一种find方法:
BBED> find /x 6161 curr
File: /opt/oracle/oradata/ge01/users01.dbf (4)
Block: 234300 Offsets: 8186 to 8191 Dba:0x0103933c
------------------------------------------------------------------------
61610406 6fe1
<32 bytes per line>
第二种find方法:
BBED>
BBED> find /c aa
File: /opt/oracle/oradata/ge01/users01.dbf (4)
Block: 234300 Offsets: 8186 to 8191 Dba:0x0103933c
------------------------------------------------------------------------
61610406 6fe1
<32 bytes per line>
通过这2种方法,找到并确认 aa 在 8186 和 8191之间,下面试试修改他,把 aa 改成 bb
BBED> modify /c abcdefg
BBED-00215: editing not allowed in BROWSE mode
BBED> set mode edit
MODE Edit
BBED> modify /c bb ([b]注意长度,不能超过建表时候设置的长度,否则会出错[/b])
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /opt/oracle/oradata/ge01/users01.dbf (4)
Block: 234300 Offsets: 8186 to 8191 Dba:0x0103933c
------------------------------------------------------------------------
61626364 6566
<32 bytes per line>
--让 oracle进行checksum操作
BBED> sum dba 4,234300
Check value for File 4, Block 234300:
current = 0xd268, required = 0x3405
--直接应用
BBED> sum dba 4,234300 apply ;
Check value for File 4, Block 234300:
current = 0x3405, required = 0x3405
--验证是否修改成功
BBED> verify
DBVERIFY - Verification starting
FILE = /opt/oracle/oradata/ge01/users01.dbf
BLOCK = 234300
DBVERIFY - Verification complete
Total Blocks Examined : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
[b]Total Blocks Marked Corrupt : 0[/b]
Total Blocks Influx : 0
/*
Total Blocks Marked Corrupt : 0,表示木有错误
在实际工作当中,如果发现修改错误了,则可以通过undo,revert进行回滚操作。
在上面最常用的基本命令里面讲过了, 请注意undo和 revert的区别。
*/
SQL> select * from chenlintest ;
ID NAME
---------- ----------
1 aa
999 usa
1001 sydney
888 chenlin
999 china
--发现没有变化,考虑是否需要清空buffer cache
SQL> alter system flush buffer_cache;
System altered.
SQL> select * from chenlintest ;
ID NAME
---------- ----------
1 bb
999 usa
1001 sydney
888 chenlin
999 china
打完收工,下一次继续写当数据库,由于某个数据文件不一致,启动不来的时,改怎么样去修改datafile header的 SCN 号。使其和控制文件的SCN号一致!
发表评论
-
oracle数组游标批量插入
2013-12-07 16:40 3400declare type ary is table ... -
使用PL/SQL DEVELOPER 经常会碰到“DYNAMIC PERFORMANCE TABLES NOT ACCESSIBLE”错误
2012-10-16 08:45 947在使用PL/SQL Developer工具登陆一个新 ... -
buffer busy waits 等待事件(热点块竞争)
2012-08-31 16:31 1758*************************** ... -
ora-00054:resource busy and acquire with nowait specified解决方法
2012-06-16 09:35 962当某个数据库用户在数据库中插入、更新、删除一个表的数据, ... -
Oracle 9i 使用Statpack snap 步骤和说明
2012-06-14 08:40 17611、telnet到远程的数据库服务器 CMD>t ... -
oracle Statspack 报告解析之 Shared Pool Statistics(共享池统计信息)
2012-06-21 12:57 1232Shared Pool Statistics ... -
ORACLE里锁模式v$locked_object , locked_mode
2012-06-16 09:37 1465ORACLE里锁有以下几种模式: 0:none ... -
Oracle全面优化:如何对Oracle进行系统的全面优化?
2012-06-13 08:36 1206数据库系统和操作系统一样,在计算机上安装成功后,还需要进 ... -
oracle 参数 FAST_START_MTTR_TARGET
2012-06-14 08:41 1300参数FAST_START_MTTR_TARGET ... -
ORA-12519: TNS:no appropriate service handler found 解决
2012-06-15 08:35 849ORA-12519: TNS:no appropriat ... -
oracle 10g dataguard搭建步骤
2012-06-17 08:49 1734一、主库操作 1、修改主库属性: alter sys ... -
oracle Statspack 报告解析之 Top 5 Timed Events(等待事件)
2012-06-20 08:29 2016常见等待事件说明: ... -
index cluster/hash cluster/sort hash cluster
2012-06-15 08:36 1276簇是一个或多个表的组合,这些表的数据存储在相同的数据块 ... -
Oracle flashback几种方式
2012-06-20 08:26 704flashback(闪回)是Oracle10 ... -
ORACLE Audit 审计
2012-06-21 12:58 13461、什么是审计 审计(A ... -
Oracle建立用户 ,限制用户访问资源
2012-06-14 08:38 1124一、目的: Oracle系 ... -
oracle block 格式
2012-06-19 08:35 1101create table t(n number); ... -
oracle Statspack 报告解析之 Load Profile
2012-06-21 12:57 2113该部分提供每秒和每个事物的统计信息,是监控系统吞吐量和负载变化 ... -
数据库突然变慢,怎么办?
2012-06-16 09:38 2891第一章 检查系统的状态 1.1 使用sar来检查操作系 ... -
oracle library cache 中的hash算法原理
2012-06-18 08:24 1140详细文章:http://bkeep.blog.163.com/ ...
相关推荐
Oracle bbed工具是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具。一般此工具倾向于仅作为Oracle内部使用,且Oracle公司并不公开此工具使用细节。由于bbed可以对Oracle...
Oracle BBED,全称Binary Block Editor,是一款强大的Oracle数据库数据块编辑工具。它允许数据库管理员直接操作数据库的数据块,进行低级别的数据查看和修改,这对于故障排查、数据恢复以及性能优化等工作具有重要...
BBED是一个Oracle的内部工具,允许直接查看和修改数据库文件中的数据,甚至可以直接修复数据文件块的内容。但需要注意的是,BBED并不受Oracle官方支持,因此在生产环境中使用需格外谨慎,以免造成不可逆的数据损失。...
Oracle BBED,全称为Oracle Block Browser and Editor,是一款强大的数据块级别的查看和修改工具,主要用于Oracle数据库内部结构的深入分析。BBED并非官方推荐的常规维护工具,而是专为内部故障恢复设计,对外并不...
1. **数据修复**:当常规的数据恢复手段无法解决问题时,bbed可以访问数据库的数据块,允许用户直接修改磁盘上的数据,这对于修复损坏的数据记录尤其有用。 2. **低级别编辑**:bbed允许用户以字节级别的精度操作...
Oracle BBED(Block Browser and Editor for Oracle Databases)是一款强大的工具,主要用于Oracle数据库的数据块分析、反汇编以及编辑工作。该工具可以帮助数据库管理员(DBA)及开发人员深入理解Oracle数据块的...
**BBED**(Block Browser and Editor)是Oracle提供的一款用于查看和编辑数据库块内部结构的强大工具。它允许用户直接访问Oracle数据库文件系统中的数据块,并对其进行修改。尽管BBED在现代Oracle版本中已较少被直接...
Oracle BBED,全称为Binary Block Editor,是Oracle数据库系统中一个强大的工具,主要用于数据库块级别的诊断和修复。这个工具在数据库出现物理损坏时,能够帮助DBA(数据库管理员)进行块级的数据修复,以恢复...
“bbed”是Oracle数据库的一个实用工具,全称为“Block Buffer Editor”,它主要用于调试和修复Oracle数据库的数据块。这个工具允许管理员在数据库级别对数据进行低级别的操作,例如查看、编辑或恢复损坏的数据块。...
然而,由于BBED能够直接修改数据库的数据块,如果不慎操作,可能会导致数据损坏或丢失,所以Oracle官方并不建议也不支持对生产环境使用此工具。使用BBED进行任何修改都将使数据库失去Oracle官方的技术支持。 BBED的...
`bbed`(Block Editor for Oracle)是Oracle数据库提供的一种低级别数据修复工具,主要用于处理物理损坏的数据文件。在Oracle 10g版本中,bbed是内置的一部分,但在Oracle 11g及后续版本中,它不再直接集成,需要...
在Oracle 8.1.7版本中,BBED作为数据库管理工具,提供了对数据库块级别的操作,允许用户直接在操作系统层面操作和修改数据库的数据块,这对于故障排查、数据修复和性能优化具有重要作用。 BBED工具的核心功能包括:...
Oracle的BBED(Block Buffer Editor)工具主要用于数据库块级别的数据恢复,它允许管理员直接操作数据库的数据文件,这对于恢复被误删或损坏的数据至关重要。在本例中,我们将探讨如何使用BBED来恢复Oracle数据库中...
BBED,全称为Block-Based Editor,是Oracle数据库中的一款实用工具,主要用于查看、编辑和调试数据库的数据块。这个“BBED_10g_x64.zip”文件包含了适用于64位系统的Oracle 10g版本的BBED工具,以及可能用于在11g...
bbed(Block Editor)是Oracle提供的一种实用工具,主要用于查看、修改和诊断Oracle数据库的数据块。在安装过程中,bbed可能用于修复损坏的数据库文件或解决特定的安装问题。在Linux环境下,由于文件系统的特性,...
“bbed”(Block Buffer Editor)是Oracle数据库提供的一种低级别数据块操作工具。它允许管理员直接查看和修改数据库的数据块,这对于排查物理损坏、恢复丢失数据或进行特定调试工作非常有用。然而,“bbed”并非...
Bbed(Block Buffer Editor)是 Oracle 数据库管理员和开发人员的重要工具,它可以访问数据库的数据块,并允许直接修改内存中的数据,这对于诊断数据损坏或进行低级别调试非常有用。不过,由于其强大的功能,Bbed 应...
bbed全称为Block Buffer Editor,它的主要功能是在数据库级别对物理损坏的数据块进行修复,以解决由于硬件故障、软件错误或恶意攻击导致的数据问题。 **详细知识点:** 1. **Oracle bbed工具介绍** - bbed是一个...
"bbed"是Oracle数据库中的一个特殊工具,全称为Block Buffer Editor,主要用于诊断和修复数据文件中的块级问题。在这个Oracle 10g bbed库文件中,我们可能找到了用于处理这类问题的实用程序。 bbed工具是DBA...