[20181130]control file sequential read.txt
[20181130]control file sequential read.txt
--//昨天上午探究了大量控制文件读的情况,链接:http://blog.itpub.net/267265/viewspace-2222146/
--//今天做一些细节探究:
1.环境:
SYS@xxxxx1> @ 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
--//建立执行脚本如下:
$ cat c.txt
select 'flashpct;'||trim(ceil(percent_space_used)) from V$FLASH_RECOVERY_AREA_USAGE where file_type='FLASHBACK LOG'
union all
select 'flashtime;'||to_char(OLDEST_FLASHBACK_TIME,'yyyy-mm-dd hh24:mi:ss') from V$FLASHBACK_DATABASE_LOG;
--//session 1:
SYS@xxxxx1> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
60 26633 1442 DEDICATED 1443 418 203 alter system kill session '60,26633' immediate;
--//记下spid=1443.
2.使用strace跟踪
--//session 2:
$ strace -p 1443 -t -e pread -o /tmp/aa1
--//切换到session 1:
SYS@xxxxx1> @ c.txt
'FLASHPCT;'||TRIM(CEIL(PERCENT_SPACE_USED))
-------------------------------------------------
flashpct;0
--//session 2,按ctrl+c退出:
# strace -p 1443 -t -e pread -o /tmp/aa1
Process 1443 attached - interrupt to quit
^CProcess 1443 detached
# cat /tmp/aa1
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0J\3\0\0\1\255\3338\377\377\1\4B\27\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384, 476741632) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 480264192) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(258, "\25\302\0\0000\3\0\0B\261\3338\377\377\1\4[\r\0\0\30\0\f\0\340\7\0\0\0\0\0\0"..., 16384, 477626368) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(258, "\25\302\0\0000\3\0\0B\261\3338\377\377\1\4[\r\0\0\30\0\f\0\340\7\0\0\0\0\0\0"..., 16384, 477626368) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0r\0\0\0\306\333\2638\377\377\1\4{Z\0\0\3\0\2\0\0\0\0\0\0\0+D"..., 16384, 475168768) = 16384
16:10:10 pread(256, "\25\302\0\0s\0\0\0\377\254\3338\377\377\1\4u\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384, 475185152) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0i\4\0\0P<\3338\377\377\1\4(\324\0\0=\2\0\0\30\1\0\0v\0301;"..., 16384, 480395264) = 16384
16:10:10 pread(258, "\25\302\0\0|\4\0\0\200\212\3338\377\377\1\4\25q\0\0L\2\0\0000\2\0\0Z(2;"..., 16384, 480444416) = 16384
16:10:10 pread(257, "\25\302\0\0\232\4\0\0<r\3338\377\377\1\4\345\354\0\0`\2\0\0`\4\0\0\301]3;"..., 16384, 478445568) = 16384
16:10:10 pread(257, "\25\302\0\0\301\4\0\0!{\3338\377\377\1\4\3\247\0\0\216\2\0\0\301\10\0\0r\3015;"..., 16384, 477511680) = 16384
16:10:10 pread(257, "\25\302\0\0\35\5\0\0005\254\3218\377\377\1\4\376\274\0\0\350\2\0\0\177\21\0\0\36\7\24;"..., 16384, 478756864) = 16384
16:10:10 pread(258, "\25\302\0\0\323\1\0\00040\3338\377\377\1\4\261\306\0\0R\3650;\n\5\1\0\342\225\0\0"..., 16384, 473874432) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(257, "\25\302\0\0T\2\0\0qD\2407\377\377\1\4\251a\0\0u\332\2047\0\0\0\0\0\0\0\0"..., 16384, 475201536) = 16384
16:10:10 pread(257, "\25\302\0\0U\2\0\0\262\342\2638\377\377\1\4U\226\0\0bracontrolfi"..., 16384, 475217920) = 16384
16:10:10 pread(258, "\25\302\0\0X\2\0\0 \201\2708\377\377\1\4\t:\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384, 476184576) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 480264192) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(258, "\25\302\0\0000\3\0\0B\261\3338\377\377\1\4[\r\0\0\30\0\f\0\340\7\0\0\0\0\0\0"..., 16384, 477626368) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(258, "\25\302\0\0000\3\0\0B\261\3338\377\377\1\4[\r\0\0\30\0\f\0\340\7\0\0\0\0\0\0"..., 16384, 477626368) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 472924160) = 16384
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(258, "\25\302\0\0)\0\0\0J\261\3338\377\377\1\4\365\343\0\0\0\0\0\0\0\0\0\0k\237\2047"..., 16384, 473972736) = 16384
16:10:10 pread(258, "\25\302\0\0000\3\0\0B\261\3338\377\377\1\4[\r\0\0\30\0\f\0\340\7\0\0\0\0\0\0"..., 16384, 477626368) = 16384
# rev /tmp/aa1 | cut -f1 -d'=' | rev | sed -e 's/$/+/g' -e '$s/+$//g'| xargs echo| bc -l
950272
--//可以读的文件句柄是256,257,258.
# ls -l /proc/1443/fd | grep 25[678]
lrwx------ 1 root root 64 2018-11-29 16:10:11 256 -> /dev/asm-diskf
lrwx------ 1 root root 64 2018-11-29 16:10:11 257 -> /dev/asm-diskg
lrwx------ 1 root root 64 2018-11-29 16:10:11 258 -> /dev/asm-diske
--//可以发现对应以上裸设备.
--//单独看两个:
16:10:10 pread(257, "\25\302\0\0'\0\0\0J\261\3338\377\377\1\4}O\0\0\0\0P\0\0\0\200\0\0\0\0\0"..., 16384, 473022464) = 16384
16:10:10 pread(257, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\355\376\0\0\0\0\0\0\0\4 \v+^\3665"..., 16384, 480264192) = 16384
$ man pread
PREAD(2) Linux Programmer's Manual PREAD(2)
NAME
pread, pwrite - read from or write to a file descriptor at a given offset
SYNOPSIS
#define _XOPEN_SOURCE 500
#include
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
--//第1个是句柄,第2个参数缓存地址指针,第3个是读取长度,第4个是偏移量。
473022464/1024/1024 = 451.10937500000000000000
480264192/1024/1024 = 458.01562500000000000000
--//以grid用户登录,访问asm实例:
SQL> column path format a40
SQL> select DISK_NUMBER,GROUP_NUMBER,PATH from v$asm_disk where GROUP_NUMBER=1 and DISK_NUMBER in(1,0,2) order by 1;
DISK_NUMBER GROUP_NUMBER PATH
----------- ------------ ----------------------------------------
0 1 /dev/asm-diske
1 1 /dev/asm-diskf
2 1 /dev/asm-diskg
SQL> SELECT disk_kffxp, au_kffxp, xnum_kffxp,GROUP_KFFXP,NUMBER_KFFXP FROM x$kffxp WHERE (au_kffxp=451 or au_kffxp=458) and disk_kffxp=2;
DISK_KFFXP AU_KFFXP XNUM_KFFXP GROUP_KFFXP NUMBER_KFFXP
---------- ---------- ---------- ----------- ------------
2 458 0 1 260
2 451 4 1 261
--//NUMBER_KFFXP对应的是260,261.
--//使用asmcmd查看:
$ rlwrap asmcmd -p
ASMCMD [+] > ls -l data/xxxxx/controlfile
Type Redund Striped Time Sys Name
CONTROLFILE UNPROT FINE 2018/08/20 01:00:00 Y Current.260.931438443
CONTROLFILE UNPROT FINE 2018/08/20 01:00:00 Y Current.261.931438443
--//如下查询:
SQL> column type format a12
SQL> select * from v$asm_file where TYPE='CONTROLFILE' order by type;
GROUP_NUMBER FILE_NUMBER COMPOUND_INDEX INCARNATION BLOCK_SIZE BLOCKS BYTES SPACE TYPE REDUND STRIPE CREATION_ MODIFICAT R PERMISSIONS USER_NUMBER USER_INCARNATION USERGROUP_NUMBER USERGROUP_INCARNATION PRIM MIRR HOT_READS HOT_WRITES HOT_BYTES_READ HOT_BYTES_WRITTEN COLD_READS COLD_WRITES COLD_BYTES_READ COLD_BYTES_WRITTEN
------------ ----------- -------------- ----------- ---------- ---------- ---------- ---------- ------------ ------ ------ --------- --------- - ---------------- ----------- ---------------- ---------------- --------------------- ---- ---- ---------- ---------- -------------- ----------------- ---------- ----------- --------------- ------------------
1 260 16777476 931438443 16384 1837 30097408 33554432 CONTROLFILE UNPROT FINE 24-DEC-16 20-AUG-18 U rw-rw-rw- 0 0 0 0 COLD COLD 0 0 0 0 3146179 13420526 5.1548E+10 2.1988E+11
1 261 16777477 931438443 16384 1837 30097408 33554432 CONTROLFILE UNPROT FINE 24-DEC-16 20-AUG-18 U rw-rw-rw- 0 0 0 0 COLD COLD 0 0 0 0 283440487 13420559 1.9953E+13 2.1988E+11
--//再次证明读取的是控制文件.
3.疑问:
# rev /tmp/aa1 | cut -f1 -d'=' | rev | sed -e 's/$/+/g' -e '$s/+$//g'| xargs echo| bc -l
950272
--//我跟踪看到的读950272.950272/1024 = 928K.
SYS@xxxxx1> @ viewsess 'physical read total'
NAME STATISTIC# VALUE SID
---------------------------------------------------------------------- ---------- ---------- ----------
physical read total IO requests 50 0 714
physical read total multi block requests 51 0 714
physical read total bytes optimized 53 0 714
physical read total bytes 55 0 714
SYS@xxxxx1> @ c.txt
'FLASHPCT;'||TRIM(CEIL(PERCENT_SPACE_USED))
-------------------------------------------------
flashpct;0
SYS@xxxxx1> @ viewsess 'physical read total'
NAME STATISTIC# VALUE SID
---------------------------------------------------------------------- ---------- ---------- ----------
physical read total IO requests 50 73 714
physical read total multi block requests 51 15 714
physical read total bytes optimized 53 0 714
physical read total bytes 55 13828096 714
--//13828096/1024/1024 = 13.1875M,为什么呢?
# wc /tmp/aa1
58 422 7310 /tmp/aa1
--//我重复使用strace做了跟踪:
# strace -p 24584 -t -o /tmp/aa2
# strace -p 24584 -t -c
Process 24584 attached - interrupt to quit
^CProcess 24584 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
-nan 0.000000 0 4 read
-nan 0.000000 0 2 write
-nan 0.000000 0 2 open
-nan 0.000000 0 2 close
-nan 0.000000 0 2 mmap
-nan 0.000000 0 58 pread
-nan 0.000000 0 4 semctl
-nan 0.000000 0 20 getrusage
-nan 0.000000 0 16 times
-nan 0.000000 0 16 io_getevents
-nan 0.000000 0 15 io_submit
-nan 0.000000 0 2 semtimedop
------ ----------- ----------- --------- --------- ----------------
100.00 0.000000 143 total
--//可以看到io_submit异步IO操作.等于15,正好和physical read total multi block requests的数值一致.
--//pread=58(与wc /tmp/aa1看到一致),io_submit=15,相加正好与physical read total IO requests=73一致.不知道是否是巧合.我对异步io操作的函数不熟悉.
16:45:26 io_submit(140402112221184, 8, {{0x7fb1e81f8210, 0, 0, 0, 256}, {0x7fb1e81f8480, 0, 0, 0, 258},
{0x7fb1e81f86f0, 0, 0, 0, 257}, {0x7fb1e81f8960, 0, 0, 0, 258},
{0x7fb1e81f8bd0, 0, 0, 0, 257}, {0x7fb1e81f8e40, 0, 0, 0, 256},
{0x7fb1e81f90b0, 0, 0, 0, 258}, {0x7fb1e81f9320, 0, 0, 0, 257}}) = 8
--//猜测里面的256,257,258对应文件句柄.
# man io_submit
IO_SUBMIT(2) Linux Programmer's Manual IO_SUBMIT(2)
NAME
io_submit - submit asynchronous I/O blocks for processing
SYNOPSIS
#include <libaio.h>
int io_submit(aio_context_t ctx_id, long nr, struct iocb **iocbpp);
Link with -laio.
DESCRIPTION
io_submit() queues nr I/O request blocks for processing in the AIO context ctx_id. iocbpp should be an array of
nr AIO control blocks, which will be submitted to context ctx_id.
# man io_getevents
IO_GETEVENTS(2) Linux Programmer's Manual IO_GETEVENTS(2)
NAME
io_getevents - read asynchronous I/O events from the completion queue
SYNOPSIS
#include <linux/time.h>
#include <libaio.h>
int io_getevents(aio_context_t ctx_id, long min_nr, long nr,
struct io_event *events, struct timespec *timeout);
Link with -laio.
DESCRIPTION
io_getevents() attempts to read at least min_nr events and up to nr events from the completion queue of the AIO
context specified by ctx_id. timeout specifies the amount of time to wait for events, where a NULL timeout waits
until at least min_nr events have been seen. Note that timeout is relative and will be updated if not NULL and
the operation blocks.
# egrep 'io_submit|io_getevents' /tmp/aa2
16:45:26 io_submit(140402112221184, 8, {{0x7fb1e81f8210, 0, 0, 0, 256}, {0x7fb1e81f8480, 0, 0, 0, 258}, {0x7fb1e81f86f0, 0, 0, 0, 257}, {0x7fb1e81f8960, 0, 0, 0, 258}, {0x7fb1e81f8bd0, 0, 0, 0, 257}, {0x7fb1e81f8e40, 0, 0, 0, 256}, {0x7fb1e81f90b0, 0, 0, 0, 258}, {0x7fb1e81f9320, 0, 0, 0, 257}}) = 8
16:45:26 io_getevents(140402112221184, 8, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 81920, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}}, {600, 0}) = 8
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 257}, {0x7fb1e81f8480, 0, 0, 0, 256}, {0x7fb1e81f86f0, 0, 0, 0, 258}, {0x7fb1e81f8960, 0, 0, 0, 257}, {0x7fb1e81f8bd0, 0, 0, 0, 258}, {0x7fb1e81f8e40, 0, 0, 0, 257}, {0x7fb1e81f90b0, 0, 0, 0, 256}, {0x7fb1e81f9320, 0, 0, 0, 258}, {0x7fb1e81f9590, 0, 0, 0, 257}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 81920, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 49152, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}}, {600, 0}) = 9
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 257}, {0x7fb1e81f8480, 0, 0, 0, 256}, {0x7fb1e81f86f0, 0, 0, 0, 258}, {0x7fb1e81f8960, 0, 0, 0, 257}, {0x7fb1e81f8bd0, 0, 0, 0, 258}, {0x7fb1e81f8e40, 0, 0, 0, 257}, {0x7fb1e81f90b0, 0, 0, 0, 256}, {0x7fb1e81f9320, 0, 0, 0, 258}, {0x7fb1e81f9590, 0, 0, 0, 257}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 81920, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 49152, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}}, {600, 0}) = 9
16:45:26 io_submit(140402112221184, 5, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 258}, {0x7fb1e81f8bd0, 0, 0, 0, 257}}) = 5
16:45:26 io_getevents(140402112221184, 5, 128, {{0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 81920, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 49152, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}}, {600, 0}) = 5
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 258}, {0x7fb1e81f8bd0, 0, 0, 0, 257}, {0x7fb1e81f8e40, 0, 0, 0, 256}, {0x7fb1e81f90b0, 0, 0, 0, 258}, {0x7fb1e81f9320, 0, 0, 0, 257}, {0x7fb1e81f9590, 0, 0, 0, 256}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}}, {0, 0}) = 1
16:45:26 io_getevents(140402112221184, 8, 128, {{0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 114688, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}}, {600, 0}) = 8
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 257}, {0x7fb1e81f8bd0, 0, 0, 0, 256}, {0x7fb1e81f8e40, 0, 0, 0, 258}, {0x7fb1e81f90b0, 0, 0, 0, 257}, {0x7fb1e81f9320, 0, 0, 0, 256}, {0x7fb1e81f9590, 0, 0, 0, 258}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 114688, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}}, {600, 0}) = 9
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 257}, {0x7fb1e81f8bd0, 0, 0, 0, 256}, {0x7fb1e81f8e40, 0, 0, 0, 258}, {0x7fb1e81f90b0, 0, 0, 0, 257}, {0x7fb1e81f9320, 0, 0, 0, 256}, {0x7fb1e81f9590, 0, 0, 0, 258}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 114688, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}}, {600, 0}) = 9
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 257}, {0x7fb1e81f8bd0, 0, 0, 0, 256}, {0x7fb1e81f8e40, 0, 0, 0, 258}, {0x7fb1e81f90b0, 0, 0, 0, 257}, {0x7fb1e81f9320, 0, 0, 0, 256}, {0x7fb1e81f9590, 0, 0, 0, 258}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 114688, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}}, {600, 0}) = 9
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 257}, {0x7fb1e81f8bd0, 0, 0, 0, 256}, {0x7fb1e81f8e40, 0, 0, 0, 258}, {0x7fb1e81f90b0, 0, 0, 0, 257}, {0x7fb1e81f9320, 0, 0, 0, 256}, {0x7fb1e81f9590, 0, 0, 0, 258}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}}, {0, 0}) = 1
16:45:26 io_getevents(140402112221184, 8, 128, {{0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 114688, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}}, {600, 0}) = 8
16:45:26 io_submit(140402112221184, 3, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}}) = 3
16:45:26 io_getevents(140402112221184, 3, 128, {{0x7fb1e81f86f0, 0x7fb1e81f86f0, 114688, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 49152, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}}, {600, 0}) = 3
16:45:26 io_submit(140402112221184, 3, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 258}}) = 3
16:45:26 io_getevents(140402112221184, 3, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 114688, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 81920, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}}, {600, 0}) = 3
16:45:26 io_submit(140402112221184, 6, {{0x7fb1e81f8210, 0, 0, 0, 257}, {0x7fb1e81f8480, 0, 0, 0, 258}, {0x7fb1e81f86f0, 0, 0, 0, 257}, {0x7fb1e81f8960, 0, 0, 0, 256}, {0x7fb1e81f8bd0, 0, 0, 0, 258}, {0x7fb1e81f8e40, 0, 0, 0, 257}}) = 6
16:45:26 io_getevents(140402112221184, 6, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 114688, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}}, {600, 0}) = 6
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 257}, {0x7fb1e81f8480, 0, 0, 0, 258}, {0x7fb1e81f86f0, 0, 0, 0, 257}, {0x7fb1e81f8960, 0, 0, 0, 256}, {0x7fb1e81f8bd0, 0, 0, 0, 258}, {0x7fb1e81f8e40, 0, 0, 0, 257}, {0x7fb1e81f90b0, 0, 0, 0, 256}, {0x7fb1e81f9320, 0, 0, 0, 258}, {0x7fb1e81f9590, 0, 0, 0, 257}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 114688, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}}, {600, 0}) = 9
16:45:26 io_submit(140402112221184, 7, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 258}, {0x7fb1e81f8bd0, 0, 0, 0, 257}, {0x7fb1e81f8e40, 0, 0, 0, 256}, {0x7fb1e81f90b0, 0, 0, 0, 258}}) = 7
16:45:26 io_getevents(140402112221184, 7, 128, {{0x7fb1e81f8210, 0x7fb1e81f8210, 81920, 0}, {0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 16384, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}}, {600, 0}) = 7
16:45:26 io_submit(140402112221184, 9, {{0x7fb1e81f8210, 0, 0, 0, 258}, {0x7fb1e81f8480, 0, 0, 0, 257}, {0x7fb1e81f86f0, 0, 0, 0, 256}, {0x7fb1e81f8960, 0, 0, 0, 258}, {0x7fb1e81f8bd0, 0, 0, 0, 257}, {0x7fb1e81f8e40, 0, 0, 0, 256}, {0x7fb1e81f90b0, 0, 0, 0, 258}, {0x7fb1e81f9320, 0, 0, 0, 257}, {0x7fb1e81f9590, 0, 0, 0, 256}}) = 9
16:45:26 io_getevents(140402112221184, 9, 128, {{0x7fb1e81f86f0, 0x7fb1e81f86f0, 131072, 0}, {0x7fb1e81f8210, 0x7fb1e81f8210, 49152, 0}, {0x7fb1e81f8480, 0x7fb1e81f8480, 131072, 0}, {0x7fb1e81f8e40, 0x7fb1e81f8e40, 131072, 0}, {0x7fb1e81f9590, 0x7fb1e81f9590, 81920, 0}, {0x7fb1e81f8bd0, 0x7fb1e81f8bd0, 131072, 0}, {0x7fb1e81f9320, 0x7fb1e81f9320, 131072, 0}, {0x7fb1e81f90b0, 0x7fb1e81f90b0, 131072, 0}, {0x7fb1e81f8960, 0x7fb1e81f8960, 131072, 0}}, {600, 0}) = 9
--//我的感觉把io_getevents 函数里面的16384,131072加起来就是读取的字节总数.
# grep 'io_getevents' /tmp/aa2 | sed '1,$s/{/\^J/g' | grep "^0x" | cut -f3 -d, | sed -e 's/$/+/g' -e '$s/+$//g'| xargs echo| bc -l
12877824
--//12877824+950272 = 13828096
--//^_^.正好和如下看到的一致.佩服一下自己..^_^.
SYS@xxxxx1> @ viewsess 'physical read total'
NAME STATISTIC# VALUE SID
---------------------------------------------------------------------- ---------- ---------- ----------
physical read total IO requests 50 73 714
physical read total multi block requests 51 15 714
physical read total bytes optimized 53 0 714
physical read total bytes 55 13828096 714
---//简单说明一下以上命令.# grep 'io_getevents' /tmp/aa2 | sed '1,$s/{/\^J/g' | grep "^0x" | cut -f3 -d, | sed -e 's/$/+/g' -e '$s/+$//g'| xargs echo| bc -l
1. grep 'io_getevents' /tmp/aa2 --//过滤出来io_getevents函数.
2. sed '1,$s/{/\^J/g' --//将{替换为回车,^J在linux下先输入ctrl+v在按ctrl+enter就可以了,前面的\避免转义.
3. grep "^0x" --//过滤0x开头的行.
# grep 'io_getevents' /tmp/aa2 | sed '1,$s/{/\^J/g' | grep "^0x" | head -1
0x7fb1e81f8210, 0x7fb1e81f8210, 16384, 0},
4.cut -f3 -d, --//以,为分隔符,取第3个字段.也就是里面16384.输出.
5.sed -e 's/$/+/g' -e '$s/+$//g'--//在每行结尾加入+,最后一行删除+号.
# grep 'io_getevents' /tmp/aa2 | sed '1,$s/{/\^J/g' | grep "^0x" | cut -f3 -d, | sed -e 's/$/+/g' -e '$s/+$//g' | tail -5
81920+
131072+
131072+
131072+
131072
6.xargs echo --//也就是把多行变成一行,这里注意命令行缓存大小,一般情况下不会溢出的.
7.bc -l --//也就是计算.
--//顺便说一下bash shell编程一般不考虑执行效率,仅仅考虑快速编程,完成对应的工作.估计awk也许更好.
4.总结:
--//写这篇blog我参考以前遇到的问题,链接:http://blog.itpub.net/267265/viewspace-751787/,当时我应该看到读取调用函数是pread.
--//这个函数应该不支持异步IO.仅仅io_submit,io_getevents才表明系统执行异步IO.
--//也就是讲实际上就算是asm系统,实际上有1部分读取使用pread函数.而不是全部使用异步IO.
[20181130]control file sequential read.txt的更多相关文章
- control file sequential read 等待事件
可能的原因 control file sequential read Reading from the control file. This happens in many cases. For ex ...
- High waits on control file sequential read
High waits on control file sequential read (文档 ID 2277867.1) In case we run into an issue where cont ...
- 10g ASM下修改control file的位置
1.查看位置以及name是否正确 SQL> sho parameter name NAME TYPE VALUE ------------------------------------ --- ...
- ORA-00245: control file backup failed; target is likely on a local file system
ORACLE11G RAC alert报错如下:Errors in file /u01/app/oracle/diag/rdbms/dljyzs/dljyzs1/trace/dljyzs1_ora_8 ...
- could not open extension control file "/usr/share/postgresql/9.1/extension/plpythonu.control": No such file or directory
在使用createlang 安装plpythonu的时候出现如下错误:could not open extension control file "/usr/share/postgresql ...
- ORA-00245: control file backup failed; target is likely on a local file system (转载)
环境:DB VERSION: 11.2.0.4.0RAC 2 nodes 问题:邮件显示rman备份失败,查看rman备份日志 Starting Control File and SPFILE Aut ...
- ORA-01207: file is more recent than control file -
OS: [root@yoon ~]# more /etc/oracle-releaseOracle Linux Server release 5.7 DB: Oracle Database 11g E ...
- ORACLE CONTROL FILE 笔记
控制文件包含的信息: 1.数据库的名字 2.联机重做日志文件和数据文件的名字和位置 3.数据库创建的时间戳 4.当前日志的序列号 5.检查点信息 6.备份信息 TIP:数据 ...
- db file sequential read (数据文件顺序读取)
转载:http://www.dbtan.com/2010/04/db-file-sequential-read.html db file sequential read (数据文件顺序读取): db ...
随机推荐
- Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 上一篇总结了下ArrayList .LinkedList和Vector比较,今天泥瓦匠总结下Hash ...
- 静态和实例方法区别-java
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...
- 【Python】正则表达式简单教程
说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...
- 视频人脸检测——Dlib版(六)
往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭 ...
- 记录一下对swiper4.x.js在H5单页中的滑动优化
应用场景 仅仅应用于单页应用的滑动操作,用swiper4.x接管页面的滚动操作.用来支持顶部和尾部的回弹效果,进一步来支持常见那种下拉刷新动画效果.不适用于轮播图那种应用场景. 虽然只是针对swipe ...
- backbond Model方法(set)
backbond的Model,其中存在一些操作属性的方法,而在这些方法中,最重要的就是set方法,其余的方法大部分都基于这个方法实现的,在backbond开发版中,也说了该方法是model中的核心方法 ...
- Code First下迁移数据库更改
第一步:Enable-Migrations -ContextTypeName [你的项目名].[你的数据库上下文] -Force 其中-Force为强制覆盖现有迁移配置 第二步:Add-Migrati ...
- SQL--server事物
事物 特点: 1.原子性:事物必须是一个自动工作的单元, 2.一致性:事物结束的时候,所有内部数据都是正确的 3.隔离性:并发多个事物时,各个事物不干涉内部数据,处理的都是另外一个事物处理之前或之后的 ...
- python之isinstance内建函数
语句: isinstance(object,type) 作用: 来判断一个对象是否是一个已知的类型. 解释: 其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名 ...
- vb.net 水晶報表CrystalReport 動態設定資料庫來源
沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.confi ...