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 sysdbaとstartup
→ 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_profile | ORACLE_HOMEやORACLE_SIDが正しく設定されていることを確認してください |
| systemd使用環境 | 本記事の方法ではなく、systemdユニットファイルを使った設定が必要です |
| Grid Infrastructure環境 | srvctlなどのツールで管理する必要があり、この記事の方法は使えません |
まとめ
古いLinux環境やsystemd未対応環境では、/etc/init.dにOracle自動起動スクリプトを作成し、chkconfigで登録することでOS起動時に自動的にOracleサービスを起動できます。
スクリプトの内容はOracleユーザーでlsnrctlやsqlplusを呼び出す形でシンプルに実装でき、運用管理の手間を大きく減らすことができます。
[参考]
3 起動と停止




コメント