2018-07-23

OWI案例大百科| 第六课:V$SQL_BIND_CAPTURE

  V$SQL_BIND_CAPTURE 目录 1 Basic Info. 2 1.1 概要… 2 1.2 支持… 2 1.3 列… 2 2 参考事项… 3 2.1形成Bind Capture的时刻… 3 2.2 获取绑定值… 3 2.3 […]
2018-03-01

OWI案例大百科|第五课:Latch redo writing

Latch: redo waiting   目录 1 Basic Info. 2 2 Parameter & Wait Time. 2 2.1 Wait Paremeters 2 2.2 Wait Time. 2 3 Check Point […]
2018-01-31

OWI案例大百科| 第四课

  Latch free   目录 1 Basic Info. 1 2 Parameter & Wait Time. 3 2.1 Wait Paremeters 3 2.2 Wait Time. 3 3 Check Point […]
2017-12-19

OWI案例大百科| 第三课

  目录 1 Basic Info. 2 2 Parameter & Wait Time. 3 2.1 Wait Paremeters 3 2.2 Wait Time. 3 3 Check Point & Solution. 4 […]
2017-08-28

OWI案例大百科| 第二课

用户请求的数据不在Oracle的高速缓冲区的时候,服务器进程将相应的数据文件中的数据块加载到高速缓冲区。即称为常规路径(Conventional Path)I/O。常规路径I/O分为多块(Multi Block)I/O和单块(Single Block)I/O。多块I/O可一次读取多个连续的块的I/O方式,单块I/O每次只能读取一个块的I/O方式。 Oracle在执行全表扫描(Full Table Scan。FTS)或快速全索引扫描(Index Fast Full Scan)的时候,为了保证性能尽可能执行将多个连续的块的一次性读取的多块I/O。每次执行多块I/O的时候,直等到物理I/O的结束为止,发生db file scattered read等待事件。 多块I/O是参照DB_FILE_MULTIBLOCKREAD_COUNT参数所指定的值执行。这个值的最大值随OS不同而最大值也不尽相同,可通过以下方法查看最大值。   Oracle在执行FTS的时候,有时也进行单块I/O。这时候就算FTS,也会发生db file sequential read的等待。在FTS中,使用单块I/O或者读取比MBRC小的块的情况如下。 达到区(Extent)界限的时候:假设一个区有9个块,而一次多块I/O可读取8个块,那么剩下的一个块由单块I/O来读取。如果剩下的块是2个块,那么执行多块I/O来读取且只读2个块。 扫描过程中如发现缓存(Cache)的块时:假设在读取8个块的时候,其中第三个块已经缓存,那么Oracle将前面的两个块以多块IO读取,而对第三个块则执行一次逻辑(Logical)IO,再将剩下的5个块以多块IO来读取。如果这种情况经常发生,可引发不必要的IO,进而成为降低FTS速度原因。 有链接行(Chained Row)的情况: 在执行FTS的过程中,如果遇到链接行(Chained Row),则oracle为了读取剩下的行将发生额外的IO,这时将执行单块IO。有必要明确了解链接行(Chained Row)和迁移行(Migrated […]
2017-08-11

OWI案例大百科 |第一课

    Buffer Busy waits   1. Basic Info 访问特定块的进程需要先获得特定块的Buffer Lock。假如要修改特定的块,需要以独占(Exclusive)模式获得的Buffer Lock。相反,只是要读取特定块需要以共享(Shared)模式获得 Buffer Lock。 如果进程A对块X已获取Buffer Lock的状态时,因进程B对同一个块不能以互换模式获取而进行Buffer Lock等待。这时发生的就是buffer busy wait事件。 Buffer bus wait最常见的情况是在多个进程对同一个块进行Insert或者Update的情况。对块进行Insert或者Update的时候,要求以独占模式获取Buffer Lock。多个进程同时对同一个块以独占模式获取Buffer Lock时会发生对Buffer Lock的争用,显示为buffer busy […]