设为首页 收藏本站
查看: 1216|回复: 0

[经验分享] oracle数据库中的异步IO-Oracle向左,Unix向右!

[复制链接]

尚未签到

发表于 2018-9-26 07:01:27 | 显示全部楼层 |阅读模式
  linux 2.4以上是支持异步IO了,oracle 10g r2开始都默认使用异步IO了,关于异步IO可以参考http://www.ibm.com/developerworks/cn/linux/l-async/,
  异步IO的好处小结如下:
  Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4版本内核的补丁中也可以找到它。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果
  1、检查linux相关包
  [root@anpc ~]# rpm -qa | grep aio
  libaio-devel-0.3.106-3.2
  libaio-0.3.106-3.2
  libaio-devel-0.3.106-3.2
  libaio-0.3.106-3.2
  libsane-hpaio-1.6.7-4.1.el5_2.4
  [root@anpc ~]# cat /proc/slabinfo | grep kio
  kioctx                64     96    320   12    1 : tunables   54   27    8 : slabdata      8      8      0
  kiocb                  0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0
  kiocb值的第二列和第三列非0即是已使用。
  The kioctx and kiocb are Async I/O data structures that are defined in aio.h.
  If it shows a non zero value that means async io is enabled.
  source code loaded /usr/src/linux-/include/linux/aio.h
  从2.6 kernel开始,已经取消了对IO size的限制,Oracle建议将aio-max-nr的值设置为1048576或更高。
  [root@anpc ~]# echo 1048576 > /proc/sys/fs/aio-max-nr
  2、检查Oracle软件是否开启AIO支持。
  [oracle@anpc ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio
  libaio.so.1 => /usr/lib64/libaio.so.1 (0x00002aaaac4a9000)
  如上面显示说明已经开启
  [oracle@anpc ~]$ /usr/bin/nm $ORACLE_HOME/bin/oracle | grep io_getevent
  w io_getevents@@LIBAIO_0.4
  如上面显示说明已经开启
  10GR1以前版本需要手动开启AIO,relink一下。
  cd $ORACLE_HOME/rdbms/lib
  make -f ins_rdbms.mk async_on
  make -f ins_rdbms.mk ioracle
  关闭Oracle的异步功能支持
  cd $ORACLE_HOME/rdbms/lib
  make -f ins_rdbms.mk async_off
  3、开启Oracle数据库AIO功能的支持。
  SQL> alter system set filesystemio_options = setall scope=spfile;
  SQL> alter system set disk_asynch_io = true scope=spfile;
  SQL> shutdown immediate
  SQL> startup
  4、查看是否开启
  [root@anpc ~]# cat /proc/slabinfo | grep kio
  kioctx                64     96    320   12    1 : tunables   54   27    8 : slabdata      8      8      0
  kiocb                 15     15    256   15    1 : tunables  120   60    8 : slabdata      1      1      0
  非零说明已经开启
  补充:
  在oracle里为了提高io的速度,常用参数db_writer_processes 和 dbwr_io_slaves
  在数据库里事务数非常高,或db cache很大,一个DBWn process跟不上数据的load,我们可以调整这两个参数,这两个
  参数的作用就是增加io读写进程,启用异步io,加快io的速度
  多个 slaves 可以并行写数据文件,而多个dbwr也可以并行写数据文件
  一个 dbwr 多个 slaves是 dbwr 搜集dirty  buffer 而 slaves 写数据文件
  多个dbwr 可以并行地搜集dirty buffer 并且并行地写数据文件
  但是如果系统支持AIO一般不用设置多dbwr 或者 io slaves
  db_writer_processes:在多cpu,多磁盘的环境,一般是每8个cpu一个dbwr进程
  什么时候配置这两个参数
  如果系统的io是瓶颈是,检查os是否支持异步io,如果支持异步io,但目前没有使用,那就启用异步io来缓解io瓶颈。如果os不支持异步io,
  或os已经启用异步io,但io还是瓶颈,那我们可以配置多个dbwr进程。配置这两个参数是要注意,大都是如下
  一个db_writer_processes,多个dbwr_io_slaves
  多个db_writer_processes,dbwr_io_slaves不启用


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602087-1-1.html 上篇帖子: ORACLE后台进程----DBWR/DBWn 下篇帖子: oracle内存体系(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表