查看原文
其他

BBED for PostgreSQL

李亮 数据和云 2019-12-14

点击▲关注 “数据和云”   给公众号标星置顶

更多精彩 第一时间直达

作者 | 李亮,云和恩墨西区交付工程师,长期服务于运营商、社保、银行、医院、公积金等行业,擅长数据库备份恢复,升级迁移,性能优化,sql优化。


 一、关于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修改找回来


重启实例查看数据

 五、写在后⾯


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

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

不⼀定有⽤,但是好玩!



资源下载

关注公众号:数据和云(OraNews)回复关键字获取

2018DTCC , 数据库大会PPT

2018DTC,2018 DTC 大会 PPT

DBALIFE ,“DBA 的一天”海报

DBA04 ,DBA 手记4 电子书

122ARCH ,Oracle 12.2体系结构图

2018OOW ,Oracle OpenWorld 资料

产品推荐

云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存