


RHEL 8にRPM Packageを使用してOracle Database 19cをインストールしました。
今回は便利そうなスクリプトを使って新規にCDB,PDBを作成してみたいと思います。
それは最初にCDB(ORCLCDB),PDB(ORCLPDB1)を作成した/etc/init.d/oracledb_ORCLCDB-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登録
試しに作成するのはCDB(ROOTCDB),PDB(ROOTPDB1)とします。
- oracledb_ORCLCDB-19cをコピー
- 編集
- パラメータファイルを作成
- スクリプトの実行
- DB再起動
- リスナーの確認
- ORCLCDBに接続
- ROOTCDBに接続
- 自動起動の設定
- 関連ファイル
ファイル名はoracledb_ROOTCDB-19cとします。
| 1 2 | [root@rhel8 ~]# cd /etc/init.d/ [root@rhel8 init.d]# cp oracledb_ORCLCDB-19c oracledb_ROOTCDB-19c | 
oracledb_ROOTCDB-19cを編集します。
| 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 40 41 42 43 44 45 46 47 48 | [root@rhel8 init.d]# vi oracledb_ROOTCDB-19c [root@rhel8 init.d]# diff -c oracledb_ORCLCDB-19c oracledb_ROOTCDB-19c *** oracledb_ORCLCDB-19c        2019-04-18 16:22:24.000000000 +0900 --- oracledb_ROOTCDB-19c        2022-01-17 21:06:27.593845867 +0900 *************** *** 3,10 ****   # chkconfig: 2345 80 05   # Description: This script is responsible for taking care of configuring the Oracle Database and its associated services.   # ! # processname: oracledb_ORCLCDB-19c ! # Red Hat or SuSE config: /etc/sysconfig/oracledb_ORCLCDB-19c   #   # Set path if path not set --- 3,10 ----   # chkconfig: 2345 80 05   # Description: This script is responsible for taking care of configuring the Oracle Database and its associated services.   # ! # processname: oracledb_ROOTCDB-19c ! # Red Hat or SuSE config: /etc/sysconfig/oracledb_ROOTCDB-19c   #   # Set path if path not set *************** *** 24,34 ****   export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1   export ORACLE_VERSION=19c ! export ORACLE_SID=ORCLCDB   export TEMPLATE_NAME=General_Purpose.dbc   export CHARSET=AL32UTF8 ! export PDB_NAME=ORCLPDB1 ! export LISTENER_NAME=LISTENER   export NUMBER_OF_PDBS=1   export CREATE_AS_CDB=true --- 24,34 ----   export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1   export ORACLE_VERSION=19c ! export ORACLE_SID=ROOTCDB   export TEMPLATE_NAME=General_Purpose.dbc   export CHARSET=AL32UTF8 ! export PDB_NAME=ROOTPDB1 ! export LISTENER_NAME=LISTENER1   export NUMBER_OF_PDBS=1   export CREATE_AS_CDB=true | 
これもracledb_ORCLCDB-19c.confを流用します。ポートは1621,5600としました。
| 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 | [root@rhel8 init.d]# cd /etc/sysconfig/ [root@rhel8 sysconfig]# cp oracledb_ORCLCDB-19c.conf oracledb_ROOTCDB-19c.conf [root@rhel8 sysconfig]# vi oracledb_ROOTCDB-19c.conf [root@rhel8 sysconfig]# diff -c oracledb_ORCLCDB-19c.conf oracledb_ROOTCDB-19c.conf *** oracledb_ORCLCDB-19c.conf   2019-04-18 16:22:24.000000000 +0900 --- oracledb_ROOTCDB-19c.conf   2022-01-17 21:04:59.916523163 +0900 *************** *** 4,13 ****   #Oracle data location.   # LISTENER_PORT: Database listener ! LISTENER_PORT=1521   # ORACLE_DATA_LOCATION: Database oradata location   ORACLE_DATA_LOCATION=/opt/oracle/oradata   # EM_EXPRESS_PORT: Oracle EM Express listener ! EM_EXPRESS_PORT=5500 --- 4,13 ----   #Oracle data location.   # LISTENER_PORT: Database listener ! LISTENER_PORT=1621   # ORACLE_DATA_LOCATION: Database oradata location   ORACLE_DATA_LOCATION=/opt/oracle/oradata   # EM_EXPRESS_PORT: Oracle EM Express listener ! EM_EXPRESS_PORT=5600 | 
oracledb_ROOTCDB-19cを実行してDBを作成します。エラーも無くて終了しました。
| 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 | [root@rhel8 ~]# /etc/init.d/oracledb_ROOTCDB-19c configure Configuring Oracle Database ROOTCDB. DB操作の準備 8%完了 データベース・ファイルのコピー中 31%完了 Oracleインスタンスの作成および起動中 32%完了 36%完了 40%完了 43%完了 46%完了 データベース作成の完了 51%完了 54%完了 プラガブル・データベースの作成 58%完了 77%完了 構成後アクションの実行 100%完了 データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください: /opt/oracle/cfgtoollogs/dbca/ROOTCDB。 データベース情報: グローバル・データベース名:ROOTCDB システム識別子(SID):ROOTCDB 詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/ROOTCDB/ROOTCDB.log"を参照してください。 Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user. | 
念のために再起動してみました。大丈夫そうです。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [root@rhel8 ~]# /etc/init.d/oracledb_ROOTCDB-19c stop Shutting down Oracle Database instance ROOTCDB. Oracle Database instance ROOTCDB shut down. Stopping Oracle Net Listener. Oracle Net Listener stopped. [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. [root@rhel8 ~]# /etc/init.d/oracledb_ROOTCDB-19c start Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance ROOTCDB. Oracle Database instance ROOTCDB started. | 
LISTENER、LISTENER1とも動作していました。
| 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | [oracle@rhel8 ~]$ lsnrctl status LISTENER (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名                      LISTENER バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production 開始日                    17-1月 -2022 21:38:05 稼働時間                  0 日 0 時間 0 分 22 秒 トレース・レベル          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 ~]$ lsnrctl status LISTENER1 LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 17-1月 -2022 21:39:01 Copyright (c) 1991, 2019, Oracle.  All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel8)(PORT=1621)))に接続中 リスナーのステータス ------------------------ 別名                      LISTENER1 バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production 開始日                    17-1月 -2022 21:38:43 稼働時間                  0 日 0 時間 0 分 17 秒 トレース・レベル          off セキュリティ              ON: Local OS Authentication SNMP                      OFF パラメータ・ファイル      /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora ログ・ファイル            /opt/oracle/diag/tnslsnr/rhel8/listener1/alert/log.xml リスニング・エンドポイントのサマリー...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel8)(PORT=1621)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=rhel8)(PORT=5600))(Security=(my_wallet_directory=/opt/oracle/product/19c/dbhome_1/admin/ROOTCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW)) サービスのサマリー... サービス"ROOTCDB"には、1件のインスタンスがあります。   インスタンス"ROOTCDB"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"ROOTCDBXDB"には、1件のインスタンスがあります。   インスタンス"ROOTCDB"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"d5c72d4261a5183ee0531a0aa8c0401c"には、1件のインスタンスがあります。   インスタンス"ROOTCDB"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"rootpdb1"には、1件のインスタンスがあります。   インスタンス"ROOTCDB"、状態READYには、このサービスに対する1件のハンドラがあります... コマンドは正常に終了しました。 | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [oracle@rhel8 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 火 1月 13 11:07:11 2022 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle.  All rights reserved. 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 | 
ORACLE_SIDをROOTCDBに変更してから接続してみました。直接CDBを指定して接続する方法が分かりません(^^;
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [oracle@rhel8 ~]$ . oraenv ORACLE_SID = [ORCLCDB] ? ROOTCDB The Oracle base remains unchanged with value /opt/oracle [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 ROOTPDB1                       MOUNTED | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [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 [root@rhel8 ~]# chkconfig --add oracledb_ROOTCDB-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 oracledb_ROOTCDB-19c    0:off   1:off   2:on    3:on    4:on    5:on    6:off | 
スクリプトが追加してくれています。
| 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | [oracle@rhel8 ~]$ cat /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora # listener.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER1 =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(HOST = rhel8)(PORT = 1621))     )   ) LISTENER =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(HOST = rhel8)(PORT = 1521))       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))     )   ) [oracle@rhel8 ~]$ cat /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora # sqlnet.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) [oracle@rhel8 ~]$ cat /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora # tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCLCDB =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = rhel8)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = ORCLCDB)     )   ) LISTENER_ORCLCDB =   (ADDRESS = (PROTOCOL = TCP)(HOST = rhel8)(PORT = 1521)) ROOTCDB =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = rhel8)(PORT = 1621))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = ROOTCDB)     )   ) LISTENER_ROOTCDB =   (ADDRESS = (PROTOCOL = TCP)(HOST = rhel8)(PORT = 1621)) | 
サーバ再起動後に確認したところ、それぞれのCDBが起動していて接続できました。