ORACLE中终止 RMAN 命令

本文详细介绍了在RMAN(恢复管理器)执行过程中如何终止命令。主要方法包括使用CTRL+C、ALTER SYSTEM KILL SESSION语句以及在操作系统层面操作。还提到了RMAN会话的组件和挂起作业时的进程行为,并提供了终止挂起媒体管理器会话的步骤。文章强调了在不同操作系统中终止会话的注意事项和可能涉及的媒体管理器交互。
摘要由CSDN通过智能技术生成






有几种方法可以在执行过程中终止 RMAN 命令:

  • 首选方法是CTRL+C在 RMAN 界面中按下(或对您的系统使用等效的“注意”组合键)。这也将终止分配的通道,除非它们挂在媒体管理代码中,例如,当它们等待安装磁带时就会发生这种情况。

  • 您可以通过运行 SQLALTER SYSTEM KILL SESSION语句杀死 RMAN 通道对应的服务器会话。

  • 您可以终止与操作系统上的 RMAN 通道对应的服务器会话。

使用 ALTER SYSTEM KILL SESSION 终止会话

您可以通过在 RMAN 日志中查找具有以下示例中显示的格式的消息来识别 RMAN 通道的 Oracle 会话 ID:

channel ch1: sid=15 devtype=SBT_TAPE

siddevtype显示每个分配的信道。请注意,Oraclesid不同于操作系统进程 ID。您可以使用 SQLALTER SYSTEM KILL SESSION语句终止会话。

ALTER SYSTEM KILL SESSION有两个参数,sidRMAN 消息中打印的 和一个序列号,这两个参数都可以通过查询获得V$SESSION。例如,运行以下语句,其中sid_in_rman_output是来自 RMAN 消息的编号:

SELECT SERIAL# FROM V$SESSION WHERE SID=sid_in_rman_output;


然后,运行以下语句,替换sid_in_rman_output从查询中获得的和序列号:

ALTER SYSTEM KILL SESSION 'sid_in_rman_output,serial#';

请注意,如果会话挂在媒体管理器代码中,这不会取消挂起会话。

在操作系统级别终止会话

查找和终止与服务器会话相关的进程是特定于操作系统的。在某些平台上,服务器会话根本不与任何进程相关联。有关详细信息,请参阅特定于操作系统的文档。

终止在媒体管理器中挂起的 RMAN 会话

您有时可能需要终止挂在媒体管理器中的 RMAN 作业。当通道连接在媒体管理器中挂起时终止 RMAN 的最佳方法是终止媒体管理器中的会话。如果此操作不能解决问题,那么在某些平台上,例如 Unix,您可能可以杀死连接的 Oracle 进程。(请注意,终止 Oracle 进程可能会导致媒体管理器出现问题。有关详细信息,请参阅您的媒体管理器文档。)

RMAN 会话的组件

RMAN 会话的性质取决于操作系统。在 UNIX 中,RMAN 会话具有以下关联进程:

  • RMAN客户端进程本身

  • 缺省信道,到目标数据库的初始连接

  • 与每个分配的通道对应的目标数据库的一个目标连接

  • 到恢复目录数据库的目录连接(如果使用恢复目录)

  • 在或 TSPITR 操作期间到辅助实例的辅助连接DUPLICATE

  • 轮询连接到目标数据库,用于在各个分配的信道监控RMAN命令执行。默认情况下,RMAN 建立一个轮询连接。如果您在ALLOCATE CHANNELorCONFIGURE CHANNEL命令中使用不同的连接字符串,RMAN 会建立额外的轮询连接。对于ALLOCATE CHANNELorCONFIGURE CHANNEL命令中使用的每个不同的连接字符串,都存在一个轮询连接。

挂起作业期间的进程行为

RMAN 通常挂起,因为其中一个通道连接正在媒体管理器代码中等待磁带资源。目录连接和默​​认通道似乎挂起,因为它们正在等待 RMAN 告诉它们要做什么。在 RMAN 进程的控制下轮询 RPC 时,轮询连接似乎处于无限循环中。

如果您终止 RMAN 进程本身,那么您也会终止目录连接、辅助连接、默认通道和轮询连接。如果目标和辅助连接没有挂在媒体管理器代码中,它们也会终止。如果目标连接或任何辅助连接在媒体管理层中执行,它们将不会终止,直到在操作系统级别手动终止进程。

并非所有媒体管理器都能检测到 Oracle 进程的终止。那些不能保持资源繁忙或继续处理的。有关详细信息,请参阅您的媒体管理器文档。

终止目录连接不会导致 RMAN 进程终止,因为 RMAN 在备份或还原过程中未执行目录操作。删除默认通道和轮询连接会导致 RMAN 进程检测到通道之一已死亡,然后继续退出。在这种情况下,与挂起通道的连接保持活动状态,如前所述。

终止 RMAN 会话:基本步骤

一旦媒体管理器代码中的挂起通道被终止,RMAN 进程会检测到该终止并继续退出,删除除目标连接之外的所有连接,这些连接在媒体管理层中仍然有效。在这种情况下,有关媒体管理器资源的警告仍然适用。

要终止挂在媒体管理器中的 Oracle 进程:

  1. 查询V$SESSIONV$SESSION_WAIT“通过 V$ 视图监视 RMAN”中所述。例如,执行以下查询:

    COLUMN EVENT FORMAT a10
    COLUMN SECONDS_IN_WAIT FORMAT 999
    COLUMN STATE FORMAT a20
    COLUMN CLIENT_INFO FORMAT a30
    
    SELECT p.SPID, EVENT, SECONDS_IN_WAIT AS SEC_WAIT, 
           sw.STATE, CLIENT_INFO
    FROM V$SESSION_WAIT sw, V$SESSION s, V$PROCESS p
    WHERE sw.EVENT LIKE 'sbt%'
           AND s.SID=sw.SID
           AND s.PADDR=p.ADDR
    ;
    

    检查 SQL 输出以确定哪些 sbt 函数正在等待。例如,输出可能如下:

    SPID EVENT        SEC_WAIT STATE                CLIENT_INFO
    ---- ---------- ---------- -------------------- -------------
    8642 sbtwrite2         600 WAITING              rman channel=ORA_SBT_TAPE_1
    8374 sbtwrite2         600 WAITING              rman channel=ORA_SBT_TAPE_2
    
  2. 使用适合您平台的操作系统级工具,终止挂起的会话。例如,在 Solaris 上执行kill -9命令:

    % kill -9 8642 8374
    

    在 Windows 上,有一个命令行实用程序ORAKILL可以让您在这种情况下终止特定线程。从命令提示符运行以下命令:

    orakill sid thread_id
    

    wheresid标识要定位的数据库实例,而 thethread_idSPID步骤 1 中查询的值。

  3. 检查媒体管理器是否也清除其进程。如果有任何剩余,则下一次备份或恢复操作可能会由于先前的挂起而再次挂起。在某些媒体管理器中,唯一的解决方案是关闭并重新启动媒体管理器。如果媒体管理器的文档未提供所需信息,请联系媒体管理器的技术支持。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值