调优RMAN性能

1.使用V$视图诊断RMAN性能问题

通常,通过使用V$视图来确认RMAN备份和还原操作的哪个环节遇到问题来开始调优过程。


1.1.使用V$SESSION_LONGOPS监控RMAN作业进度

可以通过查询视图V$SESSION_LONGOPS监控备份和还原作业的进度。RMAN在V$SESSION_LONGOPS使用两个行类型:详情行和汇总行。

详情行描述被一个作业步骤正在处理的文件,而汇总行描述被一个RMAN命令中所有作业步骤处理的文件。一个作业步骤是创建或还原一个备份集或数据文件副本。详情行使用每个在备份步骤期间读取或写入的缓存更新,因此它们的更新粒度是小的。汇总行是当每个作业步骤完成时更新,因此它们的更新粒度是大的。

下表描述V$SESSION_LONGOPS中RMAN最相关的列。通常,你查看详情行而不是汇总行来确认每个备份集的进度。

详情行的描述
SID对应于RMAN通道的服务器会话ID
SERIAL#服务器会话序列号。每次服务器会话被重用时这个值会更改。
OPNAME行的文本描述。详情行的示例包括RMAN:datafile copy,RMAN:full datafile backup和RMAN:full datafile restore。注:RMAN:aggregate input和RMAN:aggregate output是仅有的汇总行。
CONTEXT对于备份输出行,这个值是2。对于除代理拷贝(它不更新这个列)的所有其它行,这个值是1。
SOFAR这个列的含义取决于这个行描述的操作类型:1)对于映像副本,已经读取的块的数量。2)对于备份输入行,从正在备份的文件中已经读取的块的数量。3)对于备份输出行,已经写到备份片的块的数量。4)对于还原,在这个作业步骤中已经处理到正在被还原的文件的块的数量。5)对于代理拷贝,已经被拷贝的文件的数量。
TOTALWORK这个列的含义取决于这个行描述的操作类型:1)对于映像副本,文件中的块的总数量。2)对于备份输入行,在这个作业步骤中从所有文件中读取的块的总数量。3)对于备份输出行,这个值是0,因为RMAN不知道多少个块它会写到任何备份片。4)对于还原,在这个作业步骤中所有被还原的文件中的块的总数量。5)对于代理拷贝,在这个作业步骤中已经被拷贝的文件的总数量。

每个执行备份或还原作业的服务器会话报告它与作业步骤要求的总工作相比的进度。例如,如果你使用两个通道还原数据库,每个通道有两个备份集要还原(总共是4个备份集),那么每个服务器会话报告它通过一个单一的备份集的进度。当一个备份集被完成还原时,RMAN开始报告下一个要还原的备份集的进度。

监控RMAN作业进度:
1)在启动RMAN作业之前,创建一个脚本文件(名为longops),包含以下SQL语句:
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) “%_COMPLETE”
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE ‘RMAN%’
AND OPNAME NOT LIKE ‘%aggregate%’
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK;

2)启动RMAN,连接到目标数据库和恢复目录(如果有使用)。

3)启动RMAN作业。
RMAN> RESTORE DATABASE;

4)当RMAN作业正在运行时,启动SQL*Plus,连接到目标数据库,执行longops脚本检查RMAN作业的进度。如果当RMAN作业前进时你重复查询,那么你看到如下输出:

SQL> @longops	
SID        SERIAL#   CONTEXT       SOFAR     TOTALWORK %_COMPLETE
---------- ---------- ---------- ---------- ---------- ----------
8             19          1       10377       36617      28.34
SQL> @lon ops
SID         SERIAL#    CONTEXT     SOFAR  TOTALWORK  % COMPLETE
---------- ---------- ---------- ---------- ---------- ----------
8              19          1      21513       36617       58.75
SQL> @longops
SID          SERIAL#  CONTEXT      SOFAR     TOTALWORK  % COMPLETE
---------- ---------- ---------- ---------- ---------- ----------
8               19        1        29641      36617       80.95
SQL> @longops
SID           SERIAL#  CONTEXT    SOFAR     TOTALWORK  % COMPLETE
---------- ---------- ---------- ---------- ---------- ----------
8               19        1        35849      36617        97.9g
SQL> @longops
no rows selected

