CentOSでOracle Database 18c オンプレミス版のサイレントインストール

2018年10月28日14時56分投稿, 2024年1月7日22時40分更新IT環境構築

お勉強用環境作りで実施した作業の忘備録です。

手順の確認

スタート・ガイドを参考に進めていきます。一度もOracleをインストールしたことのない環境のため、一からグループとユーザーを作成する必要があります。何が必要なのか、ドキュメントから列挙して整理してみました。

グループ

Oracleソフトウェア所有者には、プライマリ・グループとしてOracle Inventoryグループが必要データベース・ソフトウェア所有者には、OSDBAグループと、セカンダリ・グループとして(作成する場合) OSOPER、OSBACKUPDBA、OSDGDBA、OSRACDBAおよびOSKMDBAグループが必要とのこと。

名前 グループ名 概要 必要
Oracle Inventoryグループ oinstall すべてのOracleインストール所有者のプライマリ・グループ
OSDBAグループ(標準Oracle Databaseグループ、必須) dba Oracle Databaseソフトウェアをシステムに初めてインストールする場合は、このグループを作成する必要あり
Oracle Database用のOSOPERグループ(標準Oracle Databaseグループ、オプション) oper OPERATORに、データベースを起動および停止する権限(SYSOPER権限)を付与
Oracle Database用のOSBACKUPDBAグループ(拡張Oracle Databaseグループ) backupdba 別のグループにバックアップおよびリカバリ関連権限の一部(SYSBACKUP権限)を付与する場合に作成
Oracle Data Guard用のOSDGDBAグループ(拡張Oracle Databaseグループ) dgdba 別のグループにOracle Data Guardを管理および監視する権限の一部(SYSDG権限)を付与する場合に作成
暗号化鍵を管理するOSKMDBAグループ(拡張Oracle Databaseグループ) kmdba 別のグループにOracle Wallet Managerの管理など暗号化鍵管理権限の一部(SYSKM権限)を付与する場合に作成
Oracle Real Application Clusters管理のOSRACDBAグループ(拡張Oracle Databaseグループ) racdba 別のグループにOracle Real Application Clusters (RAC)の管理権限の一部(SYSRAC権限)を付与する場合に作成
Oracle ASM管理のOSASMグループ(Oracle Automatic Storage Managementグループ) asmadmin Oracle ASM管理者用とOracle Database管理者用の管理権限グループを別にするには、このグループを個別のグループとして作成 ×
Oracle ASM管理のOSDBAグループ(Oracle Automatic Storage Managementグループ) asmdba ユーザーを、Oracle Grid InfrastructureとOracle Databaseインストールの両方の所有者として作成する場合に、ASM用のOSDBAグループをユーザーのセカンダリ・グループにする必要がある ×
Oracle ASM管理のOSOPERグループ(Oracle Automatic Storage Managementグループ、オプション) asmoper Oracle ASMインスタンスの起動と停止を含め、制限されたセットのOracleインスタンス管理者権限(ASMのSYSOPER権限)を持つ別のオペレーティング・システム・グループが必要な場合に作成 ×

ユーザー

名前 ユーザー名 概要 必要
Gridユーザー grid Oracle Grid Infrastructureソフトウェア・インストールのみを所有するために作成されたユーザー ×
Oracleユーザー oracle すべてのOracleインストールまたは1つ以上のOracle Databaseインストールのいずれかを所有するために作成されたユーザー
ASMSNMPユーザー asmsnmp Oracle ASMインスタンスを監視する権限を持つユーザー ×

インストール

1. Oracle用のグループ作成

参照先は「Oracle Inventoryが存在しない場合のOracle Inventoryグループの作成」「オペレーティング・システム権限のグループの作成」にて。以降、特記なき場合は全てrootユーザーで実施しました。

// 既存グループのID使用状況確認(グループ名:x:グループID:)
# grep 543 /etc/group

// グループ追加
# /usr/sbin/groupadd -g 54321 oinstall
# /usr/sbin/groupadd -g 54322 dba
# /usr/sbin/groupadd -g 54323 oper
# /usr/sbin/groupadd -g 54324 backupdba
# /usr/sbin/groupadd -g 54325 dgdba
# /usr/sbin/groupadd -g 54326 kmdba
# /usr/sbin/groupadd -g 54330 racdba

