


先日、RHEL8にRPMパッケージからOracle Database 19cをインストールしました。
動作確認後にサーバを再起動するとリスナーが起動していませんでした。
環境
・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登録
- oracleユーザでログイン
- sqlplusで接続
- 手動起動
- sqlplusで接続
- PDBのオープン
- Databaseの手動停止
- /etc/init.d/oracledb_ORCLCDB-19cスクリプトで起動
- PDBをオープンしてセーブ
- 確認
- /etc/init.d/oracledb_ORCLCDB-19cの自動実行
| 1 | [root@rhel8 ~]# su - oracle | 
| 1 2 3 4 5 6 7 8 9 10 11 | [oracle@rhel8 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 月 1月 15 5:01:08 2022 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle.  All rights reserved. アイドル・インスタンスに接続しました。 SQL> quit 切断しました。 | 
あれ!? リスナーが起動していませんでした。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [oracle@rhel8 ~]$ lsnrctl status LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 15-1月 -2022 5:26:57 Copyright (c) 1991, 2019, Oracle.  All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1521)))に接続中 TNS-12541: TNS: リスナーがありません。  TNS-12560: TNS: プロトコル・アダプタ・エラー   TNS-00511: リスナーがありません。    Linux Error: 111: Connection refused (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))に接続中 TNS-12541: TNS: リスナーがありません。  TNS-12560: TNS: プロトコル・アダプタ・エラー   TNS-00511: リスナーがありません。    Linux Error: 2: No such file or directory | 
手動でDatabaseを起動してみます。
| 1 2 3 4 | [oracle@rhel8 ~]$ dbstart Since ORACLE_HOME is not set, cannot auto-start Oracle Net Listener. Usage: /opt/oracle/product/19c/dbhome_1/bin/dbstart ORACLE_HOME Processing Database instance "ORCLCDB": log file /opt/oracle/product/19c/dbhome_1/rdbms/log/startup.log | 
ORACLE_HOMEの指定が必要なのか。/etc/oratabで[Y]にしたけど関係ないのかな?
取り合えずORACLE_HOMEを指定して起動しました。
| 1 2 | [oracle@rhel8 ~]$ dbstart $ORACLE_HOME Processing Database instance "ORCLCDB": log file /opt/oracle/product/19c/dbhome_1/rdbms/log/startup.log | 
プラガブル・データベース(PDB)のORCLPDB1はマウントされただけでした。
| 1 2 3 4 5 6 7 8 9 10 11 | [oracle@rhel8 ~]$ sqlplus / as sysdba Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 に接続されました。 SQL> show pdbs     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                       READ ONLY  NO          3 ORCLPDB1                       MOUNTED SQL> | 
セッションをORCLPDB1に切り替えます。
| 1 2 3 | SQL> alter session set container=orclpdb1; セッションが変更されました。 | 
ORCLPDB1をオープンします。
| 1 2 3 4 5 6 7 8 9 10 | SQL> alter pluggable database orclpdb1 open; プラガブル・データベースが変更されました。 SQL> show pdbs     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          3 ORCLPDB1                       READ WRITE NO SQL> | 
dbshutコマンドで停止してみます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [oracle@rhel8 ~]$ dbshut $ORACLE_HOME Processing Database instance "ORCLCDB": log file /opt/oracle/product/19c/dbhome_1/rdbms/log/shutdown.log [oracle@rhel8 ~]$ lsnrctl status (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1521)))に接続中 TNS-12541: TNS: リスナーがありません。  TNS-12560: TNS: プロトコル・アダプタ・エラー   TNS-00511: リスナーがありません。    Linux Error: 111: Connection refused (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))に接続中 TNS-12541: TNS: リスナーがありません。  TNS-12560: TNS: プロトコル・アダプタ・エラー   TNS-00511: リスナーがありません。    Linux Error: 2: No such file or directory | 
そもそも便利なスクリプトがあるのでこれを使えばいいのです。
このスクリプトはroot権限で実行します。root権限が無いとメッセージが表示されます。
| 1 2 | [oracle@rhel8 ~]$ /etc/init.d/oracledb_ORCLCDB-19c You must be root user to run the configurations script. Login as root user and try again. | 
取り合えずrootで。
| 1 2 3 4 5 6 7 8 | [root@rhel8 ~]# /etc/init.d/oracledb_ORCLCDB-19c Usage: /etc/init.d/oracledb_ORCLCDB-19c {start|stop|restart|configure|delete} [root@rhel8 ~]# /etc/init.d/oracledb_ORCLCDB-19c start Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance ORCLCDB. Oracle Database instance ORCLCDB started. | 
起動できたようです。
| 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 37 38 39 | [oracle@rhel8 ~]$ lsnrctl status (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名                      LISTENER バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production 開始日                    15-1月 -2022 5:49:34 稼働時間                  0 日 0 時間 1 分 11 秒 トレース・レベル          off セキュリティ              ON: Local OS Authentication SNMP                      OFF パラメータ・ファイル      /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora ログ・ファイル            /opt/oracle/diag/tnslsnr/rhel8/listener/alert/log.xml リスニング・エンドポイントのサマリー...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel8)(PORT=1521)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=rhel8)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/product/19c/dbhome_1/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW)) サービスのサマリー... サービス"ORCLCDB"には、1件のインスタンスがあります。   インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"ORCLCDBXDB"には、1件のインスタンスがあります。   インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"d5c0ad0287ff1c8fe0531a0aa8c0dc0f"には、1件のインスタンスがあります。   インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"orclpdb1"には、1件のインスタンスがあります。   インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります... コマンドは正常に終了しました。 [oracle@rhel8 ~]$ sqlplus / as sysdba Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 に接続されました。 SQL> show pdbs     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                       READ ONLY  NO          3 ORCLPDB1                       MOUNTED SQL> | 
自動起動するにはオープンした状態をセーブすればよさそうです。
Oracleプラガブル・データベースPDB【新規作成し接続するまでの手順】
https://souiunogaii.hatenablog.com/entry/Oracle-PDB
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SQL> alter session set container=orclpdb1; セッションが変更されました。 SQL> alter pluggable database orclpdb1 open; プラガブル・データベースが変更されました。 SQL> show pdbs     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          3 ORCLPDB1                       READ WRITE NO SQL> alter pluggable database orclpdb1 save state; プラガブル・データベースが変更されました。 | 
再起動
| 1 2 3 4 5 6 7 8 9 10 11 | [root@rhel8 ~]# /etc/init.d/oracledb_ORCLCDB-19c stop Shutting down Oracle Database instance ORCLCDB. Oracle Database instance ORCLCDB shut down. Stopping Oracle Net Listener. Oracle Net Listener stopped. [root@rhel8 ~]# /etc/init.d/oracledb_ORCLCDB-19c start Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance ORCLCDB. Oracle Database instance ORCLCDB started. | 
オープンしていました。
| 1 2 3 4 5 6 7 8 9 10 11 | [oracle@rhel8 ~]$ sqlplus / as sysdba Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 に接続されました。 SQL> show pdbs     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                       READ ONLY  NO          3 ORCLPDB1                       READ WRITE NO SQL> | 
oracledb_ORCLCDB-19cはinit.dにあるのでSysV起動スクリプトだろうから自動実行できるよね。
なるほど(^^;
| 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 | [root@rhel8 ~]# chkconfig --list 注記: この出力に含まれるのは SysV サービスのみです。ネイティブな       systemd サービスは含まれません。SysV の設定データはネイティブな         systemd 設定で上書きされる場合があります。       systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用します。       特定のターゲットで有効になっているサービスを確認する場合は       'systemctl list-dependencies [target]'を使用します。 [root@rhel8 ~]# systemctl list-unit-files | grep oracle oracle-database-preinstall-19c-firstboot.service generated oracledb_ORCLCDB-19c.service                     generated [root@rhel8 ~]# systemctl enable oracledb_ORCLCDB-19c oracledb_ORCLCDB-19c.service is not a native service, redirecting to systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable oracledb_ORCLCDB-19c [root@rhel8 ~]# /usr/lib/systemd/systemd-sysv-install enable oracledb_ORCLCDB-19c [root@rhel8 ~]# chkconfig --list 注記: この出力に含まれるのは SysV サービスのみです。ネイティブな       systemd サービスは含まれません。SysV の設定データはネイティブな         systemd 設定で上書きされる場合があります。       systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用します。       特定のターゲットで有効になっているサービスを確認する場合は       'systemctl list-dependencies [target]'を使用します。 oracledb_ORCLCDB-19c    0:off   1:off   2:on    3:on    4:on    5:on    6:off | 
REHL8再起動後に確認するとORCLPDB1がオープン状態でした。