5)如果你以2分钟或更多的时间间隔运行longops脚本和%_COMPLETE列不增长,那么RMAN在遇到问题。


1.2.使用V$BACKUP_SYNC_IO和V$BACKUP_ASYNC_IO发现瓶颈

你可以使用V$BACKUP_SYNC_IO和V$BACKUP_ASYNC_IO视图来确认备份源或还原瓶颈和查看备份作业的详细进度。

V$BACKUP_SYNC_IO包含行当I/O与执行备份的进程(在某些平台上是线程)同步时。V$BACKUP_ASYNC_IO包含行当I/O是异步时。异步I/O使用I/O进程或因为它被底层的操作系统支持而获得。

备份或还原作业的结果保留在内存中直到数据库实例关闭。因此,你可以在作业完成后查询视图。

当I/O是同步时,确认磁带是否在流动(streaming):
1)启动SQL*Plus,连接到目标数据库。

2)查询V$BACKUP_SYNC_IO或V$BACKUP_ASYNC_IO视图中的EFFECTIVE_BYTES_PER_SECOND列。
如果EFFECTIVE_BYTES_PER_SECOND比硬件的裸容量更少,那么磁带没有在流动。如果EFFECTIVE_BYTES_PER_SECOND比硬件的裸容量更大,磁带可能或可能不在流动。压缩可能会导致EFFECTIVE_BYTES_PER_SECOND比真实I/O的速度更大。


1.2.1.辨认同步I/O的瓶颈

查询视图V$BACKUP_SYNC_IO来辨认同步I/O的瓶颈。

对于同步I/O,要识别特定的瓶颈是很困难的,因为所有同步IO对于进程都是一个瓶颈。调优同步IO的唯一方法是与设备的最大吞吐速率比较速率(每秒的字节数)。如果速率比设备指定的低,那么考虑调优备份和还原进程的这个方面。

确认同步I/O速率:
1)启动SQL*Plus,连接到目标数据库。

2)查询V$BACKUP_SYNC_IO视图中的DISCRETE_BYTES_PER_SECOND列来显示I/O速率。

如果在V$BACKUP_SYNC_IO中看到数据,那么问题是没有启用异步I/O或你没有正在使用磁盘I/O slaves。


1.2.2.辨认异步I/O的瓶颈

查询视图V$BACKUP_ASYNC_IO来辨认异步I/O的瓶颈。

Long waits是备份或还原进程通知操作系统等待直到I/O完成的次数。Short waits是备份或还原进程在非阻塞模式中做操作系统调用来轮询I/O完成的次数。Ready指示当I/O准备好使用的次数,因此不需要做操作系统调用来轮询I/O完成。

确认异步I/O速率:
1)启动SQL*Plus,连接到目标数据库。

2)查询V$BACKUP_ASYNC_IO视图中的LONG_WAITS和IO_COUNT列来显示I/O速率。

辨认瓶颈的最简单方式是找到具有最大的LONG_WAITS/IO_COUNT的数据文件。例如,可以使用以下查询:
SELECT LONG_WAITS/IO_COUNT, FILENAME
FROM V$BACKUP_ASYNC_IO
WHERE LONG_WAITS/IO_COUNT > 0
ORDER BY LONG_WAITS/IO_COUNT DESC;

注:如果你有同步I/O但你设置了BACKUP_DISK_IO_SLAVES,那么I/O显示在V$BACKUP_ASYNC_IO。


2.调优RMAN备份性能

2.1.从通道设置中移除RATE参数

通道中的RATE参数是用来减少而不是增加备份吞吐量以便磁盘带宽可用于其它数据库操作。如果备份没有流动(streaming)到磁带,那么确认没有设置RATE参数。

移除RATE参数:
1)检查备份脚本。
2)做以下其中一个操作:
a.如果备份是在RUN命令中,那么从ALLOCATE命令中移除RATE参数,如果它被指定。跳过剩余的步骤。
b.如果备份不在RUN命令中,那么启动RMAN,连接到目标数据库,执行SHOW ALL命令来显示当前配置的设置。从CONFIGURE CHANNEL命令中移除RATE参数,如果它被设置。


