28、RMAN 故障排除与调优指南

RMAN 故障排除与调优指南

1. 备份存储选择

相较于磁盘,磁带的速度较慢。因此,建议配置快速恢复区(FRA),最好将其配置在 ASM 磁盘组上,并将其作为备份的首选目标。

2. 监控 RMAN 会话和操作

RMAN 通过通道执行任务,这些通道在数据库中维护会话,就像其他普通用户会话一样。可以使用标准数据库视图 V$SESSION V$PROCESS 来跟踪 RMAN 的工作。

  • 查找通道的系统 ID(SID) :最简单的方法是查看 RMAN 提示。例如,备份命令的部分输出如下:
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=55 device type=DISK

可以看到,通道的 SID 以及它将使用的设备类型都包含在输出中。

  • 单会话 RMAN 通道跟踪 :如果使用单个 RMAN 会话,可以使用以下查询跟踪其使用的通道详细信息:
SQL> SELECT s.sid,p.spid,s.client_info 
  2  FROM  V$process p, V$session s 
  3  WHERE p.addr=s.paddr AND client_info like '%rman%';

输出示例:

       SID SPID                     CLIENT_INFO
---------- ------------------------ --------------------------
        55 3580                     rman channel=ORA_DISK_1

这里的 SID 是数据库内服务器进程的会话 ID,SPID 是操作系统的进程 ID。

  • 多会话 RMAN 通道跟踪 :对于同时运行的多个 RMAN 会话,最好使用 SET COMMAND ID ,并在 RUN 块中执行命令时使用它。例如,使用 “session” 后跟不同数字来表示不同会话,如 “session1” 和 “session2”,查询将变为:
SQL> SELECT s.sid,p.spid,s.client_info 
  2  FROM   V$process p, V$session s
  3  WHERE  p.addr=s.paddr AND client_info like '%sess%'

输出示例:

 SID  SPID       CLIENT_INFO
 ---- --------   ------------------------
   45     3563   id=session1
   55     3580   id=session1,rman channel=ORA_DISK_1

在 RMAN 中,两个会话的 RUN 块如下:

RMAN> run{ 
2> set command id to 'session1';
3> backup tablespace users;}
RMAN> run{ 
2> set command id to 'session2';
3> backup tablespace users;}
3. 跟踪备份作业

可以使用 V$RMAN_BACKUP_JOB_DETAILS 视图(也可以使用 RC_RMAN_BACKUP_JOB_DETAILS )来列出和比较在一个 RMAN 会话中创建的备份作业。例如:

SQL>  SELECT session_key S_KEY,session_recid S_RECID,start_time,
  2   end_time, round(output_bytes/1048576) as OUTPUT_MB, 
      elapsed_seconds
  3   FROM   V$RMAN_BACKUP_JOB_DETAILS 
  4   WHERE  start_time >= sysdate-180 and status='COMPLETED'
  5   AND    input_type='DB FULL';

输出示例:

S_KEY S_RECID START_TIM END_TIME   OUTPUT_MB  ELAPSED_SECONDS
----- ------- --------- ---------  ---------- ---------------
    7       7 26-JAN-13 26-JAN-13        1143             125
   13      13 26-JAN-13 27-JAN-13        4321            8757

需要注意的是,此视图不会随数据库关闭而重置,有时访问该视图也会变慢。通过查看 ELAPSED_SECONDS 列,可以推断哪个备份作业花费的时间更长。

4. 监控恢复作业

可以使用 V$RECOVERY_PROGRESS 视图来监控恢复操作的进度。查询如下:

SQL>SELECT type, item, units, sofar, total 
  2  FROM   V$RECOVERY_PROGRESS;

该视图的输出将显示每个项目(如日志文件、已应用的重做日志等)的总工作量(TOTAL)中已完成的工作量(SOFAR)。通过此视图,可以判断恢复操作是否正在进行或是否卡住,并估计完成所需的时间。

5. 使用 V$SESSION_LONGOPS 视图

该视图用于跟踪数据库中的任何长时间运行的操作,对于 RMAN 来说,可以是长时间运行的备份或恢复操作。使用该视图需要从 V$SESSION 视图中找到进程 ID:

