• 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 级增量备份只会将数据文件中更改
    的块写入磁带,因此会减小写入磁带时的任何瓶颈对整个备份策略的影响。尤其是当磁带机未连接到运行备份数据库的节点本地时,采用增量备份的速度会更快。
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Git 数据是怎么存储的
    技术管理规划-路径跟资源
    技术管理规划-如何规划团队的架构
    技术管理规划-如何设定团队的目标
    技术管理规划-设定团队的职能
    springboot实践1
    spring的事件机制实战
    Apollo的基本概念和集成实战
    spring的事件
    ELK的简单安装使用
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317018.html
Copyright © 2020-2023  润新知