レック・テクノロジー・コンサルティング株式会社TECH BLOG

~DB初心者向け~ Oracle Database インスタンスの起動および停止方法

はじめに

本記事では、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.0

Copyright (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までのステップ

インスタンスを起動してからデータベースをオープンするためにはいくつかのステップがあります。そのステップを下記の図に示します。

無題.png

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*PlusSYSユーザーに接続し、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.0

Copyright (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

SQL>
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
 (ノード1)

 インスタンス2
 (ノード2)

 備考
 シングル  ○  -  1つのデータベースに対してインスタンスは
 1つのみ
 RAC  ○  ○  全てのノードでインスタンスが稼働
 RAC One Node  ○  ×(ノード1で稼働している場合、ノード2は停止状態)  いずれか1ノードのみインスタンスが稼働
 Restart  ○  -

 1つのデータベースに対してインスタンスは
 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 <停止オプション>

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

WEB説明会実施中!

各技術領域ごとの業務内容や取り組んでいる最新技術についてお話します。
カメラ・マイクオフでの参加OK!
気軽にご参加ください。

お申込みはこちら

Re:Qチャンネル

Re:Qの技術領域や、これまで培ってきた経験を元にIT技術についての解説動画などを投稿しています。
是非ご覧ください!

公式Youtubeはこちら

ページトップへ戻る