资讯专栏INFORMATION COLUMN

Exadata X7-2一体机IO导致日志无法归档问题处理

IT那活儿 / 497人阅读
Exadata X7-2一体机IO导致日志无法归档问题处理

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

 



事件背景


上午十一点,客户发来erp核心数据库后台日志告警截图,节点2数据库所有的online log无法进行归档,客户反馈时好时坏,而且出现这个问题的时候应用就不行了,这里可以肯定的是如果无法进行归档,日志就无法写入,应用肯定会收到影响,跟客户大概了解情况后,立马登陆服务器进行诊断。

 



问题分析过程


1. 首先登陆服务器后查看了在线日志状态

这里发现节点2所有的在线redo无法进行归档,节点1部分在线redo无法归档。

2. 查看磁盘组相关空间利用率信息

这里可以看到磁盘空间使用没有问题:
SQL> select free_mb,total_mb from v$asm_diskgroup ; 

   FREE_MB TOTAL_MB
---------- ----------
  59352904 134535168
  28793712 33623424

3. 查看数据库当前等待事件

截图查看此时等待事件,发现最明显的就是log file sequential read,arch进程从redolog日志中读取数据块,下图标记的信息正好对应节点2在线日志的SEQUENCE#。
也就是说所有的未归档在线日志arch进程都在尝试进行读取并归档。

4. 再次查看数据库当前等待事件

经过一段时间后,再次查询等待事件相关信息,如下截图,log file sequential read等待事件仍然存在说明arch进程仍然在尝试对在线日志进程归档处理,且log file switch (archiving needed)等待事件出现,等待事件后面出现了阻塞sid。

5. 查看被阻塞回话在做什么

到这里我的思路很简单,先查看下被阻塞的回话执行的SQL是什么,如下查询,被阻塞session显然是一个更新操作,且log file switch (archiving needed)对应的回话都是进行一些更新插入操作。
UPDATE XXXXXX1 SET TIME_OUT = :B2 WHERE SESSION_ID = :B1
Plan hash value: 4160479998
----------------------------------------------------------------------------------------------------------
| Id | Operation | Name | E-Rows | Cost (%CPU)| E-Time | OMem |  1Mem | Used-Mem |
----------------------------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | |        | 3 (100)|          | |       | |
| 1 |  UPDATE | XXXXXX1 |        | |          | |       | |
|* 2 |   INDEX UNIQUE SCAN| XXXXXX1_U1 |      1 | 2 (0)| 00:00:01 | 1025K|  1025K| |
----------------------------------------------------------------------------------------------------------

6. 这里我进一步查询了2731这个回话具体在干什么以及是什么进程

这里查看到的信息是Oracle自己的进程通过OSUSER列。
这里我通过主机层面直接查询了spid进程,发现对应的2731回话是lgwr进程。
[oracle@dm01dbadm02 ~]$ ps -ef |grep 288576
oracle 126003  67533  0 11:28 pts/2    00:00:00 grep 288576
oracle 288576      1  1  2021 ? 6-05:36:52 ora_lgwr_PROD2

7. 查看数据库归档路径

进一步查看归档路径信息,主要是查看判断是否有adg且是最大保护模式,这个数据库是为了迁移X8一体机做了ADG但是已经停用,且log_archive_dest_state_2已经设置为defer,因此可以排除导致原因。

7. 查看数据库等待事件关系

到这里我又进行查看了下链式等待。
从下图基本上可以了解到的信息是arch进程一直在尝试读取在线日志,dbwr进程也在等待将脏块写入磁盘,dbwr将脏块写入磁盘肯定需要lgwr进程将log buffer写入到在线日志中,lgwr进程出现了控制文件读写等待。
从这里我得到的信息是控制文件好像是读写出现了问题,导致一些列问题的产生。
SYS:(Wnnn) log file switch (archivingneeded) 
-> SYS:(LGWR) enq: CF - contention[mode=5]
-> SYS:(CKPT) control file parallel write

8. 再次对故障事件排查

又对ash视图进行了相关查询,下面数据进行了整理,发现大量事务在等待2731这个回话,且通过如下查询发现2731回话在进行控制文件读写,且伴随着Log file parallel write以及enq:CF-contention。
从上图中的信息可以看到enq:CF-contention等待事件也是被controlfile file parallel write阻塞。所有的事件又都指向了控制文件。随即让客户进行排查硬件层面问题,经过反馈硬件各方面监控都没有报错,而且上周刚刚对X7一体机进行了主机巡检。

9. 查看awr信息

对当前系统系统问题时间抓取了一个awr报告,top10事件如下,这里发现平均延迟和总等待都特别的高。

10. 抓取hanganalyze