// グループ確認
# cat /etc/group

2. Oracle用のユーザー作成

参照先は「オペレーティング・システムのOracleインストール・ユーザー・アカウントの作成」にて。

// 既存ユーザーのID使用状況確認(ユーザー名:x:ユーザーID:)
# grep 54321 /etc/passwd

// ユーザー追加 ※ asmdbaを削除、operを追記してます
# /usr/sbin/useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle

// ユーザー確認
# cat /etc/passwd

3. 物理メモリについて

インストール時のログにて、筆者の環境ではエラーノード"local"に十分な物理メモリーがありません[必要な物理メモリー = 8GB (8388608.0KB)]が発生しましたが、Severity:IGNORABLEということで無視することにしました。(といっても、一応16GBまでメモリを増設しているマシーンなのですが…この辺りの理解ができていません。。※2023年12月3日追記※のちに、メモリーとスロットの接触不良であったことが判明しました)

4. カーネル・パラメータ値の変更

参照先はこちら。筆者の環境では下記が不足しエラーが発生したため、手順に追加しました。

  • semopm
  • file-max
  • rmem_default
  • rmem_max
  • wmem_default
  • wmem_max
  • aio-max-nr
// カーネルパラメータの設定
# 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

// 設定反映
# /sbin/sysctl --system

// 設定値確認
# /sbin/sysctl -a

// サーバー再起動
# reboot

5. 必要なパッケージのインストール

筆者の環境では下記が不足しエラーが発生したため、手順に追加しました。

  • compat-libcap1-1.10
  • libstdc++-devel-4.8.2 (x86_64)
  • sysstat-10.1.5
  • gcc-c++-4.8.2
  • ksh
  • glibc-devel-2.17 (x86_64)
  • libaio-devel-0.3.109 (x86_64)
  • nfs-utils-1.2.3-15
  • smartmontools-6.2-4
  • net-tools-2.0-0.17
  • compat-libstdc++-33-3.2.3 (x86_64)
  • libxcb-1.11 (x86_64)
  • libX11-1.6.3 (x86_64)
  • libXau-1.0.8 (x86_64)
  • libXi-1.7.4 (x86_64)
  • libXtst-1.2.2 (x86_64)
// インストール可能なパッケージを確認
# yum search compat-libcap

// 適宜選んでインストール
# yum install -y compat-libcap1.x86_64
# yum install -y libstdc++-devel.x86_64
# yum install -y sysstat.x86_64
# yum install -y gcc-c++.x86_64
# yum install -y ksh.x86_64
# yum install -y glibc-devel.x86_64
# yum install -y libaio-devel.x86_64
# yum install -y nfs-utils.x86_64
# yum install -y smartmontools.x86_64
# yum install -y net-tools.x86_64
# yum install -y compat-libstdc++-33.x86_64
# yum install -y libxcb.x86_64
# yum install -y libX11.x86_64
# yum install -y libXau.x86_64
# yum install -y libXi.x86_64
# yum install -y libXtst.x86_64

6. OTNからのインストール用アーカイブ・ファイルのダウンロード

参照先はこちら。ライセンスに同意のうえダウンロードして、/tmpに置きました。

7. 必要なディレクトリやファイルを揃える

参照先はこちら。筆者の環境に合わせて変更してます。

// Oracleホーム・ディレクトリを作成
# mkdir -p /u01/app/oracle/product/18.0.0/dbhome_1

// Oracleホーム・ディレクトリに移動
# cd /u01/app/oracle/product/18.0.0/dbhome_1

// zipファイル展開
# unzip -q /tmp/LINUX.X64_180000_db_home.zip

// u01ディレクトリ以下全ての所有者をoracle、グループをoinstallへ変更
# chown -R oracle:oinstall /u01

8. ここからサイレントインストールに移る

参照先はこちら。実際はこちらのページを参考にさせていただきました。

// Oracleインストール所有者ユーザー・アカウント(oracle)になる
# su oracle

