まず VMware ESXi 7.0 Update 2 上に
RHEL 8.6 (4.18.0-372.9.1.el8.x86_64)の仮想マシンを構築。
RHEL のインストールオプションは以下の通り。
- 地域設定
- キーボード:日本語
- 言語サポート:日本語 (日本)
- 時刻と日付:アジア/東京 タイムゾーン
- ソフトウェア
Oracle のインストールは GUI で行う必要があるが、X サーバを使わずに済むよう
「ソフトウェアの選択」で「サーバー(GUI使用)」とした。
なお、Java はインストールしていない。
この仮想マシンに Oracle Database 19c をインストールする。
以下のサイトを参考にさせて頂いた。
・Oracle Database 19c 単一インスタンス・データベース インストレーション・ガイド Linux x86-64 版
事前準備
-
透過的な HugePages の無効化
(透過的な HugePages が有効である場合、実行中にメモリー割り当ての遅延が生じてパフォーマンスに影響を与える可能性があるため)/etc/default/grub ファイル内で transparent_hugepage=never を設定する。
rootユーザで以下を実施。
[root@spwdbs01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never ★有効になっている
[root@spwdbs01 ~]# vi /etc/default/grub
---
#GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never"
以下のコマンドで grub.cfg を再生成する。
※UEFI-based machines の場合
[root@spwdbs01 ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for EFI firmware configuration
done
※Bios-based machines の場合
[root@spwdbs01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
再起動して反映させる。
[root@spwdbs01 ~]# reboot
設定を確認する。「always madvise [never] 」となっていれば無効化されている。
[root@spwdbs01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never] ★無効化されている
[root@spwdbs01 ~]# cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-372.9.1.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never
- firewalld 無効化(後で適宜変更すること)
[root@spwdbs01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-26 12:00:31 JST; 57min ago
Docs: man:firewalld(1)
Main PID: 1063 (firewalld)
Tasks: 2 (limit: 23499)
Memory: 33.0M
CGroup: /system.slice/firewalld.service
mq1063 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
8月 26 12:00:30 spwdbs01 systemd[1]: Starting firewalld - dynamic firewall daemon...
8月 26 12:00:31 spwdbs01 systemd[1]: Started firewalld - dynamic firewall daemon.
8月 26 12:00:32 spwdbs01 firewalld[1063]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure confi>
[root@spwdbs01 ~]# systemctl stop firewalld
[root@spwdbs01 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@spwdbs01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2022-08-26 12:59:45 JST; 18s ago
Docs: man:firewalld(1)
Main PID: 1063 (code=exited, status=0/SUCCESS)
8月 26 12:00:30 spwdbs01 systemd[1]: Starting firewalld - dynamic firewall daemon...
8月 26 12:00:31 spwdbs01 systemd[1]: Started firewalld - dynamic firewall daemon.
8月 26 12:00:32 spwdbs01 firewalld[1063]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure confi>
8月 26 12:59:44 spwdbs01 systemd[1]: Stopping firewalld - dynamic firewall daemon...
8月 26 12:59:45 spwdbs01 systemd[1]: firewalld.service: Succeeded.
8月 26 12:59:45 spwdbs01 systemd[1]: Stopped firewalld - dynamic firewall daemon.
- カーネルパラメータ値の変更
[root@spwdbs01 ~]# vi /etc/sysctl.d/97-oracle-database-sysctl.conf
---
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
以下のコマンドで反映させ、確認する。
[root@spwdbs01 ~]# sysctl --system
(略)
* Applying /etc/sysctl.d/97-oracle-database-sysctl.conf ...
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
(略)
* Applying /etc/sysctl.conf ...
[root@spwdbs01 ~]# sysctl -a
★上記で設定したカーネルパラメータを確認
- Oracle のグループとユーザの作成
グループ名 | グループID | 備考 |
---|---|---|
oinstall | 54321 | Oracle Inventory グループ |
dba | 54322 | Database用 OSDBA グループ |
oper | 54323 | Database用 OSOPER グループ |
backupdba | 54324 | Database用 OSBACKUPDBA グループ |
dgdba | 54325 | Database用 OSDGDBA グループ |
kmdba | 54326 | Database用 OSKMDBA グループ |
racdba | 54327 | OSRACDBA グループ |
※Oracle ASM(Automatic Storage Management)は使用しないので、グループ asmdba、asmoper、asmadmin は不要。
[root@spwdbs01 ~]# groupadd -g 54321 oinstall
[root@spwdbs01 ~]# groupadd -g 54322 dba
[root@spwdbs01 ~]# groupadd -g 54323 oper
[root@spwdbs01 ~]# groupadd -g 54324 backupdba
[root@spwdbs01 ~]# groupadd -g 54325 dgdba
[root@spwdbs01 ~]# groupadd -g 54326 kmdba
[root@spwdbs01 ~]# groupadd -g 54327 racdba
ユーザ名 | ユーザID | プライマリ・グループ | セカンダリ・グループ | ホームディレクトリ |
---|---|---|---|---|
oracle | 54321 | oinstall | dba,oper,backupdba,dgdba,kmdba,racdba | /home/oracle |
[root@spwdbs01 ~]# useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
[root@spwdbs01 ~]# passwd oracle
ユーザー oracle のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
Oracle ユーザの確認をする。
[root@spwdbs01 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(racdba)
- リソース制限の設定
※「oracle」から始まる行を追加する
[root@spwdbs01 ~]# vi /etc/security/limits.conf
---
(略)
#ftp hard nproc 0
#@student - maxlogins 4
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 5274299
oracle hard memlock 5274299
# End of file
- SELinux 無効化
[root@spwdbs01 ~]# getenforce
Enforcing
[root@spwdbs01 ~]# vi /etc/selinux/config
---
# This file controls the state of SELinux on the system.
(略)
#SELINUX=enforcing
SELINUX=disabled ★左記のように変更する
(略)
SELINUXTYPE=targeted
再起動し、
[root@spwdbs01 ~]# reboot
反映された事を確認する。
[root@spwdbs01 ~]# getenforce
Disabled
- 必須パッケージのインストール
Oracle Database 19c インストーラの必須パッケージをインストールする。
仮想マシンには RHEL 8.6 の DVD ISO イメージ(rhel-8.6-x86_64-dvd.iso)をマウントしておく。
今回はRHEL がデスクトップ環境(GNOME)を使えるようセットアップし、ランレベル5で起動するようにしているので、以下のように /run/media にマウントされた。
[root@spwdbs01 ~]# df -hP
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/sr0 11G 11G 0 100% /run/media/root/RHEL-8-6-0-BaseOS-x86_64
パッケージをインストールしていく。
(1) libnsl
[root@spwdbs01 ~]# cd /run/media/root/RHEL-8-6-0-BaseOS-x86_64/BaseOS/Packages
[root@spwdbs01 Packages]# rpm -ivh libnsl-2.28-189.1.el8.x86_64.rpm
警告: libnsl-2.28-189.1.el8.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID fd431d51: NOKEY
Verifying... ################################# [100%]
準備しています... ################################# [100%]
更新中 / インストール中...
1:libnsl-2.28-189.1.el8 ################################# [100%]
※このパッケージがないと runInstaller 起動時に以下のエラーが出る。
[oracle@spwdbs01 dbhome_1]$ ./runInstaller
/u01/app/oracle/product/19.3.0/dbhome_1/perl/bin/perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
(2) make
[root@spwdbs01 ~]# cd /run/media/root/RHEL-8-6-0-BaseOS-x86_64/BaseOS/Packages
[root@spwdbs01 Packages]# rpm -ivh make-4.2.1-11.el8.x86_64.rpm
警告: make-4.2.1-11.el8.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID fd431d51: NOKEY
Verifying... ################################# [100%]
準備しています... ################################# [100%]
更新中 / インストール中...
1:make-1:4.2.1-11.el8 ################################# [100%]
※上記のパッケージをインストールしていないと、runInstaller 実行時に以下のエラーが出る。
(3) glibc-devel
[root@spwdbs01 ~]# cd /run/media/root/RHEL-8-6-0-BaseOS-x86_64/BaseOS/Packages
[root@spwdbs01 Packages]# rpm -ivh glibc-devel-2.28-189.1.el8.x86_64.rpm \
> glibc-headers-2.28-189.1.el8.x86_64.rpm \
> libxcrypt-devel-4.1.1-6.el8.x86_64.rpm \
> kernel-headers-4.18.0-372.9.1.el8.x86_64.rpm
警告: glibc-devel-2.28-189.1.el8.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID fd431d51: NOKEY
Verifying... ################################# [100%]
準備しています... ################################# [100%]
更新中 / インストール中...
1:kernel-headers-4.18.0-372.9.1.el8################################# [ 25%]
2:glibc-headers-2.28-189.1.el8 ################################# [ 50%]
3:libxcrypt-devel-4.1.1-6.el8 ################################# [ 75%]
4:glibc-devel-2.28-189.1.el8 ################################# [100%]
※glibc-devel と依存性のあるパッケージをインストールしていないと、runInstaller で以下のエラーが出る。
- DB 用ディレクトリ作成
[root@spwdbs01 ~]# mkdir -p /u01/app/oracle
[root@spwdbs01 ~]# mkdir -p /u01/app/oraInventory
[root@spwdbs01 ~]# chown -R oracle:oinstall /u01/app/oracle
[root@spwdbs01 ~]# chown -R oracle:oinstall /u01/app/oraInventory
[root@spwdbs01 ~]# chmod -R 775 /u01/app
- oracle ユーザの環境変数の設定
※「umask 022」以下を追加する。
[root@spwdbs01 ~]# su - oracle
[oracle@spwdbs01 ~]$ vi .bash_profile
---
(略)
# User specific environment and startup programs
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8
export ORACLE_SID=orcl
ファイルを読み込み、設定が反映された事を確認する。
[oracle@spwdbs01 ~]$ source .bash_profile
[oracle@spwdbs01 ~]$ env
★設定を確認する
- Oracle ユーザでインストーラの zip ファイルを解凍
[oracle@spwdbs01 ~]$ mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
[oracle@spwdbs01 ~]$ cd /u01/app/oracle/product/19.3.0/dbhome_1
[oracle@spwdbs01 dbhome_1]$ unzip -q /tmp/LINUX.X64_193000_db_home.zip
- 日本語の文字化け対策
Oracle インストーラは Java を利用しており、デフォルトでは付属の JRE(上記のように解凍した場合は /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre)を使用するが、フォント構成ファイル(恐らく /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre/lib/fontconfig.bfc を見る)の設定では OS標準の日本語フォントを使うようになっていない。
物理フォントを JRE 内の lib/fonts/fallback ディレクトリにインストールする事で使えるようになるという事なので、以下のように fallback ディレクトリを作成し、OS のフォントファイルをごっそりコピーする。
[root@spwdbs01 ~]# cd /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre/lib/fonts
[root@spwdbs01 fonts]# mkdir fallback
[root@spwdbs01 fonts]# cd fallback
[root@spwdbs01 fallback]# cp -p /usr/share/fonts/*/*.ttf .
Oracle Database インストール
ここからは VMware ESXi から仮想マシンを選択して「コンソール」→「ブラウザコンソールを開く」でデスクトップ環境を開き、root ユーザでログインする。
-
xhost 許可設定
デスクトップで「端末」を起動し、root ユーザで以下を実行する。
# env|grep DISPLAY
# xhost
※「SI:localuser:oracle」がない事を確認する
# xhost + SI:localuser:oracle
# xhost
※「SI:localuser:oracle」がある事を確認する
-
インストーラ起動準備
Oracle ユーザに切り替え、環境変数をセットする。
# su - oracle
$ export DISPLAY=:0
$ export CV_ASSUME_DISTID=RHEL8.6
※適当な文字列でOK
※環境変数 CV_ASSUME_DISTID をセットしないと以下のエラーが出る。
-
インストーラ起動
$ cd /u01/app/oracle/product/19.3.0/dbhome_1
$ ./runInstaller &
-
構成オプションの選択
構成オプションを選択する。
ここでは、ソフトウェアのインストールの後にデータベースの作成を行うため「ソフトウェアのみの設定」を選択し、「次へ」をクリックする。
-
インストールオプションの選択
実行するデータベース・インストールのタイプを選択する。
ここでは、「単一インスタンス・データベースのインストール」を選択し、「次へ」をクリックする。
-
データベース・エディションの選択
データベース・エディションを選択する。エディションはライセンスの許諾内容に合わせて選択する。
ここでは、「Standard Edition 2」を選択し、「次へ」をクリックする。
-
インストール場所の指定
「ORACLE ベース」の場所(/u01/app/oracle)を確認し、「次へ」をクリックする。
環境変数 ORACLE_BASE はここで指定するディレクトリのことである。
-
インベントリの作成
インベントリ・ディレクトリ、oraInventory グループ名を確認し(デフォルトのまま)、「次へ」をクリックする。- インベントリ・ディレクトリ: /u01/app/oraInventory
- oraInventoryグループ名: oinstall
ここで以下のエラーが出た場合、インストールをやり直した事が原因で /u01/app/oraInventory にファイルが残っている事が原因なので、
ターミナルに戻り、root ユーザで
# cd /u01/app/oraInventory
# rm -rf *
を実行し、
「OK」をクリックし、
「次へ」をクリックする。
-
権限のあるオペレーティング・システム・グループ
Oracle のソフトウェアは、どのユーザーがどのグループに所属しているかによってユーザーの権限を区別する。
事前準備で作成した OS グループから、Oracle インスタンスに対する権限を割り当てるグループを選択する。
ここでは、デフォルトとし、
(「データベース管理者(OSDBA)グループ」に「dba」、「データベース・オペレータ(OSOPER)グループ」に「oper」、他のグループに適切なシステム・グループを指定する)
指定内容を確認した後、「次へ」をクリックする。
-
root スクリプトの実行構成
Oracle Database のインストール作業で、root ユーザーとして実行する必要がある操作がある。
手動で実行するか、インストーラにより自動的に実行されるように選択することが可能である。
「構成スクリプトを自動的に実行」を選択する場合、root ユーザーの資格証明を使用するか、sudo を使用するかで選べる。
ここでは、「構成スクリプトを自動的に実行」にチェックを入れ、「root ユーザーの資格証明を使用」を選択して「パスワード」に root ユーザーのパスワードを入力する。
-
前提条件チェックの実行開始
インストール実行前に、OUI により前提条件のチェックが実行される。
全ての項目のチェックに成功すると、自動的にサマリー画面に遷移する。失敗した項目がある場合は、適宜修正を行う。
-
製品のインストール
インストールが開始される。※インストール中
※以下のようなエラーが出た場合、進行状況にある「'/bin/chmod -R u+w /u01/app/oracle/product/19.3.0/dbhome_1/jdk' を作成中」が上手くいっておらず、
/u01/app/oracle 配下のパーミッションが適切でないと思われるため、
ターミナルに移動し、root ユーザで
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
を実行し、
インストーラに戻り、「再試行」をクリックしてインストールを再開する。
-
構成スクリプトの実行
「root スクリプトの実行構成」で「構成スクリプトを自動的に実行」を選択した場合、
以下のポップアップ画面が表示されるので「はい」をクリックして実行する。
-
終了
インストールの成功を確認後、「閉じる」をクリックする。
これで、Oracle Database のインストールは完了となる。