Oracle DB 监控和优化RMAN

• 监视RMAN 作业进度
• 针对异步I/O 对RMAN 进行相应配置
• 配置RMAN 多路复用以保持磁带机流高效运行
• 评估备份速度与恢复速度之间的平衡
• 说明下列参数对RMAN 性能的影响:MAXPIECESIZE、FILESPERSET、MAXOPENFILES
• 说明RMAN BACKUP DURATION选项如何加快或降低备份的执行速度(释放资源以进行其它处理)
 
  • 并行备份集
为提高性能,分配多个通道并将文件分配给特定通道。
并行备份集
可通过将CONFIGURE命令的PARALLELISM选项设置为大于1 的值,或通过手动分配多个通道来配置并行备份。RMAN 并行执行其操作,然后并行写入多个备份集。多个服务器会话承担备份指定文件的工作。
示例
RMAN> RUN {
2> ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
3> ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
4> ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
5> BACKUP
6> INCREMENTAL LEVEL = 0
7> (DATAFILE 1,4,5 CHANNEL c1)
8> (DATAFILE 2,3,9 CHANNEL c2)
9> (DATAFILE 6,7,8 CHANNEL c3);
10> SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
11> }
 
备份数据文件时,可以通过其路径名或文件编号指定要备份的文件。例如,以下两个命令执行相同的操作:
BACKUP DEVICE TYPE sbt DATAFILE '/home/oracle/system01.dbf';
BACKUP DEVICE TYPE sbt DATAFILE 1;
 
创建多个备份集并分配多个通道时,RMAN 自动并行执行其操作,然后并行写入多个备份集。分配的服务器会话共同承担备份指定数据文件、控制文件和归档重做日志的工作。不能跨多个通道条带化一个备份集。
 
可通过以下方法实现备份集的并行:
• 将PARALLELISM的值配置为大于1 或分配多个通道。
• 指定要备份的多个文件。
 
示例
• 有九个需要备份的文件(数据文件1 到9)。
• 将多个数据文件分配给一个备份集,以使每个集所包含的要备份的数据块数目大致相同(为提高效率)。
- 数据文件1、4 和5 被分配到备份集1。
- 数据文件2、3 和9 被分配到备份集2。
- 数据文件6、7 和8 被分配到备份集3。
注:还可以使用FILESPERSET参数来限制备份集中包含的数据文件的数目。
 
  • 监视RMAN 会话
• 通过查询V$SESSION和V$PROCESS可确定服务器会话和RMAN 通道之间的关系。
• 如果正在监视多个会话,使用SET COMMAND ID命令在备份期间将某个进程与某个通道相关联。
 
监视RMAN 会话
要确定哪些服务器会话与哪些RMAN 通道相对应,可以查询V$SESSION和V$PROCESS。V$PROCESS的SPID列确定了进程或线程的操作系统ID 号。在UNIX 中,
SPID列显示进程ID。在Windows 中,SPID列显示线程ID。有两种基本方式可获取此信息,具体取决于是否有多个RMAN 会话同时处于活动状态。当只有一个RMAN 会话处于活动状态时,请在RMAN 作业正在运行时对目标数据库执行下列查询:
sys@TEST0924> COLUMN CLIENT_INFO FORMAT a30
sys@TEST0924> COLUMN SID FORMAT 999
sys@TEST0924> COLUMN SPID FORMAT 9999
sys@TEST0924> SELECT s.sid, p.spid, s.client_info FROM v$process p, v$session s WHERE p.addr = s.paddr  AND CLIENT_INFO LIKE 'rman%';
 
 SID SPID                     CLIENT_INFO
---- ------------------------ ------------------------------
  68 410                      rman channel=ORA_DISK_1
 
当有多个RMAN 会话正在运行时,最好使用SET COMMAND ID命令在备份期间将某个进程与某个通道相关联,如下所示:
1.在每个会话中,将命令ID 设置为不同的值,然后备份所需的对象。例如,在会话1 中输入下列内容:
RUN
{
SET COMMAND ID TO 'sess1';
BACKUP DATABASE;
}
在会话2 中运行的作业中将命令ID 设置为一个字符串,如sess2:
RUN
{
SET COMMAND ID TO 'sess2';
BACKUP DATABASE;
}
2.启动SQL*Plus 会话,然后在执行RMAN 作业时查询联接的V$SESSION和
V$PROCESS视图。例如,输入:
SELECT SID, SPID, CLIENT_INFO
FROM V$PROCESS p, V$SESSION s
WHERE p.ADDR = s.PADDR
AND CLIENT_INFO LIKE '%id=sess%';
 
