Oracle RAC(Real Application Clusters) 起動と停止の正しい手順: srvctl と crsctl の使い分け

ASM

Oracle RAC(Real Application Clusters) 環境の運用を任されたばかりで、「データベースの起動・停止は srvctl で、クラスタの停止は crsctl で」と聞いたけれど、どう使い分けるのか不安ですか? Oracle RAC 起動は、シングルインスタンスとは異なり、クラスタ全体のリソース依存関係を考慮する必要があります。この記事では、DBA 初心者が安全に RAC 環境を操作できるよう、srvctl を使ったデータベースの起動・停止と、crsctl を使ったクラスタ基盤全体の起動・停止の正しい手順と使い分けを、実行例を交えて解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


この記事でわかること: RAC 起動・停止の最短手順

Oracle RAC 環境での基本的な起動・停止操作は、以下のコマンドで行います。DB の操作は srvctl、クラスタ基盤の操作は crsctl と覚えるのが鍵です。

データベースの起動 (全ノード):
#oracle もしくは grid ユーザーで実行
$ srvctl start database -db <db_name>

データベースの停止 (全ノード):
#oracle もしくは grid ユーザーで実行
$ srvctl stop database -db <db_name>

クラスタ全体の停止 (全ノード):
#root ユーザーで実行
# OS シャットダウンや GI パッチ適用の前に行う
# 事前に srvctl で DB を停止しておくこと
# crsctl stop cluster -all

クラスタ全体の起動 (全ノード):
#root ユーザーで実行
# OS 起動後に実行
# crsctl start cluster -all

※RAC では startup や shutdown コマンドでデータベースを起動停止することは推奨されません。


srvctl vs crsctl: 2つのコマンドの役割

Oracle RAC 環境では、すべてのコンポーネント(DB、ASM、リスナー、VIP、ディスクグループなど)が Oracle Clusterware (CRS) によって「リソース」として管理されています。

alt: Oracle RAC のリソース依存関係を示す図。OS、Clusterware、ASM、DBインスタンス、リスナー、サービスが階層構造になっている。

これらのリソースを操作するために、主に2つのコマンドを使い分けます。

1. srvctl (Server Control Utility)

  • 実行ユーザー: oracle もしくは grid ユーザーで実行
  • 目的: データベース、インスタンス、リスナー、サービスなど、Oracle ソフトウェアのリソースを操作します。
  • 特徴: DBA が日常的に使うコマンドです。srvctl はリソース間の依存関係(例: DB は ASM に依存する)を理解しているため、srvctl start database を実行すると、必要に応じて ASM やリスナーも自動で起動してくれます。

2. crsctl (Clusterware Control Utility)

  • 実行ユーザー: grid ユーザー (状態確認など) または root ユーザー (クラスタ全体の起動停止)
  • 目的: Oracle Clusterware という、クラスタ基盤 (Grid Infrastructure) 自体を操作します。
  • 特徴: OS の再起動や、Grid Infrastructure (GI) のパッチ適用など、クラスタ基盤全体に影響するメンテナンス時に使用します。

最重要ルール: DB の起動・停止は必ず srvctl で行う

シングルインスタンスのように SQL*Plus で shutdown してはいけません。CRS が「DB が障害で停止した」と誤認し、自動で再起動を試みてしまうためです。必ず srvctl stop database を使い、CRS に DB を意図的に停止することを伝えてください。


crsctl によるリソース状態の確認

現在のクラスタの状態を把握するには、grid ユーザーで crsctl stat res -t コマンドを実行するのが最も詳細で確実です。

実行例 (crsctl stat res -t)

以下は、v19rac1v19rac2 という2ノードで構成された RAC 環境の実行例です。