SQL> COLUMN program FORMAT a30
SQL> SELECT sid, serial#, program,status 
  2   FROM   v$session WHERE lower(program) LIKE '%rman%';

输出示例:

       SID    SERIAL# PROGRAM                        STATUS
---------- ---------- ------------------------------ --------
        20         35 rman@machine2 (TNS V1-V3)      INACTIVE
        44         97 rman@machine2 (TNS V1-V3)      INACTIVE

在启动 RMAN 时,会分配两个会话。配置执行实际 I/O 的通道时,会再分配一个会话,查询输出会增加一行:

       SID    SERIAL# PROGRAM                        STATUS
---------- ---------- ------------------------------ --------
        20         35 rman@machine2 (TNS V1-V3)      INACTIVE
        39        149 rman@machine2 (TNS V1-V3)      ACTIVE
        44         97 rman@machine2 (TNS V1-V3)      INACTIVE

如果要确认某个会话是否为通道,可以将 V$SESSION 视图与 V$PROGRAM 视图进行映射:

SQL> SELECT s.sid,p.spid,s.client_info  
  2   FROM   V$process p, V$session s
  3   WHERE  p.addr=s.paddr  and client_info like '%rman%';

输出示例:

       SID SPID                     CLIENT_INFO
---------- ------------------------ --------------------------
        39 9567                     rman channel=ORA_DISK_1

启动数据库备份作业后,可以查看 V$SESSION_LONGOPS 视图的输出:

SQL> SELECT sid, serial#, opname, time_remaining 
  2   FROM   v$session_longops Where sid||serial# in (39149) 
  3   AND    time_remaining > 0;

输出示例:

       SID    SERIAL# OPNAME                        TIME_REMAINING
---------- ---------- ----------------------------- --------------
        39        149 RMAN: full datafile backup               155

还可以自定义 V$SESSION_LONGOPS 视图的输出,以显示备份作业完成的百分比:

SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
  2  ROUND(SOFAR/TOTALWORK*100,2) "%COMPLETE"
  3  FROM   V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%'
  4  AND    OPNAME NOT LIKE '%aggregate%'
  5  AND    TOTALWORK != 0 AND SOFAR <> TOTALWORK
  6  /

输出示例:

  SID    SERIAL#    CONTEXT      SOFAR  TOTALWORK  %COMPLETE
 ---- ---------- ---------- ---------- ---------- ----------
   39        149          1      46648     491600       9.49

持续执行该查询,可以查看工作完成情况。如果作业似乎停滞不前, %COMPLETE 列没有进展,可以查询 V$SESSION_WAIT 视图来找出 RMAN 正在等待的等待事件:

SQL> SELECT sid, event, seconds_in_wait AS sec_wait
  2  FROM   V$session_wait WHERE wait_time= 0 
  3  AND    sid in(SELECT sid FROM V$session
  4                WHERE lower(program) like '%rman%')
  5  /

输出示例:

       SID EVENT                                      SEC_WAIT
---------- ---------------------------------------- ----------
        34 RMAN backup & recovery I/O                        0
        40 SQL*Net message from client                       3
        47 SQL*Net message from client                      58
6. 控制 RMAN 性能

为了确保 RMAN 不会消耗过多的 I/O 带宽,并且在备份过程中不会对数据库的整体性能产生太大影响,可以使用以下选项:
- RATE 参数 :为通道配置该参数,设置 RMAN 可以执行的 I/O 上限,控制一个通道可以读取的数据量。没有定义的最佳设置,应设置为使磁盘在分配带宽后仍有剩余带宽的值。对于磁带备份,如果磁带不流式传输,最好从 CONFIGURE ALLOCATE 命令中删除该参数。
- MAXPIECE 参数 :限制 RMAN 允许的最大备份片大小,避免创建大尺寸的备份片并花费过多时间。
- DURATION 参数 :控制 RMAN 完成作业所需的时间,格式为 HH:MM 。例如:

RMAN> BACKUP DURATION 2:00 TABLESPACE users;

还可以结合以下两种配置使用:
- MINIMIZE TIME :使 RMAN 发挥最大性能,但会消耗大量系统资源,影响数据库性能。
- MINIMIZE LOAD :使 RMAN 在给定时间内平衡作业性能,避免过度消耗系统资源。但对于磁带备份,使用该选项可能不是最优选择,因为可能会限制磁带的数据流式传输速率,使备份变慢,并且在作业完成前磁带不会释放。