如果在RMAN 作业中运行SET COMMAND ID命令,则CLIENT_INFO列会以下列格式显示:
id=command_id,rman channel=channel_id
例如,下面显示了一个示例输出:
SID SPID CLIENT_INFO
---- ------------ ------------------------------
11 8358 id=sess1
15 8638 id=sess2
14 8374 id=sess1,rman channel=c1
9 8642 id=sess2,rman channel=c1
 
sys@TEST0924> SELECT s.sid, p.spid, s.client_info FROM v$process p, v$session s WHERE p.addr = s.paddr  AND CLIENT_INFO LIKE 'rman%';
 
 
 SID SPID                     CLIENT_INFO
---- ------------------------ ------------------------------
  68 410                      rman channel=ORA_DISK_1
 160 722                      rman channel=ORA_DISK_1
 
sys@TEST0924> SELECT s.sid, p.spid, s.client_info FROM v$process p, v$session s WHERE p.addr = s.paddr  AND CLIENT_INFO like '%id=sess%';
 
 SID SPID                     CLIENT_INFO
---- ------------------------ ------------------------------
   7 653                      id=sess1
  • 监视RMAN 作业进度
通过查询V$SESSION_LONGOPS监视备份和还原操作的进度。
sys@TEST0924> SELECT OPNAME, CONTEXT, SOFAR, TOTALWORK, ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM V$SESSION_LONGOPS
  2  WHERE OPNAME LIKE '%RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;
 
 
OPNAME                            CONTEXT      SOFAR  TOTALWORK %_COMPLETE
------------------------------ ---------- ---------- ---------- ----------
RMAN: full datafile backup              1     143098     276048      51.84
RMAN: full datafile backup              1      47230      94720      49.86
 
监视RMAN 作业进度
通过查询V$SESSION_LONGOPS视图可监视备份、复制和还原的进度。RMAN 使用V$SESSION_LONGOPS中的详细信息行和聚集行。详细信息行说明了在一个作业步骤中处理的文件。聚集行说明了在RMAN 命令的所有作业步骤中处理的文件。作业步骤是指创建或还原一个备份集或一个数据文件副本。详细信息行使用备份步骤期间读写的每一个缓冲区来进行更新,因此它们的更新粒度比较小。聚集行在每个作业步骤完成后才进行更新,因此它们的更新粒度比较大。
 
注:将STATISTICS_LEVEL参数设置为TYPICAL(默认值)或ALL可填充V$SESSION_LONGOPS视图。
 
V$SESSION_LONGOPS中与RMAN 相关的列包括:
• OPNAME:关于该行的文字说明。详细信息行包括RMAN:datafile copy、RMAN:full datafile backup和RMAN:full datafile restore。
• CONTEXT:对于备份输出行,此列的值为2。对于除代理副本(不更新此列)外的其它所有行,值为1。
• SOFAR:对于映像副本,是指已读取的块数;对于备份输入行,是指已从所备份的文件中读取的块数;对于备份输出行,是指已写入备份片段的块数;对于还原,是指已处理到通过一个作业步骤还原的文件的块数;对于代理副本,是指已复制的文件数。
• TOTALWORK:对于映像副本,是指文件中的总块数;对于备份输入行,是指要从通过此作业步骤处理的所有文件中读取的总块数;对于备份输出行,值为0,因为RMAN 不知道要写入到任何备份片段的块数;对于还原,是指此作业步骤中还原的所有文件中的总块数;对于代理副本,是指在此作业步骤中要复制的文件总数。
 
 
  • 解释RMAN 消息输出
可在以下内容中找到RMAN 故障诊断信息:
• RMAN 命令输出
• RMAN 跟踪文件
• 预警日志
• Oracle Server 跟踪文件
• sbtio.log文件
 