2.2.设置DBWR_IO_SLAVES来模拟异步I/O

某些操作系统支持原生异步I/O。如果和如果仅仅是磁盘不支持异步I/O,那么设置DBWR_IO_SLAVES。DBWR_IO_SLAVES任何非零值会引起使用固定数量的磁盘I/O slaves模拟异步I/O进行备份和还原。

启用磁盘I/O slaves:
1)启动SQL*Plus和连接到目标数据库。
2)关闭数据库。
3)设置DBWR_IO_SLAVES初始化参数到非零值。
这个设置让数据库写进程使用slaves。因此,你可能需要增加初始化参数PROCESSES的值。
4)重启数据库。
5)重启RMAN备份。


2.3.设置LARGE_POOL_SIZE来解决共享内存问题

设置LARGE_POOL_SIZE初始化参数如果数据库在alert日志中报错说它没有足够的内存和它不能启动I/O slaves。

alert日志信息与以下类似:
ksfqxcre: failure to allocate shared memory means sync I/O will be used whenever
async I/O to file not supported natively

large pool用来给RMAN和其它目的使用,因此总大小必须满足所有需要。这个更是如此,如果设置了DB_IO_SLAVES和DBWR进程需要缓存。

设置large pool大小:
1)启动SQL*Plus,连接到目标数据库。

2)可选地,查询V$SGASTAT.POOL来确认对象的内存会驻留在哪个池中(共享池或大池)。

3)设置目标数据库的LARGE_POOL_SIZE初始化参数。
可以执行ALTER SYSTEM SET语句动态设置参数。设置LARGE_POOL_SIZE的公式如下:
LARGE_POOL_SIZE = number_of_allocated_channels *(16 MB + ( 4 * size_of_tape_buffer ) )

4)重启RMAN备份。


2.4.调优读,写和拷贝阶段

查看官方文档《Oracle Database Backup and Recovery User’s Guide,19c》的23.4.4章节。




来源:《Oracle Database Backup and Recovery User’s Guide,19c》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Oracle RMAN(Recovery Manager)的性能调优,有几个关键的方面需要考虑: 1. 备份策略优化:确定适当的备份策略是性能调优的第一步。考虑到备份窗口、备份级别、保留策略和恢复要求等因素,选择合适的备份类型(完全备份、增量备份或差异备份)和备份频率。 2. 并行备份设置:使用并行备份可以提高备份速度。通过设置RMAN参数PARALLELISM,可以指定并行备份的进程数。根据系统资源和硬件配置,调整并行备份的数量,以避免过度消耗资源。 3. 磁盘和通道配置:配置适当的磁盘和通道参数可以改善备份性能。确保备份目标磁盘具有足够的可用空间,并优化磁盘I/O性能。此外,选择合适的RMAN通道(例如,备份到磁盘或备份到磁带)以满足性能需求。 4. 压缩和加速备份:使用RMAN提供的压缩功能可以减少备份数据的存储需求,从而提高备份速度。根据硬件支持情况,可以选择使用RMAN的压缩算法(例如,ZLIB、BZIP2或LZ4)。 5. 备份集管理:定期清理过期备份集和归档日志可以提高备份性能,并确保备份目标磁盘上有足够的可用空间。使用RMAN的DELETE命令或配置自动备份集管理策略(例如,利用RMAN的RECOVERY WINDOW选项)来管理备份集。 6. 并行恢复设置:在进行恢复操作时,可以使用并行恢复来加快恢复速度。通过配置RMAN参数PARALLELISM,可以指定并行恢复的进程数。根据系统资源和硬件配置,调整并行恢复的数量。 7. 监控和优化:使用RMAN的监控命令和报告功能来监视备份和恢复操作的性能。根据监控结果进行优化调整,例如调整备份策略、增加并行度或优化磁盘配置。 以上是一些常见的Oracle RMAN性能调优的建议。根据具体情况,可能还需要进一步分析和调整其他方面的配置和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值