如果作业在分配的时间内未完成,RMAN 将中止备份并报告。可以使用 PARTIAL 选项使 RMAN 完成命令而不是中断它。

7. 使用增量、多部分、多路复用和并行性

为了减少 RMAN 备份作业的时间,可以使用以下 RMAN 内置功能:
- 增量备份 :与完整备份相比,增量备份只考虑修改过的块,完成时间远低于正常备份。使用块更改跟踪文件可以使增量备份更高效、更节省时间。
- 多部分备份 :对于大尺寸文件,可以使用多个通道并行备份单个文件,实现文件内并行性。在 Oracle Database 12c 中,增量备份和镜像副本备份都可以使用多部分备份。
- 多路复用 :允许单个通道同时读取多个数据文件或归档重做日志。默认情况下, FILESPERCET 设置为 64,多路复用值为 8,表示单个通道一次可以读取 8 个文件。在设置该值之前,需要进行全面的基准测试。
- 并行性 :串行过程总是比并行过程慢,RMAN 备份也是如此。为了提高备份性能,可以调整通道数量。但每个通道都是一个单独的进程,会作为一个单独的会话进入数据库,分配过多通道会耗尽系统资源。对于使用相同概念配置的磁盘或磁盘组中的磁盘进行备份,通道数量应设置为磁盘数量;对于使用磁带驱动器进行备份,通道数量应与使用的磁带驱动器数量相等。

此外,如果配置了物理备用数据库,可以将备份任务卸载到其上,还可以受益于增量备份,减轻主服务器的负担,因为物理备用数据库通常不如主数据库繁忙,有更多系统资源可供 RMAN 使用以优化性能。

8. 使用跟踪功能排除 RMAN 性能问题

启用 RMAN 跟踪有以下三种方法,但由于收集的信息量大且格式不佳,应仅在极端情况下使用,例如 RMAN 完全无响应时,并让 Oracle 支持人员分析跟踪文件以找出瓶颈原因:
- 使用 DEBUG 选项

$ rman target / log=/tmp/rman.log trace=/tmp/rmantrc.trc debug=IO

生成的跟踪文件包含大量内部信息,超出了本文的范围,最好在 Oracle 支持人员的要求下生成并让他们分析。
- 使用 10046 跟踪事件

$ rman target / catalog <connection> debug trace=/tmp/rmantrc.trc log=/tmp/rmanlog.txt
RMAN> sql "alter session set tracefile_identifier='rman_10046'";
RMAN> sql "alter session set events '10046 trace name context forever,level 12'";
RMAN> BACKUP DATABASE;
RMAN> exit; 

生成的跟踪文件可以使用 Trace Kernel Profiler (TKPROF) 等工具进行格式化分析,也可以使用 Trace Analyzer (TRCA) 。建议将文件发送给 Oracle 支持人员进行分析。
- 使用 SQLNET 跟踪 :通过设置 TRACE_LEVEL_SERVER TRACE_LEVEL_CLIENT 参数在服务器端或客户端的 SQLNET.ora 文件中启用 SQLNET 跟踪,以排除网络相关的瓶颈。此操作应在 Oracle 支持人员的要求下进行,并将生成的跟踪文件发送给他们进行正确分析。

通过以上方法,可以有效地监控、调优和排除 RMAN 备份和恢复过程中的各种问题,提高数据库的可用性和性能。

RMAN 故障排除与调优指南(续)

9. RMAN 操作流程总结

