Oracle Database 19c シングルCDBを構築する — VM作成・OSインストール・OS初期設定

Oracle Database 19c シングルCDBを構築する — VM作成・OSインストール・OS初期設定
【連載】Oracle Database 19c シングルCDBを構築する
  1. VM作成・OSインストール・OS初期設定(この記事)
  2. Oracle DB 19c ソフトウェアインストール
  3. CDB作成・自動起動設定

この記事について

この連載では、Proxmox VE上の仮想マシン1台にOracle Database 19c (19.28 RU) シングルインスタンスのCDB(コンテナ・データベース)を構築する手順を解説します。最終的にはEMCC(Enterprise Manager Cloud Control)の監視対象として登録することを想定した構成です。

想定読者:

  • Oracle Database 19c をシングル構成で自宅やラボ環境に構築したい方
  • Proxmox VE上にOracleデータベースのVM環境を作りたい方
  • CDB(コンテナ・データベース)・PDB(プラガブル・データベース)の構成を体験したい方

前提知識:

  • Linux基本操作(コマンドライン・ファイル編集)
  • Proxmox VEの基本操作(VM作成・管理画面の操作)
  • ネットワークの基礎知識(IPアドレス・VLAN)

連載の全体マップ:

記事タイトル内容
第1回(本記事)VM作成・OSインストール・OS初期設定Proxmox VM作成・OL8インストール・NW/NTP/SELinux/THP設定・前提条件確認・インストーラー展開
第2回Oracle DB 19c ソフトウェアインストールrunInstaller・RU同時適用
第3回CDB作成・自動起動設定DBCAによるCDB+PDB作成・systemd自動起動設定

構築環境

VM構成

項目
VM名ol8-db19-11
OSOracle Linux 8.9
CPU2 vCPU
メモリ8 GB
ディスク100 GB
Public IP (VLAN10)10.0.10.11
Management IP (VLAN30)192.168.30.11

ネットワーク構成

VLANネットワーク用途
VLAN1010.0.10.0/24Public(クライアント接続)
VLAN30192.168.30.0/24Management(EMCC監視・SSH)

Oracle DB構成

項目
DBバージョン19.28.0.0
構成シングルインスタンス CDB
ORACLE_SIDv11c19u
PDB名SP19U001
Oracle Base/u01/app/oracle
Oracle Home/u01/app/oracle/product/19.0.0/dbhome_1

手順1: Proxmox上でのVM作成

Proxmox VEの管理画面から仮想マシンを作成します。

Proxmox管理画面

基本設定(全般タブ)

「VMを作成」をクリックして作成ウィザードを開きます。

項目設定値
ノードpve01
VM名ol8-db19-11

全般タブ - VM名(ol8-db19-11)設定

OSタブ

Oracle Linux 8.9のISOイメージを選択します。

項目設定値
ISOイメージp-nas-nfs:iso/V1039330-01.iso
種別Linux
バージョン6.x – 2.6 Kernel

OSタブ - Oracle Linux 8.9 ISO選択

システムタブ

Qemuエージェントを有効化します。ProxmoxがVMのIPアドレスやメモリ情報を取得するために必要です。

ディスクタブ

項目設定値
ストレージvg-sda
ディスクサイズ100 GB

ディスクタブ - 100 GiB設定

CPUタブ

項目設定値
コア数2コア

CPUタブ - 2コア設定

メモリタブ

項目設定値
メモリ8192 MiB(8 GB)

メモリタブ - 8192 MiB設定

ネットワークタブ

最初のNICはPublic(VLAN10)に設定します。

項目設定値
ブリッジvmbr1
VLANタグ10

ネットワークタブ - vmbr1 VLAN10

VM作成後、「ハードウェア」→「追加」→「ネットデバイス」からManagement NIC(VLAN30)を追加します。

項目設定値
ブリッジvmbr1
VLANタグ30

ハードウェアタブ - VM作成後(net0 VLAN10のみ)

「追加」→「ネットデバイス」を選択

ネットデバイス追加ダイアログ - vmbr1 VLAN30

ハードウェアタブ - net0(VLAN10)・net1(VLAN30)追加後


手順2: Oracle Linux 8 インストール

VMを起動してOracle Linux 8.9をインストールします。

Oracle Linux 8.9.0 起動画面

インストール言語の選択

言語は「日本語」を選択して「続行」します。

言語選択 - 日本語

ソフトウェアの選択

「サーバー(GUI使用)」を選択します。GUIが必要なのはOracle DBのGUIインストーラー(runInstaller)を使用するためです。

インストール概要画面

インストール先(パーティション設定)

