暂无图片
pg中用dd模拟表损坏?
我来答
分享
暂无图片 匿名用户
pg中用dd模拟表损坏?

dd bs=8192 count=1 seek=1 of=/data/pgdata/base/16401/177846 if=/data/pgdata/base/16401/177846


1+0 records in
1+0 records out
8192 bytes (8.2 kB) copied, 0.000301755 s, 27.1 MB/s


执行完成后,表tab1对应的文件:/data/pgdata/base/16401/177846

希望select * from tab1报错,

但是没有报错,

我如何用dd模拟出tab1损坏了呢?

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
刘贵宾

你可以直接vi relfilenode来模拟表损坏

暂无图片 评论
暂无图片 有用 2
打赏 0
李宏达

把seek去掉,可能表特别小,都没有1K。

暂无图片 评论
暂无图片 有用 0
打赏 0
李宏达

记得先备份
dd if=/dev/zero of=/data/pgdata/base/16401/177846 bs=1M count=1

暂无图片 评论
暂无图片 有用 1
打赏 0
超越无限D
2022-10-17
张sir

1、你这个表有多大?pg的一次写入是8k,如果你的表行数很少的话,你这个表总共也就8k。

2、另外就是你的select * from tab1,可能根本不用读磁盘,都在内存里呢。

3、dd bs=8192 count=1 seek=1 of=/data/pgdata/base/16401/177846 if=/data/pgdata/base/16401/177846    ====》你这条命令的意思是从177846开头读出8k,写到177846的8k开始的地方。

4、楼上的方法可以:

dd if=/dev/zero of=/data/pgdata/base/16401/177846 bs=1M count=1  ===>把1M的0,写入到177846.

暂无图片 评论
暂无图片 有用 1
打赏 0
李宏达

27F13F16.png

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
winserver2016支持postgreSQL 15吗?
回答 6
windows安装在下面网址中进行wondows版本的下载:https://www.enterprisedb.com/downloads/postgrespostgresqldownloads
postgreSQL中表17个字段,11个索引,正常吗?
回答 4
SQL优化能通过SQL改写实现优化的效果最好。盲目的加索引,查询速度是上来了,写可能就慢下来了。个人感觉,正常不正常,根据你的业务程序反应,业务程序读写都ok。表示正常。如果insert慢表示不正常。
PostgreSQL 10没有jsonb类型,怎么解决?
回答 3
已采纳
建议升级pg10或者换成其他数据类型,比如blob
postgreSQL 如何固定执行计划走的索引?
回答 3
可以试试pg发行版lightdb,各种oraclehint都支持,完美平滑
postgreSQL 怎么定位SQL是属于哪个函数的?
回答 2
一个比较实际的方法,可能是查询系统表pgproc:SELECTpronamespace,proname,pggetfunctionarguments(oid)FROMpgprocWHEREprosrc
下列语句的执行效果是
回答 2
已采纳
C回收所有用户在public模式下的create权限首先需要执行下面的SQL语句:revokecreateonschemapublicfrompublic;这是因为在PG中默认任何用户都可以在名称为p
PostgreSQL 复制槽有什么用?
回答 2
复制槽 提供了一种自动化的方法来确保主控机在所有的后备机收到WAL段之前不会移除它们,并且主控机也不会移除可能导致 恢复冲突的行,即使后备机断开也是如此。
关于懒惰冻结的问题
回答 1
在PostgreSQL中,涉及到事务ID(TransactionID,xid)管理的概念可能会有一些混淆。让我们详细解释一下你提到的几个问题:1.事务ID冻结的通俗理解事务ID冻结可以通俗地理解为对旧
pg_rman增量恢复出错了
回答 2
第一次备份全备[postgres@testdanrmanbackup]$pgrmanbackupbackupmodefullbackuppath/backup/rmanbackupINFO:copyi
pg_stat_activity中的pid可以批量查杀吗?
回答 3
select'selectpgterminatebackend('||pid||');'askill,usename,datname,currentquery,now()querystartascti
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~