为了更清晰地展示 RMAN 的操作流程,下面通过一个 mermaid 流程图来呈现主要的操作步骤和决策点。

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(选择备份存储):::process
    B --> C{是否监控会话和操作}:::decision
    C -- 是 --> D(使用 V$SESSION 和 V$PROCESS 跟踪):::process
    C -- 否 --> E{是否跟踪备份作业}:::decision
    D --> E
    E -- 是 --> F(使用 V$RMAN_BACKUP_JOB_DETAILS 视图):::process
    E -- 否 --> G{是否监控恢复作业}:::decision
    F --> G
    G -- 是 --> H(使用 V$RECOVERY_PROGRESS 视图):::process
    G -- 否 --> I{是否使用 V$SESSION_LONGOPS 视图}:::decision
    H --> I
    I -- 是 --> J(从 V$SESSION 找进程 ID 并查询):::process
    I -- 否 --> K{是否控制 RMAN 性能}:::decision
    J --> K
    K -- 是 --> L(使用 RATE、MAXPIECE、DURATION 参数):::process
    K -- 否 --> M{是否使用增量等功能}:::decision
    L --> M
    M -- 是 --> N(使用增量、多部分、多路复用和并行性):::process
    M -- 否 --> O{是否使用跟踪功能}:::decision
    N --> O
    O -- 是 --> P(使用 DEBUG、10046 事件、SQLNET 跟踪):::process
    O -- 否 --> Q([结束]):::startend
    P --> Q

这个流程图展示了从开始选择备份存储,到后续的监控、性能控制、功能使用以及故障排除等一系列操作的逻辑顺序。在实际使用 RMAN 时,可以根据具体需求和场景,按照这个流程进行操作和决策。

10. 常见问题及解决方案汇总

在使用 RMAN 过程中,可能会遇到一些常见问题,下面将这些问题及对应的解决方案进行汇总:
| 问题描述 | 可能原因 | 解决方案 |
| — | — | — |
| 备份作业长时间未完成 | 1. I/O 瓶颈
2. 系统资源不足
3. 备份片过大 | 1. 检查磁盘 I/O 情况,调整 RATE 参数
2. 检查系统资源使用情况,优化数据库配置或增加硬件资源
3. 设置 MAXPIECE 参数限制备份片大小 |
| RMAN 无响应 | 1. 严重的 I/O 问题
2. 内部逻辑错误 | 1. 启用 RMAN 跟踪(如 DEBUG 选项、10046 跟踪事件),让 Oracle 支持人员分析跟踪文件
2. 检查数据库日志,查找可能的错误信息 |
| 磁带备份速度慢 | 1. RATE 参数限制
2. MINIMIZE LOAD 选项影响 | 1. 从 CONFIGURE 或 ALLOCATE 命令中删除 RATE 参数
2. 避免使用 MINIMIZE LOAD 选项 |
| 作业在分配时间内未完成被中止 | 未考虑作业的实际复杂度和数据量 | 使用 PARTIAL 选项让 RMAN 完成命令,或重新评估并调整 DURATION 参数 |

11. 最佳实践建议

为了更好地使用 RMAN 进行数据库备份和恢复,以下是一些最佳实践建议:
- 备份存储选择 :优先选择 ASM 磁盘组配置 FRA 作为备份目标,确保备份的高效性。
- 监控与调优
- 定期监控 RMAN 会话和作业,使用相应的视图(如 V$RMAN_BACKUP_JOB_DETAILS V$RECOVERY_PROGRESS 等)及时发现问题。
- 根据实际情况调整 RATE、MAXPIECE、DURATION 等参数,平衡 RMAN 性能和数据库整体性能。
- 功能使用
- 对于大尺寸文件和频繁数据变更的情况,优先使用增量备份和多部分备份,提高备份效率。
- 合理配置多路复用和并行性,避免过度分配通道导致系统资源耗尽。
- 如果有物理备用数据库,将备份任务卸载到其上,减轻主服务器负担。
- 故障排除
- 仅在极端情况下启用 RMAN 跟踪,将跟踪文件交给 Oracle 支持人员分析。
- 当作业出现异常时,及时查询相关视图(如 V$SESSION_WAIT )找出等待事件,定位问题。

12. 总结

RMAN 是 Oracle 数据库中强大的备份和恢复工具,但在使用过程中需要注意性能控制、功能使用和故障排除等方面。通过选择合适的备份存储,利用各种监控视图实时了解作业情况,合理配置参数和使用内置功能,可以有效提高备份和恢复的效率,减少对数据库正常运行的影响。同时,在遇到问题时,能够准确地定位和解决,确保数据库的可用性和数据的安全性。希望本文提供的信息和建议能够帮助 DBA 们更好地管理和维护 Oracle 数据库的备份和恢复工作。

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模仿真势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计验证,支持算法快速原型开发;②作为教学工具帮助理解非线性动力学系统建模仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真分析能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值