LoginSignup
3
5

More than 3 years have passed since last update.

Hacking Oracle Database XE 18c インストール編

Last updated at Posted at 2019-05-23

1. 久しぶりにOracle Database XEがリリース

長年11.2でバージョンが止まっていたOracle Database Express Edition(以降Oracle Database XEもしくはOracle XE)。ニューバージョンが待たれるなか、ようやく昨年2018年10月に「Oracle Database 18c Express Edition」としてリリースされた。

詳しいことは「Oracle Database XE公式サイト」などを見てもらうとして、 今回はその中身を少し探ってみたい。今回はインストール編。

1-1. 動作確認環境

Oracle Database XEはOracle Linux 6/7やRed Hat Enterprise Linux 6/7などのLinuxと、Windows 7以降(64bit)に対応している。今回はOracle Linux 7を使用する。

1-2. 参考資料

手始めにこのあたりのドキュメントをあさってみよう。

2. Oracle Database XEをダウンロードする

Oracle Database XEをダウンロードするには次の方法がある。

  1. OracleのWebサイトにログインし、ライセンスに同意してダウンロードする
  2. OracleのWebサイトから直接ダウンロードする(2020年2月から可能)
  3. OCIのol7_oci_includedリポジトリからダウンロードする(OCIのみ)

1は従来の方法で、OCI Computeに限り3の方法が可能だった。そして2020年2月にOracle Database XEのライセンス条項が改訂され、OCI以外でも直接ダウンロード/インストールできるようになった(参考)。

今回は後続作業の都合で、一度ダウンロードしてからインストールする。OCIか、それ以外かで手順が異なるので適切な方法で実施してほしい。

2-1. OCI Computeでダウンロードする

OCI Computeではol7_oci_includedリポジトリにXEが含まれている。そのため直接ダウンロード/インストールできる。

ダウンロードするとき

yumdownloader oracle-database-xe-18c

直接インストールするとき

yum install oracle-database-xe-18c

2-2. OCI以外の環境で直接ダウンロードする

ファイルが見つからない等のエラーが出たときはOracle Database XE DownloadsページでURIを確認すること。

ダウンロードするとき

wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm

直接インストールするとき

yum install https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm

3. Oracle Database XEのRPMを調べてみる

マニュアルを読みつつ、インストールする前にOracle Database XEのRPMを調べてみよう。

3-1. なぜOracle LinuxとRHELではインストール手順が違う?

はじめに以下のマニュアルを見て気づくのは、Oracle LinuxとRHELでは、わずかにインストール手順が違うこと。RHELではoracle-database-preinstall-18cを手動でインストールしている。

oracle-database-preinstall-18cは「Oracle Preinstallation RPM」もしくは「Database Preinstallation RPM」と呼ばれるもので、カーネルパラメータの設定やユーザー作成など、インストールの前準備をするパッケージだ。

RHELではOracle Database XEをインストールする前にoracle-database-preinstall-18cを手動でインストールしている。

RHEL7のインストール手順
# 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
# yum -y localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm

Oracle Database XE本体の依存性を確認する。--requiresでは、このパッケージが必要としているパッケージやファイルを表示できる。

oracle-database-preinstall-18cがあり、Oracle LinuxのYumリポジトリに含まれているので自動インストールされる。

$ rpm -qp --requires oracle-database-xe-18c-1.0-1.x86_64.rpm
file
net-tools
oracle-database-preinstall-18c ★ここにある
/bin/sh
/bin/sh
/bin/sh
/bin/sh
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1

逆にRHELのYumリポジトリにはoracle-database-preinstall-18cが含まれないので手動インストールする必要があったのだ。

そういえば昔のバージョンの「Oracle Preinstallation RPM」はOracle Linuxのリポジトリだけにあるkernel-uekをrequireしていて、そもそもRHELでは使えなかったことを思い出した。当時は

「ずいぶん、いじわるなことをしている」

と思ったっけ。

3-2. RPMパッケージの中身を調べてみる

いくつのファイルが含まれているのだろうと思い調べてみると、なんと2万ファイル以上! 調べる気が無くなる。

$ rpm -qlp oracle-database-xe-18c-1.0-1.x86_64.rpm | wc -l
22683

といいつつ、Oracle Database本体関連を除外してみると、たったの3つ。ファイル名から判断すると「起動スクリプト」と「設定ファイル」、「ライセンスのREADME」。

$ rpm -qlp oracle-database-xe-18c-1.0-1.x86_64.rpm | grep -v /opt/oracle/product
---以下出力---
/etc/init.d/oracle-xe-18c
/etc/sysconfig/oracle-xe-18c.conf
/usr/share/doc/oracle-xe-18c/LICENSE

そして得意の--scripts攻撃。RPMインストールの前後で実行されるシェルスクリプトを表示できる。

$ rpm -qp --scripts oracle-database-xe-18c-1.0-1.x86_64.rpm

