墨墨导读:某客户检查表空间使用率的SQL成了TOP SQL,经判断主要为control file sequential read延迟增加导致。这里不讨论怎么降低控制文件读,重点记录一下怎么定位控制文件热点块或者说读取延迟高的块所在的ASM磁盘。

从AWR中看到control file sequential read为TOP EVENT,占了89%的DB TIME.对比之前的Waits,并没有明显增加,但延迟从us级别增加到ms级别,增长明显。

iostat 定位到sdad为热点盘,延迟明显。

热点盘对应用asm  disk名为asmdskemc15。

sdad                  65:208  0    2T  0 disk
└─asmdskemc15        253:14   0    2T  0 mpath

从ASH统计control file sequential read主要慢在40,42两个block,推测control file sequential read读取的块在热点盘上。

知识点

1、某些x的信息来自控制文件,每次读取要执行oracle内核中的代码,读取控制文件。

2、一些x$是控制文件中的内容,控制文件读取后并不会缓存,每次调用都会产生物理读下面连续两次查询xkccfn,可以看到控制文件相应的块重复产生物理读。

下面连续两次查询x$kccfn,可以看到控制文件相应的块重复产生物理读。

select * from x$kccfn;oracle@perf-monitor ~$cat /home/app/oracle/diag/rdbms/perfcdb/perfcdb/trace/perfcdb_ora_1841.trc|grep "control file sequential read"
WAIT #140285876517504: nam='control file sequential read' ela= 14 file#=0 block#=1 blocks=1 obj#=-1 tim=67389713130731
WAIT #140285876517504: nam='control file sequential read' ela= 4 file#=0 block#=15 blocks=1 obj#=-1 tim=67389713130755
WAIT #140285876517504: nam='control file sequential read' ela= 4 file#=0 block#=17 blocks=1 obj#=-1 tim=67389713130769
WAIT #140285876517504: nam='control file sequential read' ela= 5 file#=0 block#=90 blocks=1 obj#=-1 tim=67389713130785
WAIT #140285876517504: nam='control file sequential read' ela= 5 file#=0 block#=92 blocks=1 obj#=-1 tim=67389713131972WAIT #140285876517504: nam='control file sequential read' ela= 12 file#=0 block#=1 blocks=1 obj#=-1 tim=67389714364091
WAIT #140285876517504: nam='control file sequential read' ela= 6 file#=0 block#=15 blocks=1 obj#=-1 tim=67389714364128
WAIT #140285876517504: nam='control file sequential read' ela= 5 file#=0 block#=17 blocks=1 obj#=-1 tim=67389714364152
WAIT #140285876517504: nam='control file sequential read' ela= 7 file#=0 block#=90 blocks=1 obj#=-1 tim=67389714364177
WAIT #140285876517504: nam='control file sequential read' ela= 7 file#=0 block#=92 blocks=1 obj#=-1 tim=67389714365201

下面验证该2个block是否在热点盘上。

注意control file为细粒度条带。

借用官方文档上的两张图说明Fine-Grained Striping, Coarse-Grained Striping条带的区别。

Oracle ASM Fine-Grained Striping

Oracle ASM Coarse-Grained Striping

查看ontrol file asm file number。

SQL> select NAME from v$controlfile;NAME--------------------------------------------------+DATADG/HBODS/CONTROLFILE/current.257.1017306195SQL> select group_number,name from v$asm_diskgroup;GROUP_NUMBER NAME------------ ------------------------------           1 CRSDG           2 DATADG           3 DATADG2

确定AU大小。

grid@hbods1:/home/grid$ kfed read /dev/mapper/asmdskemc14
kfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEADkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:                       0 ; 0x004: blk=0kfbh.block.obj:              2147483668 ; 0x008: disk=20kfbh.check:                  3074063759 ; 0x00c: 0xb73a7d8fkfbh.fcn.base:                 20675314 ; 0x010: 0x013b7af2kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kfdhdb.driver.provstr:         ORCLDISK ; 0x000: length=8kfdhdb.driver.reserved[0]:            0 ; 0x008: 0x00000000kfdhdb.driver.reserved[1]:            0 ; 0x00c: 0x00000000kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000kfdhdb.compat:                318767104 ; 0x020: 0x13000000kfdhdb.dsknum:                       20 ; 0x024: 0x0014kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNALkfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBERkfdhdb.dskname:             DATADG_0020 ; 0x028: length=11kfdhdb.grpname:                  DATADG ; 0x048: length=6kfdhdb.fgname:              DATADG_0020 ; 0x068: length=11。。。。。。kfdhdb.secsize:                     512 ; 0x0b8: 0x0200kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000  <<<au size

