Oracleサービスの自動起動設定(systemd対応環境用)

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

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_SIDorcl
OSOracle Linux、RHEL、CentOS など systemd対応のLinux
.bash_profileOracleユーザーに設定済みであること(※詳細は後述)

この記事のスクリプトは、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

これが正しく設定されていれば、sqlpluslsnrctl などのコマンドが正常に動作します。


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_profileOracle用の環境変数を現在のシェルに読み込む
lsnrctl startOracleリスナーを起動する
sqlplus / as sysdbaOracleに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=oracleoracleユーザーとして実行する
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 起動と停止

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

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

コメント

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