前置き
とある案件の開発用にEC2のインスタンスを立てて
Oracle Database XEをインストールする際に色々グダッた事の記録。
まずは公式ドキュメントを読む良い子スタイル
https://docs.oracle.com/cd/E96517_01/xeinw/installing-oracle-database-xe.html#GUID-8A8E5F6D-F00E-40BD-B74D-A41CCC502AE9
前提条件として、Oracle Database XEのインストールでは、/optの下の9GBのディスク領域が消費されます。このディスク・パーティションに必要なディスク領域がない場合、スペースを追加するか、代替パーティションを/opt/oracleとしてマウントする必要があります。このディスク・パーティションは、ソフトウェアおよびデータベースが存在する定義済Oracleベースです。
おそロシア。
なのでEBSは30GBにした。
スワップファイルの作成もした方がいいんでしょうね。いそいそ4GBの領域を作る。
そもそもですが、インスタンスタイプはt2.microなんかじゃなく最低でもt3.mideumとかに変えた方がいいと思った。とはいえ無駄に経費を使うわけにはいかないのでt2.microインスタンスという環境で続行。
インストール
・Red Hat互換Linuxディストリビューションの場合、次のコマンドを使用してDatabase Preinstallation RPMをダウンロードしてインストールします。
curl -o oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
sudo yum localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
・Oracle Technology Networkから、Oracle Database RPMベースのインストールのソフトウェア・ダウンロード・ページに
https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html
RPMベースのインストールの実行に必要なoracle-database-xe-18c-1.0-1.x86_64.rpmファイルを選択済のディレクトリにダウンロード。yum localinstallコマンドを使用して、データベース・ソフトウェアをインストール。
wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-
sudo yum localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm
こんなメッセージが出てインストールは完了しない。
[SEVERE] Oracle Database 18c Express Edition requires a minimum of 1GB of physical
memory (RAM). This system has 971 MB of RAM and does not meet minimum
requirements
メモリが足りないと言われているのは分かるけど、4GBのswap領域でもアカンのかって事で
swapを足す。プラスして8GBの領域を作っても無駄無駄無駄無駄とDio様の如くOracle様に軽くシバかれる。
エラー解消方法
ググるとこんな話が。
http://www.oaktable.net/content/how-install-oracle-xe-18c-oracle-cloud-free-tier
マシンは実際には971MBのRAMを持ち、Oracle XE 18cでは低くなり、RPMファイルをインストールしようとするとエラーが発生します。
なるほど
ここに至っては親切にrpmパッケージをrebuildしろとな。
https://dev.to/project42/install-oracle-database-xe-in-oracle-cloud-free-tier-vms-5akl
説明通りのyumでインストール出来なかったので、RPM Searchに行って該当のrpmパケージを落とす事にします。
http://rpm.pbone.net/
*アドバンスドモードでcentos7を選択して「rpmrebild」でサーチ
wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/matthewdva:/build:/EPEL:/el7/CentOS_7/noarch/rpmrebuild-2.11-3.el7.noarch.rpm
sudo rpm -ivh rpmrebuild-2.11-3.el7.noarch.rpm
rpmrebildのインストールが上手くいったらRPMファイルの編集へ。
・Edit the RPM and change the following Memory restrictions option:
(RPM を編集し、次のメモリ制限オプションを変更します。)
*ここからはrootで実行
time rpmrebuild -e -p oracle-database-xe-18c-1.0-1.x86_64.rpm
するとviエディタで開かれるので、メモリチェックしている該当箇所にたどり着き値を変更する。
# Check and disallow install, if RAM is less than 1 GB
space=`cat /proc/meminfo | grep '^MemTotal' | awk '{print $2}'`
- PhyMem=`expr $space / 1024`
+ PhyMem=`expr $space / 100`
swapspace=`free -m | grep Swap | awk '{print $4}'`
for a number 100 (for example)
:wqで抜けてyを選択。
特に問題がなければ下記の様なリザルトが出力される。
result: /hoge/rpmbuild/RPMS/x86_64/oracle-database-xe-18c-1.0-1.x86_64.rpm
rebuild出来たらインストールを実行
yum install /hoge/rpmbuild/RPMS/x86_64/oracle-database-xe-18c-1.0-1.x86_64.rpm
インストール:
oracle-database-xe-18c.x86_64 0:1.0-1
完了しました!
何とかインストールが成功
Oracle Databaseの作成および構成
サービス構成スクリプトを実行
/etc/init.d/oracle-xe-18c configure
を叩いたのですが、またか!ってな具合でメモリチェックに引っ掛かります。
既に何度もメモリチェックに引っ掛かり、いくぶん小慣れた私はサクッと編集を選択。
vim /etc/init.d/oracle-xe-18c
- MEMORY_CONSTRUCT="-initParams sga_target=${sga}M,pga_aggregate_target=${pga}M"
+ MEMORY_CONSTRUCT="-initParams sga_target=500M,pga_aggregate_target=400M"
再実行
/etc/init.d/oracle-xe-18c configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
[WARNING] [DBT-11209] 現在の使用可能メモリーは、データベースの作成に必要な使用可能メモリー(900MB)を下回っています。
原因: 次のノードには必要な使用可能メモリーがありません:
ノード:ip-xxx-xxx-xxx-xxx 使用可能なメモリー:669.6133MB (685684.0KB)
SYSユーザー・パスワードを入力してください:
****
SYSTEMユーザー・パスワードを入力してください:
*****
PDBADMINユーザー・パスワードを入力してください:
*****
DB操作の準備
7%完了
データベース・ファイルのコピー中
29%完了
Oracleインスタンスの作成および起動中
30%完了
31%完了
34%完了
38%完了
41%完了
43%完了
データベース作成の完了
47%完了
50%完了
プラガブル・データベースの作成
54%完了
71%完了
構成後アクションの実行
93%完了
カスタム・スクリプトを実行中
100%完了
データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
/opt/oracle/cfgtoollogs/dbca/XE。
データベース情報:
グローバル・データベース名:XE
システム識別子(SID):XE
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/XE/XE1.log"を参照してください。
Connect to Oracle Database using one of the connect strings:
Pluggable database: ip-xxx-xxx-xxx-xxx.ap-xxxx.compute.internal/XEPDB1
Multitenant container database: ip-xxx-xxx-xxx-xxx.ap-xxxx.compute.internal
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE
パスワード設定とかありますのでちゃんと入力する。
あぁあぁあぁしんどい
しんどいわ
ここまで来るのにパワーを使い果たした気がしたので接続設定等は後回しに。
とりあえず何が言いたいかというとインスタンスタイプは絶対ケチんなよです。
ケチって良いことあったためしない。
では素敵なOracleライフを。