Oracle 11g XE を Ubuntu 11.10 にインストールする
最近リリースされたばかりの Ubuntu 11.10 に Oracle 11g XE をインストールしようとしたら少しはまったので原因と対策を簡単にまとめておきます。
Emerge Technology: Oracle 11g XEをUbuntuにインストール の手順通りでほぼできますが、最後の configure スクリプトを実行したとき、データベース設定に失敗します。
$ sudo /etc/init.d/oracle-xe configure ... Starting Oracle Net Listener...Done Configuring database... Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details
これからインストールする人にとって、分かりやすいように、ここでは最初からの手順を記載しておきます。
Oracle 11g XE のダウンロードと展開
Oracle Database Express Edition 11g Release 2のダウンロード からダウンロードします。ダウンロードするには、ユーザー登録が必要なようです。会社名等も登録の必須項目なので少し面倒です。
インストールに必要なパッケージ群をインストールします。
$ sudo aptitude install alien libaio1 unixodbc
ダウンロードした Oracle 11g XE は RPM パッケージなので deb パッケージに変換します。
$ ls oracle-xe-11.2.0-1.0.x86_64.rpm.zip oracle-xe-11.2.0-1.0.x86_64.rpm.zip $ unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip Archive: oracle-xe-11.2.0-1.0.x86_64.rpm.zip creating: Disk1/ creating: Disk1/upgrade/ inflating: Disk1/upgrade/gen_inst.sql creating: Disk1/response/ inflating: Disk1/response/xe.rsp inflating: Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm $ cd Disk1/ $ sudo alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm oracle-xe_11.2.0-2_amd64.deb generated
おそらく RPM パッケージがベースになっているために chkconfig コマンドを作ってあげないといけないようです。この辺は面倒なのでそのまま従っておきましょう。
元記事はシェバングが /sbin/bash になっていますが /bin/bash の間違い? $ sudo vi /sbin/chkconfig #!/bin/bash # Oracle 11gR2 XE installer chkconfig hack for Debian by Dude file=/etc/init.d/oracle-xe if [[ ! `tail -n1 $file | grep INIT` ]]; then echo >> $file echo '### BEGIN INIT INFO' >> $file echo '# Provides: OracleXE' >> $file echo '# Required-Start: $remote_fs $syslog' >> $file echo '# Required-Stop: $remote_fs $syslog' >> $file echo '# Default-Start: 2 3 4 5' >> $file echo '# Default-Stop: 0 1 6' >> $file echo '# Short-Description: Oracle 11g Express Edition' >> $file echo '### END INIT INFO' >> $file fi update-rc.d oracle-xe defaults 80 01 $ sudo chmod 755 /sbin/chkconfig awk のシンボリックリンクも作成しておきます $ sudo ln -s /usr/bin/awk /bin/awk
これで準備は整いました。deb パッケージをインストールします。
$ sudo dpkg --install ./oracle-xe_11.2.0-2_amd64.deb
インストールできましたね。最後の configure スクリプトです。
$ sudo /etc/init.d/oracle-xe configure ... Starting Oracle Net Listener...Done Configuring database... Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details
何か失敗してしまいました (> <)
configure スクリプトの原因調査
Cannot Install Oracle 11gR2 Express Edition on Ubuntu Linux 11.04 (64-bit) Howto によると、以下のログを調べろと言ってるので調べてみます。
$ sudo cat /u01/app/oracle/diag/rdbms/xe/XE/trace/alert_XE.log Mon Oct 17 20:54:11 2011 Starting ORACLE instance (normal) WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 419430400 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 0 and used is 0 bytes. Ensure that the mount point is /dev/shm for this directory. memory_target needs larger /dev/shm
memory_target とか /dev/shm が悪さをしてそうだと分かります。
ubuntu 11.10 ORA-00845: MEMORY_TARGET not supported on this system によると、Ubuntu 11.10 から /dev/shm が /run/shm へ移行されたことが原因のようだと分かります *1。
$ ls -l /dev/shm lrwxrwxrwx 1 root root 8 2011-10-17 20:44 /dev/shm -> /run/shm
/dev/shm は /run/shm のシンボリックリンクになっていますが、configure スクリプトはこの状態だとうまく動作しないようです。フォーラムのやり取りの中で memory_target のパラメーターを削除して、pga_aggregate_target と sga_target を追加しなさいとあります。
以下の2つのファイルに同じ設定をする必要があるようです。メモリのサイズは適当なので、環境に応じて適切な値を設定してください *2 。
$ sudo vi /u01/app/oracle/product/11.2.0/xe/config/scripts/init.ora $ sudo vi /u01/app/oracle/product/11.2.0/xe/config/scripts/initXETemp.ora #memory_target=418381824 pga_aggregate_target=200540160 sga_target=601620480
先ほどの configure スクリプトの実行で Listener は起動しているので kill しておきます。
$ ps ax|grep oracle 15318 ? Ssl 0:00 /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr LISTENER -inherit $ sudo kill 15318
再度、configure スクリプトを実行します。
$ sudo /etc/init.d/oracle-xe configure ... Configuring database...Done Starting Oracle Database 11g Express Edition instance...Done Installation completed successfully.
今度は成功しましたね!sqlplus でも接続してみましょう o(^ ^)o
$ source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh $ sqlplus system/oracle SQL*Plus: Release 11.2.0.2.0 Production on 月 10月 17 21:57:17 2011 Copyright (c) 1982, 2011, Oracle. All rights reserved. Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production に接続されました。 SQL>
2011/10/26 追記
Ubuntu 11.04 にインストールしたのを 11.10 にアップグレードしたときの解決方法のようです。
Emerge Technology: Ubuntu 11.04に入れたOracle XE 11gを11.10で動かす方法