网站首页 > 数据库 / 正文
RAC数据库挂起、运行缓慢、阻塞的情况,以及如何在这些情况下进行挂起分析(hang analysis) 当一个数据库运行速度慢得令人无法接受,或者由千系统内部死锁或latch导致的数据库挂起,再或者持续很久的死锁或阻塞影响了数据库的整体性能,这时候建议使用挂起分析,将非常有助于找出问题的根本原因。
SQL> sqlplus / as sysdba
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug setinst all --在集群范围内使用挂起分析
SQL> oradebug -g all hanganalyze 3 --通常使用的级别是3
<<等持几分钟>>
SQL> oradebug -g all hanganalyze 3
挂起分析的级别可以设置为1到5,或者10。当调用hanganalyze命令后,诊断信息将写入到转储文件中,放在ORACLE_BASE/diag/rdbms/dbname/instance name/trace目录中,诊断信息可以用来分析和解决问题。
实例演示:
演示一个RAC数据库的阻塞问题,并使用下面的程序来测试实际的过程。然后将分析产生的跟踪文件的内容来解决阻塞问题。在进行这个测试之前首先创建EMP表:
SQL> create table emp (enpno number (3),deptno number(2), sal number(9));
向表中插入一些记录, 然后再执行下面的修改语句:
SQL> update pacs3i.emp set sal=sal+100 where empno=7900 --未提交
然后,对相同记录执行修改语句来模拟阻塞情形:
SQL> update emp set sal=sal+200 where empno=7900
此时会话将会挂起,光标不会返回到SQL提示符下。这时从另一会话,如下执行挂起分析:
SQL> oradebug setmypid;
Statement processed.
SQL> oradebug setinst all ;
Statement processed.
SQL> oradebug -g all hanganalyze 3
Hang Analysis in /u01/app/oracle/diag/rdbms/dbrac/DBRAC1/trace/DBRAC1_diag_4448.trc
对跟踪文件的内容进行初步排查和分析,根据上下文找到阻塞的持有者和被阻塞者。下面是跟踪文件的部分内容:
通过命令进行排查问题
SQL> !less /u01/app/oracle/diag/rdbms/dbrac/DBRAC1/trace/DBRAC1_diag_4448.trc
Tags:oracle insert as
猜你喜欢
- 2024-11-26 oracle-高水位
- 2024-11-26 Oracle ROWID详解及其妙用
- 2024-11-26 Mybatis标签使用
- 2024-11-26 oracle Merge Into 用法
- 2024-11-26 oracle创建触发器-1
- 2024-11-26 常用SQL系列之(五):多表和禁止插入、批量与特殊更新等
- 2024-11-26 Oracle数据定义
- 2024-11-26 Oracle定时任务
- 2024-11-26 Oracle数据库性能调优实践(三)——账号及密码管理
- 2024-11-26 Mybatis批处理踩坑,纠正网上的一些错误写法