おらくるのいる生活

OracleのDBAとしての、障害対応やらパフォーマンス・チューニングやらの日々を綴っています

preinstall.rpmを使ってOracle 21c をインストールしてみた(2)

前回の続きになります。

bismarc256.hateblo.jp

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管理の問題も出てくるし…

 

次かその次あたりのバージョンで、「非推奨だけどサポートしますよ」くらいに戻れば良いなと、個人的には思います。