Oracle AI Databaseの起動・停止を自動化設定【OracleLinux 9.7】

  • URLをコピーしました!
Oracle AI Database

OSを起動・再起動するたびにOracleインスタンスが停止してしまうと、毎回sqlplus / as sysdbaからstartupを打つのが手間です。

[oracle@learnbytebybyte ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on 月 2月 2 21:49:54 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 3218317872 bytes
Fixed Size		    5014064 bytes
Variable Size		  721420288 bytes
Database Buffers	 2483027968 bytes
Redo Buffers		    8855552 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>

本記事では、Oracle公式ドキュメントに記載されているoratabdbstart/dbshutを活用したOracleインスタンスの起動・停止の自動化設定を解説します。

本手法はOracle Database 19c以前にも対応しています。

目次

oratabファイルの設定

oratabは、Linux/UnixのOracle AI Database環境において、インスタンス名(SID)とOracle実行ファイル(ORACLE_HOME)、スクリプトの実行可否を管理します。

[oracle@learnbytebybyte ~]$ cat /etc/oratab 

<省略>

orcl:/u01/app/oracle/product/26.0.0/dbhome_1:N

3つ目のフィールドは、下記で紹介するdbstart/dbshutスクリプトでOracle AI Databaseを起動・停止することを許否する設定になります。

この先、dbstart/dbshutスクリプトを活用するため、3つ目のフィールドをNからYに変更する必要があります。

下記は、実際に3つ目のフィールドがNとYでdbstart/dbshutスクリプトの実行の有無を確認します。

[oracle@learnbytebybyte ~]$ cat /etc/oratab 

<省略>

orcl:/u01/app/oracle/product/26.0.0/dbhome_1:N
[oracle@learnbytebybyte ~]$ # Nはスクリプトが実行されていない
[oracle@learnbytebybyte ~]$ $ORACLE_HOME/bin/dbstart $ORACLE_HOME
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on 月 2月 2 22:26:41 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

アイドル・インスタンスに接続しました。

SQL>exit
切断しました。
[oracle@learnbytebybyte ~]$ vi /etc/oratab
[oracle@learnbytebybyte ~]$ cat /etc/oratab 

<省略>

orcl:/u01/app/oracle/product/26.0.0/dbhome_1:Y  # NからYに変更

[oracle@learnbytebybyte ~]$ # Yはスクリプトが実行された
[oracle@learnbytebybyte ~]$ $ORACLE_HOME/bin/dbstart $ORACLE_HOME
Processing Database instance "orcl": log file /u01/app/oracle/product/26.0.0/dbhome_1/rdbms/log/startup.log
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on 月 2月 2 22:28:27 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.



Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0
に接続されました。
SQL> 

/etc/init.d/dboraを新規作成

次に、LinuxOSの起動・停止のタイミングでdbstart/dbshutを呼ぶためのスクリプトdboraを作ります。

スクリプトはOracle公式サイトに掲載されています。

#! /bin/sh
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORACLE_HOME.

ORA_HOME=/u01/app/oracle/product/26.0.0/dbhome_1 #Oracleの実行ファイルパス(ORACLE_HOME)を記載
ORA_OWNER=oracle                                 #Oracleのインストールユーザを記載

case "$1" in
'start') 
    # Start the Oracle databases:
    # The following command assumes that the oracle login
    # will not prompt the user for any values
    # Remove "&" if you don't want startup as a background process.
    su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
    touch /var/lock/subsys/dbora
    ;;

'stop')
    # Stop the Oracle databases:
    # The following command assumes that the oracle login
    # will not prompt the user for any values
    su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" &
    rm -f /var/lock/subsys/dbora
    ;;
esac

権限の再定義

dboraのグループをOSDBA(通常dba)にし、権限を750に変更します。

大きく意味はないと思われますが、dbaグループのメンバーがスクリプトファイルを確認・実行できるようにします。

[root@learnbytebybyte ~]# chgrp dba /etc/init.d/dbora
[root@learnbytebybyte ~]# chmod 750 /etc/init.d/dbora
[root@learnbytebybyte ~]# ls -la /etc/init.d/dbora 
-rwxr-x---. 1 root dba 896  2月  2 22:35 /etc/init.d/dbora

シンボリックを作成

