はじめに
本記事では、Oracleインスタンスの停止および起動する方法についてまとめました。
SQL*Plusおよびsrvctlコマンドを使用した方法について、コマンドの実行例と併せて紹介したいと思います。
DB初心者向けの内容となっております。
インスタンス起動方法
SQL*Plusを使用したインスタンスの起動方法です。
事前にSYSDBA権限を付与されたOracleユーザー(OSユーザー)で接続し、ORACLE_SID、ORACLE_HOME等の環境変数が設定されている必要があります。
SYSユーザーにはSYSDBA権限が付与されているため、通常SYSユーザーで接続します。
[oracle@reqdb01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 2 12:50:27 2024
Version 19.22.0.0.0Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.22.0.0.0
インスタンスを起動するには、STARTUPコマンドを実行します。
SQL> startup
ORACLE instance started.Total System Global Area 2147479664 bytes
Fixed Size 8941680 bytes
Variable Size 536870912 bytes
Database Buffers 1593835520 bytes
Redo Buffers 7831552 bytes
Database mounted. ←MOUNT状態に遷移
Database opened. ←OPEN状態に遷移
インスタンス起動からデータベースOPENまでのステップ
インスタンスを起動してからデータベースをオープンするためにはいくつかのステップがあります。そのステップを下記の図に示します。
SQL*Plusからインスタンスを起動するには、基本的にはSTARTUPコマンドを実行し、OPEN状態にします。
しかし、いくつかの管理タスクを実行する場合や、データベースファイルに障害が発生した場合などでは、NOMOUNT状態やMOUNT状態で起動をいったん停止します。このような場合、オプションを指定してSTARTUPコマンドを実行します。
SHUTDOWN状態→NOMOUNT状態へ遷移
SQL>startup nomount
SHUTDOWN状態→MOUNT状態へ遷移
SQL>startup mount
SHUTDOWN状態→OPEN状態へ遷移
SQL>startup open
NOMOUNT状態→MOUNT状態、MOUNT状態→OPEN状態へ遷移するには、ALTER DATABASEコマンドを実行します。
NOMOUNT状態→MOUNT状態
SQL> ALTER DATABASE MOUNT;
MOUNT状態→OPEN状態
SQL> ALTER DATABASE OPEN;
起動状態と実行可能な処理
一部の処理はNOMOUNT状態またはMOUNT状態で実行する必要があります。
NOMOUNT状態で実行可能な処理
・データベースの作成(CREATE DATABASE)
・制御ファイルの作成(CREATE CONTROLFILE)
MOUNT状態で実行可能な処理
・アーカイブログモードへの変更(ALTER DATABASE ARCHIVELOG )
・データベース全体のリカバリ処理
インスタンス停止方法
インスタンスを停止するには、SQL*PlusでSYSユーザーに接続し、SHUTDOWNコマンドを実行します。
[oracle@reqdb01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 2 13:46:58 2024
Version 19.22.0.0.0Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.22.0.0.0SQL>
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SHUTDOWNコマンドのオプション
SHUTDOWNコマンドのオプションを以下の表に示します。
オプション | 説明 | 既存の接続の扱い | 実行中のSQLの扱い |
NORMAL | 現在データベースに接続しているす べてのユーザーがデータベースから の切断するのを待機し、インスタン スの停止処理を行う。オプション未 指定時のデフォルト |
ユーザーが接続を終了する まで待機する |
何もしない |
TRANSACTIONAL | 実行中のトランザクションを完了し てからインスタンスを停止する |
すべてのトランザクションが 完了すると切断される |
トランザクションの終 了を待機する |
IMMEDIATE | 実行中の処理を取り消した上でイン スタンスを停止する |
切断される |
取り消す |
ABORT | 実行中の処理に対する取り消し処理 をぜすにインスタンスを強制終了する |
切断される | 強制終了 |
・SHUTDOWN ABORTでは、インスタンスが強制終了されるため、データファイルの整合性が取れていない状態。次回インスタンス起動時に自動的に回復されます。
また、SHUTDOWN ABORT はOSレベルでプロセスをKILLすることと同等なため、日常の計画的なインスタンス停止では使用しないでください。
・SHUTDOWN NORMAL、TRANSACTIONAL、IMMEDIATEでは、インスタンスを停止するとチェックポイントが実行されるため、データベースファイルは整合性が取れた状態になります。
Oracle Database構成別 インスタンスの稼働状況
構成 |
インスタンス1 |
インスタンス2 |
備考 |
シングル | ○ | - | 1つのデータベースに対してインスタンスは 1つのみ |
RAC | ○ | ○ | 全てのノードでインスタンスが稼働 |
RAC One Node | ○ | ×(ノード1で稼働している場合、ノード2は停止状態) | いずれか1ノードのみインスタンスが稼働 |
Restart | ○ | - |
1つのデータベースに対してインスタンスは |
前章で説明した通り、SQL*Plusでインスタンスを起動/停止することができますが、
RACやRAC One Node構成などインスタンスが2つ以上ある環境ではSRVCTLコマンドを使用して全てのインスタンスに対してまとめて起動/停止することが可能です。
SRVCTLコマンドによる起動/停止方法を以下に示します。
起動
srvctl start database -db <DB名>
起動オプション(nomount, mount, open)を指定したい場合
srvctl start database -db <DB名> -stopoption <起動オプション>
RAC One Node構成で、ノード2で起動したい場合
srvctl start database -db <DB名> -node <ノード2 ホスト名>
停止
srvctl stop database -db <DB名>
停止オプション(normal, transactional, immediate, abort)を指定したい場合
srvctl stop database -db <DB名> -stopoption <停止オプション>