i/o slave wait

今日接到报告,某作业运行异常缓慢,通过监控发现I/O资源接近饱和,进一步排查发现是SYS用户正在进行RMAN备份操作导致。本文讨论如何避免数据库备份期间影响正常业务。

今天Dev team给我报告说有个JOB 跑了2个小时还没跑完,平时只需要10多分钟,叫我check一下。

数据库版本:

SQL> select * from v$version;

BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for HPUX: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

由于我是用toad监控的,所以不方便贴出具体信息,该SQL的等待事件是 i/o slave wait,所以我怀疑I/O出现了问题

登陆HP-UNIX,用glance监控,发现Disk Util 有很大部分时间 是100%

ProcList CPU Rpt Mem Rpt Disk Rpt NextKeys SlctProc Help Exit
Glance C.05.00.100 02:31:24 bdhp4463 ia64 Current Avg High
------------------------------------------------------------------------------------------------------------------------------------------------------
CPU Util S SN NU U | 59% 52% 76%
Disk Util F F | 72% 78% 100%
Mem Util S SU UF F | 53% 57% 60%
Networkil U UR R | 29% 31% 33%
再看了看 占用 大量磁盘资源的 session,结果发现是SYS在用RMAN 备份。

赶紧给SYSDBA 发邮件说明情况,我不是SYSDBA啊,我必须推卸责任,于是SYSDBA回复了
Dear SYSDBAs,

Today, I was reported that we’re having a long running job on adw1u1.

It has running for about 156 minutes, wait event is i/o slave wait, I’ve asked DEV team, they said the job should be finished within few minutes.
According the wait event , I doubt we are lack of I/O resource, So I checked UNIX side , found that some session consumed lots of I/O resource
finally , I found that top I/O consumed user is SYS, they are backup database using RMAN.
Is there a way to avoid performance problem while you’re backup database?

SYSDBA 回复:

For non-prod we have weekly backups running.
Backups will need to read the data from disk and dump it to tape, that is indeed IO intensive.
But backups are needed and it’s not possible to run a backup without consuming IO.

i/o slave wait 是一个Idle的等待事件,通常出现该等待事件表示I/O资源不足

第一章:Linux驱动程序概述 驱动程序的作用和特点 驱动程序是操作系统与硬件之间的桥梁,负责控制硬件设备并提供统一接口。 驱动程序的开发基础 包括开发环境搭建、内核模块编写、编译和加载等基本流程。 Linux内核重要头文件目录 如 <linux/module.h>、<linux/fs.h> 等,提供驱动开发所需的接口和宏定义。 Linux内核类型 包括字符设备、块设备、网络设备等基本设备类型。 Linux内存管理 涉及内核空间的内存分配与释放机制,如 kmalloc、vmalloc 等。 字符设备驱动实例:BEEP驱动 通过蜂鸣器驱动实例,演示字符设备驱动的完整开发流程。 第二章:字符设备驱动程序 字符设备驱动基本结构 包括设备注册、文件操作结构体(file_operations)、设备号申请等。 gfree、page 和相关函数 涉及内存页管理和释放函数,如 __free_pages、get_free_page 等。 vmalloc 及其辅助函数 用于分配大块的虚拟地址连续但物理地址不一定连续的内存。 虚拟地址与物理地址关系 介绍内核中虚拟地址与物理地址的映射机制。 第三章:并发和竞态控制 并发与竞态 多任务环境下,多个执行路径同时访问共享资源可能导致数据不一致。 原子操作 不可中断的操作,用于简单变量的线程安全访问。 自旋锁(Spinlock) 一种忙等待锁,适用于短时间内的临界区保护。 信号量与互斥体 用于进程或线程间的同步与互斥,信号量允许多个持有者,互斥体只允许一个。 完成量(completion) 用于一个线程通知另一个线程某个事件已完成。 第四章:阻塞和非阻塞 I/O 阻塞方式 用户空间程序调用驱动接口时,若条件不满足则挂起等待。 非阻塞方式 调用立即返回,若条件不满足则返回错误码(如 -EAGAIN)。 Poll、Select 机制 用户空间程序可监听多个文件描述符,驱动需实现 poll 接口支持事件通知。 第五章:中断和时钟 中断处理程序结构 包括中断注册、中断服务例程(ISR)编写等。 中断顶半部和底半部 顶半部快速响应中断,底半部处理耗时操作(如 tasklet、工作队列)。 中断共享 多个设备共享一个中断号,需在中断处理函数中区分设备。 内核定时器 用于在指定时间后执行某个函数,实现延时或周期性任务。 第六章:内存与 I/O I/O 端口和 I/O 内存 外设通过端口或内存映射方式与CPU通信,驱动需正确访问这些资源。 I/O 操作函数 如 inb/outb、ioread32/iowrite32 等,用于读写端口或内存映射寄存器。 申请与释放设备 I/O 端口和 I/O 内存 使用 request_region、request_mem_region 等函数申请资源,防止冲突。
最新发布
11-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值