1.问题:编译包,发现无法编译的情况,查询用户在执行锁命令
2.编译包,无法编译的时候,可以采用以下命令查询谁加了共享锁(执行)或者排它锁(正在编译)
select * from dba_lock_internal d where d.lock_id1='APPS.XXXXX'and d.mode_held <>'Null'
表上的锁能用这个表查,但是有更快的方法,
select * from gv$lock lo ,dba_objects do where do.object_id=lo.id1and do.object_name ='XXXX'
3.查询的lock_type:
TM是表上的锁,TX是行锁,TO是临时表锁,可以查询v$lock_type获取详细信息
oradebug 休眠、唤醒进程
1、问题背景:
测试环境有一个JDBC进程池,有20个进程并行执行SQL,此SQL非常缓慢,想要hang住进程,让我的test跑完再启用
2、模拟执行缓慢的进程
查询进程
SELECT p.pid--35,p.spid--28095FROM v$session s,v$process pWHERE s.paddr = p.addrAND s.sid = userenv('sid') ;
一秒写一个
create table cux_oradebug(id number,creation_date date);declarebeginfor i in 1..3600 loopdbms_lock.sleep(1);insert into cux_oradebug(id,creation_date)values(i,sysdate);commit;end loop;end;
3.休眠
SQL> oradebug setospid 28095Oracle pid: 35, Unix process pid: 28095, image: oracle@MyHostSQL> oradebug suspend
查询果然停在了148秒
select max(id)from cux_oradebug;
--4.唤醒
SQL> oradebug resume
继续查询,发现ID继续上升
select max(od) from cux_oradebug
文章转载自云贝教育,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