SysVinitがOS起動・停止のランレベル(0か3、5)に合わせて、rcディレクトリにあるリンクをたどって起動・停止を実行します。

参照先は同じファイルになりますが、シンボリック名がSはstart、Kはstopを第1引数としてdboraが実行されます。

また、01や99は当該フォルダ内で順番に実行する順番を表しています。

[root@learnbytebybyte ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
[root@learnbytebybyte ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
[root@learnbytebybyte ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
[root@learnbytebybyte ~]# ls -la /etc/rc0.d/K01dbora
lrwxrwxrwx. 1 root root 17  2月  2 22:41 /etc/rc0.d/K01dbora -> /etc/init.d/dbora
[root@learnbytebybyte ~]# ls -la /etc/rc3.d/S99dbora
lrwxrwxrwx. 1 root root 17  2月  2 22:39 /etc/rc3.d/S99dbora -> /etc/init.d/dbora
[root@learnbytebybyte ~]# ls -la /etc/rc5.d/S99dbora
lrwxrwxrwx. 1 root root 17  2月  2 22:40 /etc/rc5.d/S99dbora -> /etc/init.d/dbora

【ハマりどころ】SELinuxのラベル変更

SELinuxが有効化されている場合は、上記の設定だけでは自動起動・停止がされないことがあります。

[oracle@learnbytebybyte ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on 月 2月 2 23:40:10 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup

systemctl status dboraで確認した時、起動ログに以下が出力されました。

[root@learnbytebybyte ~]# systemctl daemon-reload
[root@learnbytebybyte ~]# systemctl status dbora
● dbora.service - SYSV: Oracle auto start-stop script.
     Loaded: loaded (/etc/rc.d/init.d/dbora; generated)
     Active: active (exited) since Mon 2026-02-02 23:46:28 JST; 14min ago
       Docs: man:systemd-sysv-generator(8)
        CPU: 75ms

 2月 02 23:46:27 learnbytebybyte systemd[1]: Starting SYSV: Oracle auto start-stop script....
 2月 02 23:46:27 learnbytebybyte dbora[893]: /etc/rc.d/init.d/dbora: 行 19: /usr/bin/su: 許可がありません
 2月 02 23:46:28 learnbytebybyte systemd[1]: Started SYSV: Oracle auto start-stop script..

/etc/rc.d/init.d/dbora: 行 19: /usr/bin/su: 許可がありません

SELinuxは、/etc/init.d/dboraのスクリプトに適切なラベルが付いていないと判断されたため、su実行を許否している可能性があります。

[root@learnbytebybyte ~]# ls -laZ /usr/bin/su
-rwsr-xr-x. 1 root root system_u:object_r:su_exec_t:s0 56944  3月 10  2025 /usr/bin/su
[root@learnbytebybyte ~]# ls -laZ /etc/init.d/dbora 
-rwxr-x---. 1 root dba unconfined_u:object_r:etc_t:s0 896 2月 2 23:47 /etc/init.d/dbora

matchpathcon,restoreconで本来付くべきラベルを確認し、ラベルの設定を行います。

[root@learnbytebybyte ~]# 
[root@learnbytebybyte ~]# matchpathcon /etc/init.d/dbora
/etc/init.d/dbora	system_u:object_r:initrc_exec_t:s0
[root@learnbytebybyte ~]# restorecon -v /etc/init.d/dbora
[root@learnbytebybyte ~]# ls -laZ /etc/init.d/dbora 
-rwxr-x---. 1 root dba unconfined_u:object_r:initrc_exec_t:s0 896  2月  2 23:27 /etc/init.d/dbora

まとめ

Oracle公式ドキュメントに記載されているoratabdbstart/dbshutを活用したOracleインスタンスの起動・停止の自動化設定を解説しました。

自動起動・停止の設定手順
  • oratabファイルの設定
  • /etc/init.d/dboraを新規作成
  • 権限の再定義
  • シンボリックを作成
  • 【ハマりどころ】SELinuxのラベル変更

最後までご愛読ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

情報系Fラン大学出身・新卒未経験からデータベースエンジニアに転身。
使用技術:Oracle|TypeScript
資格取得:情報処理安全確保支援士試験|応用情報技術者試験|OracleMaster Gold DBA|OCI Architect Associate

目次