[Oracle19c]GUI不要!rpmインストールで簡単データベース構築(の補足)

本編の補足になります。

本編(こちら)になります。

Oracle Textを使う場合には追加でパッケージが必要

こちらのパッケージ

compat-libstdc++-33

Oracle のインストールマニュアルには前提パッケージとして記載があるのですが、oracle-database-preinstall-19cではインストールされません。

Oracle Textを使用する場合のみ必要になるパッケージらしいです。

現在OSのインストールメディアやyumのリポジトリには含まれていないため、OSのサイトからパッケージをダウンロードしてインストールする必要があります。

下記各OSのサイトからダウンロードできます。最新版をダウンロードしてインストールすればよいかと思います。

Oracle Linux

http://public-yum.oracle.com/oracle-linux-7.html

Red Hat Enterprise Linux

https://access.redhat.com/downloads

DBの名前を変える方法

※前提:マニュアルに記載がないのでベンダー動作保証外の可能性あります。あしからず。

作成するDBの名前はサービス構成スクリプトの30行目あたりに環境変数として定義されています。

# vi /etc/init.d/oracledb_ORCLCDB-19c
~
     22
     23 # Setting the required environment variables
     24 export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
     25
     26 export ORACLE_VERSION=19c
     27 export ORACLE_SID=ORCLCDB
     28 export TEMPLATE_NAME=General_Purpose.dbc
     29 export CHARSET=AL32UTF8
     30 export PDB_NAME=ORCLPDB1
     31 export LISTENER_NAME=LISTENER
     32 export NUMBER_OF_PDBS=1
     33 export CREATE_AS_CDB=true
~

これらを変更することで任意の名前のDBを作成することが可能です。

直接編集でもファイルをコピー後に編集でも問題ないです。

[root@oradg ~]# grep "export PDB_NAME=ORCLPDB1" /etc/init.d/oracledb_ORCLCDB-19c
export PDB_NAME=ORCLPDB1
[root@oradg ~]# grep "export ORACLE_SID=ORCLCDB" /etc/init.d/oracledb_ORCLCDB-19c
export ORACLE_SID=ORCLCDB
[root@oradg ~]# sed -i "s/export PDB_NAME=ORCLPDB1/export PDB_NAME=PDB1/" /etc/init.d/oracledb_ORCLCDB-19c
[root@oradg ~]# sed -i "s/export ORACLE_SID=ORCLCDB/export ORACLE_SID=CDB1/" /etc/init.d/oracledb_ORCLCDB-19c
[root@oradg ~]# grep "export PDB_NAME=ORCLPDB1" /etc/init.d/oracledb_ORCLCDB-19c
[root@oradg ~]# grep "export PDB_NAME=" /etc/init.d/oracledb_ORCLCDB-19c
export PDB_NAME=PDB1
[root@oradg ~]# grep "export ORACLE_SID=" /etc/init.d/oracledb_ORCLCDB-19c
export ORACLE_SID=CDB1
[root@oradg ~]# 

それに伴いconfファイルの名前のORACLE_SID部分は変更した値に修正する必要があります。

[root@oradg ~]# cp -p /etc/sysconfig/oracledb_ORCLCDB-19c.conf /etc/sysconfig/oracledb_CDB1-19c.conf
[root@oradg ~]#

これでスクリプトを実行すれば変更した名前でDBが作成されます。

[root@oradg ~]# /etc/init.d/oracledb_ORCLCDB-19c configure
Configuring Oracle Database CDB1.
DB操作の準備
8%完了
データベース・ファイルのコピー中
31%完了
Oracleインスタンスの作成および起動中
32%完了
36%完了
40%完了
43%完了
46%完了
データベース作成の完了
51%完了
54%完了
プラガブル・データベースの作成
58%完了
77%完了
構成後アクションの実行
100%完了
データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
/opt/oracle/cfgtoollogs/dbca/CDB1。
データベース情報:
グローバル・データベース名:CDB1
システム識別子(SID):CDB1
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/CDB1/CDB1.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.
[root@oradg ~]#

起動停止

起動停止する方法です。このDB作成スクリプトは起動停止にも使えるみたいなので記しておきます。

リスナー起動、インスタンス起動、PDBのオープンまで実施してくれます。個別に起動するより多少楽です。

ここでユニット名はDB作成のスクリプトファイル名です(上記DBの名前を変える際にファイル名を変えたのでここではoracledb_CDB1-19cになってます)

起動 ※/etc/init.d/配下のinitスクリプトはsystemdのunitに自動変換されるためsystemdのコマンドが使えます。

[root@oradg rc0.d]# systemctl start oracledb_CDB1-19c
[root@oradg rc0.d]#

停止

[root@oradg rc0.d]# systemctl stop oracledb_CDB1-19c
[root@oradg rc0.d]#

ステータス確認 ※前回の起動停止スクリプトの結果を保持しているだけなのでこれはあまり使えないです。

