Oracle DatabaseをインストールしたLinuxサーバにおいて、OS起動時にOracleインスタンスやリスナーを自動起動させたい場合、systemdによるサービス管理が推奨されます。
本記事では、systemd対応環境でOracleサービスを自動起動させる方法を、スクリプトの作成・登録手順を含めて解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
1. 前提環境と注意点
| 項目 | 内容 |
|---|---|
| Oracleユーザー | oracle |
| ORACLE_HOME | /u01/app/oracle/product/19.0.0/dbhome_1 |
| ORACLE_SID | orcl |
| OS | Oracle Linux、RHEL、CentOS など systemd対応のLinux |
.bash_profile | Oracleユーザーに設定済みであること(※詳細は後述) |
⚠ この記事のスクリプトは、Oracleユーザーの
.bash_profileに環境変数が設定されていることを前提としています。
2. .bash_profile とは?簡単な説明
.bash_profile は、Linuxのログイン時に一度だけ読み込まれるユーザーごとの環境設定ファイルです。
Oracleユーザーの場合、以下のような内容が設定されている必要があります。
# /home/oracle/.bash_profile の例
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
これが正しく設定されていれば、sqlplus や lsnrctl などのコマンドが正常に動作します。
3. Oracle起動・停止スクリプトの作成
Oracleユーザーで以下のスクリプトを作成します。source ~/.bash_profile により、必要な環境変数が読み込まれます。
起動スクリプト:/home/oracle/scripts/dbora_start.sh
#!/bin/bash
source ~/.bash_profile
$ORACLE_HOME/bin/lsnrctl start
$ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
startup
exit
EOF
停止スクリプト:/home/oracle/scripts/dbora_stop.sh
#!/bin/bash
source ~/.bash_profile
$ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
shutdown immediate
exit
EOF
$ORACLE_HOME/bin/lsnrctl stop
実行権限を付与
$ chmod +x /home/oracle/scripts/dbora_start.sh
$ chmod +x /home/oracle/scripts/dbora_stop.sh
🔍 コマンド解説
| コマンド | 説明 |
|---|---|
source ~/.bash_profile | Oracle用の環境変数を現在のシェルに読み込む |
lsnrctl start | Oracleリスナーを起動する |
sqlplus / as sysdba | OracleにSYSDBA権限で接続する |
startup | インスタンス(データベース)を起動 |
shutdown immediate | データベースを即時停止 |
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
4. systemdユニットファイルの作成
次に、rootユーザーで systemd のサービスファイルを作成します。
# vi /etc/systemd/system/dbora.service
内容:
[Unit]
Description=Oracle Database and Listener Service
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=oracle
ExecStart=/home/oracle/scripts/dbora_start.sh
ExecStop=/home/oracle/scripts/dbora_stop.sh
[Install]
WantedBy=multi-user.target
🔍 各項目の説明
| 項目 | 説明 |
|---|---|
Type=oneshot | 起動後すぐに終了するタイプ(残り続けない) |
RemainAfterExit=yes | 起動後も「起動中」とみなす |
User=oracle | oracleユーザーとして実行する |
ExecStart/Stop | 起動・停止時に実行するスクリプト |
5. サービスの有効化と起動
設定の反映
# systemctl daemon-reexec
# systemctl daemon-reload
自動起動の有効化
# systemctl enable dbora.service
起動して確認
# systemctl start dbora.service
# systemctl status dbora.service
6. 再起動後の確認
OSを再起動して、Oracleサービスが自動的に起動するか確認します。
# reboot
再起動後、以下のように確認します:
$ ps -ef | grep ora_ -- Oracle関連プロセスが起動しているか確認
$ lsnrctl status -- リスナーの状態確認
$ sqlplus / as sysdba
SQL> select status from v$instance;
7. 起動フローの図解(テキスト図)
┌────────────┐
│ Linux起動 │
└────┬───────┘
▼
┌─────────────────────┐
│ systemd 起動処理 │
└────┬────────────────┘
▼
┌────────────────────────────┐
│ dbora.service 実行 │
├────────────┬───────────────┤
│ 起動スクリプト │ 停止スクリプト │
└────────────┴───────────────┘
8. まとめ
systemdを使うことで、Oracleインスタンスやリスナーを自動起動/停止させることができます。- ユニットファイルは
/etc/systemd/systemに作成し、起動・停止処理はスクリプトに分けるのが安全です。 .bash_profileで環境変数を適切に設定しておくことが前提です。
[参考]
3 起動と停止




コメント