oracle 模拟出 buffer busy waits 事件

el/2024/7/17 20:52:18
实验内容
模拟出 buffer busy waits 等待事件
实验总结
在同一个块同时进行DML操作时会产生 buffer busy waits 事件
有些等待时间非常短几乎可以忽略不计 
但是如果在AWR报告排名很靠前就需要想办法减少buffer busy waits 等待事件


尽量避免buffer busy waits 事件解决办法
1、prcfree(10%)使用这个参数预留一定空间
2、修改块的大小
alter system set db_4k_cache_size=5M;

create tablespace tablepack10 datafile '/u01/app/oracle/oradata/ocm/tablepack10.dbf' size 10M blocksize 4k;

alter table gyj_t2 move tablespace tp10;

3、HASH分区表
4、反向索引 (不能排序)




实验开始

测试表test_1的内容:
SQL> select rowid,a.* from test_1 a;


ROWID                    ID_A NAME_A
------------------ ---------- --------------------
AAAEMvAABAAAJ5hAAA          1 session1
AAAEMvAABAAAJ5hAAB          2 session2


查看test_1的两行数据是不是同一个块上面
SQL> select id_a,name_a,dbms_rowid.rowid_relative_fno(rowid) file# ,
dbms_rowid.rowid_block_number(rowid) block#  from test_1;

      ID_A NAME_A                    FILE#     BLOCK#
---------- -------------------- ---------- ----------
         1 session1                      1      40545
         2 session2                      1      40545




新开两个会话窗口分别是32号会话和40号会话


SQL> select distinct sid from v$mystat;

       SID
----------
        32



SQL> select distinct sid from v$mystat;


       SID
----------
        40




在32号会话中执行大量查询操作

declare
vid number;
begin
for i in 1 .. 5000000 loop
select id_a into vid from test_1 where rowid='AAAEMvAABAAAJ5hAAA';
end loop;
end;
/





同时在40号会话中执行更新操作

declare
begin
for i in 1 .. 200000 loop
update test_1 set id_a=id_a+0 where rowid='AAAEMvAABAAAJ5hAAB';
end loop;
commit;
end;
/




之后查看事件内容:


SQL> col EVENT for a35;
SQL> select SID,EVENT,TOTAL_WAITS,TOTAL_TIMEOUTS,TIME_WAITED_MICRO from v$session_event where sid in(32,40);

       SID EVENT                               TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED_MICRO
---------- ----------------------------------- ----------- -------------- -----------------
        32 Disk file operations I/O                      2              0               258
        32 latch: cache buffers chains                   1              0            104436
        32 buffer busy waits                            11              0           1570217
        32 log file sync                                 1              0               378
        32 SQL*Net message to client                    11              0                35
        32 SQL*Net message from client                  10              0         758283567
        32 SQL*Net break/reset to client                 5              0              1583
        32 events in waitclass Other                     2              2                10
        40 Disk file operations I/O                      2              0               440
        40 latch: cache buffers chains                   5              0            213828
        40 log file switch completion                    1              0            107532
        40 log file sync                                 4              0            130952
        40 SQL*Net message to client                    15              0               105
        40 SQL*Net message from client                  14              0         811794952
        40 SQL*Net break/reset to client                 2              0               667
        40 events in waitclass Other                     3              3                11


TOTAL_WAITS         会话总数的等待次数
TOTAL_TIMEOUTS      该事件的会话总数超时
TIME_WAITED_MICRO   会话等待时间总量(以微秒为单位)




下面是官方文档原文 
V$SESSION_EVENT


This view lists information on waits for an event by a session. 
Note that the TIME_WAITED and AVERAGE_WAIT columns will contain a value of zero on those platforms that do not support a fast timing mechanism. 
If you are running on one of these platforms and you want this column to reflect true wait times, 
you must set TIMED_STATISTICS to true in the parameter file. 
Please remember that doing this will have a small negative effect on system performance.