问题分析到这里已经没有了头绪,随即抓了一个hanganalyze,相关信息截图如下,满屏信息都是log file switch (archiving needed)在等待2731这个回话。
查看对应的2731回话发现回话在进行控制文件读。这里的相关信息还是指向了控制文件。

11. 再次排查主机硬件

协调客户再次进行主机排查,去机房发现内存条坏了一个,这里是机房拍照信息,以为是内存调原因,因节点2问题已经影响业务,随即将节点2关闭,让业务在节点1上运行。
但是节点1在运行一段时间后发生了同样的问题,这里从刚开始的日志截图就能发现端倪,节点1的部分在线日志也存在无法归档的现象,只不过是没有那么明显。

12. 再次协调客户进行一体机排查

最终一体机工程师在主机层面发现问题,一体机工程师发现磁盘IO达到瓶颈,磁盘IO平均相应在100ms以上,磁盘非常繁忙,达到瓶颈。
以下是检查flashcache卡的信息:
附录:修改磁盘模式命令
Validate all the physical disks are in NORMAL state before modifying Exadata Smart Flash Cache.
The following command should return no rows:

# dcli –l root –g cell_group cellcli –e "list physicaldisk attributes name,status"|grep –v NORMAL
Drop the Flash Cache.
# dcli –l root –g cell_group cellcli -e drop flashcache
Set the flashCacheMode attribute to writeback.
# dcli –l root – g cell_group cellcli -e "alter cell flashCacheMode=writeback"
Re-create the Flash Cache.
# dcli –l root –g cell_group cellcli -e create flashcache all
Verify the flashCacheMode has been set to writeback.
# dcli –l root –g cell_group cellcli -e list cell detail | grep flashCacheMode
检查:
Validate the grid disk attributes cachingPolicy and cachedby.
# cellcli –e list griddisk attributes name,cachingpolicy,cachedby

cellclie -e list cell detail

13. 通过存储工程师提供的关键信息在mos上进行搜索2812622.1

当前mos描述的信息和从数据库查询出来的一些状态信息是吻合的。

14. 修改flashcacha卡模式

修改前从如下信息看到在线日志无法进行归档。
修改后,在线日志归档正常。

15. 补充信息说明

一体机工程师给出的IO消耗原因具体到了以下对象,针对改对象排查是一个定时任务,在10点开始执行,在1分左右任务就会结束。
如下查询可以得出针对问题对象的更新变化操作都基本上在10点02的时候结束。
以下是一体机工程师在存储层面获取到的信息,从信息可以看到,IO请求也基本上在10点开始,然后IO一直未释放。
后台日志无法归档的问题出现在10:09左右,在这个时间点之前,数据库中存在未应用在线日志,当这些日志信息被填满,log buffer信息无法写入到在线日志,所有的DML操作被挂起,对应的等待事件db file parallel write和log file switch completion也开始出现。

 



原理介绍


以下是一体机工程师提供整理如下:

1. write-through mode和write-back模式比较

对于非极端闪存Exadata存储服务器,默认情况下,智能闪存缓存配置为以直写模式运行。在此模式下,写入通过Exadata存储服务器磁盘控制器上的缓存定向到磁盘。因此,写I/O延迟通常不是性能问题。因此,直写闪存为大多数应用程序提供了出色的性能。
对于非常写密集的应用程序,写卷会淹没磁盘控制器缓存,使其实际上毫无用处。写回闪存缓存为写密集型应用程序提供了解决方案。当智能闪存高速缓存在写回模式下运行时,写操作直接转到闪存,只有当数据从高速缓存中老化时,数据才会写入磁盘。
因此,最常见的读写数据保存在智能闪存缓存中,而访问较少的数据保存在磁盘上。
请注意,对于写操作没有瓶颈的应用程序,回写智能闪存缓存所启用的额外写吞吐量几乎没有或根本没有好处。
此外,在回写模式下,数据的所有镜像副本都写入智能闪存缓存,与直写模式相比,这显著的地减小了缓存大小。
由于每个缓存模式的特性不同,建议在默认情况下使用直写模式,并且只有在将写I/O视为性能瓶颈时才启用写回模式。确定写瓶颈的最佳方法是在数据库等待事件统计信息中查找空闲缓冲区等待。管理员还可以检查Exadata存储服务器指标是否存在高磁盘I/O延迟和大比例的写入。

2. write-through mode

