前回の続きになります。
preinstall.rpmのおかげで簡単に前提条件が整ったので、念のため前提条件チェックを再実行します。
$ ./runcluvfy.sh stage -pre hacfg -fixup -verbose > /work/runcluvf_1222.log
(ログの一部抜粋)
Swap Size ...
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
test 7.8945GB (8278012.0KB) 15.354GB (1.609986E7KB) failed
Swap Size ...FAILED (PRVF-7573)
結果を確認した所、スワップサイズが要件を満たしていませんでしたが、テスト用のインストールでスワップが8GBもあれば十分なので、それは無視します。
レスポンスファイルを用意し、インストールユーザでGI(Grid Infrastructure)インストールを開始します。
この辺は19cのインストールと同じですね。
$ /u01/app/21.0.0/grid/gridSetup.sh -silent -skipPrereqs -responseFile /work/gridsetup.rsp
これが正常終了したらrootユーザでroot.shを実行。
# /u01/app/21.0.0/grid/root.sh
Check /u01/app/21.0.0/grid/install/root_test_2021-12-20_23-56-28-570633717.log for the output of root script
# echo $?
0
仕上げにGIインストールユーザでコンフィグを実行します。
$ /u01/app/21.0.0/grid/gridSetup.sh -executeConfigTools -responseFile /work/gridsetup.rsp -silent
Launching Oracle Grid Infrastructure Setup Wizard...
You can find the logs of this session at:
/u01/app/oraInventory/logs/GridSetupActions2021-12-21_00-13-15AM
Successfully Configured Software.
$ echo $?
0
この後、RDBMSをインストールするのですが、せっかくなのでこちらもrpmを使ってみました。
rootユーザで実行します。
# yum -y localinstall oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm
Last metadata expiration check: 1:42:15 ago on Mon Dec 20 22:45:45 2021.
Dependencies resolved.
=========================================================
Package Architecture Version Repository Size
=========================================================
Installing:
oracle-database-ee-21c x86_64 1.0-1 @commandline 2.6 G
Transaction Summary
=========================================================
Install 1 Package
(中略)
[SEVERE] The install cannot proceed because ORACLE_BASE directory (/opt/oracle)
is not owned by "oracle" user. You must change the ownership of ORACLE_BASE
directory to "oracle" user and retry the installation.
/opt/oracleディレクトリがoracleユーザの所有では無いと、怒られてしまいましたね。
OFA(Optimal Flexible Architecture)規格が推奨する Oracle ホームのパスは下記の通りですし、RACの場合は/opt配下へのインストールは非推奨なんですが、rpmを使うと/opt/oracleにインストールされてしまうようですね。
/<PATH>/app/oracle/product/<version>/type[_n]
※type は Oracle ホームのタイプ (例えば Oracle Database の場合は db、Oracle Client の場合は client など)
環境変数ORACLE_BASEを設定して再実行しましたが、ダメでした。
諦めてoracleユーザをオーナーとする/opt/oracleディレクトリを作成し、リトライ。
# yum -y localinstall oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm
(中略)
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-21c configure
Verifying : oracle-database-ee-21c-1.0-1.x86_64 1/1
Installed:
oracle-database-ee-21c-1.0-1.x86_64
Complete!
今度は無事、インストールできました。
/etc/init.d/oracledb_ORCLCDB-21c configureをrootで実行すればサンプルDBが作れるとメッセージが出ているので、ファイルを確認してみます。
# cat /etc/sysconfig/oracledb_ORCLCDB-21c.conf
#This is a configuration file to setup the Oracle Database.
#It is used when running '/etc/init.d/oracledb_ORCLCDB configure'.
#Please use this file to modify the default listener port and the
#Oracle data location.
# LISTENER_PORT: Database listener
LISTENER_PORT=1521
# ORACLE_DATA_LOCATION: Database oradata location
ORACLE_DATA_LOCATION=/home/oracle/oradata
# EM_EXPRESS_PORT: Oracle EM Express listener
EM_EXPRESS_PORT=5500
リスナーとEM_EXPRESSのポート、それにデータファイルの配置ディレクトリしか設定できないようです。あくまでサンプルという事のようです。
GIをインストールしてあるのでリスナーポート1521は使用済みです。
なのでポートを変更して実施してみました。
# /etc/init.d/oracledb_ORCLCDB-21c configure
Configuring Oracle Database ORCLCDB.
[FATAL] [DBT-07503] A listener with name (LISTENER) already exists.
ACTION: Specify a different name for listener.
Database configuration failed.
しかし、と言うか当然ながら、既にLISTENERというリスナーは存在しているのでエラーになります。
RDBMSインストール用のrpmは、GIを使用しないDB環境のみを想定しているようです。
GIをdeinstallして、再度試してみます。
# /etc/init.d/oracledb_ORCLCDB-21c configure
Configuring Oracle Database ORCLCDB.
Prepare for db operation
8% complete
(中略)
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB0.log" for further details.
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.
# echo $?
0
とりあえずrpmを使ったRDBMSインストールとコンフィグツールを使用したサンプルDBは成功しました。
作られたのはORCLCDBという名前のコンテナDBですね。
preinstall.rpmはすごく便利だなと思いましたが、RDBMSインストール用rpmとDBコンフィグツールは、殆ど使用するケースが無いような…
以下、21cで今までと大きく変わった2点について。
21cは非コンテナDBはサポート対象外になってしまったので、インストール方法・DB作成方法のいかんによらず、非コンテナDBは作成できません。
また、21cではORACLE_HOMEがread onlyに設定されている為、今までORACLE_HOME/network/admin配下にあったtnsnames.oraなどのネットワーク関連ファイル、ORACLE_HOME/dbs配下にあったパラメータファイル等は、ORACLE_BASE配下に移動しています。
# ls -l /u01/app/oracle/homes/OraDB21Home1/network/admin/
合計 4
-rw-r-----. 1 oracle oinstall 393 12月 22 00:27 tnsnames.ora
# ls -l /u01/app/oracle/dbs
total 12
-rw-rw----. 1 oracle dba 1544 Dec 22 00:59 hc_orcl.dat
-rw-r-----. 1 oracle dba 24 Dec 22 00:22 lkORCL
-rw-r-----. 1 oracle oinstall 2048 Dec 22 00:24 orapworcl
ORACLE_HOMEがread onlyになったのはまあ、良いとして。
非コンテナDBがサポート対象外になってしまったのは、どうなんでしょうね…
ひとつのDBに複数インスタンスを対応させて可用性を高めるのがRACですが、コンテナDBって1インスタンスに(仮想的に)複数のDBを割り当てるのだから、可用性が下がる事はあっても上がる事は無いし、DB一つだけあれば良いのにCDB,PDBルートとか余計なものは付いてくるし、PDBにローカル認証で接続できないからPW管理の問題も出てくるし…
次かその次あたりのバージョンで、「非推奨だけどサポートしますよ」くらいに戻れば良いなと、個人的には思います。