「ストレージ設定」を「カスタム」にして手動でパーティションを設定します。

  1. 「ここをクリックすると自動的に作成します。」をクリック(/boot/home・swap・/が自動作成)
  2. /home を削除
  3. swap を 8 GiB に変更
  4. 残り全てを / に割り当て

インストール先 - カスタム設定を選択

手動パーティション設定 - 「ここをクリックして自動作成」

/home パーティションを削除

swap を 8 GiB に変更

/ に残り全てを割り当て(91 GiB)

変更の概要 - 「変更を許可する」をクリック

ネットワークとホスト名

インストール時はManagement NIC(VLAN30)のみ設定します。Public NICはインストール後に nmcli で設定します。

  1. 左ペインからManagement NIC(net1)を選択してオンにする
  2. 「設定」→「全般」タブ → 「優先的に自動接続する」にチェック(未チェックだと起動時にNICが上がらない)
  3. 「設定」→「IPv4設定」タブ → 方式: 手動
項目設定値
アドレス192.168.30.11
プレフィックス24
ゲートウェイ空欄

ネットワークとホスト名 - ens19(Management NIC)を選択

ens19の編集 - 全般タブ「優先的に自動接続する」にチェック

ens19の編集 - IPv4設定タブ(手動・192.168.30.11/24)

Management NIC(ens19)接続済み - 192.168.30.11/24

rootパスワード設定

任意のrootパスワードを設定します。

rootパスワード設定

インストール開始

設定を確認して「インストールの開始」をクリックします。

インストール概要 - 「インストールの開始」をクリック

インストール完了 - 「システムの再起動」をクリック

タイムゾーン・Public NIC・ホスト名はインストール後に timedatectl / nmcli / hostnamectl で設定します。

インストール後の初回起動確認

再起動後、踏み台(ol8-bastion-254)からSSH接続できることを確認します。

ssh root@192.168.30.11

手順3: OS初期設定

対象: rootユーザー

su - root

hostname && whoami

3-1. NICとVLANの対応確認(MACアドレス突き合わせ)

複数NICを持つVMでは、OSのインタフェース名(ens18/ens19)とProxmoxのNIC(net0/net1)の対応をMACアドレスで確認してから設定します。

① Proxmox WebUI でMACアドレスを確認

「ハードウェア」タブ → ネットワークデバイスを1つずつクリックして確認します。

Proxmox ハードウェアタブ - NIC一覧(MACアドレス確認)

Proxmox NICVLANタグ用途
net010Public
net130Management

② OS側でMACアドレスを確認

ip link show

③ MACアドレスを突き合わせてインタフェース名を確定

OSインタフェースProxmox NICVLAN用途
ens18net010Public
ens19net130Management

順番が異なる場合は、以降のコマンド中の ens18 / ens19 を実際の名前に読み替えて実行してください。

3-2. ネットワーク・ホスト名設定

# 接続プロファイル名を確認
nmcli con show

# ens18 (VLAN10 / Public)
nmcli con mod ens18 \
  ipv4.addresses 10.0.10.11/24 \
  ipv4.method manual \
  ipv4.gateway "" \
  ipv6.method disabled \
  connection.autoconnect yes
nmcli con up ens18

# ens19 (VLAN30 / Management) — インストール時に設定済みだが正規化する
nmcli con mod ens19 \
  ipv4.addresses 192.168.30.11/24 \
  ipv4.method manual \
  ipv4.gateway "" \
  ipv6.method disabled \
  connection.autoconnect yes
nmcli con up ens19

# ホスト名
hostnamectl set-hostname ol8-db19-11

# 確認
ip a && hostname

3-3. インストーラー用ファイルの準備

インストールファイルの格納先となる作業用ディレクトリを作成し、以下のファイルをアップロードします。アップロード方法はSCP・WinSCP・Proxmoxのファイルブラウザなど任意です。

mkdir -p /tmp/oracle-install
chmod 777 /tmp/oracle-install
ファイル種別
oracle-database-preinstall-19c-*.rpmOracle DB 19c 前提条件自動設定パッケージ
rlwrap-*.rpmSQL*Plus操作改善ツール
V982063-01.zipOracle Database 19c インストーラー
p6880880_190000_Linux-x86-64.zipOPatch 最新版
p37960098_190000_Linux-x86-64.zipRelease Update 19.28.0.0

3-4. タイムゾーン設定

# 変更前確認
timedatectl

# タイムゾーンをJST(UTC+9)に設定
timedatectl set-timezone Asia/Tokyo

# 変更後確認
timedatectl

3-5. NTP設定

# バックアップ取得
work_date=$(date +%Y%m%d)
cp -p /etc/chrony.conf{,.${work_date}}

# NTPサーバ(ol8-bastion-254)を追記
echo "server 192.168.30.254 iburst" >> /etc/chrony.conf