RMAN 命令输出包含与RMAN 作业有关的操作,以及RMAN、服务器和介质供应商生成的错误消息。RMAN 错误消息有RMAN-nnnn前缀。输出会显示到终端(标准输出),但是通过定义LOG选项或者通过shell 重定向可将其写入到文件。
RMAN 跟踪文件包含DEBUG输出并且只在使用TRACE命令选项时才使用。
预警日志包含按时间顺序列出的错误、非默认初始化参数设置以及管理操作的日志。由于它记录了已改写的控制文件记录的值,因此在没有恢复目录的情况下操作时,该日志可用于RMAN 维护。
Oracle 跟踪文件包含Oracle Server 进程生成的详细输出。当出现ORA-600或ORA-3113(跟在ORA-7445后)错误消息时,每当RMAN 不能分配通道,并且不能加载介质管理库时,就会创建这个文件。可在USER_DUMP_DEST中找到该文件。
sbtio.log文件包含由介质管理软件写入的、特定于供应商的信息,可在USER_DUMP_DEST中找到此文件。请注意,此日志不包含Oracle Server 或RMAN 错误。
 
 
  • 使用DEBUG选项
• DEBUG选项用于:
– 查看生成的PL/SQL
– 准确判断RMAN 命令在何处挂起或出错
• DEBUG选项是在RMAN 提示符下或者在run 块内指定的。
• DEBUG选项会创建大量输出,因此要将输出重定向到跟踪文件:
$ rman target / catalog rman/rman debug trace trace.log
 
DEBUG选项显示在RMAN 编译期间执行的全部SQL 语句以及执行结果。另外,还显示恢复目录PL/SQL 程序包生成的所有信息。以下示例中,在备份数据文件3 期间会写入DEBUG输出,但是在备份数据文件4 期间则不会:
RMAN> run {
debug on;
allocate channel c1 type disk;
backup datafile 3;
debug off;
backup datafile 4; }
记住,DEBUG输出可能非常大,所以请确保有足够的磁盘空间可供跟踪文件使用。
这个示例备份会话中没有生成任何错误,只创建了一个大约0.5 兆字节大小的跟踪文件:
$ rman target / catalog rman/rman debug trace sample.log
RMAN> backup database;
RMAN> host "ls –l sample.log";
-rw-r--r-- 1 user02 dba 576270 Apr 6 10:38 sample.log
host command complete
 
 
  • 解释RMAN 错误堆栈
• 从下到上读取堆栈。
• 查找Additional information。
• RMAN-03009指示失败的命令。
 
RMAN-00571: ===========================================
RMAN-00569: ======= ERROR MESSAGE STACK FOLLOWS =======
RMAN-00571: ===========================================
RMAN-03009: failure of backup command on c1 channel at 9/04/2001 13:18:19
ORA-19506: failed to create sequential file,name="07d36ecp_1_1", parms=""
ORA-27007: failed to open fil
SVR4 Error: 2: No such file or directory
Additional information: 7005
Additional information: 1
ORA-19511: Error from media manager layer,error text:
 
解释RMAN 错误堆栈
由于RMAN 记录的数据量很大,你可能发现很难在RMAN 错误堆栈中找到有用的消息。
请注意以下提示和建议:
• 由于错误堆栈中的许多消息对执行故障诊断没有什么意义,所以请尽量找到一两条重要的错误。
找到显示有Additional information(后面跟有一个整数)的行。此行指示介质管理错误。后面跟着的整数是指错误消息文本中解释的代码。
• 从下到上读取堆栈。从下到上读取消息,因为这是RMAN 发布消息的顺序。堆栈中显示的最后一条或两条错误通常是参考性消息。
• 查找紧跟着标帜的RMAN-03002或RMAN-03009消息。RMAN-03009与RMAN-03002相同,但包括通道ID。如果故障与RMAN 命令有关,则这些消息指示
哪个命令执行失败。语法错误会生成RMAN-00558错误。
 
  • 优化RMAN
• RMAN BACKUP和RESTORE操作执行下列任务:
– 读取或写入数据。
– 通过复制和验证块来处理数据。
• 对于任何特定进程,这些任务中最慢的任务被称为瓶颈
• 优化RMAN 需要找出并解决瓶颈。
• 可以平衡备份与恢复操作的性能来满足您的需要。
 
