
正文
pg数据库记录频繁查询被锁 pg数据库死锁查询
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于oracle频繁被锁 如何解决
--查询被锁的表
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
--查看是哪个session引起的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
--杀掉对应进程即解锁
alter system kill session'866,20840'
----某程序连接数据库帐号密码错误
相关问答
Q1: 最近我的数据库的一个用户经常被锁,想问一下原因
1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间
SQL alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
2、查看具体的被锁时间 ( 这里你根据需要, 填写具体的用户名, 下面语句的 用户名是 TEST)
SQL select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE
TEST 2009-03-10 08:51:03
3、解锁
SQL alter user test account unlock;
User altered.
4、查看是那个ip造成的test用户被锁
查看$ORACLE_HOME/network/admin/log/listener.log日志
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49435)) * establish * lhoms * 0
这样可知是上面10.69.1.11的ip尝试多次失败登陆造成的被锁
注:
一般数据库默认是10次尝试失败后锁住用户
1、查看FAILED_LOGIN_ATTEMPTS的值
select * from dba_profiles
2、修改为30次
alter profile default limit FAILED_LOGIN_ATTEMPTS 30;
3、修改为无限次(为安全起见,不建议使用)
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
上述的相关内容就是对Oracle用户被锁原因及办法的描述,希望会给你带来一些帮助在此方面。
Q2: 数据库中某条数据被锁了。如何解锁
用下面的语句检查数据库锁,然后kill 掉产生锁的进程就ok了。
查锁:
select nvl(S.USERNAME,'Internal') username,
nvl(S.TERMINAL,'None') terminal,
L.SID||','||S.SERIAL# Kill,
U1.NAME||'.'||substr(T1.NAME,1,20) tab,
decode(L.LMODE,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) lmode,
decode(L.REQUEST,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) request
from V$LOCK L,
V$SESSION S,
SYS.USER$ U1,
SYS.OBJ$ T1
where L.SID = S.SID
and T1.OBJ# = decode(L.ID2,0,L.ID1,L.ID2)
and U1.USER# = T1.OWNER#
and S.TYPE != 'BACKGROUND'
order by 1,2,5
杀锁:
alter system kill session 'sid,#serial';
sid和#serial用前面查询到的结果替换。
Q3: 数据库死锁一般都什么原因导致的
简单讲:比如,在同一表中,你在编辑A记录,我访问和修改B记录,此时两个记录都被锁定。
然后,在同一时时,您要释放A记录,进入编辑B记录,而我要释放B记录进入编辑A记录。
这样,死锁就形成了。您不能进入被我锁定的B记录,从而继续停留在A记录。我不能进入正被您锁定的A记录,从而继续留在B记录。互相等待对方释放锁定的记录,而不能释放自已所在的记录,从而无限期等待。
Q4: PL/SQL中记录被另一个用户锁住的原因及处理方法
PL/SQL中记录被另一个用户锁住的原因:另一个用户正在修改或删除该记录。此时其它用户只能做查询,不能进行删改操作。如果要解锁,正在删改操作的用户退出删改状态即可。
因死机或挂起不能退出删改状态时,找到该用户的进程,kill该进程就可以了。实在不行的话重新启动数据库也可以。
处理方法:
1、查看数据库锁,诊断锁的来源及类型:
select object_id,session_id,locked_mode from v$locked_object;
或者用以下命令:
select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id
2、找出数据库的serial#,以备杀死:
select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;
3、杀死该session:
alter system kill session 'sid,serial#'
扩展资料
SQL Server中的锁类型及用法:
从数据库系统的角度来看:分为独占锁(即排它锁), 共享锁和更新锁。MS-SQL Server使用以下资源锁模式。
锁模式描述:
共享(S)用于不更改或不更新数据的操作(只读操作),如SELECT语句。
更新(U)用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。
排它(X)用于数据修改操作,例如.INSERT、UPDATE 或DELETE。确保不会同时同一资源进行多重更新。
意向锁用于建立锁的层次结构。意向锁的类型为:意向共享(IS)、意向排它(IX)以及与意向排它共享(SIX)。
架构锁在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改(Sch-M)和架构稳定性(Sch-S)。
大容量更新(BU)向表中大容量复制数据并指定了TABLOCK提示时使用。
pg数据库记录频繁查询被锁的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于pg数据库死锁查询、pg数据库记录频繁查询被锁的信息别忘了在本站进行查找喔。






