暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

BBED for PostgreSQL

1540


 一、关于bbedp


⽤python模仿bbed写了⼀个bbedp for pg的脚本,简单的查看和修改字节都可以做到。如果你不清楚这个脚本的功能,请不要轻易在⽣产环境使⽤它,这很危险。


使⽤环境:

1、linux

2、python 2.7

3、⽬前仅⽀持单个table

 ⼆、如何开始

找到table对应物理文件

查看data_directory参数找到数据库所在⽬录

postgres=# show data_directory ;

 data_directory 

----------------------

 /oracle/soft/pg_data

(1 row)

postgres=#


表的物理⽂件位置

postgres=# select pg_relation_filepath('t1');

 pg_relation_filepath

----------------------

 base/13323/24706

(1 row)

postgres=#



然后编辑bbedp脚本同级⽬录下的file⽂件就可以开始了,⽬前仅⽀持单个⽂件

vi file

/oracle/soft/pg_data/base/13323/24706

运行bbedp

这⾥你需要给x权限运⾏就可以了(默认没有密码)。

如果你了解bbed,那么help看⼀眼帮助就很容易上⼿bbedp了。你不了解bbed也没问题,脚本很简单,主要功能有查看page结构,dump字节,修改字节。


 三、查看page

map查看page结构

BBEDP> map

 File: oracle/soft/pg_data/base/13323/16428

 Block: 0 offset: 0

 -------------------------------------------------------------------

 struct PageHeaderData , 24 bytes @0

 struct Linps , 44 bytes @24

struct Tuples , 392 bytes @68 

 struct Pd_special , 0 bytes @8191

 There are 11 tuples in the block

BBEDP>

默认从block 0开始,你可以set block到指定的block再开始

p查看数据结构


直接p查看


p 指定⾏指针和tuple

查看十六进制数据


 四、修改数据测试

表T5有一条被删除的tuple

postgres=# select * from t5;

 id | name 

-------+------------

查看 tuple


修改

把tuple3这条记录尝试⽤bbedp修改找回来


重启实例查看数据

 五、写在后⾯


温馨提示:请不要轻易在⽣产环境使⽤它。

如果有什么不对的地⽅,感谢在留言处指正。

不⼀定有⽤,但是好玩!

最后修改时间:2019-12-16 09:37:40
文章转载自数据库架构之美,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论