


先日、Database Configuration Assistant(DBCA)を使用してDBを作成しました。
このDBをサーバ起動時に自動起動できるようにしてみました。
と言ってもrpmでインストールしたスクリプトの流用なんですが。ライセンス的には?…大丈夫なのかな?
警告が入ったら消します。
環境
・Red Hat Enterprise Linux release 8.5 (Ootpa)
・Kernel 4.18.0-348.7.1.el8_5.x86_64
・oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
・oracle-database-ee-19c-1.0-1.x86_64.rpm
・開発環境、GNOME環境、日本語入力インストール
・Subscription登録
- スクリプトコピー
- 編集
- 実行権限
- テスト stop
- テスト start
- 自動起動設定
スクリプト名をoracledb_ORCL-19cとします。
| 1 | [root@rhel8 ~]# cp /etc/init.d/oracledb_ORCLCDB-19c /etc/init.d/oracledb_ORCL-19c | 
ざっくりとconfigureの部分を削除してroclに書き換えています。orclは単一データベースです。
編集したものはここ。
| 1 | [root@rhel8 ~]# chmod ugo+x /etc/init.d/oracledb_ORCL-19c | 
大丈夫そうです。
| 1 2 3 4 5 | [root@rhel8 ~]# /etc/init.d/oracledb_ORCL-19c stop Shutting down Oracle Database instance orcl. Oracle Database instance orcl shut down. Stopping Oracle Net Listener. Oracle Net Listener stopped. | 
| 1 2 3 4 5 6 | [oracle@rhel8 ~]$ lsnrctl status LISTENER2 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1522))) TNS-12541: TNS:no listener  TNS-12560: TNS:protocol adapter error   TNS-00511: No listener    Linux Error: 111: Connection refused | 
こちらも大丈夫そう。
| 1 2 3 4 5 | [root@rhel8 ~]# /etc/init.d/oracledb_ORCL-19c start Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance orcl. Oracle Database instance orcl started. | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [oracle@rhel8 ~]$ lsnrctl status LISTENER2 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1522))) STATUS of the LISTENER ------------------------ Alias                     LISTENER2 Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date                15-JAN-2022 20:28:03 Uptime                    0 days 0 hr. 0 min. 17 sec Trace Level               off Security                  ON: Local OS Authentication SNMP                      OFF Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Listener Log File         /opt/oracle/diag/tnslsnr/rhel8/listener2/alert/log.xml Listening Endpoints Summary...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel8)(PORT=1522))) Services Summary... Service "orcl" has 1 instance(s).   Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclXDB" has 1 instance(s).   Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully | 
| 1 2 3 4 5 6 7 8 9 10 11 | [root@rhel8 ~]# chkconfig --add oracledb_ORCL-19c [root@rhel8 ~]# chkconfig --list 注記: この出力に含まれるのは SysV サービスのみです。ネイティブな       systemd サービスは含まれません。SysV の設定データはネイティブな         systemd 設定で上書きされる場合があります。       systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用します。       特定のターゲットで有効になっているサービスを確認する場合は       'systemctl list-dependencies [target]'を使用します。 oracledb_ORCL-19c       0:off   1:off   2:on    3:on    4:on    5:on    6:off | 
サーバ再起動したらエラーで自動起動できないな…何故orz
手動では動くのに。
【2022/01/30追記】
サーバ起動時にエラーで動いてくれないのでデバックしてみました。
スクリプトを書き換えて/var/log/messagesにメッセージ出力してみると
/etc/rc.d/init.d/oracledb_ORCL-19c: 行 61: /usr/bin/su: 許可がありません
あら? エラーコード126になっていました。
When running su -bash: /bin/su: Permission denied
https://access.redhat.com/solutions/1236923
SELinuxが有効だとダメだと。確かにSELINUX=enforcingになっていました。disabledにしたら動きました。
さらに
bash: 行 5: 警告: ヒアドキュメントの 0 行目でファイル終了 (EOF) に達しました (`EOF’ が必要)
【シェル】【エラー】ヒアドキュメントのEOFの前にスペースは入れてはいけない
https://blog.suganoo.net/entry/2018/04/20/181506
EOFの行頭にスペースを入れたらこのメッセージがでると。
インデントで見やすくするのにスペース入れますよね。試しにTABを入れてみましたが同様でした。
これでも動いてくれるので無視してもいいのですが、取り合えず修正しました。
最終的なスクリプトはここです。
動作すると/var/log/messagesにこのようなログが残ります。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | oracledb_ORCL-19c[1062]: Starting Oracle Net Listener. oracledb_ORCL-19c[1062]: LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-JAN-2022 11:01:22 oracledb_ORCL-19c[1062]: Copyright (c) 1991, 2019, Oracle.  All rights reserved. oracledb_ORCL-19c[1062]: Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait... oracledb_ORCL-19c[1062]: TNSLSNR for Linux: Version 19.0.0.0.0 - Production oracledb_ORCL-19c[1062]: System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora oracledb_ORCL-19c[1062]: Log messages written to /opt/oracle/diag/tnslsnr/rhel8/listener2/alert/log.xml oracledb_ORCL-19c[1062]: Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel8)(PORT=1522))) oracledb_ORCL-19c[1062]: Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1522))) oracledb_ORCL-19c[1062]: STATUS of the LISTENER oracledb_ORCL-19c[1062]: ------------------------ oracledb_ORCL-19c[1062]: Alias                     LISTENER2 oracledb_ORCL-19c[1062]: Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production oracledb_ORCL-19c[1062]: Start Date                29-JAN-2022 11:01:22 oracledb_ORCL-19c[1062]: Uptime                    0 days 0 hr. 0 min. 0 sec oracledb_ORCL-19c[1062]: Trace Level               off oracledb_ORCL-19c[1062]: Security                  ON: Local OS Authentication oracledb_ORCL-19c[1062]: SNMP                      OFF oracledb_ORCL-19c[1062]: Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora oracledb_ORCL-19c[1062]: Listener Log File         /opt/oracle/diag/tnslsnr/rhel8/listener2/alert/log.xml oracledb_ORCL-19c[1062]: Listening Endpoints Summary... oracledb_ORCL-19c[1062]:  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel8)(PORT=1522))) oracledb_ORCL-19c[1062]: The listener supports no services oracledb_ORCL-19c[1062]: The command completed successfully oracledb_ORCL-19c[1062]: Oracle Net Listener started. oracledb_ORCL-19c[1062]: Starting Oracle Database instance orcl. oracledb_ORCL-19c[1062]: ORACLE instance started. oracledb_ORCL-19c[1062]: Total System Global Area 4982831096 bytes oracledb_ORCL-19c[1062]: Fixed Size#011#011    8906744 bytes oracledb_ORCL-19c[1062]: Variable Size#011#011  905969664 bytes oracledb_ORCL-19c[1062]: Database Buffers#011 4060086272 bytes oracledb_ORCL-19c[1062]: Redo Buffers#011#011    7868416 bytes oracledb_ORCL-19c[1062]: Database mounted. oracledb_ORCL-19c[1062]: Database opened. oracledb_ORCL-19c[1062]: Oracle Database instance orcl started. [ | 
“The listener supports no services”と表示されていますが60秒経過でサービスが登録されます。