RMAN 的备份和还原操作会执行下列不同任务:
• 读取或写入输入数据
• 通过验证块并将块从输入缓冲区复制到输出缓冲区来处理数据
这些任务中最慢的任务被称为“瓶颈”。RMAN 优化需要找出瓶颈,然后使用RMAN 命令、初始化参数设置或调整物理介质使瓶颈变得更高效。优化RMAN 的关键是了解输入/输出(I/O)。
RMAN 备份和还原作业使用两种类型的I/O 缓冲区:磁盘和三级存储(通常为磁带)。执行备份时,RMAN 通过使用磁盘缓冲区读取输入文件,通过使用磁盘或磁带缓冲区写入输出备份文件。执行还原操作时,RMAN 会撤消这些角色。I/O 可以是同步的,也可以是异步的。同步设备一次只执行一个I/O 任务。因此,能够很容易地确定备份作业所需的时间。与同步I/O (SIO) 相反,异步I/O (AIO) 一次可以执行多个任务。要有效地优化RMAN,必须全面了解同步I/O 与异步I/O、磁盘缓冲区与磁带缓冲区以及通道体系结构的概念。了解这些概念之后,就可以使用固定的视图来监视瓶颈。
可以利用某些备份和恢复功能来平衡备份操作与恢复操作的性能。例如,如果需要加快恢复速度,则可以定期执行映像副本恢复。这会占用更多资源来准备恢复,但会减少执行恢复所需的时间。
 
  • RMAN 多路复用
• 对于读取操作:
• 对于写入操作,每个通道分配四个输出缓冲区,每个1 MB。
 
RMAN 对I/O 使用两种不同类型的缓冲区:磁盘和磁带。RMAN 多路复用确定了RMAN 如何分配磁盘缓冲区。“RMAN 多路复用”是指在备份中同时读取然后写入到同一备份片段的文件数。多路复用的程度取决于BACKUP命令的FILESPERSET参数以及CONFIGURE CHANNEL命令或ALLOCATE CHANNEL命令的MAXOPENFILES参数。注:
RMAN 多路复用是在通道级别设置的。
例如,假定使用一个通道备份两个数据文件。将FILESPERSET设置为3,并将MAXOPENFILES设置为8。在本例中,每个备份集中的文件数为2(FILESPERSET与
每个通道读取的文件数之中的较小值),并且多路复用级别为2(MAXOPENFILES与每个备份集中的文件数之中的较小值)。当RMAN 从磁盘备份时,它使用上图中的表中介绍的算法。
对于写入操作,每个通道分配四个输出缓冲区,每个缓冲区的大小为1 MB。
除非DBWR_IO_SLAVES设置为非零值,否则这些缓冲区将从PGA 进行分配。
注:为了获得最佳恢复性能,请勿将FILESPERSET设置为大于8 的值。
 
  • 分配磁盘缓冲区:示例
分配磁盘缓冲区:示例
在上图示例中,使用一个通道备份四个数据文件。MAXOPENFILES设置为4且FILESPERSET设置为4。本示例中多路复用级别为4。每个数据文件的缓冲区总大小为
4 MB。要计算备份集中分配的缓冲区总大小,用每个数据文件的总字节数乘以通道当
前访问的数据文件数,然后用所得值乘以通道数。
假定使用一个通道备份四个数据文件,并且使用上图中显示的设置。这种情况下,按如下方式相乘可得到为备份分配的缓冲区总大小:
每个数据文件4 MB °1 个通道°每个通道4 个数据文件= 16 MB
请设置MAXOPENFILES参数,以使同时读取的文件数正好可以完全使用输出设备。当输出设备为磁带时,这个注意事项很重要。
 
  • 分配磁带缓冲区
• 从SGA(大型池)分配,BACKUP_TAPE_IO_SLAVES为TRUE。异步
• 从PGA 分配,BACKUP_TAPE_IO_SLAVES为FALSE。同步
 
