先日、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秒経過でサービスが登録されます。