查看控制文件每个AU对应的磁盘,这里借用了之前dd抽取asm文件的一个角本。

SQL> set lines 1000
SQL> select INCARN_KFFXP,XNUM_KFFXP,LXN_KFFXP,DISK_KFFXP,AU_KFFXP,'dd if='||b.path||' of=/tmp/file'||NUMBER_KFFXP||'.dbf'||' conv=notrunc bs=1048576 skip='||AU_KFFXP||' seek='||XNUM_KFFXP||' count=1' from x$kffxp a,  2  v$asm_disk b  wHere inst_id=1 and GROUP_KFFXP=2 AND NUMBER_KFFXP=257   3  and a.GROUP_KFFXP=b.GROUP_NUMBER and a.DISK_KFFXP=b.DISK_NUMBER and LXN_KFFXP=0 order by XNUM_KFFXP;order by XNUM_KFFXP,LXN_KFFXPINCARN_KFFXP XNUM_KFFXP  LXN_KFFXP DISK_KFFXP   AU_KFFXP 'DDIF='||B.PATH||'OF=/TMP/FILE'||NUMBER_KFFXP||'.DBF'||'CONV=NOTRUNCBS=1048576SKIP='||AU_KFFXP||'SEEK='||XNUM_KFFXP||'COUNT=1'------------ ---------- ---------- ---------- ---------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  1017306195          0          0         20          5 dd if=/dev/mapper/asmdskemc14 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=5 seek=0 count=1  1017306195          1          0         22          5 dd if=/dev/mapper/asmdskemc16 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=5 seek=1 count=1  1017306195          2          0         23          6 dd if=/dev/mapper/asmdskemc17 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=2 count=1  1017306195          3          0         14          6 dd if=/dev/mapper/asmdskemc5 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=3 count=1  1017306195          4          0         18          6 dd if=/dev/mapper/asmdskemc12 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=4 count=1  1017306195          5          0         21          6 dd if=/dev/mapper/asmdskemc15 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=5 count=1 <<<1017306195          6          0         11          6 dd if=/dev/mapper/asmdskemc2 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=6 count=1  1017306195          7          0         17          6 dd if=/dev/mapper/asmdskemc11 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=7 count=1  1017306195          8          0         12          6 dd if=/dev/mapper/asmdskemc3 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=8 count=1  1017306195          9          0         19          6 dd if=/dev/mapper/asmdskemc13 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=9 count=1  1017306195         10          0         13          6 dd if=/dev/mapper/asmdskemc4 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=10 count=1  1017306195         11          0         10          7 dd if=/dev/mapper/asmdskemc1 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=11 count=1  1017306195         12          0         24          6 dd if=/dev/mapper/asmdskemc18 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=12 count=1  1017306195         13          0         15          6 dd if=/dev/mapper/asmdskemc9 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=13 count=11017306195         14          0         20          6 dd if=/dev/mapper/asmdskemc14 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=14 count=1  1017306195         15          0         16          6 dd if=/dev/mapper/asmdskemc10 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=15 count=1  1017306195         16          0         22          6 dd if=/dev/mapper/asmdskemc16 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=16 count=1  1017306195         17          0         23          7 dd if=/dev/mapper/asmdskemc17 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=17 count=1  1017306195         18          0         14          7 dd if=/dev/mapper/asmdskemc5 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=18 count=1  1017306195         19          0         18          7 dd if=/dev/mapper/asmdskemc12 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=19 count=1  1017306195         20          0         21          7 dd if=/dev/mapper/asmdskemc15 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=20 count=1  1017306195         21          0         11          7 dd if=/dev/mapper/asmdskemc2 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=21 count=1  1017306195         22          0         17          7 dd if=/dev/mapper/asmdskemc11 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=22 count=1  1017306195         23          0         12          7 dd if=/dev/mapper/asmdskemc3 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=23 count=1  1017306195         24          0         19          7 dd if=/dev/mapper/asmdskemc13 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=24 count=1  1017306195         25          0         13          7 dd if=/dev/mapper/asmdskemc4 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=25 count=1  1017306195         26          0         10         12 dd if=/dev/mapper/asmdskemc1 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=12 seek=26 count=1  1017306195         27          0         24          7 dd if=/dev/mapper/asmdskemc18 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=27 count=1  1017306195         28          0         15          7 dd if=/dev/mapper/asmdskemc9 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=28 count=1  1017306195         29          0         20          7 dd if=/dev/mapper/asmdskemc14 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=29 count=1  1017306195         30          0         16          7 dd if=/dev/mapper/asmdskemc10 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=30 count=1  1017306195         31          0         22          7 dd if=/dev/mapper/asmdskemc16 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=7 seek=31 count=132 rows selected