分配磁带缓冲区
如果备份到磁带设备,Oracle Server 会在每个通道中为磁带写进程(如果执行还原则为读进程)分配四个缓冲区。Oracle Server 仅在通道为系统备份到磁带(SBT) 通道时才分配这些缓冲区。通常,每个磁带缓冲区为256 KB。要计算执行备份或还原期间使用的缓冲区总大小,请用缓冲区大小乘以四,然后用所得值乘以通道数。
如上图中的示例所示,假定使用一个磁带通道,每个缓冲区为256 KB。这种情况下,备份期间所用的缓冲区总大小如下:
每个缓冲区256 KB °每个通道4 个缓冲区°1 个通道= 1,024 KB
RMAN 会在系统全局区(SGA) 或程序全局区(PGA) 分配磁带缓冲区,具体取决于是否使用I/O 从属进程。如果BACKUP_TAPE_IO_SLAVES初始化参数设置为TRUE,则当设置了LARGE_POOL_SIZE初始化参数时,RMAN 会从共享池或大型池分配磁带缓冲区。如果将该参数设置为FALSE,RMAN 会从PGA 分配缓冲区。如果使用I/O 从属进程,请设置LARGE_POOL_SIZE初始化参数,以便留出一些SGA 内存专门用来支持这些大型内存分配。这样,RMAN I/O 缓冲区就不会与库高速缓存争用共享池内存。
Oracle 建议将BACKUP_TAPE_IO_SLAVES初始化参数设置为TRUE。大多数情况下,这在备份到磁带时可以实现最佳性能。执行双向备份时也需要该设置。
  • 比较同步I/O 和异步I/O
 
当RMAN 读取或写入数据时,I/O 是同步或异步的。当I/O 为同步的时,服务器进程一次只能执行一个任务。当I/O 为异步的时,服务器进程可以先开始一个I/O,然后在等待该I/O 完成期间执行其它任务。可以在等待第一个I/O 完成之前开始多个I/O 操作。可以设置决定I/O 类型的初始化参数。如果将BACKUP_TAPE_IO_SLAVES设置为
TRUE,则磁带I/O 是异步的。否则,I/O 是同步的。
上图中的示例显示了在备份到磁带时使用的同步I/O。同步传输时会执行以下步骤:
1.服务器进程将块写入磁带缓冲区。
2.磁带进程将数据写入磁带。当介质管理器将数据从Oracle 缓冲区复制到介质管理器的内部缓冲区时,服务器进程处于空闲状态。
3.磁带进程中继到已完成写入操作的服务器进程。
4.服务器进程可以启动新任务。
 
许多操作系统都支持本机异步I/O,Oracle 可以利用这一功能(只要该功能可用)。如果平台支持,建议始终将BACKUP_TAPE_IO_SLAVES设置为TRUE。在不支持本机异步I/O 的操作系统上,Oracle 通过使用专门代表其它进程执行I/O 的特殊I/O 从属进程可模拟这一功能。通过将DBWR_IO_SLAVES参数设置为非零值可控制磁盘I/O 从属进程Oracle 为任何非零值DBWR_IO_SLAVES分配四个备份磁盘I/O 从属进程
上图中的示例显示了在备份到磁带时使用的异步I/O。
下面列出了在异步交换时执行的详细步骤:
1.服务器进程将块写入磁带缓冲区。
2.磁带进程将数据写入磁带。在磁带进程写入数据时,其它服务器进程可自由处理更多的输入块并填充更多的输出缓冲区。
3.在初始磁带进程对磁带执行写入时,衍生的服务器进程对磁带缓冲区执行写入。
 
  • 监视RMAN 作业的性能
• 以下视图可用于监视备份和还原的性能:
– V$BACKUP_SYNC_IO
– V$BACKUP_ASYNC_IO
• 对于备份或还原存在以下各行:
– 每个数据文件对应一行
– 一个聚集数据文件行
– 每个备份片段对应一行
• I/O 是否为同步的取决于控制进程如何查看它。
 
 
最大备份速度受可用硬件限制。备份速度不可能快于汇总的磁带带宽,除非数据文件中存在许多不需要备份的空块。
备份系统组件中的一个将成为瓶颈,这取决于磁盘、磁带机和任何其它传输组件(如网络)的相对速度。
例如,如果瓶颈是磁带机,并且磁带是流式,则备份速度不可能更快。
注:如果使用同步I/O 并且已将BACKUP_DISK_IO_SLAVES初始化参数设置为TRUE,则I/O 将显示在V$BACKUP_ASYNC_IO中。
 
  • 异步I/O 瓶颈