In write-through mode, Exadata Smart Flash Cache works as follows:
For write operations, CELLSRV writes data to disk and sends an acknowledgement to the database so it can continue without any interruption. Then, if the data is suitable for caching, it is written to Exadata Smart Flash Cache. Write performance is not improved or diminished using this method. However, if a subsequent read operation needs the same data, it is likely to benefit from the cache. When data is inserted into a full cache, a prioritized least recently used (LRU) algorithm determines which data to replace.
For read operations, CELLSRV must first determine if the request should use the cache. This decision is based on various factors including the reason for the read, the CELL_FLASH_CACHE setting for the associated object, and the current load on the cell. If it is determined that the cache should be used, CELLSRV uses an in-memory hash table, to quickly determine if the data resides in Exadata Smart Flash Cache. If the requested data is cached, a cache lookup is used to satisfy the I/O request.
For read operations that cannot be satisfied using Exadata Smart Flash Cache, a disk read is performed and the requested information is sent to the database. Then if the data is suitable for caching, it is written to Exadata Smart Flash Cache.

3. write-back mode

Commencing with Exadata Storage Server release 11.2.3.2.0, Exadata Smart Flash Cache can operate in write-back mode. In this mode, write operations work as follows:
  • CELLSRV receives the write operation and uses intelligent caching algorithms to determine if the data is suitable for caching.
  • If the data is suitable for caching, it is written to Exadata Smart Flash Cache only. If the cache is full, CELLSRV determines which data to replace using the same prioritized least recently used (LRU) algorithm as in write-though mode.
  • After the data is written to flash, an acknowledgment is sent back to the database.
  • Data is only written back to disk when it is aged out of the cache.
Note the following regarding write-back flash cache:
Write-back flash cache is ideal for write-intensive applications that would otherwise saturate the disk controller write cache.
The large flash capacity of Exadata Storage Server means that for many applications a high proportion of all I/O can be serviced by flash.
An active data block can remain in write back flash cache for months or years. Also, Exadata Smart Flash Cache is persistent through power outages, shutdown operations, cell restarts, and so on.



回顾总结


1. 生产问题无小事,发现问题需要及时进行排查做到问题闭环。
2. 问题的定位需要全方面考虑,验证本次故障主要体现在Redo日志无法归档,log buffer无法刷新,所有的业务变更都被阻塞。
3. 知识面需要扩展,不能仅仅停留在软件层面,硬件层面问题排查也很关键,包括磁盘IO、网络,交换机配置,存储卡配置等。
4. 业务层面批量业务也需要重点考虑,往往因为一次瞬时的操作导致系统夯实,本次定位到10点开始的一个定时任务,任务结束后,IO未能释放为触发问题主要原因。

END




本文作者:李行行

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129489.html

相关文章

  • 海量数据何去何从?新一代归档存储给你想要的答案

    摘要:对此,存储产品经理周恭元在月日刚结束的技术分论坛上带来了海量数据云归档存储最佳实践的议题分享,围绕企业数据归档面临的存储问题及需求,重点介绍了数据存储的分层价值,以及新一代归档存储的可靠性优势及三大适用场景。随着互联网科技的不断进步,产生的数据将以成倍速度进行增长,据IDC预测,到2025年全球数据总量将会达到175ZB。如果要把175ZB用8TB的磁盘存下来的话,那就需要230亿块磁盘来存...

    Tecode 评论0 收藏0
  • 混合云存储,备份、归档、容灾一个也不能少

    摘要:采用混合云存储,灾难恢复能够达到秒级还是分钟级关键还要看带宽。经测试,采用混合云进行分级存储,在非实时高可用场景下,存储成本可降低在使用归档存储的情况下,成本仅为独立建设灾备集群的成本的五分之一。人人都说,混合云/多云是未来。IDC曾预测,2018年,85%以上的大型企业都将采用混合云。RightScale发布的2018年云计算调查报告也显示出同样的趋势,81%的企业都有一个多云策略,其中又...

    zoomdong 评论0 收藏0
  • 云主机文件系统readonly处理案例

    摘要:通常发生该问题的场景有二一云主机和宿主机繁忙,云主机的请求得不到及时的响应,从而产生磁盘错误,为了保护磁盘数据会分区为只读二云主机被强制关机,导致磁盘出现文件系统错误故障。 本文由作者朱益军授权网易云社区发布。 背景 维护巡检云主机时,发现有一台运行redis的云主机状态显示维护中,登录该实例查看,系统盘变成readonly。本文简单分析该问题出现原因,并为运维人员提供常见处理方法及建...

    neroneroffy 评论0 收藏0
  • 云存储主要技术路线选型比较

    摘要:云存储主要技术路线有哪些各有哪些优缺点分享一存储虚拟化存储虚拟化更多是对传统块的虚拟化。也是云存储的主流当家花旦。哪些应用场景适合云存储?存储虚拟化、分布式存储、对象存储这几种技术主要解决什么问题?技术产品选型如何考虑? 企业哪些应用场景适合借助云存储来实现? 传统 IT 环境中使用传统存储的困境有那些?那些应用场景是传统存储不能满足而必须借助云存储来实现的? 分享一: ...

    zlyBear 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<