oracle如何导出txt文本

2023-02-27 08:21 20次浏览 攻略

长江~ ~各位,喊吧,又是我,IQ 233的天才小璐,今天我再给大家展示一下我最近学的东西。

那是BBED

自我介绍:BBED是Block Browser/Editor的缩写,是Oracle的内部工具,不在外部发布文档和支持。

BBED随软件发布,但是我们需要进行简单的relink才能使用。

这个就很厉害了哟~可以修复Oracle坏块,有一次就是数据库打不开了,找了好多方法有幸接触到了BBED,修改了文件头,拯救了我的测试库哈哈哈

所以今天就给大家分享下怎么用这个东东

=============准备

Copy $ORA10g_HOME/rdbms/lib to$ORA11g_HOME/rdbms/lib

Copy $ORA10g_HOME/rdbms/lib to $ORA11g_HOME/rdbms/lib

Copy $ORA10g_HOME/rdbms/mesg to $ORA11g_HOME/rdbms/mesg

Copy $ORA10g_HOME/rdbms/mesg to $ORA11g_HOME/rdbms/mesg

Copy $ORA10g_HOME/rdbms/mesg to $ORA11g_HOME/rdbms/mesg

—-10g可以直接编译链接,11g需要将lib复制到以上指定目录

make -f $ORA10g_HOME/rdbms/lib BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

============配置

bbed parfile=/home/oracle

默认密码blockedit

构造bbed.par文件

[oracle@localhost ~]$ cat bbed.par

blocksize=8192

listfile=/home/oracle

mode=edit

构造文件

[oracle@localhost ~]$ cat

1 /u01/app/oracle/oradata/PROD/datafile 775946240

2 /u01/app/oracle/oradata/PROD/datafile 513802240

3 /u01/app/oracle/oradata/PROD/datafile 31457280

4 /u01/app/oracle/oradata/PROD/datafile 5242880

5 /home/oracle 5242880

使用set filelist 也需要,数据文件的信息单独在一个txt里

———使用以下sql生成

select file#||' '||name||' '||bytes from v$datafile;

———获取需要修改数据块的file#,block#

select

rowid,

dbm(rowid)rel_fno,

dbm(rowid)blockno,

dbm(rowid) rowno

from wzy.t1;

============使用

———————设置块位与偏移量

set dba 5,135 offset 0

set offset 8172

———————显示块信息类

map中的所有解都都可以进行p(print)

p kcbh

p kdbh

p kdbr 显示row directory

p *kdbr[0] 某行数据的偏移量

x /rc 进行一次examine

x /3rc 进行3次examine,用于显示数据,p到最后一行,进行N次(等于行数)的输

———————-修改数据

find /c chen

找到字段后,offset会偏移

modify /c 'zhen' dba 5,135 offset 8172

dump /v dba 1,115362 offset 8176count 128

———————恢复删除数据

find /c chen

找到字段后,offset会偏移

———————–修改校验

sum dba 5,135 检查checksum

sum dba 5,135 apply 应用required checksum

———————–tailcheck

tailcheck=bas_kcbh(后4位)+seq_kcbh+type_kcbh

要根据数据文件字节序,将tailcheck调整,小字节序要倒序,一个字节2个比特

BBED常用命令:

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

可以使用help来查看bbed的命令语法:

BBED> help all

SET DBA [ dba | file#, block# ]

SET FILENAME 'filename'

SET FILE file#

SET BLOCK [+/-]block#

SET OFFSET [ [+/-]byte offset | symbol | *symbol ]

SET BLOCKSIZE bytes

SET LIST[FILE] 'filename'

SET WIDTH character_count

SET COUNT bytes_to_display

SET IBASE [ HEX | OCT | DEC ]

SET OBASE [ HEX | OCT | DEC ]

SET MODE [ BROWSE | EDIT ]

SET SPOOL [ Y | N ]

SHOW [ <SET parameter> | ALL ]

INFO

MAP[/v] [ DBA | FILENAME | FILE | BLOCK ]

DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ]

PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

EXAMINE[/Nuf] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

</Nuf>:

N – a number which specifies a repeat count.

u – a letter which specifies a unit size:

b – b1, ub1 (byte)

h – b2, ub2 (half-word)

w – b4, ub4(word)

r – Oracle table/index row

f – a letter which specifies a display format:

x – hexadecimal

d – decimal

u – unsigned decimal

o – octal

c – character (native)

n – Oracle number

t – Oracle date

i – Oracle rowid

FIND[/x|d|u|o|c] numeric/character string [ TOP | CURR ]

COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]

MODIFY[/x|d|u|o|c] numeric/character string

[ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

ASSIGN[/x|d|u|o] <target spec>=<source spec>

<target spec> : [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

<source spec> : [ value | <target spec options> ]

SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ]

PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ]

POP [ALL]

REVERT [ DBA | FILE | FILENAME | BLOCK ]

UNDO

HELP [ <bbed command> | ALL ]

VERIFY [ DBA | FILE | FILENAME | BLOCK ]

CORRUPT [ DBA | FILE | FILENAME | BLOCK ]

善用BBED可以从很多棘手的问题中拯救我们的数据库,作为Oracle DBA需要了解这样一个工具的存在

相关推荐