Oracle Databaseをインストールする前に、いろいろと事前に行わなければならない作業を、自動で行ってくれます。
ただし、マニュアルで推奨するパラメータの記載内容と違っていたりします。
検証環境
# cat /etc/os-release
NAME="AlmaLinux"
VERSION="8.7 (Stone Smilodon)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.7"
PLATFORM_ID="platform:el8"
PRETTY_NAME="AlmaLinux 8.7 (Stone Smilodon)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:8::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8"
ALMALINUX_MANTISBT_PROJECT_VERSION="8.7"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.7"
# uname -r
4.18.0-425.3.1.el8.x86_64
パッケージの入手とインストール
$ su - root
Password: xxxx
# cd /tmp
# curl -OL https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 31828 100 31828 0 0 231k 0 --:--:-- --:--:-- --:--:-- 230k
# dnf -y localinstall /tmp/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
: (省略)
Installed:
glibc-devel-2.28-211.el8.x86_64
glibc-headers-2.28-211.el8.x86_64
kernel-headers-4.18.0-425.13.1.el8_7.x86_64
ksh-20120801-257.el8.x86_64
libaio-devel-0.3.112-1.el8.x86_64
libnsl-2.28-211.el8.x86_64
libstdc++-devel-8.5.0-15.el8.alma.x86_64
libxcrypt-devel-4.1.1-6.el8.x86_64
lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64
make-1:4.2.1-11.el8.x86_64
oracle-database-preinstall-19c-1.0-2.el8.x86_64
sysstat-11.7.3-7.el8_7.1.x86_64
Complete!
ログの確認
実行結果のログをみることで、何を行っているかを確認してみます。
# cd /var/log/oracle-database-preinstall-19c
# tree
.
|-- backup
| `-- Mar-29-2023-16-05-10
| |-- grub
| |-- grub.cfg
| |-- orakernel.log
| `-- sysctl.conf
`-- results
`-- orakernel.log ・・・ ここにログが出力されている
3 directories, 5 files
# cd results
# cat orakernel.log
--- グループとユーザーを作成 ---
Adding group oinstall with gid 54321
Adding group dba with gid 54322
Adding group oper with gid 54323
Adding group backupdba with gid 54324
Adding group dgdba with gid 54325
Adding group kmdba with gid 54326
Adding group racdba with gid 54330
Adding user oracle with user id 54321, initial login group oinstall, supplementary groups oinstall,dba,oper,backupdba,dgdba,kmdba,racdba and home directory /home/oracle
Changing ownership of /home/oracle to oracle:oinstall
Please set password for user - oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
User creation passed
--- カーネルパラメータの変更 ---
Saving a copy of the initial sysctl.conf
Verifying kernel parameters as per Oracle recommendations...
Trying to remove instances of - setting for fs.file-max is
Adding fs.file-max = 6815744
Trying to remove instances of - setting for kernel.sem is
Adding kernel.sem = 250 32000 100 128
Trying to remove instances of - setting for kernel.shmmni is
Adding kernel.shmmni = 4096
Trying to remove instances of - setting for kernel.shmall is
Adding kernel.shmall = 1073741824
Trying to remove instances of - setting for kernel.shmmax is
Adding kernel.shmmax = 4398046511104
Trying to remove instances of - setting for kernel.panic_on_oops is
Adding kernel.panic_on_oops = 1
Trying to remove instances of - setting for net.core.rmem_default is
Adding net.core.rmem_default = 262144
Trying to remove instances of - setting for net.core.rmem_max is
Adding net.core.rmem_max = 4194304
Trying to remove instances of - setting for net.core.wmem_default is
Adding net.core.wmem_default = 262144
Trying to remove instances of - setting for net.core.wmem_max is
Adding net.core.wmem_max = 1048576
Trying to remove instances of - setting for net.ipv4.conf.all.rp_filter is
Adding net.ipv4.conf.all.rp_filter = 2
Trying to remove instances of - setting for net.ipv4.conf.default.rp_filter is
Adding net.ipv4.conf.default.rp_filter = 2
Trying to remove instances of - setting for fs.aio-max-nr is
Adding fs.aio-max-nr = 1048576
Trying to remove instances of - setting for net.ipv4.ip_local_port_range is
Adding net.ipv4.ip_local_port_range = 9000 65500
Setting kernel parameters as per oracle recommendations...
Altered file /etc/sysctl.conf
Saved a copy of the current file in /etc/sysctl.d/99-oracle-database-preinstall-19c-sysctl.conf
Check /etc/sysctl.d for backups
Verification & setting of kernel parameters passed
--- リソース制限の変更 ---
Setting user limits using /etc/security/limits.d/oracle-database-preinstall-19c.conf
Verifying oracle user OS limits as per Oracle recommendations...
Adding oracle soft nofile 1024
Adding oracle hard nofile 65536
Adding oracle soft nproc 16384
Adding oracle hard nproc 16384
Adding oracle soft stack 10240
Adding oracle hard stack 32768
Adding oracle hard memlock 134217728
Adding oracle soft memlock 134217728
Adding oracle soft data unlimited
Adding oracle hard data unlimited
Setting oracle user OS limits as per Oracle recommendations...
Altered file /etc/security/limits.d/oracle-database-preinstall-19c.conf
Original file backed up at /var/log/oracle-database-preinstall-19c/backup/Mar-29-2023-16-05-10
Verification & setting of user limits passed
--- GRUBの変更 --- ここはUEFIの場合失敗するので手動で変更
Saving a copy of /etc/default/grub file in /etc/default/grub-initial.orabackup
Saving a copy of /etc/default/grub in /var/log/oracle-database-preinstall-19c/backup/Mar-29-2023-03-28-39...
Verifying kernel boot parameters as per Oracle recommendations...
old boot params: "crashkernel=auto resume=/dev/mapper/vg00-lvswap rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap rhgb quiet"
new boot params: "crashkernel=auto resume=/dev/mapper/vg00-lvswap rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap rhgb quiet numa=off"
Setting boot params - Checking for blscfg
GRUB_ENABLE_BLSCFG=true
options $kernelopts
options $kernelopts $tuned_params
old boot params: "crashkernel=auto resume=/dev/mapper/vg00-lvswap rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap rhgb quiet numa=off"
new boot params: "crashkernel=auto resume=/dev/mapper/vg00-lvswap rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap rhgb quiet numa=off transparent_hugepage=never"
Setting boot params - Checking for blscfg
GRUB_ENABLE_BLSCFG=true
options $kernelopts
options $kernelopts $tuned_params
Setting kernel boot parameters as per Oracle recommendations...
G_DIR=/boot/grub2
Checking for blscfg
GRUB_ENABLE_BLSCFG=true
Saved Entry = 22c95181970d4983bf6ad1df037a6058-4.18.0-425.3.1.el8.x86_64
Running grub2-mkconfig
Generating grub configuration file ...
File descriptor 199 (/run/lock/subsys/oracle-preinstall.lock) leaked on vgs invocation. Parent PID 8020: /usr/sbin/grub2-probe
File descriptor 199 (/run/lock/subsys/oracle-preinstall.lock) leaked on vgs invocation. Parent PID 8020: /usr/sbin/grub2-probe
File descriptor 199 (/run/lock/subsys/oracle-preinstall.lock) leaked on vgs invocation. Parent PID 8190: /usr/sbin/grub2-probe
File descriptor 199 (/run/lock/subsys/oracle-preinstall.lock) leaked on vgs invocation. Parent PID 8190: /usr/sbin/grub2-probe
done
Restore default
Boot parameters will be effected on next reboot
Altered file /etc/default/grub
Copy of the changed file is in - /etc/default/grub-oracle-database-preinstall-19c.orabackup
Copy of the original file is in - /var/log/oracle-database-preinstall-19c/backup/Mar-29-2023-03-28-39
Verification & setting of boot parameters passed
Trying to add NOZEROCONF parameter...
Taking a backup of existing file to /etc/sysconfig/network.orabackup
Successfully added parameter NOZEROCONF to /etc/sysconfig/network
Setting /etc/sysconfig/network parameters passed
Disabling Transparent Hugepages.
Refer Oracle Note:1557478.1
Disabling defrag.
Refer Oracle Note:1557478.1
Taking a backup of old config files under /var/log/oracle-database-preinstall-19c/backup/Mar-29-2023-16-05-10
マシンリブート
# systemctl reboot
実体の設定および確認
グループとユーザー
oracleユーザーのパスワードは設定されていないので、設定が必要です。
# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
# cat /etc/shadow | grep oracle
oracle:!!:19445:0:99999:7::: ・・・ パスワードは設定されていない
# passwd oracle ・・・ パスワードを設定しておく
Changing password for user oracle.
New password: xxxxxxxx
Retype new password: xxxxxxx
passwd: all authentication tokens updated successfully.
# cat /etc/shadow | grep oracle
oracle:$6$ceRazLfZX40JTL6V$fnieTON39P3maXUilfQCWJ6KfcBbiZMUvj.PBxBijp3LS07y6yfzFEk0hZMGMQ.xdv/KRYYvECU2PqRr4pjwO.:19445:0:99999:7:::
カーネルパラメータ
カーネルパラメータは、
「/etc/sysctl.conf」と「/etc/sysctl.d/99-oracle-database-preinstall-19c-sysctl.conf」に必要なパラメータが追加されていました。
どちらかに設定があれば良いと思うので、バックアップされた
「/var/log/oracle-database-preinstall-19c/backup/Mar-29-2023-16-05-10/sysctl.conf」から戻して、「/etc/sysctl.d/99-initial-sysctl.conf」は削除します。
# ls -l /etc/sysctl*
-rw-r--r--. 1 root root 1966 Mar 29 16:05 /etc/sysctl.conf
/etc/sysctl.d:
total 8
-rw-r--r--. 1 root root 449 Mar 29 16:05 99-initial-sysctl.conf
-rw-r--r--. 1 root root 1966 Mar 29 16:05 99-oracle-database-preinstall-19c-sysctl.conf
lrwxrwxrwx. 1 root root 14 Nov 9 16:00 99-sysctl.conf -> ../sysctl.conf
# diff /etc/sysctl.conf /etc/sysctl.d/99-initial-sysctl.conf ・・・ 設定が追記されている
11,53d10
<
< # oracle-database-preinstall-19c setting for fs.file-max is 6815744
< fs.file-max = 6815744
<
< # oracle-database-preinstall-19c setting for kernel.sem is '250 32000 100 128'
< kernel.sem = 250 32000 100 128
<
< # oracle-database-preinstall-19c setting for kernel.shmmni is 4096
< kernel.shmmni = 4096
<
< # oracle-database-preinstall-19c setting for kernel.shmall is 1073741824 on x86_64
< kernel.shmall = 1073741824
<
< # oracle-database-preinstall-19c setting for kernel.shmmax is 4398046511104 on x86_64
< kernel.shmmax = 4398046511104
<
< # oracle-database-preinstall-19c setting for kernel.panic_on_oops is 1 per Orabug 19212317
< kernel.panic_on_oops = 1
<
< # oracle-database-preinstall-19c setting for net.core.rmem_default is 262144
< net.core.rmem_default = 262144
<
< # oracle-database-preinstall-19c setting for net.core.rmem_max is 4194304
< net.core.rmem_max = 4194304
<
< # oracle-database-preinstall-19c setting for net.core.wmem_default is 262144
< net.core.wmem_default = 262144
<
< # oracle-database-preinstall-19c setting for net.core.wmem_max is 1048576
< net.core.wmem_max = 1048576
<
< # oracle-database-preinstall-19c setting for net.ipv4.conf.all.rp_filter is 2
< net.ipv4.conf.all.rp_filter = 2
<
< # oracle-database-preinstall-19c setting for net.ipv4.conf.default.rp_filter is 2
< net.ipv4.conf.default.rp_filter = 2
<
< # oracle-database-preinstall-19c setting for fs.aio-max-nr is 1048576
< fs.aio-max-nr = 1048576
<
< # oracle-database-preinstall-19c setting for net.ipv4.ip_local_port_range is 9000 65500
< net.ipv4.ip_local_port_range = 9000 65500
<
# diff /etc/sysctl.conf /etc/sysctl.d/99-oracle-database-preinstall-19c-sysctl.conf ・・・ 中身は同じ
# cp -a /var/log/oracle-database-preinstall-19c/backup/Mar-29-2023-16-05-10/sysctl.conf /etc/sysctl.conf
# rm /etc/sysctl.d/99-initial-sysctl.conf
リソース制限
# cat /etc/security/limits.d/oracle-database-preinstall-19c.conf
# oracle-database-preinstall-19c setting for nofile soft limit is 1024
oracle soft nofile 1024
# oracle-database-preinstall-19c setting for nofile hard limit is 65536
oracle hard nofile 65536
# oracle-database-preinstall-19c setting for nproc soft limit is 16384
# refer orabug15971421 for more info.
oracle soft nproc 16384 ・・・ マニュアルでは「2047以上」となっているが「16384」が良いらしい
# oracle-database-preinstall-19c setting for nproc hard limit is 16384
oracle hard nproc 16384
# oracle-database-preinstall-19c setting for stack soft limit is 10240KB
oracle soft stack 10240
# oracle-database-preinstall-19c setting for stack hard limit is 32768KB
oracle hard stack 32768
# oracle-database-preinstall-19c setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
oracle hard memlock 134217728 ・・・ マニュアルでは「unlimited」となっているが「134217728」にする
# oracle-database-preinstall-19c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
oracle soft memlock 134217728 ・・・ マニュアルでは「unlimited」となっているが「134217728」にする
# oracle-database-preinstall-19c setting for data soft limit is 'unlimited'
oracle soft data unlimited ・・・ AlmaLinux8.7のデフォルトが「unlimited」であるが、明示的にそのままとする
# oracle-database-preinstall-19c setting for data hard limit is 'unlimited'
oracle hard data unlimited ・・・ AlmaLinux8.7のデフォルトが「unlimited」であるが、明示的にそのままとする
ブート(GRUB)
# su - oracle
$ cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-425.3.1.el8.x86_64 root=/dev/mapper/almalinux-root ro crashkernel=auto resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap rhgb quiet numa=off transparent_hugepage=never
ネットワーク
# diff network network.orabackup
1a2,3
< # oracle-database-preinstall-19c : Add NOZEROCONF=yes
< NOZEROCONF=yes ・・・ IPアドレスの自動割り当ては不要なので(169.254.1.0-169.254.254.255)APIPA
おまけ
ほとんどのシステムでUEFIのマシンだと思いますが、GRUBの設定で失敗します。
: (省略)
/boot/grub/grub.conf not present.. ..
Verification of boot parameters failed. ・・・ UEFIの場合は変更に失敗
: (省略)