See Also:
"TIMED_STATISTICS"
Column Datatype Description
SID NUMBER ID of the session
EVENT VARCHAR2(64) Name of the wait event
See Also: Appendix C, "Oracle Wait Events"
TOTAL_WAITS NUMBER Total number of waits for the event by the session
TOTAL_TIMEOUTS NUMBER Total number of timeouts for the event by the session
TIME_WAITED NUMBER Total amount of time waited for the event by the session (in hundredths of a second)
AVERAGE_WAIT NUMBER Average amount of time waited for the event by the session (in hundredths of a second)
MAX_WAIT NUMBER Maximum time waited for the event by the session (in hundredths of a second)
TIME_WAITED_MICRO NUMBER Total amount of time waited for the event by the session (in microseconds)
EVENT_ID NUMBER Identifier of the wait event
WAIT_CLASS_ID NUMBER Identifier of the class of the wait event
WAIT_CLASS# NUMBER Number of the class of the wait event
WAIT_CLASS VARCHAR2(64) Name of the class of the wait event

http://www.ngui.cc/el/5557333.html

相关文章

oracle中session和processes的设置

1.sessions 在初始化参数所设定的限制中,最为人所知的估计就是sessions和processes Sessions 参数指定了一个 Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。通常,我们设定这个数字时需要考虑…

一个小sql的问题记录 对分析函数的应用

附件:第1次提的需求 --1.处理前的数据如下 WITH TB1 AS (SELECT 1 LSH,001 USERID from DUAL UNION ALL SELECT 2,001 FROM DUAL UNION ALL SELECT 3,001 FROM DUAL UNION ALL SELECT 4,002 FROM DUAL UNION ALL SELECT 5,003 FROM DUAL UNION ALL SELECT 6…

动态sql insert

创建两个表一个是insert语句 一个是需要插入数据的表 create table T ( sql VARCHAR2(200) ); create table TEST ( a1 VARCHAR2(100), a2 VARCHAR2(100), a3 VARCHAR2(100) ); 将insert 语句插入到T表: insert into t (SQL) values (insert into test (a1,a2,a3) values (100…

oracle 日期格式

set time on; 显示时间 set timing on; 显示执行时间 set sqlprompt"_date>" 显示日期和时间 alter session SET NLS_DATE_FORMATYYYY-MM-DD HH24:MI:SS; 修改当前会话日期格式 SQL> set time on; 09:23:06 SQL> select sysdate from dual; SY…

oracle 几个脚本记录

--*****************查看表空间大小***************** SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES…

oracle 索引类型

索引的分类 1二叉树索引或者叫B数索引(B-tree indexes),B树索引是使用最多的一种索引.在默认情况下,我们创建的索引都是B树索引.B树索引基于二叉树原理 2.二叉树聚簇索引(B-tree Cluster indexes) 主要用于聚簇 3.哈希聚簇索引(Hash Cluster indexes) 主要用于哈希(Hash)聚簇…

oracle scope

alter system set parameter value scopespfile; 这里面的scopespfile是什么意思,下面详细解释一下: SCOPE参数值有三个选项。 SCOPEMEMORY:只改变当前实例运行,亦即初始化参数改变了只对当前实例有效,当实例重启之后,初始化参数…

Oracle闪回(FlashBack)归档 数据库

Flashback Database功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log日志。比RMAN更快速和高效,因此Flashback Database 可以看作是不完全恢复的替代技术。闪回数据库的前提是要开…

oracle 表空间自动扩展大小

select a.FILE_NAME,a.AUTOEXTENSIBLE,a.MAXBYTES,a.INCREMENT_BY from dba_data_files a; --AUTOEXTENSIBLE 是否自动扩展 --MAXBYTES 最大 --INCREMENT_BY 自动扩展块数 SQL> show parameter db_block NAME TYPE VALUE ----…

使用微软提供的Office Online实现Office文档的在线查看,编辑等功能

使用微软提供的Office Online平台只需要一个网址即可在线查看Xls,doc,PPT等文档 http://view.officeapps.live.com/op/view.aspx?src要查看的文档地址 详情:http://www.cnblogs.com/huangtailang/p/76492af9d30087d8659d8d5400d20fc7.html pdf预览(pdf.…