DG常用启动方法与异常查找

--查看主库的状态:

select a.inst_id,a.db_unique_name,a.database_role,

a.protection_level,a.protection_mode,a.open_mode,a.log_mode,a.switchover_status,

b.host_name,b.thread#

from gv$database a left join gv$instance b

on a.inst_id=b.inst_id order by a.inst_id;

---性能模式:

select name,db_unique_name,protection_mode from v$database;

--SESSIONS ACTIVE--正常状态

startup;

--startup nomount;

---alter database mount standby database;

alter database recover managed standby database using current logfile disconnect from session;

alter database recover managed standby database using current logfile disconnect;

lsnrctl status

lsnrctl start LISTENER

lsnrctl start LISTENER_stb

GAP确认:

select case when gapQtyList<3 then 0 else gapQtyList end gapQtyList from(

       Select  max(case when a.APPLIED!='YES'      then a.SEQUENCE# else 0 end)-

max(case when a.APPLIED='YES'       then a.SEQUENCE# else 0 end) gapQtyList

       From v$archived_log a

       Where a.COMPLETION_TIME>sysdate-1);

select process,status,sequence#,thread# from v$managed_standby where process='MRP0';

select PROCESS,STATUS,SEQUENCE#,BLOCKS from V$MANAGED_STANDBY;

---确认模式与状态:

set pagesize 300;

set linesize 300;

col OPEN_MODE format a10; col PROTECTION_MODE format a10; col PROTECTION_LEVEL format a10;

col SWITCHOVER_STATUS format a10;col FORCE_LOGGING format a10;col PRIMARY_DB_UNIQUE_NAME format a10;

select dbid,Name,log_mode,a.CONTROLFILE_TYPE,a.OPEN_MODE,a.PROTECTION_MODE,

a.PROTECTION_LEVEL,a.REMOTE_ARCHIVE,a.DATABASE_ROLE,a.SWITCHOVER_STATUS,a.FORCE_LOGGING,a.PRIMARY_DB_UNIQUE_NAME from v$database a;

select round(sum(bytes)/1024/1024/1024,4) sizeGb from dba_segments;

BEGIN

  DBMS_OUTPUT.PUT_LINE('check ADG need archive Log:');

END;

/

set linesize 600

col SESSION_KEY format 999999

col INPUT_TYPE format a10

col START_TIME format a20

col END_TIME format a20

col status format a30

col elapHour format 999.99

select SESSION_KEY,INPUT_TYPE,STATUS,to_char(START_TIME, 'yyyy-mm-dd hh24:mi') START_TIME,

to_char(END_TIME, 'yyyy-mm-dd hh24:mi') END_TIME,round(ELAPSED_SECONDS / 3600,2) elapHour

from v$rman_backup_job_details

where to_char(START_TIME, 'yyyy-mm-dd hh24:mi') > to_char(sysdate-7,'yyyy-mm-dd hh24:mi') order by SESSION_KEY;

BEGIN

  DBMS_OUTPUT.PUT_LINE('check DG backup is or not health:');

END;

/

col END_TIME format a20

col INPUT_BYTES_DISPLAY format a15

select input_bytes_display,start_time,end_time,status,input_type,ELAPSED_SECONDS

from V$RMAN_BACKUP_JOB_DETAILS  where input_type ='DB INCR' order by start_time;

BEGIN

  DBMS_OUTPUT.PUT_LINE('check 31 Day archive Log Size:');

END;

/

SQL> show parameter log_archive_dest_state

在主库执行SQL> alter system set log_archive_dest_state_2= enable;

这个命令式手动触发主库区尝试连接备库。

其实这种情况下,只要保证主备库之间的网络和配置是正确的。

dataguard会自动恢复这个错误。这个周期默认是300秒,

      3.2.1 关闭standby库的dataguard恢复进程

alter database recover managed standby database cancel;

      3.2.9 启动standby库dataguard恢复进程

alter database recover managed standby database using current logfile disconnect from session;

---check 最新的archivelog是否应用:

SELECT max(sequence#) from v$archived_log where applied='YES';

SQL> show parameter log_archive_dest_state

6.生产库切换日志

Alter system switch logfile;

3、取消备库的  自动恢复

SQL> alter database recover managed standby database cancel;

4、打开  日志实时应用状态模式  `

---巴西使用以下命令同步日志:

SQL> alter database recover managed standby database using current logfile disconnect;

Or

SQL> alter database recover managed standby database disconnect from session;

Select process,status,sequence# from v$managed_standby;

4、查看日志应用到哪个组

SQL> select  max(SEQUENCE#) from  v$archived_log  where applied='YES';

5.RFS没有启动:

SQL> show parameter LOG_ARCHIVE_DEST_

select error from v$archive_dest where target='STANDBY';

原因: lsnrctl status 没有开启,造成异常:

oracle@BRAIMESDG:~> lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 23-DEC-2024 00:21:33

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=BRAIMESDG.a-data.com)(PORT=1521)(IP=FIRST)))

TNS-12541: TNS:no listener

 TNS-12560: TNS:protocol adapter error

  TNS-00511: No listener

   Linux Error: 111: Connection refused

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=BRAIMES_std.a-data.com)(PORT=1521)(IP=FIRST)))

TNS-12541: TNS:no listener

 TNS-12560: TNS:protocol adapter error

  TNS-00511: No listener

   Linux Error: 111: Connection refused

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

TNS-12541: TNS:no listener

 TNS-12560: TNS:protocol adapter error

  TNS-00511: No listener

   Linux Error: 111: Connection refused

oracle@BRAIMESDG:~>

oracle@BRAIMESDG:~> lsnrctl start

备库上查看:

SQL> Select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#

--------- ------------ ----------

ARCH      CLOSING          306704

ARCH      CLOSING          307492

ARCH      CONNECTED             0

ARCH      CLOSING          306703

RFS       IDLE                  0

RFS       IDLE                  0

RFS       IDLE             307493

RFS       IDLE                  0

RFS       IDLE             306705

RFS       IDLE                  0

MRP0      APPLYING_LOG     306705

PROCESS   STATUS        SEQUENCE#

--------- ------------ ----------

RFS       IDLE                  0

RFS       IDLE                  0

13 rows selected.

PROCESS   STATUS        SEQUENCE#

--------- ------------ ----------

ARCH      CONNECTED             0

ARCH      CONNECTED             0

ARCH      CONNECTED             0

ARCH      CONNECTED             0

ARCH      CONNECTED             0

ARCH      CONNECTED             0

ARCH      CONNECTED             0

ARCH      CONNECTED             0

RFS       IDLE            1269309

RFS       IDLE                  0

MRP0      WAIT_FOR_LOG    1269309

PROCESS   STATUS        SEQUENCE#

--------- ------------ ----------

RFS       IDLE                  0

RFS       IDLE                  0

主库上查看:

SQL> Select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#

--------- ------------ ----------

ARCH      CLOSING         1269287

ARCH      CLOSING         1269288

ARCH      CLOSING         1269289

ARCH      CLOSING         1269290

ARCH      CLOSING         1269291

ARCH      CLOSING         1269292

ARCH      CLOSING         1269293

ARCH      CLOSING         1269294

LNS       WRITING         1269309

31 rows selected.

1① 启动实时应用 

2   物理:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

3   逻辑:ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

ALTER DATABASE  START LOGICAL  STANDBY APPLY IMMEDIATE;

alter database start logical standby apply immediate;

4② alter system set log_archive_dest_state_2='defer';  

5alter system switch logfile;

6alter system set log_archive_dest_state_2='enable';

7alter system switch logfile

8③ 重启备库

1> DG库启动、关闭标准操作

Dataguard关闭

1)、先取消日志应用alter database recover managed standby database cancel;

2)、正常关闭DG库Shutdown immediate;

Dataguard开启

1)、数据库先启动到nomount状态1 startup nomount;

2)、然后数据库在启动到standby mount状态alter database mount standby database;

3)、最后开启日志应用alter database recover managed standby database disconnect from session using current logfile;

  • 检查初始化参数
    • 在主数据库上,检查LOG_ARCHIVE_DEST_和LOG_ARCHIVE_DEST_STATE_参数,确保它们指向备用数据库,并且状态为ENABLE。
    • 在备用数据库上,检查LOG_ARCHIVE_DEST_参数,确保它配置了接收来自主数据库的归档日志。
  • 手动启动RFS: ALTER SYSTEM START LOGICAL STANDBY APPLY;
    • 可以尝试手动启动RFS进程,使用命令ALTER SYSTEM START LOGICAL STANDBY APPLY;(对于逻辑备用数据库)或ALTER SYSTEM SWITCH LOGFILE;(对于物理备用数据库)。
<think>我们被要求详细讲解Oracle命令`crsctl stat res -t`。根据引用内容,我们可以总结以下几点: 1. 在Oracle 11.2.0.2及更高版本的Grid Infrastructure中,使用`crsctl stat res -t`命令默认不会显示基础资源(如ora.cssd、ora.ctssd、ora.diskmon)的信息(引用[2])。要查看这些资源,需要加上`-init`选项,即使用`crsctl stat res -t -init`。 2. 引用[3]展示了使用`crsctl stat res -t -init`命令的输出示例,其中列出了各种资源的状态(TARGET, STATE, SERVER, STATE_DETAILS),并解释了STATE_DETAILS列的含义。例如,`ora.asm`的状态详情为“Started,STOPPING”,表示ASM实例之前是启动的,正在停止。 3. 引用[1]提到,当遇到`ora.crsd`状态为STOPPING且无法通过`crsctl stat res -t`查看集群资源状态时,可以通过kill orarootagent代理进程并重新启动CRS来解决。 现在,我们将详细讲解`crsctl stat res -t`命令: ### 命令概述 `crsctl stat res -t`是Oracle Clusterware提供的命令,用于检查集群资源的状态。该命令以表格形式显示集群中所有注册资源(resource)的当前状态。 ### 输出格式 命令输出通常包含以下列: - **NAME**:资源名称。 - **TARGET**:资源的期望状态(由管理员设置),通常为ONLINE、OFFLINE或IGNORE。 - **STATE**:资源的当前实际状态(ONLINE、OFFLINE、UNKNOWN等)。 - **SERVER**:资源当前所在的服务器(对于集群范围资源,可能显示多个服务器)。 - **STATE_DETAILS**:资源状态的详细描述,如正在启动、正在停止、失败原因等。 ### 注意事项 1. 在Oracle 11.2.0.2及以上版本,默认情况下,`crsctl stat res -t`不会显示基础资源(属于init资源的资源,如ora.cssd)。要查看所有资源(包括基础资源),需使用`-init`选项: ```bash crsctl stat res -t -init ``` 2. 资源状态解释: - **ONLINE**:资源在指定节点上正常运行。 - **OFFLINE**:资源未运行。 - **UNKNOWN**:资源状态未知,可能是由于无法获取状态。 - **INTERMEDIATE**:资源处于中间状态(如启动中、停止中)。 - 在`STATE_DETAILS`列中,会有更详细的信息,如“Started,STOPPING”表示资源之前是启动状态,现在正在停止(引用[3])。 ### 使用场景 该命令主要用于: - 检查集群资源的整体健康状态。 - 故障诊断:当集群资源出现问题时,通过该命令可以快速定位哪些资源状态异常。 - 配合其他命令(如`crsctl start resource`、`crsctl stop resource`)进行资源管理。 ### 示例输出分析 以引用[3]的输出为例: ``` -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.asm 1 ONLINE ONLINE leihost2 Started,STOPPING ora.cluster_interconnect.haip 1 ONLINE ONLINE leihost2 ora.crf 1 ONLINE OFFLINE ora.crsd 1 ONLINE OFFLINE ora.cssd 1 ONLINE ONLINE leihost2 ora.cssdmonitor 1 ONLINE ONLINE leihost2 ora.ctssd 1 ONLINE OFFLINE ora.diskmon 1 OFFLINE OFFLINE ora.drivers.acfs 1 ONLINE ONLINE leihost2 STOPPING ora.evmd 1 ONLINE OFFLINE ora.gipcd 1 ONLINE ONLINE leihost2 ora.gpnpd 1 ONLINE ONLINE leihost2 ora.mdnsd 1 ONLINE OFFLINE ``` 分析: - `ora.asm`在节点`leihost2`上,目标状态和当前状态都是ONLINE,但状态详情为“Started,STOPPING”,表示ASM实例正在停止过程中。 - `ora.crsd`目标状态是ONLINE,但实际状态是OFFLINE,表示CRS守护进程未运行。 - `ora.diskmon`目标状态和实际状态都是OFFLINE,表示磁盘监控器未运行。 ### 常见问题处理 当发现资源状态异常(如`ora.crsd`为STOPPING或OFFLINE)时,可以尝试: 1. 检查相关日志(如`crsd.log`)定位问题。 2. 如引用[1]所述,若`ora.crsd`状态异常且无法恢复,可以尝试kill其代理进程(orarootagent)并重启CRS: ```bash ps -ef | grep orarootagent # 找到进程ID kill -9 <pid> crsctl stop crs crsctl start crs ``` 注意:操作前需评估风险,生产环境建议联系Oracle支持。 ### 总结 `crsctl stat res -t`是管理Oracle集群资源的常用命令,结合`-init`选项可查看更全面的资源状态。理解其输出对于维护集群健康至关重要。 §§相关问题§§ 1. 如何解释`crsctl stat res -t`输出中的STATE_DETAILS列? 2. 为什么在11.2.0.2及以上版本中,使用`crsctl stat res -t`看不到基础资源? 3. 当`ora.crsd`状态异常时,除了重启CRS还有哪些解决方法? </think> ### Oracle命令 `crsctl stat res -t` 详细讲解 `crsctl stat res -t` 是 Oracle Grid Infrastructure 中用于检查集群资源状态的核心命令,它以表格形式直观展示集群资源的实时状态。以下是详细解析: #### **一、命令功能** 1. **核心作用** 显示集群中所有注册资源的汇总状态,包括: - 资源名称(如 `ora.database`、`ora.asm` 等) - 目标状态(`TARGET`) - 当前实际状态(`STATE`) - 所在节点(`SERVER`) - 状态详情(`STATE_DETAILS`) 2. **适用场景** - 诊断集群健康状态 - 检查资源故障(如数据库实例、监听器异常) - 验证资源配置变更后的状态 --- #### **二、输出解析** 通过引用[3]的示例分析关键列含义: ```bash NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- ora.asm 1 ONLINE ONLINE leihost2 Started,STOPPING ora.crsd 1 ONLINE OFFLINE ora.cssd 1 ONLINE ONLINE leihost2 ``` | 列名 | 含义 | 示例分析 | |---------------|----------------------------------------------------------------------|-------------------------------------| | **NAME** | 资源名称 | `ora.asm` 表示 ASM 实例资源 | | **TARGET** | 资源的期望状态(管理员设定) | `1` 或 `ONLINE` 表示应在线运行 | | **STATE** | **实际状态**(关键诊断项) | `OFFLINE` 表示资源已停止 | | **SERVER** | 资源运行的节点(若为`OFFLINE`则空白) | `leihost2` 表示资源在该节点运行 | | **STATE_DETAILS** | 状态补充说明(动态变化) | `Started,STOPPING` 表示正在停止中 | > **特殊状态说明**(引用[3]): > - `Started,STOPPING`:资源原为运行状态,正在停止中(如 ASM 实例关闭流程)。 > - 若 `STATE=OFFLINE` 且无 `SERVER`(如 `ora.crsd`),表示资源未在任何节点运行。 --- #### **三、重要注意事项** 1. **版本差异**(引用[2]) 在 **Oracle 11.2.0.2+** 中: - 默认 `crsctl stat res -t` **不显示基础资源**(如 `ora.cssd`, `ora.ctssd`)。 - 需添加 `-init` 参数查看: ```bash crsctl stat res -t -init # 显示所有底层守护进程资源 ``` 2. **常见故障诊断**(引用[1][3]) - **问题**:`ora.crsd` 状态为 `STOPPING` 或 `OFFLINE`。 - **原因**:`crsd` 守护进程异常(由 `orarootagent` 代理启动)。 - **解决**: ```bash ps -ef | grep orarootagent # 查找进程ID kill -9 <PID> # 终止代理进程 crsctl start crs # 重启集群服务 ``` --- #### **四、使用示例** 1. **基本用法** ```bash $ crsctl stat res -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE node1 STABLE ora.LISTENER ONLINE OFFLINE # 监听器异常停止 ``` 2. **查看基础资源** ```bash $ crsctl stat res -t -init -------------------------------------------------------------------------------- ora.cssd ONLINE ONLINE node1 ACTIVE ora.diskmon OFFLINE OFFLINE # 磁盘监控服务未启动 ``` --- #### **五、最佳实践** 1. **定期检查**:在集群维护前后运行此命令验证状态。 2. **结合日志**:异常状态需检查 `$GRID_HOME/log/<hostname>` 下的 `crsd.log` 或 `ohasd.log`。 3. **权限要求**:以 `grid` 用户或 root 用户执行(部分操作需 root 权限)。 > 参考: > - 基础资源显示差异说明 [^2] > - `STATE_DETAILS` 动态状态解读 [^3] > - `crsd` 进程故障处理方案 [^1]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值