时间:2021-05-23
查询是否锁表了
select oid from pg_class where relname='可能锁表了的表'select pid from pg_locks where relation='上面查出的oid'如果查询到了结果,表示该表被锁 则需要释放锁定
select pg_cancel_backend(上面查到的pid)补充:PostgreSQL 解决锁表、死锁问题
1.-- 查询ACTIVITY的状态等信息
SELECT T .PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT, T.QUERY_START FROM PG_STAT_ACTIVITY TWHERE T.DATNAME = '数据库用户名';上面查询结果中:pid就是ACTIVITY的唯一标识,state就是活动状态,query就是正在执行的sql语句,query——start就是开始执行的时间。
2.-- 查询死锁的ACTIVITY
SELECT T .PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT, T.QUERY_START FROM PG_STAT_ACTIVITY T WHERE T.DATNAME = '数据库用户名' AND T.WAIT_EVENT_TYPE = 'Lock';3.将第二条查询语句的pid字段的数字值记录下来,执行下面的查询语句可以解锁:
-- 通过pid解锁对应的ACTIVITY
select PG_CANCEL_BACKEND('6984');上面的查询语句,执行了pg_cancel_backend()函数,该函数是取消后台操作,回滚未提交事物的用途。
4.解决idle in transaction
select pg_terminate_backend ('21967')以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
PostgreSql数据库对象主要有数据库、表、视图、索引、schema、函数、触发器等。PostgreSql提供了information_schemasche
在目前的工作中需要解决复制整个SqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是
国内外常用的数据库有:Oracle数据库、IBMDB2数据库、SQLServer数据库、PostgreSQL数据库、MySQL数据库、Sybase数据库、南大通
在目前的工作中需要解决复制整个SqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是
mdb格式文件可以通过mdbtools工具将内中包含的每张表导出到csv格式文件。由于access数据库和postgresQL数据库格式上会存在不通性,所以使用