すごく長いのでステップ数を調べてみると600行近い。まったく無いものや数十行程度のものが多いなか、これまた読む気が無くなる。

$ rpm -qp --scripts oracle-database-xe-18c-1.0-1.x86_64.rpm | wc -l
582 ★行数をカウント

まずはpreinstallセクションを見るのが鉄則。/var/log/oracle-database-xe-18c/results/oraInstall.logというインストールログを生成しているようだ。

preinstallセクションの一部
preinstall scriptlet (using /bin/sh):
#!/bin/sh
#execute pre install validations

#Create the corresponding log for the RPM installation
RPM_LOG_LOCATION=/var/log/oracle-database-xe-18c/results
RPM_LOG_FILE=$RPM_LOG_LOCATION/oraInstall.log

面白そうなのは、この箇所。実はDebienやUbuntuにも対応しているのか?

preinstallセクションの一部。続き
if [ -f /etc/debian_version ]; then
    DISTRO='DEBIAN'
elif [ -f /etc/ubuntu_version ]; then
    DISTRO='UBUNTU'
elif [ -f /etc/redhat-release ]; then
    DISTRO='REDHAT'
elif [ -f /etc/lsb-release ]; then
    DISTRO_NAME=$(lsb_release -si)
    DISTRO="$(tr [a-z] [A-Z] <<< $DISTRO_NAME)"
else
    DISTRO=$(uname -s)
fi


# RPM upgrade check applicable only when running RPM installation
if [ "$DISTRO" != 'DEBIAN' ] && [ "$DISTRO" != 'UBUNTU' ]; then
    # In case of upgrade skip the pre install checks
    if [ "$1" != "1" -o -n "$2" ]
    then
       exit 0
    fi
else
    # On debian based distros the following steps are needed
    ln -s /usr/bin/awk /bin/awk
    mkdir -p /var/lock/subsys
    touch /var/lock/subsys/listener
    chmod 755 /var/lock/subsys/listener
fi

4. Oracle Database XEをインストールしてみる

そこそこに切り上げて、マニュアル通りにインストールしてみる。なお/optに約10GBytesのサイズが必要なので、十分なディスク領域があることを確認すること。SSD搭載のマシンだったせいか、10分もかからずに終了。

$ sudo -s
# yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm

インストールログを見ると、興味深いことは書かれていなかった。

/var/log/oracle-database-xe-18c/results/oraInstall.log
[INFO] Starting the installation process of the Oracle Database...
2019年05月23日-午前03時27分58秒
[INFO] Registering Oracle home to the Oracle inventory...
[INFO] Oracle home registered to the Oracle inventory.
[INFO] Executing post installation scripts...
[INFO] Setting up inventory as it has not been setup on this machine.
[INFO] Configuring ADR directories...
[INFO] ADR directories configured.
[INFO] Post installation scripts executed successfully.
[INFO] Oracle home installed successfully and ready to be configured.

実は「Oracle Preinstallation RPM」にもログがある。長いので中身は紹介しないが、興味のある人は見てほしい。

  • /var/log/oracle-database-preinstall-18c/results/orakernel.log

5. データベースを作成してみる

いままでDBCAでやっていたデータベースの作成は/etc/init.d/oracle-xe-18c configureで開始できる。パスワードの要件が表示されるので注意して入力すること。

なおポート番号やキャラクタセットを変更するときは、事前に/etc/sysconfig/oracle-xe–18c.confファイルを修正しておくこと。

# /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 u
ppercase 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:★確認のためのパスワード入力
/etc/sysconfig/oracle-xe–18c.conf
#This is a configuration file to setup the Oracle Database.
#It is used when running '/etc/init.d/oracle-xe-18c configure'.

# LISTENER PORT used Database listener, Leave empty for automatic port assignment
LISTENER_PORT=

# EM_EXPRESS_PORT Oracle EM Express URL port
EM_EXPRESS_PORT=5500

# Character set of the database
CHARSET=AL32UTF8

# Database file directory
# If not specified, database files are stored under Oracle base/oradata
DBFILE_DEST=

# SKIP Validations, memory, space
SKIP_VALIDATIONS=false

パスワードの確認が終わるとデータベースの作成がはじまる。以下の出力にはパスワード入力のような表示もあるが、実際にはプログラム内で設定され、何も入力は必要なかった。

SSDパワーの恩恵もあって、これも10分くらいで終了。

Listener configuration succeeded.
Configuring Oracle Database XE.
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/XE.log"を参照してください。

Connect to Oracle Database using one of the connect strings:
     Pluggable database: ol7-oradbxe/XEPDB1
     Multitenant container database: ol7-oradbxe
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE

同時に他のターミナルでtopiotopを立ち上げておくと、動いているのがよく分かって面白いかも知れない。
oradbxe01.JPG

6. おわりに

何か面白いことが発見できるかと思ったけれど特になし。このあとの続きを書くべきか。うーん。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5