确定控制文件条带粒度,精细条带的大小,条带的宽度,用来计算BLOCK 40,42在哪个AU的哪个位置上。

隐含参数_asm_stripesize 代表了精细条带的大小, 默认为 128K, 隐含参数,_asm_stripewidth 代表了条带的宽度, 默认为 8。

SQL> select * from v$asm_file where FILE_NUMBER=257 and GROUP_NUMBER=2;
GROUP_NUMBER FILE_NUMBER COMPOUND_INDEX INCARNATION BLOCK_SIZE     BLOCKS      BYTES      SPACE TYPE                                                             REDUND STRIPE CREATION_DATE     MODIFICATION_DATE 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 FILEGROUP_NUMBER FILEGROUP_INCARNATION R PARENT_FILNUM PARENT_FILNUMINC------------ ----------- -------------- ----------- ---------- ---------- ---------- ---------- ---------------------------------------------------------------- ------ ------ ----------------- ----------------- - ---------------- ----------- ---------------- ---------------- --------------------- ---- ---- ---------- ---------- -------------- ----------------- ---------- ----------- --------------- ------------------ ---------------- --------------------- - ------------- ----------------    CON_ID----------           2         257       33554689  1017306195      16384       1723   28229632   33554432 CONTROLFILE                                                      UNPROT FINE   20190826 09:03:14 20201110 20:00:00 U rw-rw-rw-                  0                0                0                     0 COLD COLD          0          0              0                 0          0           0               0                  0                0                     0 N             0                0         0STRIPE  FINE 细粒度条带SQL> @p _asm_stripesizeNAME----------------------------------------VALUE----------------------------------------_asm_stripesize131072SQL> @p _asm_stripewidthNAME----------------------------------------VALUE----------------------------------------_asm_stripewidth8

确定控制文件BLOCK 40 所在 AU,编号从0开始,计算得到BLOCK 40在AU5上。

In [14]: 16384.0*(40)/131072
Out[14]: 5.0

确定控制文件BLOCK 40 所在 AU  的第几个block。

In [17]: 16384.0*(40)%131072/16384
Out[17]: 0.0

将控制文件的AU5 DD出来,AU5就在asmdskemc15上(前面看到的热点盘)。

if=/dev/mapper/asmdskemc15 of=/tmp/file257.dbf conv=notrunc bs=1048576 skip=6 seek=5 count=1

控制文件CP出来。

grid@test1:/home/grid$ asmcmdASMCMD> cp +DATADG/TEST/CONTROLFILE/current.257.1017306195 /home/grid/current.257.1017306195 copying +DATADG/TEST/CONTROLFILE/current.257.1017306195 -> /home/grid/current.257.1017306195ASMCMD> exit

对比刚刚自己计算,dd出来的块,可以确定与CP出来的一致,从而判断控制文件。BLOCK 40,42就在热点盘上,导致 control file sequential read 延迟增加,又因控制文件无缓存,该问题特别明显。

