0

0

RMAN不恰当配置导致Oracle数据库备份特慢解决

php中文网

php中文网

发布时间:2016-06-07 17:15:57

|

2425人浏览过

|

来源于php中文网

原创

这是一个发生在Oracle数据库上使用RMAN进行数据库操作因在默认配置中使用不合适的配置导致备份性能慢到不能接受的问题。在整个问

这是一个发生在Oracle数据库上使用RMAN进行数据库操作因在默认配置中使用不合适的配置导致备份性能慢到不能接受的问题。

在整个问题解决过程中,涉及了存储商、网络、操作系统以及Oracle等等。解决过程复杂和艰难,甚至都开始怀疑自己了,到最后峰回路转,在RMAN备份的输出日志发现了关键信息,使得问题得以解决。

Molica AI
Molica AI

一款聚合了多种AI工具的一站式创作平台

下载

这个问题我们想复杂了。如果我们能仔细一点,多看看日志信息,就能节省很多时间和人力,就不会绕这么一个大圈子。
 
1. 环境
客户的数据库系统运行在Linux RedHat系统上。数据库系统为Oracle 10.2.0.5.6,三节点RAC。
数据库名称为WEBDB,归档模式运行。数据库目前大小约900GB,每天生成的归档日志量约50GB,但在最高峰时也会有100GB。
数据库备份采用RMAN工具备份到挂载到服务器的磁盘上。
2. 问题
数据库备份时,每秒钟只能写入4MB左右。
如备份88号文件,该文件大小为5GB。
 
RMAN> backup datafile 88 format '/u01/app/oracle/88.bk';
 
Starting backup at 14-3月 -12
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00088 name=+DG/webdb/datafile/qlzq50.dbf
channel ORA_DISK_1: starting piece 1 at 14-3月 -12
channel ORA_DISK_1: finished piece 1 at 14-3月 -12
piece handle=/u01/app/oracle/88.bk tag=TAG20120314T113321 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:04:35
Finished backup at 14-3月 -12
 
Starting Control File and SPFILE Autobackup at 14-3月 -12
piece handle=/dbbackup/webdb/c-3243882293-20120314-04 comment=NONE
Finished Control File and SPFILE Autobackup at 14-3月 -12
备份时间为4分35秒,备份结果集为1.1GB。
多次备份测试,备份速度都是这样。
3. 分析
在新环境的10.2.0.4上的环境下,先期创建一个数据库,名称为WEBDB ,同原网站数据库名称一致。
这个数据库是新迁移的过来的,数据库版本也是新升级到10.2.0.5。以前的版本是10.2.0.4,那个时候备份并不慢。
新库和老库用的是一类服务器,同是64核CPU和32GB内存。新库接的存储柜子是扩展柜,而老库用的是主柜子。
我们首先分析RMAN备份过程中,会话的等待事件,发现其始终是“RMAN backup & recovery I/O”等待事件。
检查的方法是“select * from v$session_event a where a.SID=1450;”。
就是说从数据库层面看,系统在RMAN的IO上操作。
整个过程中,系统负载很低,很稳定。
我们再分析RMAN备份过程中的IO情况。这个从系统和数据库性能视图两个方面去分析。
一方面系统上,我们使用vmstat -1 ,iostat –m 1,结果显示系统IO很差,只有5MB每秒的写,读稍微大些,约30-40MB每秒。但不能完全达到存储正常的IO值。
经过存储工程师对存储性能的测试,证明其IO能力为每秒160MB的读,每秒120MB的写。但在RMAN的BACKUP备份时,这个性能从来没有出现过。
另一方面数据库上,我们查询性能系统视图,方法为“select * from v$backup_async_io where open_time >sysdate-1/2;”,发现RMAN备份的读为16MB每秒,而写为4MB每秒,很稳定。
在查询ORACLE RMAN的原理,发现在正常情况下,一个通道的RMAN IO就是这样的速度。并且,这个样写入也没消耗多少时间。(这段表述可能有误,请参考官方的RMAN_BUFFER.dbf文档)
到这个地步,从数据库的信息中,看不到备份过程在其他时间在干什么。备份的读写速度都很正常,但系统就不能快速完成备份。
这里使用的是RMAN BACKUP工具,我们又想到一种备份方法,RMAN COPY。这种COPY是单纯地拷贝文件,过程就是将ASM磁盘组上文件拷贝到文件系统上,不做任何更改。
经过测试,发现这种方法很快,在备份到本地硬盘时,5GB的文件时间只要55秒,而即使备份到存储上,时间也只要2分45秒。
以下是测试对照表。
RMAN copy 方式
节点3    备到本地   55秒
节点2    备到本地   56秒
节点1    备到本地   55秒
节点1    备到存储   2分45秒
RMAN backup 方式
节点1    备到本地   4分35秒
节点1    备到存储   4分35秒
在数据库层面上,无能为力之后,我们挖掘到更下一层,直接分析进程操作在操作系统层面都干了什么。
这里使用的是LINUX下的STRACE分析进程的工具。
此工具通用的完整用法是:
strace -o /tmp/output2.txt -T -tt -e trace=all -s 12 -p 17129
必须记住的参数:
1)strace -p pid  可以跟踪某个后台进程
2)strace -o filename 把跟踪结果输出到文件
3)strace -T 记录每个系统调用花费的时间,可以看看哪个系统调用时间长
4)strace -t (或者 -tt)记录每个系统调用发生是的时间(时分秒的格式)
5)strace -s 1024 显示系统调用参数时,对于字符串显示的长度, 默认是32,如果字符串参数很长,很多信息显示不出来。
6)strace -e trace=nanosleep 只记录相关的系统调用信息。    -e trace=network // 只记录和网络api相关的系统调用
    -e trace=file // 只记录涉及到文件名的系统调用
    -e trace=desc // 只记录涉及到文件句柄的系统调用
    还有其他的包括process,ipc,signal等。
我们将COPY和BACKUP两种方式的strace结果做了分析,发现pread和pwrite操作时间并没有出入。相反,BACKUP备份时,PWRITE的次数更少,但每次操作的时间没有多大出入。而最终结果却是一个55秒,一个4分35秒,相差有五六倍之多。
未采用的测试方法:
1、在WEBRAC环境上新搭建个数据库,测试一下是不是数据库配置导致,以判断是OS级别的配置还是DB级别的配置问题。但因为已经是生产环境而作罢。
2、调整RMAN BUFFER涉及的隐含参数。
如写的参数_db_file_direct_io_count 等。但因为是生产环境,,风险大而作罢。
3、搭建测试环境,分析是不是10.2.0.5的问题。这是第一个采用10.2.0.5的项目。但客户有RYDRAC就是10.2.0.5,同样版本,但测试结果很正常,完全没有问题,虽然RYDRAC挂载的存储性能比这个存储要好一些。
RMAN BACKUP备份所消耗的时间去掉正常的读、写操作,还有读和写之间都做了什么操作?时间大部分都消耗在这读写之间的操作了。如将数据块从ASM磁盘组读取到内存中,做何种操作,再写入到文件系统磁盘中。
一度认为CPU的个数太多,会不会是超线程的问题?
一度认为这个存储是不是异步IO?

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号