[grid@v19rac1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
ora.chad
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
ora.net1.network
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
ora.ons
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 ONLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE v19rac2 STABLE
ora.OCR.dg(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE v19rac1 Started,STABLE
2 ONLINE ONLINE v19rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE v19rac2 STABLE
ora.qosmserver
1 ONLINE ONLINE v19rac2 STABLE
ora.scan1.vip
1 ONLINE ONLINE v19rac2 STABLE
ora.v19rac.db
1 ONLINE ONLINE v19rac1 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
2 ONLINE ONLINE v19rac2 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
ora.v19rac1.vip
1 ONLINE ONLINE v19rac1 STABLE
ora.v19rac2.vip
1 ONLINE ONLINE v19rac2 STABLE
--------------------------------------------------------------------------------
[grid@v19rac1 ~]$

見方のポイント

  • Name: リソースの名前です。
    • ora.asm: ASM インスタンス
    • ora.DATA.dg: DATA ディスクグループ
    • ora.scan1.vip: SCAN VIP (クライアント接続の窓口)
    • ora.v19rac.db: データベースリソース (これが DB 本体)
    • ora.v19racX.vip: 各ノードの VIP
  • Target: CRS が認識している「あるべき姿」です (ONLINE または OFFLINE)。
  • State: 「現在の実際の状態」です (ONLINE, OFFLINE, INTERMEDIATE (移行中) など)。
  • Server: そのリソースが稼働しているサーバー名です。
  • State details: 補足情報です。DB リソース (ora.v19rac.db) の場合、Open となっていれば正常に起動しています。

この例では、データベース v19rac はノード1 (v19rac1) とノード2 (v19rac2) の両方で ONLINE かつ Open であり、正常に稼働していることがわかります。


srvctl を使った DB/インスタンスの起動・停止 (oracle ユーザー)

データベースの日常的な起動・停止は、すべて oracle ユーザーで srvctl を使って行います。

前提: oracle ユーザーでログインします。($ORACLE_HOME へのパスは通しておきます)

1. データベース全体の起動・停止

クラスタ全体(全インスタンス)の DB を起動・停止します。

# データベース名 'v19rac' を全ノードで起動
$ srvctl start database -db v19rac

# データベース名 'v19rac' を全ノードで停止 (デフォルトは immediate)
$ srvctl stop database -db v19rac
[grid@v19rac1 ~]$ crsctl stat res ora.v19rac.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.v19rac.db
1 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
2 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
[grid@v19rac1 ~]$ srvctl start database -db v19rac ★起動
[grid@v19rac1 ~]$ crsctl stat res ora.v19rac.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.v19rac.db
1 ONLINE ONLINE v19rac1 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
2 ONLINE ONLINE v19rac2 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
--------------------------------------------------------------------------------
[grid@v19rac1 ~]$ srvctl stop database -db v19rac ★停止
[grid@v19rac1 ~]$ crsctl stat res ora.v19rac.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.v19rac.db
1 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
2 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
[grid@v19rac1 ~]$

2. 停止オプションの指定

shutdown コマンドと同様に、停止オプションを指定できます。

# トランザクションが完了するまで待ってから停止 (推奨)
$ srvctl stop database -db v19rac -stopoption TRANSACTIONAL

# 即時停止
$ srvctl stop database -db v19rac -stopoption IMMEDIATE

# 強制停止 (最終手段)
$ srvctl stop database -db v19rac -stopoption ABORT

データベース停止時に -stopoption を指定しない場合、デフォルトで immediate で停止します。

[grid@v19rac1 ~]$ srvctl config database -db v19rac
Database unique name: v19rac
Database name: v19rac
Oracle home: /u01/app/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/V19RAC/PARAMETERFILE/spfile.268.1199800727
Password file: +DATA/V19RAC/PASSWORD/pwdv19rac.256.1199800059
Domain:
Start options: open
Stop options: immediate ★
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: v19rac1,v19rac2
Configured nodes: v19rac1,v19rac2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
[grid@v19rac1 ~]$

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

3. 特定インスタンスのみの起動・停止

パッチ適用などで片系ずつ操作(ローリング)する場合、インスタンス単位で起動・停止します。

# 'v19rac' DB の 'v19rac1' インスタンスのみ停止
$ srvctl stop instance -db v19rac -instance v19rac1

# 'v19rac' DB の 'v19rac1' インスタンスのみ起動
$ srvctl start instance -db v19rac -instance v19rac1

4. その他のリソース操作 (リスナー、ASM など)

同様に、リスナーや ASM も srvctl で操作します。

# 全ノードのリスナーの状態確認
$ srvctl status listener

# SCAN リスナーの状態確認
$ srvctl status scan_listener

# ASM インスタンスの起動 (DB 起動時に自動で起動しますが、個別に操作も可能)
$ srvctl start asm

crsctl を使ったクラスタ全体の停止 (root ユーザー)

OS のシャットダウンや GI のメンテナンスなど、クラスタ基盤全体を停止する必要がある場合は crsctl を使います。

警告: 影響範囲を理解してください

この操作は、DB、ASM、リスナー、VIP を含む すべてのクラスタリソースを停止 させます。必ず事前に srvctl でデータベースを正常に停止させてから実行してください。

前提: root ユーザーでログインします。

1. クラスタ全体の停止

いずれか 1 ノードで root ユーザーとして実行します。-all オプションにより、クラスタ内の全ノードに対して停止命令が実行されます。

# (事前に srvctl stop database -db v19rac を実行しておく)

# root ユーザーで実行
# crsctl stop cluster -all
[grid@v19rac1 ~]$ su
Password:
[root@v19rac1 grid]# crsctl stop cluster -all
CRS-2673: Attempting to stop 'ora.crsd' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.crsd' on 'v19rac2'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'v19rac1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'v19rac2'
CRS-2673: Attempting to stop 'ora.v19rac.db' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.chad' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.v19rac.db' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.qosmserver' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.chad' on 'v19rac2'
CRS-2677: Stop of 'ora.v19rac.db' on 'v19rac1' succeeded
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'v19rac1'
CRS-2673: Attempting to stop 'ora.OCR.dg' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'v19rac1'
CRS-2677: Stop of 'ora.OCR.dg' on 'v19rac1' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'v19rac1'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'v19rac1' succeeded
CRS-2677: Stop of 'ora.v19rac.db' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.v19rac1.vip' on 'v19rac1'
CRS-2677: Stop of 'ora.v19rac1.vip' on 'v19rac1' succeeded
CRS-2677: Stop of 'ora.asm' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.cvu' on 'v19rac2'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.v19rac2.vip' on 'v19rac2'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'v19rac2'
CRS-2677: Stop of 'ora.v19rac2.vip' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.scan1.vip' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.cvu' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'v19rac1'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'v19rac1' succeeded
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'v19rac1' succeeded.
CRS-2677: Stop of 'ora.qosmserver' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.chad' on 'v19rac1' succeeded
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'v19rac2'
CRS-2673: Attempting to stop 'ora.OCR.dg' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.ons' on 'v19rac1'
CRS-2677: Stop of 'ora.ons' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'v19rac1'
CRS-2677: Stop of 'ora.net1.network' on 'v19rac1' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'v19rac1' has completed
CRS-2677: Stop of 'ora.chad' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.OCR.dg' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'v19rac2'
CRS-2677: Stop of 'ora.asm' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.crsd' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.storage' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.evmd' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.ctssd' on 'v19rac1'
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'v19rac2'
CRS-2677: Stop of 'ora.storage' on 'v19rac1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'v19rac1' succeeded
CRS-2677: Stop of 'ora.evmd' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'v19rac1'
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'v19rac2'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'v19rac2' succeeded
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'v19rac2' succeeded.
CRS-2673: Attempting to stop 'ora.ons' on 'v19rac2'
CRS-2677: Stop of 'ora.ons' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'v19rac2'
CRS-2677: Stop of 'ora.net1.network' on 'v19rac2' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'v19rac2' has completed
CRS-2677: Stop of 'ora.crsd' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.storage' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.evmd' on 'v19rac2'
CRS-2673: Attempting to stop 'ora.ctssd' on 'v19rac2'
CRS-2677: Stop of 'ora.storage' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'v19rac2' succeeded
CRS-2677: Stop of 'ora.evmd' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'v19rac2'
CRS-2677: Stop of 'ora.asm' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'v19rac1'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'v19rac1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'v19rac1'
CRS-2677: Stop of 'ora.cssd' on 'v19rac1' succeeded
CRS-2677: Stop of 'ora.asm' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'v19rac2'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'v19rac2' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'v19rac2'
CRS-2677: Stop of 'ora.cssd' on 'v19rac2' succeeded
[root@v19rac1 grid]#

このコマンドは、各ノードで crsctl stop crs を実行するのと同じ効果がありますが、より確実です。

2. クラスタ全体の起動

OS 起動後、クラスタを起動する場合も root ユーザーで実行します。

# root ユーザーで実行
# crsctl start cluster -all
[grid@v19rac1 ~]$ su
Password:
[root@v19rac1 grid]# crsctl start cluster -all
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'v19rac1'
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'v19rac2'
CRS-2672: Attempting to start 'ora.evmd' on 'v19rac1'
CRS-2676: Start of 'ora.cssdmonitor' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'v19rac1'
CRS-2672: Attempting to start 'ora.diskmon' on 'v19rac1'
CRS-2676: Start of 'ora.diskmon' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.evmd' on 'v19rac2'
CRS-2676: Start of 'ora.cssdmonitor' on 'v19rac2' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'v19rac2'
CRS-2676: Start of 'ora.evmd' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'v19rac2'
CRS-2676: Start of 'ora.diskmon' on 'v19rac2' succeeded
CRS-2676: Start of 'ora.evmd' on 'v19rac2' succeeded
CRS-2676: Start of 'ora.cssd' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'v19rac1'
CRS-2672: Attempting to start 'ora.ctssd' on 'v19rac1'
CRS-2676: Start of 'ora.cssd' on 'v19rac2' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'v19rac2'
CRS-2672: Attempting to start 'ora.ctssd' on 'v19rac2'
CRS-2676: Start of 'ora.ctssd' on 'v19rac1' succeeded
CRS-2676: Start of 'ora.ctssd' on 'v19rac2' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'v19rac1'
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'v19rac2' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'v19rac2'
CRS-2676: Start of 'ora.asm' on 'v19rac2' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'v19rac2'
CRS-2676: Start of 'ora.asm' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'v19rac1'
CRS-2676: Start of 'ora.storage' on 'v19rac1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'v19rac1'
CRS-2676: Start of 'ora.crsd' on 'v19rac1' succeeded
CRS-2676: Start of 'ora.storage' on 'v19rac2' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'v19rac2'
CRS-2676: Start of 'ora.crsd' on 'v19rac2' succeeded
[root@v19rac1 grid]#

OS 起動時に CRS が自動起動するよう設定されている場合(標準設定)、このコマンドを手動で実行する必要は通常ありません。

3. 実行後の確認

クラスタを起動・停止した後は、必ず grid ユーザーで状態を確認します。

# grid ユーザーで実行
# クラスタ全体の健全性を確認
$ crsctl check crs

# 全リソースの状態を確認 (Target と State が一致するか)
$ crsctl stat res -t
[grid@v19rac1 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[grid@v19rac1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
ora.chad
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
ora.net1.network
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
ora.ons
ONLINE ONLINE v19rac1 STABLE
ONLINE ONLINE v19rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 ONLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE v19rac2 STABLE
ora.OCR.dg(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE v19rac1 Started,STABLE
2 ONLINE ONLINE v19rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE v19rac1 STABLE
2 ONLINE ONLINE v19rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE v19rac2 STABLE
ora.qosmserver
1 ONLINE ONLINE v19rac2 STABLE
ora.scan1.vip
1 ONLINE ONLINE v19rac2 STABLE
ora.v19rac.db
1 ONLINE ONLINE v19rac1 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
2 ONLINE ONLINE v19rac2 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
ora.v19rac1.vip
1 ONLINE ONLINE v19rac1 STABLE
ora.v19rac2.vip
1 ONLINE ONLINE v19rac2 STABLE
--------------------------------------------------------------------------------
[grid@v19rac1 ~]$

トラブルシューティングと注意点

事象原因の推測確認・対処法
srvctl stop database が終わらない実行中のトランザクションが残っている。-stopoption TRANSACTIONAL を試す。GV$SESSION で該当セッションを特定・kill する。最終手段は -stopoption ABORT
crsctl stat res -tStateINTERMEDIATEリソースが起動中または停止中。しばらく待つ。数分経っても変化しない場合、grid ユーザーで Clusterware のアラートログ ($GRID_HOME/log/<hostname>/alert<hostname>.log) を確認する。
SQL*Plusshutdown してしまったCRS が障害とみなし、DB を自動で再起動しようとする。操作の誤り。必ず srvctl を使う。もし実行してしまったら、crsctl stat res -t でリソースが ONLINE に戻るのを待つか、srvctl stop database で改めて停止させる。
crsctl stat res -tTargetONLINE なのに StateOFFLINEリソースの起動に失敗している。Clusterware のアラートログや、該当リソースのログ(例: DB のアラートログ)を確認し、起動失敗の原因(ASM ディスク障害、設定ミスなど)を特定する。

Oracle RAC 起動・停止に関する FAQ

Q. srvctl と crsctl はどのユーザーで実行しますか?

A. srvctl は DB やリスナーなど Oracle リソースを操作するため、oracle ユーザーで実行します。crsctl はクラスタ基盤 (GI) を操作するため、状態確認は grid ユーザー、クラスタ全体の起動停止は root ユーザーで実行します。

Q. OS を再起動したら DB は自動で起動しますか?

A. はい、標準設定ではそうなります。OS 起動時に CRS (Clusterware) が自動起動し、CRS は管理対象リソース(DB など)の Target (あるべき姿) が ONLINE に設定されていれば、依存関係(ASM → DB)を考慮して自動で起動します。

Q. srvctl start database を実行したら ASM も起動しました。なぜですか?

A. srvctl がリソース間の依存関係を理解しているためです。DB リソース (ora.v19rac.db) は ASM リソース (ora.asm) やディスクグループリソース (ora.DATA.dg) に依存しているため、DB 起動時にそれらが起動していなければ自動で先に起動してくれます。

Q. パッチ適用のため、片ノードずつ DB を停止したいです。

A. srvctl stop instance -db <db_name> -instance <inst_name1> を使って片ノードのインスタンスを停止します。メンテナンス完了後、srvctl start instance で起動し、次に反対側のノードを停止します。これをローリング・メンテナンスと呼びます。


まとめ

Oracle RAC の起動・停止は、シングルインスタンスとは異なり、Clusterware との連携が不可欠です。

  • リソースの状態確認は grid ユーザーで crsctl stat res -t を使う。
  • データベースやリスナーの起動・停止は oracle ユーザーsrvctl を使う。
  • クラスタ基盤 (GI) 全体の起動・停止は root ユーザーcrsctl stop/start cluster -all を使う。
  • SQL*Plus で startupshutdown を実行してはいけない(CRS が障害と誤認するため)。

この使い分けを正しく理解し、安全な RAC 運用を心がけましょう。


本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました