Orcale锁表处理&约束查询

本文介绍了如何在Orcale数据库中根据约束名称查询相关表信息,包括外键约束与主键约束之间的关联,并提供了查看及解除数据库锁的具体步骤。

Orcale根据约束名查询表

select a.constraint_name, a.table_name, b.constraint_name

from user_constraints a, user_constraints b

where a.constraint_type = 'R'

and b.constraint_type = 'P'

and a.r_constraint_name = b.constraint_name

and a.constraint_name = 'FK_XXXXXXX'

Orcale锁表处理

1、查看数据库锁

2、找到锁

3、解除锁

SELECT  SESSION_ID   FROM   V$LOCKED_OBJECT,USER_OBJECTS  WHERE   V$LOCKED_OBJECT.OBJECT_ID   =   USER_OBJECTS.OBJECT_ID;

SELECT SERIAL# FROM V$SESSION  WHERE SID='136';

ALTER   SYSTEM   KILL   SESSION  '136,11847';  ---(48为SESSION_ID的值, 2476为SERIAL#的值)

记录修改完要先 “发布” 发布完之后要点击提交 “提交” 否则会导致锁表。

在Oracle数据库中,表现象通常是指由于并发操作导致多个用户或进程尝试同时访问相同的资源,而系统对这些资源施加来防止数据不一致。表排查主要涉及到诊断定的来源和解决争用问题。下面是一些排查和解决表问题的基本步骤: 1. 确定定的对象:首先需要识别出哪些对象被定了。可以使用查询语句来查看数据库中当前的定情况,如使用`v$lock`或`v$session`视图来获取定表的信息。 ```sql SELECT s.sid, s.serial#, l.type, l.id1, l.id2, t.segment_name, t.owner FROM v$lock l, v$session s, dba_objects t WHERE l.sid = s.sid AND l.id1 = t.object_id(+) AND l.type = 'TM'; ``` 2. 识别定进程:找到定的对象后,可以通过`v$session`视图来查看哪个会话持有。 ```sql SELECT sid, serial#, username, osuser, machine FROM v$session WHERE sid IN (SELECT DISTINCT sid FROM v$lock WHERE type = 'TM'); ``` 3. 解决定问题:一旦确定了定的会话,可以与该会话的用户沟通,以便他们提交或回滚事务来释放。在紧急情况下,如果确认无误,也可以考虑使用`ALTER SYSTEM KILL SESSION`命令来强制结束定的会话。但是这样做应当谨慎,因为它可能导致未提交的事务丢失。 ```sql ALTER SYSTEM KILL SESSION 'sid,serial#'; ``` 4. 调整应用逻辑:长期来看,解决表问题的根本在于调整应用程序的逻辑,以减少长时间定资源的操作,并尽可能地减少的范围和持续时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值