Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3672584
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: LINUX

2021-06-28 23:26:05


扩表空间,后台虽然有会话在跑,但是也没太在意,结果添加30g的数据文件花了1小时。
正常情况下3分钟就应该结束的。

怎么这么慢?

看当前活动会话主要是db file async I/O submit事件

  1. col name for a35
  2. col parameter1 for a15
  3. col parameter2 for a15
  4. col parameter3 for a15
  5. col wait_class for a12
  6. select EVENT#,NAME,PARAMETER1,PARAMETER2,PARAMETER3,WAIT_CLASS 
  7.  from v$event_name where WAIT_CLASS='System I/O';



先检查异步 I/O 是否在 Linux 平台上工作,linux中,slabinfo 维护有关内存中对象的统计信息。异步 I/O 使用的一些结构体被视为虚拟内存中的对象,因此我们可以在slabinfo 上查找这些结构体。与 AIO 相关的那些被命名为 kio*
$ cat /proc/slabinfo | grep kio
如果不为0说明启用了异步io

启用 AIO 的 dbw0 进程的示例 strace( 参数 filesystemio_options = asynch)显示:

禁用 AIO 的 dbw0 进程示例 strace (参数 filesystemio_options = none) 显示:

Oracle ASMLib不会使用kiocb结构。

这里有个小技巧,跟踪进程但又想减少信息输出可以通过 -c 参数

当前参数是setall
当前进程号是14762
开启  -c 跟踪后,另开一个窗口,执行create table t1 as select * from obj$; 然后在跟踪窗口内按下Ctrl +C 强制断开,就会看到上面的画面。当然重点是看统计结果中有 io_submit 和io_getevents,说明启用了异步IO。

下面是设置为 none 的跟踪结果


只能看到pwrite函数。

查看数据库中文件的异步io情况
  1. select file_no,filetype_name,asynch_io from v$iostat_file;

设置了setall就显示上面的结果了


关于参数与os命令、等待事件的关系如下:

所以结论是os环境支持(通常都支持)的情况下,设置filesytemio_options=setall 重启实例,再观察。


在15点调整参数为setall,重启实例的dbtime统计曲线(红色线是重启时间点),可以看到dbtime大幅降低,有效!

参考:
FILESYSTEMIO_OPTIONS=NONE 时的“db 文件异步 I/O 提交”(文档 ID 1274737.1)
如何检查异步 I/O 是否在 Linux 上工作(文档 ID 237299.1)
blog.csdn.net/wuweilong/article/details/44018521
阅读(3634) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~