--control file cp 副本block 40
dd if=/home/grid/current.257.1017306195 bs=16384 skip=40 count=1 |hexdump -C|head -10grid@hbods1:/home/grid$ dd if=/home/grid/current.257.1017306195 bs=16384 skip=40 count=1 |hexdump -C|head -101+0 records in1+0 records out16384 bytes (16 kB) copied, 0.000298896 s, 54.8 MB/s00000000  15 c2 00 00 28 00 00 00  4f 09 66 00 ff ff 01 04  |....(...O.f.....|   <<<offset 4 block#   ,28 00 00 00  === 00000028 === 4000000010  04 10 00 00 00 00 18 31  f3 68 80 20 31 02 40 00  |.......1.h. 1.@.|00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 02  |................|00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|00000040  00 00 00 00 00 00 00 00  18 00 c2 04 00 00 00 00  |................|00000050  00 00 00 00 00 00 00 00  40 00 00 00 00 00 e0 be  |........@.......|00000060  ff ff ff ff 3f ff ff ff  ff ff ff ff ff ff ff ff  |....?...........|00000070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff 00  |................|00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|*---从asm disk dd出的的 block 40dd if=/tmp/file257_au6.dbf bs=16384 skip=0 count=1|hexdump -C| head -10grid@hbods1:/home/grid$ dd if=/tmp/file257_au6.dbf bs=16384 skip=0 count=1|hexdump -C| head -101+0 records in1+0 records out16384 bytes (16 kB) copied, 0.000184142 s, 89.0 MB/s00000000  15 c2 00 00 28 00 00 00  b1 07 66 00 ff ff 01 04  |....(.....f.....|  <<<offset 4 block#   ,28 00 00 00  === 00000028 === 4000000010  0c 10 00 00 00 00 18 31  f3 68 80 20 31 02 40 00  |.......1.h. 1.@.|00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 02  |................|00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|00000040  00 00 00 00 00 00 00 00  10 00 42 04 00 00 00 00  |..........B.....|00000050  00 00 00 00 00 00 00 00  40 00 00 00 00 00 e0 be  |........@.......|00000060  ff ff ff ff 3f ff ff ff  ff ff ff ff ff ff ff ff  |....?...........|00000070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff 7f 00  |................|00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|--ontrol file cp 副本 block 42grid@hbods1:/home/grid$ dd if=/home/grid/current.257.1017306195 bs=16384 skip=42 count=1 |hexdump -C|head -101+0 records in1+0 records out16384 bytes (16 kB) copied, 0.00019117 s, 85.7 MB/s00000000  15 c2 00 00 2a 00 00 00  4f 09 66 00 ff ff 01 04  |....*...O.f.....|00000010  ee 5a 00 00 00 00 00 00  00 00 00 00 50 dc a2 3c  |.Z..........P..<|00000020  48 42 4f 44 53 00 00 00  00 00 00 00 be 00 40 00  |HBODS.........@.|00000030  00 40 40 00 00 00 00 00  00 00 00 00 01 00 00 00  |.@@.............|00000040  00 00 00 00 50 dc a2 3c  00 00 00 00 00 00 00 00  |....P..<........|00000050  00 00 00 00 00 00 00 00  00 00 00 13 b5 03 00 00  |................|00000060  b5 03 00 00 02 00 00 00  85 3f 70 21 00 80 69 0f  |.........?p!..i.|00000070  02 00 02 00 02 00 01 00  06 00 00 00 00 00 00 00  |................|---从asm disk dd出的的 block 42grid@hbods1:/home/grid$ dd if=/tmp/file257_au6.dbf bs=16384 skip=2 count=1|hexdump -C| head -101+0 records in1+0 records out16384 bytes (16 kB) copied, 0.000276328 s, 59.3 MB/s00000000  15 c2 00 00 2a 00 00 00  b1 07 66 00 ff ff 01 04  |....*.....f.....|00000010  fb bb 00 00 00 00 00 00  00 00 00 00 50 dc a2 3c  |............P..<|00000020  48 42 4f 44 53 00 00 00  00 00 00 00 be 00 40 00  |HBODS.........@.|00000030  00 40 40 00 00 00 00 00  00 00 00 00 01 00 00 00  |.@@.............|00000040  00 00 00 00 50 dc a2 3c  00 00 00 00 00 00 00 00  |....P..<........|00000050  00 00 00 00 00 00 00 00  00 00 00 13 b5 03 00 00  |................|00000060  b5 03 00 00 02 00 00 00  85 3f 70 21 00 80 69 0f  |.........?p!..i.|00000070  02 00 02 00 02 00 01 00  06 00 00 00 00 00 00 00  |................|00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|*

没错,40,42号块就在asmdskemc15这个盘上。

sdad                  65:208  0    2T  0 disk
└─asmdskemc15        253:14   0    2T  0 mpath

sdad就是最忙的盘,busy 100%,延迟100ms以上,这个延迟已经很严重。

- end -


作者

范计杰,云和恩墨技术顾问,5年大型ORACLE数据库维护经验,擅长性能调优、故障处理等。

墨天轮原文链接:https://www.modb.pro/db/45742(复制到浏览器或者点击“阅读原文”立即查看)

推荐阅读:267页!2020年度数据库技术年刊

推荐下载:2020数据技术嘉年华PPT下载

2020数据技术嘉年华近50个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2020DTC”获得!

视频号,新的分享时代,关注我们,看看有什么新发现?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

实战经验:如何定位控制文件热点块,即读取延迟高的块所在的ASM磁盘相关推荐

  1. (转)MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...

    标签:服务器 数据库 老男孩 高薪技能 一线城市 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangweilinux.bl ...

  2. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...

    原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师-老男孩专家拥有16年一线实战经验,我当然不能和我的老师平起平坐 ...

  3. C++软件异常的常见原因分析与总结(实战经验分享)

    目录 1.概述 2.引发软件异常的常见原因 2.1.变量未初始化 2.2.死循环 2.3.内存越界 2.4.内存泄漏 2.5.空指针与野指针 2.6.内存访问违例 2.7.栈内存被当成堆内存去释放 2 ...

  4. Pinterest 谈实战经验:如何在两年内实现零到数百亿的月访问

    Pinterest 谈实战经验:如何在两年内实现零到数百亿的月访问 发表于2013-04-17 17:20| 5639次阅读| 来源High Scalability| 46 条评论| 作者Todd H ...

  5. ASP.NET Core amp; Docker 实战经验分享

    一.前言 最近一直在研究和实践ASP.NET Core.Docker.持续集成.在ASP.NET Core 和 Dcoker结合下遇到了一些坑,在此记录和分享,希望对大家有一些帮助. 二.中间镜像 我 ...

  6. 工业视觉智能实战经验之IVI算法框架2.0

    简介: 工业视觉智能团队在交付了多个工业视觉智能质检项目后,发现了工业视觉智能的共性问题和解法,打造了工业视觉智能平台,通过平台的方式积累和提升工业视觉的通用能力.在平台建设上最核心的能力是算法能力. ...

  7. button 样式_缩减 SCSS 50%样式代码的 14 条实战经验

    原标题:缩减 SCSS 50%样式代码的 14 条实战经验 作者:feishi123 前言 Sass是CSS3语言的扩展,它能帮你更省事地写出更好的样式表,使你摆脱重复劳动,使工作更有创造性.因为你能 ...

  8. 【Python】Python实战从入门到精通之六 -- 教你读取文件

    本文是<Python实战从入门到精通>系列之第6篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

  9. 实战经验:从内存故障到CPU过高诊断-直播预告

    主题摘要 本次主题结合分享者多年来在主管运维工作中的故障处理实战经验,通过5个独立且有代表性的Oracle故障案例,深入浅出地解读故障分析思路并挖出故障背后的真相,继而抛砖引玉介绍Oracle故障分析 ...

最新文章

  1. 网络数据包分析软件Wireshark简介
  2. Android View体系(一)视图坐标系
  3. 用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API
  4. jQuery的name选择器 模糊匹配
  5. scrapy爬虫命令
  6. Android蜗牛睡眠技术文档,蜗牛睡眠app 问题提问集中贴 常见问题汇总
  7. CE 开启 DBVM
  8. php 数字转人民币,php数字转人民币金额大写
  9. 智商高的人情商都低?這個人來告訴你
  10. 配置IIS,以及添加网站
  11. 用递归实现阶乘计算器
  12. 汉王科技在人民大会堂响起自主品牌的高亢之声
  13. PHP微信根据订单号查询支付结果,9. PHP接入微信支付订单、退款订单、转款订单的查询...
  14. c++ primer plus第六版第六章编程练习
  15. php 网址尾部带斜杠和不带区别,网址中带斜杠和不带斜杠的区别
  16. ChatGPT神器免费使用,告别昂贵低效工具
  17. 台式机装苹果系统_iOS系统如何安装外来App?教你一键设置!苹果手机怎么装第三方软件?...
  18. mmm monitor mysql_MySQL(MMM架构使用)
  19. 中国科技大学科学岛计算机系,招生信息 | 中国科学技术大学科学岛优秀大学生夏令营通知...
  20. FTP文件传输协议(实现windows与linux文件互传)

热门文章

  1. 快速上手Tomcat(eclipse中配置tomcat)
  2. apache开源项目_众筹开源笔记本电脑,新的Apache项目等
  3. jQuery (二)
  4. Bootstrap 高亮某个菜单项
  5. UR5 IK group中遇到的问题
  6. linux /dev/disk/by-path 修改,Linux磁盘分区
  7. js获取request中的值_基于node.js的开发框架 — Koa
  8. 阿里Java研发工程师实习面经
  9. MVC.Net:将Reponse Redirect从Get变为Post
  10. IBatisNet XML 特殊配置