使用Procwatcher监控Oracle数据库锁定Contention(2)

3、阻塞环境构建

我们在11gR2中,构建出一个阻塞的环境场景。从而使用Procwatcher的可用性。

SQL> select * from v$version;

BANNER

-----------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

PL/SQL Release 11.2.0.4.0 - Production

CORE 11.2.0.4.0 Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 – Production

构建实验数据表T。

SQL> create table t as select * from dba_objects where rownum<10;

Table created

当前命令行会话编号35,删除数据,但是不进行提交动作。

SQL> select sid from v$mystat where rownum<2;

SID

----------

35

SQL> delete t;

9 rows deleted

在另一个会话中,也删除相同数据。在Oracle环境下,第二个会话被阻塞。

SQL> select sid from v$mystat where rownum<2;

SID

----------

42

SQL> delete t;

(等待阻塞……)

此时,后台Server Process有三个。说明:笔者使用PL/SQL的Command Window进行测试,两个Command窗口,后台对应Server Process有三个。

[oracle@SimpleLinux PRW_SYS_SimpleLinux]$ ps -ef | grep LOCAL

oracle 1983 1 0 09:28 ? 00:00:00 oracleora11g (LOCAL=NO)

oracle 1988 1 0 09:29 ? 00:00:00 oracleora11g (LOCAL=NO)

oracle 2012 1 0 09:31 ? 00:00:00 oracleora11g (LOCAL=NO)

oracle 26625 1807 0 09:37 pts/0 00:00:00 grep LOCAL

下面我们实验用Procwatcher去诊断出进程的阻塞关系。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8cf754c1597c8509f1cefe9ec07fec7b.html