OracleDatabase19cをOracleLinux8.5にインストールする

この記事の目的

  • Oracle Databaseを使う仕事をしているのでちゃんと勉強をしようと思った
  • 自宅で環境構築をしようとしたが、そもそもインストーラGUIで起動する時点で詰まった
    • サイレントインストールで構築することもできたが、EM Expressが構成されなかった
      • これの原因はまだ調べられていない
  • Oracle DBAの資格を取る人とかの助けになったら嬉しい

やりたかったこと

  • Oracle Databaseのインストールとセットアップ
    • OUIとかDBCAを使った環境構築
  • Oracle Enterprise Manager Database Express(EM Express)の導入
    • 触ってみたかっただけ

この記事に書かないこと

  • OracleLinuxのセットアップ
  • サイレントインストールの方法
  • 各種パラメータの説明
  • スキーマ作ったりテーブル作ったりメディアリカバリしてみたり(この記事のスコープ外とする)

環境

バージョン情報

  • OS: OracleLinux8.5
  • OracleDatabase: 19.3.0

ローカルアカウント

  • administrator: OSインストール時に作成したアカウント
  • oracle: OracleDatabaseの所持者となるアカウント(作成手順は後述)

準備

前提

  • administratorユーザでログインして実行する前提でコマンドを記載する
  • 当然sudo -u oracleとしているところは、sudo su - oracleとしてユーザを切り替えてから実行しても問題はない

依存パッケージのインストール

sudo yum install -y gcc make libnsl

oracleユーザとかグループの作成

  • administratorユーザでログインし、以下を実行
# oracleユーザを所属させるグループを作成
sudo groupadd -g 54321 oinstall
sudo groupadd -g 54322 dba
sudo groupadd -g 54323 oper
sudo groupadd -g 54324 backupdba
sudo groupadd -g 54325 dgdba
sudo groupadd -g 54326 kmdba
sudo groupadd -g 54327 asmdba
sudo groupadd -g 54328 asmoper
sudo groupadd -g 54329 asmadmin
sudo groupadd -g 54330 racdba

# oracleユーザを作成(↑で作成したグループに紐付け)
sudo useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle

oracleユーザの環境変数設定

  • administratorユーザでログインし、以下を実行
sudo -i -u oracle bash -c echo 'export ORACLE_BASE=/u01/app/oracle' >> /home/oracle/.bash_profile
sudo -i -u oracle bash -c echo 'export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1' >> /home/oracle/.bash_profile
sudo -i -u oracle bash -c echo 'export ORACLE_SID=orcl' >> /home/oracle/.bash_profile
sudo -i -u oracle bash -c echo 'export NLS_LANG=Japanese_Japan.AL32UTF8' >> /home/oracle/.bash_profile
sudo -i -u oracle bash -c echo 'export CV_ASSUME_DISTID=OEL8.5' >> /home/oracle/.bash_profile
sudo -i -u oracle bash -c echo 'export PATH=$PATH:$ORACLE_HOME/bin' >> /home/oracle/.bash_profile

Oralce Databaseインストール用のディレクトリを準備

  • administratorユーザでログインし、以下を実行
# 公式のドキュメントでもこんな感じのディレクトリ構成にしていたはず
sudo install -o oracle -g oinstall -d /u01
sudo -u oracle mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 # $ORACLE_HOMEに指定したディレクトリ

公式サイトからダウンロードしたzipファイルを展開

  • administratorユーザでログインし、以下を実行
sudo install -o oracle -g oinstall -m 644 -t /u01/app/oracle/product/19.3.0/dbhome_1 /home/naokiryu/LINUX.X64_193000_db_home.zip

X Windowの設定

X Windowへのアクセス許可

  • デフォルトでは oracleユーザでGUIアプリケーションを実行する権限がないらしい
    • 正確な理解ではないかも
    • ちょっとよくわかってないので詳しい人がいたら教えてほしい
  • ローカルアカウントのユーザに対してGUIアプリケーションの実行を許可するために以下を実行する
sudo xhost +local:user

rootのDISPLAY環境変数を確認

sudo su -
echo $DISPLAY # これの出力結果を↓で使う。ここでは ":0"という結果だったと仮定する

oracleユーザのDISPLAY環境変数の設定

# rootのDISPLAY環境変数と同じ値をセットする
sudo -i -u oracle bash -c echo 'export DISPLAY=:0' >> /home/oracle/.bash_profile

インストールの実行

Oracle関連ソフトウェアのインストール

  • oracleユーザで以下を実行するとGUIインストーラが起動するので、画面をポチポチしてインストールする
cd /u01/app/oracle/product/19.3.0/dbhome_1
./runInstaller

Databaseのセットアップ

  • oracleユーザで以下を実行するとGUIでセットアップツールが起動するので、画面をポチポチしてセットアップする
  • EM Expressについて、ここでは5500ポートでLISTENするように設定することとする
  • リスナーは適当な名前で作成しておく。ここでは LISTENERとして作成することとする。
dbca

EM Expressの起動

  • dbcaで指定したポートでLISTENしているかを確認
# DBに接続
sqlplus / as sysdba

# ポート番号の表示
select dbms_xdb_config.gethttpsport() from dual; # 5500と表示されていればOK

# システムに変更を反映
alter system register;

# 切断
exit
  • リスナーの状態を確認
lsnrctl status | grep 5500 # リスナーが起動していれば接続記述子がgrepに引っかかるはず

firewalldの停止

  • 他のPCからEM Expressのポートに接続するため、firewalldを停止する
  • administratorユーザで以下を実行
sudo systemctl stop firewalld.service

ブラウザからアクセス

  • URL: https://<IPアドレス>:5500/em
  • ログインアカウント情報
    • ユーザ名: sys
    • パスワード: dbcaで指定した SYSのパスワード

まとめ

  • X Windowのところとかめっちゃ探したけど公式ドキュメントからも見つけられず、不親切だなと感じた。
    • 普通に書いてあったらごめんなさい
  • runInstallerdbcaでセットアップしたときのレスポンスファイルを出力して保存できるので、これを使ってサイレントインストール時になぜEM Expressが起動できなかったのかを調べてみようと思う
    • EM ExpressはブラウザのFlashが廃止になってから機能が削られたりしてるって噂なので、今後は使わなくなっていくのかなと思ってる。知らんけど。