OCP读书笔记(8) - 监控和调优RMAN
监视RMAN作业
1. 创建rman备份:
RMAN> run {
allocate channel ch1 type disk;
allocate channel ch2 type disk;
backup as compressed backupset tablespace users;
}
2. 当rman作业运行的时候,使用v$PROCESS和V$SESSION查看client_info信息:
SQL> select sid, spid, client_info from v$process p join v$session s on (p.addr = s.paddr) where client_info like '%rman%'; 1. Create two RMAN jobs (in two different RMAN sessions) that back up the USERS and CHGTRK tablespaces and use the SET COMMAND option:
/* session 1 */
RMAN> run {
set command id to 'bkup users';
backup as compressed backupset tablespace users;
}
/* session 2 */
RMAN> run {
set command id to 'bkup chgtrk';
backup as compressed backupset tablespace users;
} 2.
SQL> select sid, spid, client_info from v$process p join v$session s on (p.addr = s.paddr) where client_info like '%id=%';
SQL> select sid, serial#, opname, sofar, totalwork from v$session_longops where opname like 'RMAN%' and sofar <> totalwork;
调整RMAN
可以通过多种方式来调整RMAN操作。
可以使用多个RMAN通道,然后将数据文件分配到不同的通道,以此来调整备份的总吞吐量。为每个通道分配-个进程,这样可以通过并行处理方式加快备份过程。与此相反,可以将多个备份文件多路复用在同一个备份片中。
对于特定通道而言,可以使用MAXPIECESIZE和MAXOPENFILES参数尽量提高通往特定输出设备的吞吐量,BACKUP命令使用这些参数以及FILESPERSET和BACKUP DURATION参数来优化备份操作。
如果数据库必须保持可用,而且要满足严格的SLA要求,还可以使用BACKUP DURATION来尽最减少备份操作对响应时间的影响。最后,还可以使用数据库初始化参数來优化备份和恢复性能(特别是同步I/O操作)
如果了解每种调整方法的工作原理,就可以保持快捷的用户响应速度、优化硬件和软件环境以及在预算紧张的情况下(这种情况几乎始终存在)推迟升级时间,环境中的某些位置几乎始终存在着吞吐量瓶颈。瓶颈是RMAN备份期间速度最慢的步骤或任务
1.确定备份和还原步骤
RMAN备份在通道中执行任务时.将经历以下三个主要阶段:
(1)读阶段:通道将数据块读入输入缓冲区
(2)复制阶段:通道将块从输入缓冲区复制到输出缓冲,并根据需要执行其他处理:
•验证检查块是否受到损坏,此操作不会大量使用CPU
•压缩使用BZIP2或ZLIB来压缩块,此操作会大量使用CPU
•加密使用加密算法(透明、口令保护或两者)来保护数据的安全性,此操作会大量使用CPU
(3)写阶段:通道将输出缓冲区中的块写入输出设备(磁盘或磁带)
使用动态性能视图,可以确定哪个通道操作的哪个阶段出现了瓶领,并采用相应措施予以消除。在某典情况下,可能需要增加备份时间,以便确保缩短恢复时间。每天或每小时创建一次映像副本会增加备份时间,却可以极大地减少恢复时间
并行备份:为了提高备份的速度,通过增加多个通道
1. 通过指定并行参数来实现并行备份:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
2. 手动分配通道实现并行备份:
RMAN> run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
backup database format='/u01/backup/rmanbk/%d_%s.dbf'
(datafile 1,2 channel c1)
(datafile 3,4 channel c2)
(datafile 5,6 channel c3) plus archivelog format='/u01/backup/rmanbk/%d_%s.arc';
}
3. 指定通道的文件格式,将备份集放在不同的目录下:
RMAN> run {
allocate channel c1 device type disk format='/u01/backup/rmanbk/%d_%s.dbf';
allocate channel c2 device type disk format='/u02/backup/rmanbk/%d_%s.dbf';
backup as backupset
(datafile 1,2,3 channel c1)
(datafile 4,5,6 channel c2) plus archivelog;
}
配置RMAN多路技术
可以通过多路复用备份和恢复操作来提高RMAN性能和吞吐最。使用多路复用功能时,RMAN可以同时读取多个文件,然后将数据块写入到同一个备份片中。
在备份和恢复操作中,使用多路复用来调整RMAN是减少瓶颈的方法之一,主要通过FILESPERSET和MAXOPENFILES两个参数来控制多路复用级别
,RMAN BACKUP命令的FILESPERSET参数确定放在每个备份集中的数据文件数量。如果单个通道最多备份10个数据文件,但FILESPERSET值是4,则RMAN的每个备份集仅备份4个文件(取min(10,4))。FILESPERSET参数的默认值是64。
多路复用级别(写入到同一备份片的输入文件数量,或从同一备份片读取的输入文件数量)是MAXOPENFILES和每个备份集中的文件数量中的最小者。MAXOPENHLES的默认值是8。可以通过以下等式更方便地理解计算方式:
multiplexing_level = min(MAXOPENFILES, min(FILESPERSET, files__per_channel))
本例在一个通道中备份10个数据文件,MAXOPENFILES值是12, FILESPERSET使用默认值64。因此,使用以下等式计算多路复用级别:
multiplexing_level=min(12, min(64, 10))=10
RMAN根据RMAN作业中的多路复用级别来分配不同数量和大小的磁盘I/O缓冲区。在RMAN根据前面提到的等式,使用FILESPERSET和MAXOPENFILES参数确定了多路复用级别后,可以使用下表提供的信息确定RMAN执行备份需要的缓冲区的数量和大小
| 多路复用级别 | 输入磁盘缓冲区大小 |
| <=4 | 16个1MB的缓冲区,分布在所有输入文件中 |
| > 5 & < 8 | 512MB的缓冲区,数量不定,以便将缓冲区 的总大小控制在16MB以内 |
| >8 | 4个128KB缓冲区(针对每个输入文件的512KB) |
Oracle建议将FILESPERSET值设置为小于等于8的值,以便优化恢复性能。也就是说,如果将过多的输入文件放在单个备份集中,由于在恢复单个数据文件时RESTORE或RECOVER命令仍然需要读取备份集中大童的多余块,所以恢复速度将减慢
配置RMAN使用异步I/O
在RMAN环境中使用同步I/O还是异步I/O取决于多种因素。这些因素包括为备份集使用的设备类型(磁盘或磁带),以及输出设备或主机操作系统支持同步I/O还是支持异步I/O,即使主机操作系统或设备不支持本地异步I/O,仍然可以配置RMAN,以便使用诸如DBWR_IO_SLAVES这样的初始化参数模拟异步I/O
1. 了解异步I/O和同步I/O
当RMAN读写数据时,I/O操作要么是同步操作,要么是异步操作。同步I/O操作不允许服务器进程一次执行多个操作。只有在完成一个操作后才能开始另一个操作。而异步操作可以启动一个I/O操作,然后立即执行其他操作(包括启动另一个I/O操作)
可以使用初始化参数控制I/O操作的类型:
对于磁带备份而言,可以将BACKUP_TAPE_IO_SLAVES设置为TRUE,以将备份配置为使用异步操作,否则,将其设置为FALSE以便使用同步操作。默认值是FALSE。
对于磁盘备份而言,大多数现代操作系统支持本地异步I/O。但是,如果操作系统不予支持,仍然可以将BACKUP_TAPE_IO_SLAVES设置为TRUE,并通过将DBWR_IO_SLAVES设置为非零值指示Oracle模拟异步I/O,这会分配4个从属备份磁盘I/O,以便模拟RMAN异步I/O操作
2.监视异步I/O
为了监视异步I/O操作,使用动态性能视图V$BACKUP_ASYNC_IO。重要的监视列如下:
•IO_COUNT:在文件中执行的I/O数量。
•LONG_WAITS:备份或还原进程必须告知OS等待I/O完成的次数。
•SHORT_WAIT_TlME_TOTAL:非阻塞轮询I/O完成占用的总时间(以0.01秒为单位)
•LONG_WAIT_TIME_TOTAL:阻塞等待I/O完成占用的总时间(以0.01秒为单位)
如果LONG_WAITS与IO_COUNT的比率达到最大,这很可能是备份过程中的瓶颈。如果SHORT_WAIT_TIME_TOTAL 和 LONG_WAlT_TIME_TOTAL 是非零值,则也指示出现了瓶颈。此示例确定两个包含非零比率的输入文件:
SQL> select long_waits / io_count waitcountratio, filename from v$backup_async_io where long_waits / io_count > 0 order by long_waits / io_count desc;
对于这个文件而言,可以考虑增加多路复用程度,以便减少或消除备份时的等待时间
3.监视同步I/O
动态性能视图V$BACKUP_SYNC_IO将帮助确定同步I/O操作中的瓶颈以及备份作业的进度。使用DISCRETE_BYTES_PER_SECOND列来查看操作的I/O比率。此后将此比率与输出设备(例如磁带设备)的最大比率做比较。如果比率低得多,则可以调整进程,通过使用并行化或增加通道多路复用级别来提高备份操作的吞吐最
SQL> select DISCRETE_BYTES_PER_SECOND from v$backup_sync_io;
如果正在使用同步I/O,但将BACKUP_TAB_IO_SLAVES设置为TRUE,则可在V$BACKUP_ASYNC_IO中监视I/O性能
BACKUP DURATION
指定完成备份需要的时间。可以使用MINIMIZE TIME限制此选项以便尽快运行备份,也可以使用MINIMIZE LOAD限制此选项以便使用在BACKUP DURATION窗口中指定的全部时间。此外,还可以使用PARTIAL选项,以便保存由于时间限制而终止的部分备份。例如,为了将完全数据库备份的时间限制在2小时之内,则尽可能快地运行并保存一部分备份,那么可以使用此命令:
RMAN> backup duration 2:00 partial database;
如果未在指定的时间内完成备份,但连续的BACKUP命令完成了备份,而且使用了PARTIAL选项,则仍然可以在恢复场景中使用部分备份。如果不使用PARTIAL选项,则备份将会终止并给出一个错误
OCP读书笔记(8) - 监控和调优RMAN的更多相关文章
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- Java系列笔记(4) - JVM监控与调优【转】
Java系列笔记(4) - JVM监控与调优[转] 目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在 ...
- JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 转:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html光说不练假把式,学习J ...
- [java] JVM监控与调优
原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分 ...
- Tomcat性能调优-JVM监控与调优
参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...
- visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优
文/朱季谦 最近在做了一些JVM监控与调优的事情,算是第一次实践,还比较陌生,故而先把这一次经验简单记下笔记,这样,对后面学习调优方面时,不至于又想不起来了.本文档主要总结在window本地环境远程对 ...
- <JVM下篇:性能监控与调优篇>补充:使用OQL语言查询对象信息
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM下篇:性能监控与调优篇>补充:浅堆深堆与内存泄露
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
随机推荐
- Python中使用Flask、MongoDB搭建简易图片服务器
主要介绍了Python中使用Flask.MongoDB搭建简易图片服务器,本文是一个详细完整的教程,需要的朋友可以参考下 1.前期准备 通过 pip 或 easy_install 安装了 pymong ...
- 用js模拟struts2的多action调用
近期修了几个struts2.1升级到2.3后动态方法调用失效的bug,深有感悟, 原始方法能够參考我之前的博文:struts2.1升级到2.3后动态调用方法问题 可是我那种原始方法有一个局限,就是在s ...
- EasyUI - DataGrid 组建 - [ 样式功能 ]
效果显示: 同上次博文效果. html代码: 同上次博文代码. js代码: align: 'center',//标题和内容居中 resizable: false,//不允许改变大小 //hidden: ...
- AIX用户管理
用户和组管理 /etc/passwd /etc/security/.profile /etc/security/limits /etc/security/passwd ...
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
矩阵和图像的操作 (1)cvSetIdentity函数 其结构 void cvSetIdentity(//将矩阵行与列相等的元素置为1.其余元素置为0 CvArr* arr//目标矩阵 ); 实例代码 ...
- Arduino Nano + WIZ550io = 简易上网
我爱Arduino Nano – 这是一个非常好外形小巧却功能齐全的Arduino Uno.然而.当我去将它连接到互联网,全部的干净利落小巧也消失在大尺寸的以太网盾底下了. 只是,我近期发现了一个更好 ...
- Swift - 创建并设置背景(SpriteKit游戏开发)
1,先把背景图片bg.jpg,bg@2x.jpg直接拖进Images.xcassets中 2,设置如下代码(背景图直接铺满整个屏幕) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Mono for Android 初学遇到的问题
1.搭建开发环境: 在win7系统中,VS2012 可以用 C# 开发Android 应用程序,mono for andriod 破解成功. 在win server 2008 系统中 破解不成功,具体 ...
- 【Unity 3D】学习笔记三十九:控制组件
控制组件 角色控制组件和刚体组件都具备物理引擎的功能,须要绑定游戏对象才干实现对应的物理效果,而且同一个游戏对象中两者仅仅能存在一个,不能共存.刚体组件能够很精确的模拟现实世界中的一切物理效果,而角色 ...
- cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd
今天白白跟大家分享一下cocos2dx单点触摸经验. cocos2dx触摸CCTouch类的单点触摸有四个函数CCTouchBegan,CCTouchMove,CCTouchEnd,CCTouchCa ...