Oracleサービスの自動起動スクリプト(systemd未使用環境用)

オラクルデータベースの基本

Oracle DatabaseをインストールしたLinuxサーバが、systemd未対応の古いOS(例:CentOS 6など)の場合、OSの起動時に自動でOracleリスナーやインスタンス(データベース)を起動させるには、自作のinitスクリプトを使うのが一般的です。

本記事では、その作成方法を スクリプトやコマンドの簡単な解説付きで紹介します。

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

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


1. 前提環境

  • Oracle Database:シングルインスタンス
  • Oracleユーザー:oracle
  • ORACLE_HOME:/u01/app/oracle/product/19.0.0/dbhome_1
  • ORACLE_SID:orcl
  • systemd未使用のLinux(SysVinitベース)

2. 自動起動スクリプトの作成

rootユーザーで /etc/init.d/dbora というファイルを作成し、以下の内容を貼り付けます。

#!/bin/sh
#
# chkconfig: 345 99 10
# description: Oracle Database and Listener auto start/stop script

ORA_OWNER=oracle
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_SID=orcl
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_HOME ORACLE_SID PATH

case "$1" in
'start')
echo "Starting Oracle Listener and Database..."
su - $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c "$ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
startup
exit
EOF"
;;
'stop')
echo "Stopping Oracle Database and Listener..."
su - $ORA_OWNER -c "$ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
shutdown immediate
exit
EOF"
su - $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

exit 0

🔍スクリプトの解説

  • chkconfig: 345 99 10
    → ランレベル3, 4, 5で起動、起動順99、停止順10で登録されることを意味します。
  • ORA_OWNER=oracle
    → Oracleを起動するユーザー(通常はoracle
  • su - $ORA_OWNER -c "コマンド"
    → rootではなくoracleユーザーとしてコマンドを実行する
  • lsnrctl start / stop
    → Oracleリスナーを起動/停止する
  • sqlplus / as sysdbastartup
    → Oracleインスタンスを起動するSQLコマンドです(shutdown immediateは即時停止)

3. 実行権限を付与

# chmod 750 /etc/init.d/dbora

🔍このコマンドの意味

  • 750 = 所有者(root)は実行可、グループは読み取りのみ、他はアクセス不可
  • /etc/init.d/dbora に対して実行可能な権限を設定します

4. OS起動時に自動実行させる設定(chkconfig)

# chkconfig --add dbora
# chkconfig dbora on

🔍このコマンドの意味

  • chkconfig --add dbora
    dboraスクリプトをinitスクリプト管理対象に追加
  • chkconfig dbora on
    → 起動ランレベルに登録して、OS起動時に自動実行されるように設定

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

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


5. 動作確認

サーバを再起動して、Oracleが自動で起動するかを確認します。

# reboot

起動後、以下のコマンドで動作確認します。

$ ps -ef | grep ora_        -- Oracleプロセスが動いているか確認
$ lsnrctl status -- リスナーが起動しているか確認
$ sqlplus / as sysdba -- DBへ接続して確認
SQL> select status from v$instance;

6. テキスト図:起動の流れ

textコピーする編集する┌───────────────┐
│   Linux起動    │
└──────┬────────┘
       │
       ▼
┌────────────────────────┐
│ /etc/init.d/dbora 実行 │ ← chkconfigで登録済み
└──────┬─────────────────┘
       │
       ▼
┌─────────────┐    ┌──────────────────┐
│ リスナー起動 │ → │ DBインスタンス起動 │
└─────────────┘    └──────────────────┘

7. 補足と注意点

項目説明
Oracleユーザーの.bash_profileORACLE_HOMEやORACLE_SIDが正しく設定されていることを確認してください
systemd使用環境本記事の方法ではなく、systemdユニットファイルを使った設定が必要です
Grid Infrastructure環境srvctlなどのツールで管理する必要があり、この記事の方法は使えません

まとめ

古いLinux環境やsystemd未対応環境では、/etc/init.dにOracle自動起動スクリプトを作成し、chkconfigで登録することでOS起動時に自動的にOracleサービスを起動できます。

スクリプトの内容はOracleユーザーでlsnrctlsqlplusを呼び出す形でシンプルに実装でき、運用管理の手間を大きく減らすことができます。

[参考]
3 起動と停止

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

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

コメント

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