# 差分確認
diff /etc/chrony.conf{,.${work_date}}
# chronydを再起動して設定を反映
systemctl restart chronyd

# 時刻を即時強制同期
chronyc makestep

# 同期確認(Reference IDが 192.168.30.254 になっていること)
chronyc tracking

3-6. DNFメディアリポジトリの登録

インターネット接続がない環境のため、OSインストールDVDをローカルリポジトリとして登録します。

# CD-ROMマウント
mount /dev/cdrom /media
df | grep media
# DVDメディアをローカルリポジトリとして登録
cat > /etc/yum.repos.d/local-oel-dvd.repo << 'EOF'
[dvd-appstreams]
name=dvd-appstreams
baseurl=file:///media/AppStream
enabled=1
gpgcheck=0

[dvd-baseos]
name=dvd-baseos
baseurl=file:///media/BaseOS
enabled=1
gpgcheck=0
EOF
# デフォルトのOL8オンラインリポジトリを無効化
dnf config-manager -q --disable 'ol8*'
dnf clean all
dnf makecache
dnf repolist

3-7. root の .bashrc 設定

work_date=$(date +%Y%m%d)
cp -p ~/.bashrc{,.${work_date}}

# rootユーザーのプロンプトを黄色に設定
echo "export PS1='\[\e[1;33m\]\u@\h:\W#\[\e[m\] '" >> ~/.bashrc

diff ~/.bashrc{,.${work_date}}
source ~/.bashrc

3-8. firewalld 無効化

Oracle DBはfirewalldと競合するため無効化します。

systemctl stop firewalld
systemctl disable firewalld

# 確認(inactive かつ disabled になっていること)
systemctl status firewalld --no-pager

3-9. SELinux permissive 設定・THP無効化

SELinuxとTHP無効化は再起動が必要なため、まとめて設定して1回のrebootで反映します。

# SELinux permissive(Oracle DBはSELinux enforcing非対応)
work_date=$(date +%Y%m%d)
cp -p /etc/selinux/config{,.${work_date}}
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
diff /etc/selinux/config{,.${work_date}}
grep '^SELINUX=' /etc/selinux/config
# → SELINUX=permissive
# THP無効化(THP有効だとOracle DBのパフォーマンス低下・フリーズが発生する)
grubby --update-kernel=ALL --args="transparent_hugepage=never"
reboot

再起動後に確認します。

# SELinux確認
getenforce
# → Permissive

# THP確認([never] になっていること)
cat /sys/kernel/mm/transparent_hugepage/enabled
# → always madvise [never]

# ホスト名確認
hostname
# → ol8-db19-11

プロンプトが localhost のままでも hostname コマンドが ol8-db19-11 を返せばホスト名は正しく設定されています。source ~/.bashrc または再ログインで反映されます。

3-10. CD-ROM 再マウント

再起動後は CDROM がアンマウントされているため、再度マウントします。

mount /dev/cdrom /media

3-11. パッケージインストール

# Oracle DB 19c の前提条件を自動設定するRPM
dnf install -y /tmp/oracle-install/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
# SQL*Plus操作改善ツール
dnf install -y /tmp/oracle-install/rlwrap-0.46.1-1.el8.x86_64.rpm
# Oracle DB 19c 公式要件パッケージ
# https://docs.oracle.com/cd/F19136_01/ladbi/supported-oracle-linux-8-distributions-for-x86-64.html
dnf install -y bc binutils compat-openssl10
dnf install -y elfutils-libelf elfutils-libelf-devel
dnf install -y fontconfig
dnf install -y glibc glibc-devel
dnf install -y ksh
dnf install -y libaio libaio-devel
dnf install -y libX11 libXau libXi libXrender libXtst
dnf install -y libasan liblsan
dnf install -y libgcc libstdc++ libstdc++-devel
dnf install -y libibverbs librdmacm libxcb
dnf install -y libnsl
dnf install -y make
dnf install -y policycoreutils policycoreutils-python-utils
dnf install -y rng-tools smartmontools sysstat
# 作業用ユーティリティ
dnf install -y wget unzip zip tar bzip2 net-tools lsof
dnf install -y libnsl2
# X11フォワーディング(GUIインストーラー用)
dnf install -y xorg-x11-xauth xorg-x11-utils
# インストール確認
rpm -q \
  oracle-database-preinstall-19c rlwrap \
  bc binutils compat-openssl10 \
  elfutils-libelf elfutils-libelf-devel \
  fontconfig glibc glibc-devel ksh \
  libaio libaio-devel \
  libX11 libXau libXi libXrender libXtst \
  libasan liblsan libgcc libstdc++ libstdc++-devel \
  libibverbs librdmacm libxcb \
  libnsl libnsl2 make \
  policycoreutils policycoreutils-python-utils \
  rng-tools smartmontools sysstat \
  wget unzip zip tar bzip2 net-tools lsof \
  xorg-x11-xauth xorg-x11-utils

