BBED for PostgreSQL
点击▲关注 “数据和云” 给公众号标星置顶
更多精彩 第一时间直达
作者 | 李亮,云和恩墨西区交付工程师,长期服务于运营商、社保、银行、医院、公积金等行业,擅长数据库备份恢复,升级迁移,性能优化,sql优化。
⽤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字节,修改字节。
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也已发布,欢迎关注。