// Oracleホーム・ディレクトリに移動
$ cd /u01/app/oracle/product/18.0.0/dbhome_1

// 環境変数に値を設定
$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=${ORACLE_BASE}/product/18.0.0/dbhome_1
$ export ORACLE_HOSTNAME=
$ export ORA_INVENTORY=/u01/app/oraInventory

// インストール実行
$ ./runInstaller -ignorePrereq -waitforcompletion -silent                    \
  -responseFile ${ORACLE_HOME}/install/response/db_install.rsp               \
  oracle.install.option=INSTALL_DB_SWONLY                                    \
  ORACLE_HOSTNAME=${ORACLE_HOSTNAME}                                         \
  UNIX_GROUP_NAME=oinstall                                                   \
  INVENTORY_LOCATION=${ORA_INVENTORY}                                        \
  SELECTED_LANGUAGES=en,en_GB                                                \
  ORACLE_HOME=${ORACLE_HOME}                                                 \
  ORACLE_BASE=${ORACLE_BASE}                                                 \
  oracle.install.db.InstallEdition=EE                                        \
  oracle.install.db.OSDBA_GROUP=dba                                          \
  oracle.install.db.OSBACKUPDBA_GROUP=dba                                    \
  oracle.install.db.OSDGDBA_GROUP=dba                                        \
  oracle.install.db.OSKMDBA_GROUP=dba                                        \
  oracle.install.db.OSRACDBA_GROUP=dba                                       \
  SECURITY_UPDATES_VIA_MYORACLESUPPORT=false                                 \
  DECLINE_SECURITY_UPDATES=true

// rootになって下記を実行するよう指示されるので従う
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/oracle/product/18.0.0/dbhome_1/root.sh

// エラーが発生する場合、詳細についてはログを見るよう指示されるので従う(下記はパスの一例)
# less /u01/app/oraInventory/logs/InstallActions2018-10-29_01-45-54PM/installActions2018-10-29_01-45-54PM.log

動作確認

1. データベース作成

参照先はこちら。実際はこちらのページを参考にさせていただきました。

// Oracleインストール所有者ユーザー・アカウント(oracle)になる
# su oracle

// 環境変数に値を設定
$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=${ORACLE_BASE}/product/18.0.0/dbhome_1
$ export PATH=${ORACLE_HOME}/bin:${PATH}
$ export ORACLE_SID=cdb1
$ export PDB_NAME=pdb1
$ export DATA_DIR=${ORACLE_BASE}/data

// データベース作成
$ dbca -silent -createDatabase                                              \
  -templateName General_Purpose.dbc                                         \
  -gdbname ${ORACLE_SID} -sid  ${ORACLE_SID} -responseFile NO_VALUE         \
  -characterSet AL32UTF8                                                    \
  -sysPassword SysPassword1                                                 \
  -systemPassword SysPassword1                                              \
  -createAsContainerDatabase true                                           \
  -numberOfPDBs 1                                                           \
  -pdbName ${PDB_NAME}                                                      \
  -pdbAdminPassword PdbPassword1                                            \
  -databaseType MULTIPURPOSE                                                \
  -automaticMemoryManagement false                                          \
  -totalMemory 2000                                                         \
  -storageType FS                                                           \
  -datafileDestination "${DATA_DIR}"                                        \
  -redoLogFileSize 50                                                       \
  -emConfiguration NONE                                                     \
  -ignorePreReqs

2. インスタンス接続

こちらのページを参考にさせていただきました。oracleユーザーとして実行してます。

// このあとのsqlplus実行時に応答が文字化けする場合は、一旦sqlplusを終了させて下記設定
$ export NLS_LANG=Japanese_Japan.AL32UTF8

// データベースとPDBを指定してsqlplus起動〜終了させてみる
$ sqlplus / as sysdba <<EOF
alter system set db_create_file_dest='${DATA_DIR}';
alter pluggable database ${PDB_NAME} save state;
exit;
EOF

// シャットダウン
$ sqlplus / as sysdba <<EOF
shutdown normal;
exit;
EOF

SALLY'S REVIEW

考察中、あるいは特記なし。

COMMENTS