Oracle Database をインストール
目次
Oracle Databaseのインストール過程
Oracle Database は、非常に高価ではありますが「データベース」シェアトップのシステムになります。
今回は、このデータベースをインストールする過程のご紹介として、Linux環境にOracle Database19cをインストールします。
ディストリビューションは、「Oracle Linux Server release 8.3」 を選択し、VMwareの仮想マシンにインストールします。
ISOファイルの準備
オラクルのサイトからインストール用のISOファイルを取得します。
Englishになっていたら、日本語を選びサインインします。アカウントがなければ作りましょう。
Oracle Linuxで検索します。カートに入れるような感じなので注意が必要です。続行をクリックして進みます。
プラットフォームなどを選びます。今回はx86用にしました。続行を押して次に進みます。
ライセンス契約に同意を求められます。将来の有料化の布石…かもしれません。
ダウンロードするファイルを選択します。V1004253-01.iso があればいいので、こちらを選択します。
選択すると、ダウンロードされるのは Oracle_SSN_DLM_********.exe という実行ファイルで、実行すると、ファイルがダウンロードできます。
これでファイルがダウンロードされます
Complete になれば完了です。
仮想マシンの準備
ちなみに、このVMwareは、Ubuntuにインストールしたものなので、表示が英語になっています。
VMwareの仮想マシン新規作成を選択します。マシンの詳細を設定するので、ここではOSインストールしないを選択します。
ゲストOS選択で、Oracle Linuxを選択します。
名前と、仮想マシンの保存場所を選択します
仮想マシンの容量と、ファイルを1つにするよう設定します。
デフォルトだと、メモリが1Gしかありません。カスタマイズボタンで変更します。
メモリを8Gに、プロセッサを2個に、CD/DVDに、Oracle Linuxのインストール用isoファイルに設定します。
またネットワークがデフォルトだとNATなので、Bridgeにします。
仮想マシンが準備できたら、起動します。
CD/DVDに設定したISOを読み込んで立ち上がります。見た目はCentOS8とほぼ違いがありません。
GUI画面が立ち上がったら、まず言語を日本語に設定します。
仮想マシンなので、右が少し切れています。
ストレージとユーザーに警告が表示されています。
ストレージは、そのまま選択すればOKです
rootのパスワード設定です。
root以外にもユーザーが必要なので、一人作成します。
設定してインストール開始して、暫く待ちます。完了したらシステムの再起動をクリックします。
再起動が完了すると、警告がでます。
一応、Oracle Linuxは無料で使用できますが、ライセンス契約が必要です。
将来の有料化の布石……ですかね
契約に同意します。
これでインストール完了ですが、「Oracle Linux」なんて名前なので、Oracle社がOracleデータベース向けに用意したディストリビューションなのでは? という甘い期待は、ものの見事に裏切られました。
$ java -version
bash: java: コマンドが見つかりませんでした...
Oracleデータベースをインストールするのに必要な、javaすら標準インストールでは用意されていません。
このあとのインストールは、本当に大変でした。
Oracle 19cインストール
上記のOracle LinuxをダウンロードしたOracleのサイトから、LINUX.X64_193000_db_home.zip を入手し、これをインストールします。
手順はまったく同一です。
まずインストール時にoracleユーザーを作成していなかった場合は、ユーザーの作成はGUI画面で行った方が良いようです。
最終的にGUIインストールするためです。
ユーザーを追加したら、グループを作成し、先ほどのoracleユーザーをグループに所属させます。
# id -a oracle
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle) ←最初はデフォルトのグループです
# groupadd -g 54421 oinstall
# groupadd -g 54322 dba
# groupadd -g 54323 oper
# groupadd -g 54324 backupdba
# groupadd -g 54325 dgdba
# groupadd -g 54326 kmdba
# groupadd -g 54327 asmdba
# groupadd -g 54328 asmoper
# groupadd -g 54329 asmadmin
# groupadd -g 54330 racdba
# usermod -g oinstall oracle
# usermod -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle
# id -a oracle
uid=1000(oracle) gid=54421(oinstall) groups=54421(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54330(racdba)
次に、Oracleデータベースを展開するフォルダを作成します。
# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
# chown -R oracle:oracle /u01
次に、環境変数を設定します。
oracleユーザーに切り換えてから、
$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs ←この下に追加
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
一度ログアウトして、envコマンドで上記の環境変数が設定されている事を確認します。
次に、開発環境のインストールが必須です。
前述の通り、Javaも入っていないほか、開発用のプログラムも入っていません。
もう一度rootになり、
# dnf group install “Development Tools”
# dnf install -y libaio libnsl
これらをインストールしておかないと、インストーラーが立ち上がりません。
環境が整ったら、インストーラーの展開です。
LINUX.X64_193000_db_home.zip をダウンロードしたフォルダに移動し、
$ cp LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.3.0/dbhome_1
$ cd /u01/app/oracle/product/19.3.0/dbhome_1
$ unzip LINUX.X64_193000_db_home.zip
でファイルを解凍します。
かなりファイル数が多いですので注意してください。
インストールの実行と、文字化け問題
$ cd /u01/app/oracle/product/19.3.0/dbhome_1
$ ./runInstaller
のコマンドでインストールできるとの情報なのですが、実際には上記のような開発環境を忘れるとエラーが表示されるほか、開発環境をインストールしても妙な事になります。
文字の部分が□になってしまっています。「トーフ問題」というやつですね。
これも呆れるしかないのですが、LINUX.X64_193000_db_home.zip ファイルにはインストーラーを動作させるためのjava実行環境が入っているのですが、その中にインストーラーが表示に使用するフォントが入っていないのです。
このため、フォントは外部から取得してくる必要があります。
手順としましては、こちらのサイト様が参考になりました。
さざなみフォントダウンロードサイトからファイルを取得し、適当な場所に展開します。
# tar -jxvf sazanami-20040629.tar.bz2
sazanami-20040629/
sazanami-20040629/README
sazanami-20040629/sazanami-mincho.ttf
sazanami-20040629/sazanami-gothic.ttf
sazanami-20040629/doc/
sazanami-20040629/doc/oradano/
sazanami-20040629/doc/oradano/README.txt
sazanami-20040629/doc/misaki/
sazanami-20040629/doc/misaki/misakib8.txt
sazanami-20040629/doc/mplus/
sazanami-20040629/doc/mplus/LICENSE_J
sazanami-20040629/doc/shinonome/
sazanami-20040629/doc/shinonome/LICENSE
sazanami-20040629/doc/ayu/
sazanami-20040629/doc/ayu/README.txt
sazanami-20040629/doc/kappa/
sazanami-20040629/doc/kappa/README
すると、sazanami-gothic.ttf sazanami-mincho.ttf というフォントファイルができています。
$ cd /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre/lib/fonts
$ mkdir fallback
作成したフォルダに、sazanami-gothic.ttf sazanami-mincho.ttfをコピーします。
再度、./runInstallerを実行すると、インストーラーに日本語が表示されます。
INS-08101エラー対策
日本語は表示されたものの、[INS-08101]というエラーが表示されました。
その解決策は、こちらのサイトにありましたが、下記を実行してから、インストーラーを起動すると正常になりました。
$ cat /etc/os-release | grep VERSION_ID | awk -F”\”” ‘{print $2}’
$ export CV_ASSUME_DISTID=OEL8.2
これで
とインストーラーが起動しました。
しかし、まだまだトラブルが続きます。
SWAP足らない問題
試しにインストールを進行させると、警告が表示されました。
インストール時に特にディスク構成は弄らず、自動でおこなったのですが、その結果、SWAPサイズが不足したようです。
なんでOracle Linuxが標準でOracle Databaseをインストールするのに足らないSWAPサイズを設定しているのかが全く理解できません。
Oracleが自分のところでディストリビューションとして出す以上、自分達が扱ってるOracle Databaseや、Javaを使う為に選択する事を想定して、インストール時に確認するオプションを設け、選択したらそれに合わせた構成にするくらいできないのでしょうか?
とりあえず、SWAPサイズを増やします。
こちらのサイト、猫ぐらし様の情報が参考になりました。
まず、一度Vmwereの仮想マシンをシャットダウンし、ディスクサイズを2GB追加しました。
次に、gparteをインストールするのですが、Oracle Linux8では、標準では見つかりませんでした。
アクティビティから、ソフトウェアを選びます。
gparteを検索しますが、見つかりません。これは標準の場所に存在しないからで、EPELを有効化する必要があります。
EPELを追加した後、gparteを検索すると、アプリケーションが見つかりますので、クリックシテインストールします。
EPELを設定するのは、下記の手順でした。dnf では見つかりませんでした。
# yum -config-manager --enable epel
# ←なにも見つからない
# dnf -y install epel-release
メタデータの期限切れの最終確認: 0:10:30 時間前の 2021年04月18日 01時38分15秒 に 実施しました。
一致した引数がありません: epel-release
エラー: 一致するものが見つかりません: epel-release
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
メタデータの期限切れの最終確認: 0:11:09 時間前の 2021年04月18日 01時38分15秒 に 実施しました。
epel-release-latest-8.noarch.rpm 22 kB/s | 22 kB 00:00
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
epel-release noarch 8-10.el8 @commandline 22 k
トランザクションの概要
================================================================================
インストール 1 パッケージ
合計サイズ: 22 k
インストール済みのサイズ: 32 k
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1/1
インストール : epel-release-8-10.el8.noarch 1/1
scriptletの実行中: epel-release-8-10.el8.noarch 1/1
検証 : epel-release-8-10.el8.noarch 1/1
インストール済み:
epel-release-8-10.el8.noarch
完了しました!
未割り当てが2GBできました。
右クリックでNewを選択します
ファイルシステムをlvm2 pvにし、追加ボタンを押します。
チェックマークのボタンで、操作を適用します。
ダイアログがでるので、適用します。
パーティションの名前が付き、反映されました。
増えた容量をSWAPに反映します。
# free
total used free shared buff/cache available
Mem: 7856756 530380 6792716 10916 533660 7055960
Swap: 6504444 0 6504444
※今は6G程です。
# vgdisplay -C
VG #PV #LV #SN Attr VSize VFree
ol 1 3 0 wz--n- <61.00g 0
# vgextend ol /dev/nvme0n1p3 ←GPartedで追加した領域を指定。
Volume group "ol" successfully extended
# vgdisplay -C
VG #PV #LV #SN Attr VSize VFree
ol 2 3 0 wz--n- 62.99g <2.00g ←サイズが増えています。
# lvdisplay
--- Logical volume ---
LV Path /dev/ol/swap
LV Name swap
VG Name ol
LV UUID JrCWy5-a1yM-gCNW-5dQn-5v2s-C3uR-AXkbB4
LV Write Access read/write
LV Creation host, time localhost, 2021-04-18 09:57:54 -0400
LV Status available
# open 2
LV Size 6.20 GiB
Current LE 1588
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:1
--- Logical volume ---
LV Path /dev/ol/home
LV Name home
VG Name ol
LV UUID 78KfVg-5ckL-N4zO-6OcE-thcE-F3et-WbhCzC
LV Write Access read/write
LV Creation host, time localhost, 2021-04-18 09:57:54 -0400
LV Status available
# open 1
LV Size <17.98 GiB
Current LE 4602
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:2
--- Logical volume ---
LV Path /dev/ol/root
LV Name root
VG Name ol
LV UUID xDADTH-o4sJ-5lJc-WdVm-K6Cj-EIKk-MutZn0
LV Write Access read/write
LV Creation host, time localhost, 2021-04-18 09:57:54 -0400
LV Status available
# open 1
LV Size <36.82 GiB
Current LE 9425
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:0
# lvextend -l +100%FREE /dev/ol/swap ←SWAPで使っている論理ボリューム(LV)を拡張します
Size of logical volume ol/swap changed from 6.20 GiB (1588 extents) to <8.20 GiB (2099 extents).
Logical volume ol/swap successfully resized.
# swapoff -v /dev/ol/swap
スワップ /dev/ol/swap を無効化しています
# mkswap /dev/ol/swap
mkswap: /dev/ol/swap: 警告: 古い swap 署名を消去しています。
スワップ空間バージョン 1 を設定します。サイズ = 8.2 GiB (8803840000 バイト)
ラベルはありません, UUID=530a97a1-8f58-4351-97af-50116bc1145d
# swapon -v /dev/ol/swap
swapon: /dev/mapper/ol-swap: 署名が見つかりました: [ページサイズ=4096, 署名=swap]
swapon: /dev/mapper/ol-swap: ページサイズ=4096, スワップサイズ=8803844096, デバ イスサイズ=8803844096
スワップ /dev/mapper/ol-swap を有効化しています
# free
total used free shared buff/cache available
Mem: 7856756 515596 6806604 10876 534556 7070736
Swap: 8597500 0 8597500
※SWAPが増えている事が確認できます。
これでようやく、警告がでなくなりました。Oracle Databaseのインストールを続けます。
正常なインストールの実行
構成オプション。ソフトウェアのみ設定を選択します。
インストールオプション。単一インスタンス・Databaseを選択します。
エディションの選択。Enterpriseを選択します
インストール場所の指定。デフォルトでOKです
インベントリの作成です。デフォルトですが、グループがoinstallである事は確認が必要です
グループの選択です。デフォルトでOKですが、グループ設定がうまくいっていないとこの表示になりません。
rootのパスワードを設定します。
サマリが表示されます。SWAPも調整したので、エラーは解消されています。
インストールが進行します。
インストールが完了しました。
データベースの作成
インストールが完了したら、データベースを作成します。
$ dbca
今回ははじめてなので、作成かテンプレートしか選択できません。作成を選びます。
作成モードを拡張設定にします。
デプロイタイプは、デフォルトのままです。
コンテナデータベースとして作成のチェックは外します。
記憶域オプションはデフォルトのままです。
リスナーの選択ですが、はじめての作成なのでありません。LISTENERを作成します。
データーボールトはデフォルトのままです。
構成オプションは4つのタブに分かれています。メモリはデフォルトのままです
構成オプションのサイズタブもデフォルトのままです。
構成オプションのキャラクタセットタブは、Unicode であること、日本語であることを確認します。
構成オプションの排他モードは専用サーバーモードであることを確認します。
あまり意味はありませんが、構成オプションのサンプルスキーマーを追加にチェックしました。
管理オプションは、EMを使用するにチェックし、5500を指定します。
全てのアカウントで同一パスワードを使用する設定にします。れます。
短いパスワードなので警告をくらいましたが、本番ではないのでこのままにします。
作成オプションはデータベースの作成を指定します。
サマリが表示されます。ここだけ「終了」で先にすすみます。
データベースの作成が始まりました。けっこう時間がかかります。
データーベースの作成が完了しました と表示されたら、パスワードの管理ボタンをクリックし、HRのチェックを外して適当なパスワードを与えます。
全て完了したら、端末からoratbaを編集します。
$ vi /etc/oratab
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:N
↓
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y
以上でOracleデータベースのインストールと、データベースの作成が完了しました。