この記事の目的
- Oracle Databaseを使う仕事をしているのでちゃんと勉強をしようと思った
- 自宅で環境構築をしようとしたが、そもそもインストーラをGUIで起動する時点で詰まった
- サイレントインストールで構築することもできたが、EM Expressが構成されなかった
- Oracle DBAの資格を取る人とかの助けになったら嬉しい
やりたかったこと
- Oracle Databaseのインストールとセットアップ
- 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
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
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
- デフォルトでは
oracle
ユーザでGUIアプリケーションを実行する権限がないらしい
- 正確な理解ではないかも
- ちょっとよくわかってないので詳しい人がいたら教えてほしい
- ローカルアカウントのユーザに対してGUIアプリケーションの実行を許可するために以下を実行する
sudo xhost +local:user
rootのDISPLAY環境変数を確認
sudo su -
echo $DISPLAY # これの出力結果を↓で使う。ここでは ":0"という結果だったと仮定する
# 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のところとかめっちゃ探したけど公式ドキュメントからも見つけられず、不親切だなと感じた。
runInstaller
やdbca
でセットアップしたときのレスポンスファイルを出力して保存できるので、これを使ってサイレントインストール時になぜEM Expressが起動できなかったのかを調べてみようと思う
- EM ExpressはブラウザのFlashが廃止になってから機能が削られたりしてるって噂なので、今後は使わなくなっていくのかなと思ってる。知らんけど。