• 使用V$BACKUP_ASYNC_IO监视异步I/O。
• LONG_WAITS与IO_COUNT之比最大的文件可能是瓶颈。
– IO_COUNT:对文件执行的I/O 数
– LONG_WAITS:“备份/还原进程指示操作系统必须等待I/O 完成”这一情况的发生次数
• 等待次数应为零才能避免瓶颈。
– SHORT_WAIT_TIME_TOTAL
– LONG_WAIT_TIME_TOTAL
 
sys@TEST0924> desc V$BACKUP_ASYNC_IO
 Name                                                  Null?    Type
----------------------------------------------------- -------- ------------------------------------
 SID                                                            NUMBER
 ...
 IO_COUNT                                                       NUMBER
 READY                                                          NUMBER
 SHORT_WAITS                                                    NUMBER
 SHORT_WAIT_TIME_TOTAL                                          NUMBER
 SHORT_WAIT_TIME_MAX                                            NUMBER
 LONG_WAITS                                                     NUMBER
 LONG_WAIT_TIME_TOTAL                                           NUMBER
 LONG_WAIT_TIME_MAX                                             NUMBER
可使用V$BACKUP_ASYNC_IO监视异步I/O。LONG_WAITS列显示“备份或还原进程指示操作系统必须等待I/O 完成”这一情况的发生次数。SHORT_WAITS列显示备份/还原进程执行操作系统调用以在不中断模式下轮询I/O 是否完成的次数。在某些平台上,异步I/O 实施可能会致使在对I/O 执行不中断轮询时调用进程等待I/O 完成。
找出瓶颈的最简单方法是通过查询V$BACKUP_ASYNC_IO来查找LONG_WAITS与IO_COUNT之比最大的数据文件。
 
 
  • 同步I/O 瓶颈
• 同步I/O 被视为一个瓶颈。
• 查询V$BACKUP_SYNC_IO中的DISCRETE_BYTES_PER_SECOND列来查看I/O 比率。
– 将这个比率与设备的最大比率进行比较。
– 如果该比率低于设备指定的值,则可进行优化。
 
使用同步I/O 时,可以很容易地确定备份作业所需的时间,因为设备一次只执行一个I/O
任务。Oracle I/O 使用轮询机制而不是中断机制来确定每个I/O 请求完成的时间。由于操
作系统不会在I/O 完成时立即通知备份或还原进程,所以不能确定每个I/O 的持续时间。
使用V$BACKUP_SYNC_IO可确定备份或还原瓶颈的根源,还可确定备份作业的进度。
V$BACKUP_SYNC_IO包含I/O 与执行备份的进程(在某些平台上为线程)同步时的行。
 
sys@TEST0924> DESC V$BACKUP_SYNC_IO
 Name                                                  Null?    Type
----------------------------------------------------- -------- ------------------------------------
 SID                                                            NUMBER
 SERIAL                                                         NUMBER
 USE_COUNT                                                      NUMBER
...
 FFECTIVE_BYTES_PER_SECOND                                     NUMBER
 IO_COUNT                                                       NUMBER
 IO_TIME_TOTAL                                                  NUMBER
 IO_TIME_MAX                                                    NUMBER
 DISCRETE_BYTES_PER_SECOND                                      NUMBER
 
  • 通道优化
使用CONFIGURE CHANNEL和ALLOCATE CHANNEL命令可执行以下操作:
• 限制备份片段的大小
• 防止RMAN 占用太多的磁盘带宽
• 确定每个通道的多路复用级别
• 配置多个磁盘,以便将I/O 活动分布在多个设备上
• 在SBT 设备上配置多个通道,以便将不同的数据文件分配到各个通道
 
 
可以使用CONFIGURE CHANNEL和ALLOCATE CHANNEL命令设置各种通道限制参数,这些参数将应用于由所分配的服务器会话执行的操作。
MAXPIECESIZE参数指定备份片段的最大大小。使用这个参数可指示RMAN 在一个备份集中创建多个备份片段。RMAN 创建的每个备份片段的大小不会超过此参数指定的值。
RATE参数指定RMAN 每秒在每个通道上读取的字节数。这个参数可用于防止RMAN 占用过多的磁盘带宽和降低联机事务处理(OLTP) 性能。例如,如果每个磁盘驱动器每秒提交3 MB,而设置了RATE=1500K,则仍有一些磁盘带宽可供联机系统使用。
MAXOPENFILES参数决定了备份或复制在给定时间可打开的输入文件的最大数。如果未手动设置该参数,则默认值为8。RMAN 多路复用级别在某些程度上由MAXOPENFILES 决定。多路复用级别反过来又决定了RMAN 如何分配磁盘缓冲区。多路复用是指同时读取然后写入同一备份片段的输入文件数。
 