[root@oradg rc0.d]# systemctl status oracledb_CDB1-19c
● oracledb_CDB1-19c.service - SYSV: This script is responsible for taking care of configuring the Oracle Database and its associated services.
   Loaded: loaded (/etc/rc.d/init.d/oracledb_CDB1-19c; bad; vendor preset: disabled)
   Active: active (exited) since 水 2020-07-29 01:04:33 JST; 23s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2529 ExecStop=/etc/rc.d/init.d/oracledb_CDB1-19c stop (code=exited, status=0/SUCCESS)
  Process: 2633 ExecStart=/etc/rc.d/init.d/oracledb_CDB1-19c start (code=exited, status=0/SUCCESS)

 7月 29 01:04:20 oradg.fuku.local systemd[1]: Starting SYSV: This script is responsible for taking care of configuring the Oracle Database and it...ices....
 7月 29 01:04:20 oradg.fuku.local oracledb_CDB1-19c[2633]: Starting Oracle Net Listener.
 7月 29 01:04:20 oradg.fuku.local su[2640]: (to oracle) root on none
 7月 29 01:04:20 oradg.fuku.local oracledb_CDB1-19c[2633]: Oracle Net Listener started.
 7月 29 01:04:20 oradg.fuku.local oracledb_CDB1-19c[2633]: Starting Oracle Database instance CDB1.
 7月 29 01:04:20 oradg.fuku.local su[2645]: (to oracle) root on none
 7月 29 01:04:33 oradg.fuku.local oracledb_CDB1-19c[2633]: Oracle Database instance CDB1 started.
 7月 29 01:04:33 oradg.fuku.local systemd[1]: Started SYSV: This script is responsible for taking care of configuring the Oracle Database and its...rvices..
Hint: Some lines were ellipsized, use -l to show in full.
[root@oradg rc0.d]#

自動起動設定

※この設定をしてもOS起動時に自動起動はしますが、OS停止時に自動停止はしてくれません。というか停止スクリプトは動くが、その完了を待たずに一斉にプロセスがキられてしまいます。systemdの仕組みがあまり分かっていないので、勉強してから方法模索しようと思います。

[root@oradg init.d]# systemctl enable oracledb_CDB1-19c
oracledb_CDB1-19c.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig oracledb_CDB1-19c on
[root@oradg init.d]# systemctl is-enabled oracledb_CDB1-19c
oracledb_CDB1-19c.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig oracledb_CDB1-19c --level=5
enabled
[root@oradg init.d]# chkconfig

注記: この出力に含まれるのは SysV サービスのみです。ネイティブな
      systemd サービスは含まれません。SysV の設定データはネイティブな
        systemd 設定で上書きされる場合があります。
      systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用します。
      特定のターゲットで有効になっているサービスを確認する場合は
      'systemctl list-dependencies [target]'を使用します。

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
oracledb_CDB1-19c       0:off   1:off   2:on    3:on    4:on    5:on    6:off
rhnsd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@oradg init.d]# 

[FATAL] [DBT-06103] ポート(1,521)がすでに使用中です。

以下のエラーが出ました。

[root@oradg ~]# /etc/init.d/oracledb_ORCLCDB-19c configure
Configuring Oracle Database CDB1.
[FATAL] [DBT-06103] ポート(1,521)がすでに使用中です。
   アクション: 空きポートを指定してください。

Database configuration failed.
[root@oradg ~]#

エラーの原因は自分のホスト名が名前解決できなかったためです。

通常自分のホスト名は/etc/hostsに記載しなくても名前解決してくれます。

ただしホスト名をドメインを含んだかたちで設定していると、ドメインなしでの名前解決が効きません。

[root@oradg ~]# hostname
oradg.fuku.local
[root@oradg ~]# grep hosts /etc/nsswitch.conf
#hosts:     db files nisplus nis dns
hosts:      files dns myhostname
[root@oradg ~]#
[root@oradg ~]# ping oradg.fuku.local
PING oradg.fuku.local (192.168.0.108) 56(84) bytes of data.
64 bytes from oradg.fuku.local (192.168.0.108): icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from oradg.fuku.local (192.168.0.108): icmp_seq=2 ttl=64 time=0.030 ms
^C
--- oradg.fuku.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.018/0.024/0.030/0.006 ms
[root@oradg ~]#
[root@oradg ~]# ping oradg
ping: oradg: 名前またはサービスが不明です
[root@oradg ~]#

Oracleはドメインなしホスト名を使用するようです。

この場合は、素直に/etc/hostsに登録すればエラー解消します。

[root@oradg ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@oradg ~]# vi /etc/hosts
[root@oradg ~]#[root@oradg ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.108 oradg.fuku.local oradg
[root@oradg ~]#
[root@oradg ~]#
[root@oradg ~]#
[root@oradg ~]# /etc/init.d/oracledb_ORCLCDB-19c configure
Configuring Oracle Database CDB1.
DB操作の準備
8%完了
データベース・ファイルのコピー中
31%完了
Oracleインスタンスの作成および起動中
32%完了
36%完了
40%完了
43%完了
46%完了
データベース作成の完了
51%完了
54%完了
プラガブル・データベースの作成
58%完了
77%完了
構成後アクションの実行
100%完了
データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
/opt/oracle/cfgtoollogs/dbca/CDB1。
データベース情報:
グローバル・データベース名:CDB1
システム識別子(SID):CDB1
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/CDB1/CDB1.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.
[root@oradg ~]#

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です