今回は「Oracleの起動コマンド」について、初めて触れる方にもわかりやすく解説してまいります。
Oracle Databaseは、企業でも多く利用されている高機能なデータベースですが、その運用には正しい手順での起動と停止が欠かせません。特に開発や検証の現場では、起動に関する知識があるだけで、作業効率が大きく変わってきます。
「起動って、ただボタンを押せばいいんじゃないの?」
そう思われる方もいらっしゃるかもしれませんが、Oracleではインスタンスの起動→マウント→オープンという3段階のステップがあるのです。
本記事では、
これからOracleを学ぶ皆さんの、確かな一歩となるように。
それでは、一緒に進めてまいりましょう。
Oracleの基本的な起動の流れ
Oracleデータベースの起動は、単に電源を入れるだけでは完了しません。Oracleには「インスタンス」と「データベース」という2つの重要な構成要素があり、それぞれを順に起動する必要があります。
インスタンスとデータベースの違いとは?
Oracleを動かすには、まずこの「インスタンス」を立ち上げ、その後「データベース(ファイル)」を使えるようにするという流れを踏みます。
起動のステップは3段階
Oracleの起動処理は、次の3つの段階に分かれています。
①NOMOUNT(ノーマウント)状態
最初にインスタンスだけを起動します。まだデータベースファイルにはアクセスしていません。この状態では、主に制御ファイルの読み込み準備などが行われます。
STARTUP NOMOUNT;
②MOUNT(マウント)状態
次に制御ファイルを読み込み、データベースの構造を認識します。この段階では、まだユーザーデータにはアクセスできませんが、バックアップやリカバリ処理が可能です。
ALTER DATABASE MOUNT;
③OPEN(オープン)状態
最後に、実際のデータファイルやREDOログファイルを開いて、ユーザーがデータベースに接続・操作できる状態になります。通常の業務利用ではこの状態が使われます。
ALTER DATABASE OPEN;
実はこの3ステップは、ひとつのコマンドでまとめて実行することも可能です。それが次の章で登場する STARTUP;
コマンドです。
起動コマンドの実例解説
まずはSQL*Plusにログインしよう
Oracleの起動操作は、SQL*Plus(エスキューエル・プラス)というコマンドラインツールから行います。
以下のコマンドを入力して、管理者ユーザーとしてログインします。
sqlplus / as sysdba
sysdba
は管理者権限でログインする指定です。
ステップ1:インスタンスを起動(NOMOUNT)
インスタンスを起動するためには、次のコマンドを使用します。
STARTUP NOMOUNT;
この状態ではまだデータベースファイルにはアクセスしておらず、初期化パラメータファイル(init.oraなど)をもとに、Oracleインスタンスが構築されます。
ステップ2:データベースをマウント
次に、制御ファイルを読み込んで、データベース構造をOracleが把握できるようにします。
ALTER DATABASE MOUNT;
この段階になると、バックアップやリカバリ処理などの管理タスクが可能になります。
ステップ3:データベースをオープン
最後に、ユーザーがアクセスできるようにデータファイルを開きます。
ALTER DATABASE OPEN;
これで、通常のアプリケーションやSQL操作が行える状態になります。
ステップをまとめて実行する「STARTUP」コマンド
上記の3ステップを一括で行いたい場合には、次のようにシンプルなコマンドを使うことも可能です。
STARTUP;
このコマンドを実行するだけで、NOMOUNT → MOUNT → OPEN の3ステップが一気に実行されます。手順に迷うことなく、基本的な起動作業を完了させられる便利なコマンドです。
起動操作は一見すると難しそうに思えるかもしれませんが、ステップごとに目的と状態を意識すれば、確実に理解が深まります。
よくある起動トラブルとその対処法
Oracleデータベースを起動しようとした際、うまく動作せずにエラーが表示されることがあります。慌てずに、エラーの内容をしっかり読み取って対処していきましょう。
ここでは、よくある代表的なエラーとその原因、対応策をご紹介します。
ORA-01034: ORACLE not available
エラー内容
ORA-01034: ORACLE not available
原因
インスタンスがまだ起動していない状態で接続しようとした場合に発生します。
対応方法
まずはSQL*Plusでログインし、インスタンスを正しく起動しましょう。
sqlplus / as sysdba
STARTUP;
このエラーは「Oracleがまだ動いていませんよ」というお知らせのようなものです。落ち着いて、起動処理から始めましょう。
ORA-12541: TNS:no listener
エラー内容
ORA-12541: TNS:no listener
原因
Oracleのネットワークサービス(リスナー)が起動していない、または正しく構成されていないときに発生します。
対応方法(Linux例)
lsnrctl start
このコマンドでリスナーを起動できます。
「リスナー」は、外部からの接続要求を受け付ける門番のような役割をしています。起動していないと、外部からOracleに接続できません。
ORA-27101: shared memory realm does not exist
エラー内容
ORA-27101: shared memory realm does not exist
原因
Oracleの環境変数(特に ORACLE_SID
)が設定されていない、または誤っている場合に発生します。
対応方法(Linux例)
export ORACLE_SID=orcl
sqlplus / as sysdba
STARTUP;
ORACLE_SID
は「どのインスタンスを操作するのか」を指定する変数です。正しい値を設定してから再実行しましょう。
その他ヒント
自動起動の設定について
毎回、手動でSQL*Plusを開いて起動コマンドを打つのは、慣れていてもやはり少々手間ですよね。
特にLinux環境では、OSの起動と同時にOracleも自動で立ち上がってくれると便利です。
この章では、Oracleデータベースの自動起動を設定するための基本的な考え方と、簡単な方法を補足的にご紹介します。
自動起動の仕組み
Linuxの場合、Oracleの自動起動は主に以下の2つの方法で行えます
方法1: /etc/oratab の編集
Oracleをインストールすると、/etc/oratab
という設定ファイルが作成されます。
このファイルの中で、自動起動するかどうかを設定できます。
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
最後の Y
を N
にすると自動起動しません。Y
に変更して保存しましょう。
方法2:起動スクリプトを登録する(systemd使用例)
現代的なLinux環境では、systemd
を用いた起動スクリプトの登録が一般的です。
sudo systemctl enable oracle-database-prestart.service
sudo systemctl start oracle-database-prestart.service
サービス名は環境やバージョンによって異なる場合があります。systemctl list-units
などで確認を。
この方法なら、サーバーが再起動してもOracleが自動で立ち上がるようになります。
まとめ
今回は、Oracleデータベースの起動コマンドについて、基本から実践、そしてトラブル対応や自動起動の方法までを一通りご紹介してまいりました。
Oracleの起動は、次のような段階的なステップを踏むのが特徴です。
起動ステップ早見表
ステップ | 状態 | 主なコマンド | 説明 |
---|---|---|---|
① | NOMOUNT | STARTUP NOMOUNT; | インスタンスだけを起動 |
② | MOUNT | ALTER DATABASE MOUNT; | 制御ファイルを読み込みマウント |
③ | OPEN | ALTER DATABASE OPEN; | データファイルを開き通常利用が可能に |
一括 | 全ステップ実行 | STARTUP; | NOMOUNT→MOUNT→OPENを一括実行 |
起動操作は、最初は敷居が高く感じるかもしれませんが、実際に手を動かしてみることで確実に理解が深まります。
失敗も学びの一部です。焦らず、一歩一歩進んでいきましょう。
この記事が、皆さんのOracle学習の足がかりとなれば幸いです。
コメント