3-12. /etc/hosts 設定

# バックアップ取得
work_date=$(date +%Y%m%d)
cp -p /etc/hosts{,.${work_date}}
cat >> /etc/hosts << 'EOF'

# ol8-db19-11
10.0.10.11    ol8-db19-11
192.168.30.11 ol8-db19-mgmt-11
EOF
# 差分確認
diff /etc/hosts{,.${work_date}}

# 追記確認
grep ol8-db19 /etc/hosts
# → 10.0.10.11    ol8-db19-11
# → 192.168.30.11 ol8-db19-mgmt-11

3-13. oracle ユーザー・ディレクトリ設定

oracle-database-preinstall-19c により oracle ユーザー・oinstall/dba グループは自動作成済みです。

# 確認
id oracle
# → uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),...

# パスワード設定
passwd oracle
# Oracle HomeとoraInventoryのディレクトリ作成
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01
chmod -R 775 /u01

3-14. oracle ユーザー環境変数設定

su - oracle

hostname && whoami
# .bashrc(プロンプト・エイリアス)
work_date=$(date +%Y%m%d)
cp -p ~/.bashrc{,.${work_date}}

cat >> ~/.bashrc << 'EOF'

export PS1='\[\e[1;32m\]\u@\h:\W$\[\e[m\] '
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
EOF

diff ~/.bashrc{,.${work_date}}
source ~/.bashrc
# .bash_profile(環境変数)
work_date=$(date +%Y%m%d)
cp -p ~/.bash_profile{,.${work_date}}

cat >> ~/.bash_profile << 'EOF'

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=v11c19u
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG=JAPANESE_JAPAN.AL32UTF8
EOF

diff ~/.bash_profile{,.${work_date}}
source ~/.bash_profile

手順4: 前提条件の確認

対象: rootユーザー

su - root

hostname && whoami

カーネルパラメータ確認

oracle-database-preinstall-19c が設定済みのはずですが、念のため確認します。

sysctl -a | grep -E 'shmmax|shmmni|shmall|sem|file-max|ip_local|rmem|wmem'

/etc/security/limits.conf 確認

oracle-database-preinstall-19c/etc/security/limits.conf ではなく専用ファイルに設定します。

cat /etc/security/limits.d/oracle-database-preinstall-19c.conf

oracle ユーザーの nofilenprocstack が設定されていることを確認します。

ディスク・メモリ確認

df -h /u01
# → 50GB以上あること

df -h /tmp
# → 5GB以上あること

free -h
# → swap 8GB あること

チェックリスト


手順5: インストーラー展開・スナップショット取得

5-1. インストーラー展開

対象: oracleユーザー

su - oracle

hostname && whoami

export TMP_DIR=/tmp/oracle-install

# DB 19c インストーラーを Oracle Home に展開
cd ${TMP_DIR}
unzip -q V982063-01.zip -d ${ORACLE_HOME}

# OPatch をアップデート(RU 適用前に最新版が必要)
work_date=$(date +%Y%m%d)
mv ${ORACLE_HOME}/OPatch ${ORACLE_HOME}/OPatch.${work_date}
unzip -q p6880880_190000_Linux-x86-64.zip -d ${ORACLE_HOME}

# OPatch バージョン確認
${ORACLE_HOME}/OPatch/opatch version

# RU パッチを展開(runInstaller -applyRU で同時適用するため)
unzip -q p37960098_190000_Linux-x86-64.zip

# 展開後のパッチディレクトリを確認
ls -d ${TMP_DIR}/37960098

5-2. スナップショット取得(展開後・インストール前)

Proxmox WebUI から ol8-db19-11 のスナップショットを取得します。

「スナップショット」タブ → 「スナップショットの取得」:

項目
名前before-db19c-install
説明手順4完了・ファイル展開済み・DB19cインストール前
RAMを含めるチェック外す

まとめ

この記事では以下を実施しました。

  • Proxmox VE上にOracle DB 19c用VM(2vCPU / 8GB / 100GB)を作成
  • Oracle Linux 8.9をインストールし、Management NICのみインストール時に設定
  • OS初期設定としてNW・NTP・SELinux permissive・THP無効化・必要パッケージのインストールを実施
  • インストール前提条件を確認し、インストーラーファイルを展開

次回は runInstaller でOracle Database 19c ソフトウェアをRU 19.28.0.0 と同時にインストールします。