[20160205]大量子光标引起的等待事件.txt

[20160205]大量子光标引起的等待事件.txt

--测试大量子光标引起的等待事件(11G):

1.环境:
SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

CREATE TABLE t (id NUMBER);
INSERT INTO t VALUES (1);
create unique index pk_t on t(id);
alter table t add constraint pk_t  primary key (id);
COMMIT;
execute dbms_stats.gather_table_stats(user,'t');

SYS@book> @ &r/hide _cursor_obsolete_threshold
NAME                        DESCRIPTION                                      DEFAULT_VALUE  SESSION_VALUE  SYSTEM_VALUE
--------------------------- ------------------------------------------------ -------------- -------------- ------------
_cursor_obsolete_threshold  Number of cursors per parent before obsoletion.  TRUE           1024           1024

2.测试:
$ cat aa.sql
DECLARE
    l_count PLS_INTEGER;
BEGIN
    FOR i IN 1..100
    LOOP
    EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_caching = '||i;
    FOR j IN 1..10000
    LOOP
        EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_cost_adj = '||j;
        EXECUTE IMMEDIATE 'SELECT count(*) FROM t' into l_count;
    END LOOP;
    END LOOP;
END;
/

sqlplus scott/book @aa.sql &
sqlplus scott/book @aa.sql &
sqlplus scott/book @aa.sql &

--sql_id='5tjqf7sx5dzmj'

SELECT event, COUNT (*)
    FROM V$ACTIVE_SESSION_HISTORY
   WHERE sql_id = '5tjqf7sx5dzmj'
   and sample_time >= '2016/02/05 11:00'
GROUP BY event
ORDER BY COUNT (*) DESC ;

EVENT                                      COUNT(*)
---------------------------------------- ----------
                                                423
cursor: pin S wait on X                         342
kksfbc child completion                         146
library cache lock                                7
cursor: mutex S                                   6
cursor: mutex X                                   3
library cache: mutex X                            2
7 rows selected.

# perf top  -k  /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
   PerfTop:    2122 irqs/sec  kernel:11.0%  exact:  0.0% [1000Hz cycles],  (all, 24 CPUs)
------------------------------------------------------------------------------------------------------------
             samples  pcnt function                     DSO
             _______ _____ ____________________________ ____________________________________________________

             2401.00 36.4% kgxShared                    /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
             1504.00 22.8% kgxRelease                   /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
              168.00  2.5% kkscsSearchChildList         /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
              146.00  2.2% kkscsPruneChild              /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
              140.00  2.1% kspnum                       /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
              122.00  1.8% kkshGetNextChild             /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle

--可以看到基本与10g一样。主要都是cursor: pin S wait on X,kksfbc child completion。
--另外11g通过隐含参数_cursor_obsolete_threshold限制了子光标产生的数量。11.2.0.4该参数设置是1024.
--而11.2.03设置是100.

--通过perf观察可以发现主要调用函数是kgxShared,kgxRelease.

时间: 2024-10-24 13:14:12

[20160205]大量子光标引起的等待事件.txt的相关文章

[20161228]奇怪log file sync等待事件.txt

[20161228]奇怪log file sync等待事件.txt --这个来自链接:http://www.itpub.net/thread-2073857-1-1.html的讨论,很奇怪的问题: Top 10 Foreground Events by Total Wait Time Event                                              Waits    Total Wait Time (sec)    Wait Avg(ms)    % DB t

[20150520]使用gdb查看等待事件.txt

[20150520]使用gdb查看等待事件.txt -- 昨天开始重看vage-- 使用gdb 看等待事件这部分内容跳过了,今天测试看看.如何操作. -- 实际上设置断点在gdb下,11g等待事件的起始函数是kslwtbctx函数.还是通过演示来说明: 1.测试环境: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------

[20130409]Data file init write等待事件.txt

[20130409]Data file init write等待事件.txt 清明前几天帮别人解决数据库问题,就是高峰的时候有点慢. 仔细看awr报表,除了发现几条sql语句没有建立索引外,发现等待事件里Data file init write.很明显主要数据文件next设置太小,当我看数据文件发现next竟然是8k,将它修改128M后问题消失. 我自己感到奇怪的是无论如何前面的安装人员都不应该把next设置为8k(难道是笔误应该是8M还有可能). 今天自己在11G上做一个测试,原来问题在于建立

Statspack之十四-"log file sync" 等待事件

原文出处: http://www.eygle.com/statspack/statspack14-LogFileSync.htm 当一个用户提交(commits)或者回滚(rollback),session的redo信息需要写出到redo logfile中.用户进程将通知LGWR执行写出操作,LGWR完成任务以后会通知用户进程.这个等待事件就是指用户进程等待LGWR的写完成通知. 对于回滚操作,该事件记录从用户发出rollback命令到回滚完成的时间. 如果该等待过多,可能说明LGWR的写出效率

如何模拟产生CBC LATCH与buffer busy wait等待事件

数据库版本:Oracle 11.2.0.4.0 CBC latch出现的原因:   --只在逻辑读时产生 1.CBC latch保护不同的链表.不同BH   :同一LATCH下多个BUCKET被同时访问时,(一个LATCH对应多个BUCKET) 2.CBC latch保护同一链表下同一BH  :同一LATCH下同一BH被同时访问时 latch: cache buffers chains 解决方法: 1._db_block_hash_latches加大latch数量,作用是减少同一LATCH下多个

怎样诊断过去某个时间段的等待事件原因

1.查看某个等待事件的阻塞会话 select event,blocking_session,sql_id,count(*) from dba_hist_active_sess_history ash    where sample_time>=to_timestamp('2013-06-24 12:25:00','yyyy-mm-dd hh24:mi:ss')    and sample_time<=to_timestamp('2013-06-24 12:35:00','yyyy-mm-dd

Oracle常见的等待事件

db file scattered read 对于一些频繁访问的表,如果没有建立索引或没有建立 合适的索引,Oracle只能对其进行全表扫描,就会导致大量该等待事件. 全表扫描时,读 取的数据在磁盘上一般是连续的,但是读到内存时却是不连续的,因此该事件命名为离散读 (scattered read),注意不要被它的名字所迷惑. 一次多块读取的数量受参数 DB_FILE_MULTIBLOCK_READ_COUNT的影响. 在实际诊断过程中,可以通过v$session_wait 视图发现session

.NET Compact Framework多线程下的等待事件

在WinCE或者Windows Moblie开发中常常把大量的批处理工作提交给工作进程 (Worker Thread)进行,当批处理工作完成时,或者该进程发生失败以及异常的 时候需要通知界面进程(UI Thread)进行同步.(PS:有时候同步的是两个 worker thread,而不是UI Thread,这由具体应用来决定.)这时候往往需要等 待事件..NET Framework 提供的等待事件封装在System.Threading.WaitHandle 里面.但是.NET Compact F

Oracle中常见的33个等待事件小结

在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待事件的相关信息   一. 等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. 2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件 是在调整数据库的时候