如果为SBT 设备配置了多个通道,则可以专门将数据文件分布在这些通道上。下面是一个示例:
RUN
{
ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
BACKUP (DATAFILE 1,2,5 CHANNEL c1)
(DATAFILE 4,6 CHANNEL c2)
(DATAFILE 3,7,8 CHANNEL c3);
BACKUP DATABASE NOT BACKED UP;
 
 
 
  • 优化BACKUP命令
• MAXPIECESIZE限制了每个备份片段的大小。
• FILESPERSET可防止RMAN 一次从太多磁盘读取数据。
• 如果没有将MAXOPENFILES设置得足够大,可能会禁止流式传输到磁带。
• BACKUP DURATION可降低备份操作给系统带来的负载量。
 
MAXPIECESIZE参数指定在通道中创建的每个备份片段的最大大小。
FILESPERSET参数指定在一个备份集中最多放多少个文件。如果只分配一个通道,则可以使用这个参数使RMAN 创建多个备份集。例如,如果有50 个输入数据文件和两个通道,则可以设置FILESPERSET=5以创建10 个备份集。此策略可防止将一个备份集拆分到多个磁带上。
MAXOPENFILES参数设置取决于磁盘子系统特性。如果使用ASM,则可将其设置为1 或2。其他情况下,如果数据未条带化,则可能需要将其设置为更大的值。为提高性能,增加每个备份集的文件数,或增大此参数。如果未使用ASM 或任何种类的条带化,尝试增加MAXOPENFILES。
可以通过不同方式使用BACKUP命令的BACKUP DURATION选项。如果指定的持续时间比完成备份所需的时间短,则可以使用此选项将备份活动保留在特定时间窗口内。在特定情况下,未完成的部分备份不会丢失。
此外,该选项具有两个修饰符:
• MINIMIZE TIME:备份尽可能快地运行。
• MINIMIZE LOAD:备份尝试使用时间窗口中可用的全部时间量。这可以减少系统负载。
 
 
  • 优化RMAN 备份性能
要优化RMAN 备份性能,请执行以下步骤:
1. 从已配置和分配的通道中删除RATE设置。
2. 如果使用同步磁盘I/O,设置DBWR_IO_SLAVES。
3. 设置LARGE_POOL_SIZE。
4. 优化RMAN 磁带流性能瓶颈问题。
5. 通过查询V$视图找出瓶颈。
 
要得到最佳备份性能,请遵循以下步骤进行操作:
1.从已配置和分配的通道中删除RATE设置。RATE参数用于设置RMAN 每秒在通道上读取的最大字节数(默认值)、最大千字节数(K)、最大兆字节数(M) 或最大千兆字节
数(G)。它设置读取字节的上限,以便RMAN 不占用过多的磁盘带宽,因而不会降低性能。如果备份未流式传输到磁带,请确保没有在ALLOCATE CHANNEL或
CONFIGURE CHANNEL命令中设置RATE参数。
2.如果使用的是同步磁盘I/O,请设置DBWR_IO_SLAVES。如果磁盘不支持异步I/O,请尝试将DBWR_IO_SLAVES初始化参数设置为一个非零值。将DBWR_IO_SLAVES
设置为任何非零值都会导致在备份和还原中使用固定数量(四个)的磁盘I/O 从属进程,因此会模拟异步I/O。如果使用了I/O 从属进程,则从SGA 获得I/O 缓冲区。如
果配置了大型池,则使用大型池。否则,使用共享池。
注:通过设置DBWR_IO_SLAVES,数据库写进程也会使用从属进程。你可能需要增大PROCESSES初始化参数的值。
3.按下页所述设置LARGE_POOL_SIZE的值。
4.优化RMAN 磁带流性能瓶颈问题。
5.使用V$视图。
 
  • 设置LARGE_POOL_SIZE
• 如果未设置LARGE_POOL_SIZE,Oracle Server 会尝试从共享池获取内存。
• 如果所设置的LARGE_POOL_SIZE值不够大,服务器不会从共享池分配缓冲区。
• 如果服务器得不到足够的内存,则会从本地进程内存分配缓冲区。
• Oracle Server 将消息写入预警日志,指示此备份使用了同步I/O。
ksfqxcre: failure to allocate shared memory means sync I/O will be used whenever async I/O to file notsupported natively
 
从共享池请求的连续内存分配量很小,通常不到5 KB。如果请求的连续内存分配量比较大,则请求可能失败,或者可能需要进行大量内存调整来释放所需的连续内存量。大型池能够满足这种内存请求。大型池没有最近最少使用列表,因此Oracle 不会尝试从大型池中清除内存。
使用LARGE_POOL_SIZE初始化参数可配置大型池。通过查询V$SGASTAT.POOL可查看对象内存位于哪个池(共享池或大型池)中。建议的LARGE_POOL_SIZE值是按以下公式计算的:
#_of_allocated_channels * (16 MB + (4*size_of_tape_buffer ))
 
对于备份到磁盘,磁带缓冲区显然为0,因此请将LARGE_POOL_SIZE设置为16 MB。
对于磁带备份,单个磁带缓冲区的大小由RMAN 通道参数BLKSIZE定义,其默认值为256 KB。假定要备份到两个磁带机。如果磁带缓冲区大小为256 KB,请将
LARGE_POOL_SIZE设置为18 MB。如果将BLKSIZE增大至512 KB,请将LARGE_POOL_SIZE增大至20 MB。
注:仅当DBWR_IO_SLAVES> 0 时,才为磁盘缓冲区使用大型池,仅当BACKUP_TAPE_IO_SLAVES= TRUE时,才为磁带缓冲区使用大型池。如果你在使用
自动共享内存管理功能,则大型池大小会根据系统工作量自动调整。
 
 
  • 优化RMAN 磁带流性能瓶颈问题
• 使用BACKUP... VALIDATE可确定瓶颈是磁带流还是磁盘I/O。
• 使用多路复用可改善磁盘瓶颈中的磁带流性能。
• 使用增量备份可改善磁带备份性能瓶颈。
 
要找出并消除影响RMAN 磁带备份性能的瓶颈,请执行以下操作:
• 使用BACKUP... VALIDATE可确定给定备份作业中的瓶颈是磁带流还是磁盘I/O。
将运行备份任务所需的时间与对同一任务运行BACKUP VALIDATE所需的时间进行比较。备份到磁带的BACKUP VALIDATE会执行与真正备份相同的磁盘读操作,但
不执行磁带I/O。如果磁带的BACKUP VALIDATE所需时间远远低于真正备份到磁带所需的时间,则到磁带的写入很可能就是瓶颈所在。
• 使用多路复用可改善磁盘瓶颈中的磁带流性能。某些情况下,当RMAN 执行到磁带的备份时,向磁带机传送数据块的速度可能不足以支持磁带流。例如,在增量备份
期间,作为同一策略的一部分RMAN 只备份自上次数据文件备份以来更改过的块。
如果未启用更改跟踪,RMAN 必须扫描整个数据文件来查找更改的块,然后在找到此类块后填充输出缓冲区。如果更改的块不多,RMAN 就不能足够快地填充输出缓
冲区来维持磁带机流。此时,通过增大备份使用的多路复用程度可提高性能。这会加快RMAN 填充磁带缓冲区的速率,可以足够快的速度向介质管理器传送缓冲区,
从而维持磁带流。
• 使用增量备份可改善磁带备份性能瓶颈。如果写入到磁带是执行备份时的瓶颈来源,可以考虑使用增量备份作为备份策略的一部分。1 级增量备份只会将数据文件中更改
的块写入磁带,因此会减小写入磁带时的任何瓶颈对整个备份策略的影响。尤其是当磁带机未连接到运行备份数据库的节点本地时,采用增量备份的速度会更快。
 
 
 
 
 
 
 
 
 
 
 
 
 
发布了1432 篇原创文章 · 获赞 147 · 访问量 969万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览