Oracle XE をインストールしてみる
FreeBSD の Linux コンパチ機能を用いて、Oracle 10g XE を動かす話。 結論から言うと、動く。
ハンドブックには Oracle 8.0.5 のインストール手順が書いてある (2007.01 現在)。 また、2002.03 に書かれた 8.1.6 の事例 もある。 では 10g Express の Linux 版は FreeBSD で動くかな?と軽くググってみたところ、 ML アーカイブにチャレンジャーの情報 があった。 この投稿をベースに、実験してみた。
実験機材
Oracle というとどうしても「環境汚染」と思ってしまうため、 どうなっても構わない会社のマシンを生贄にすることにする。
機体 : FLORA 350W DE3 CPU : Celeron 2G RAM : 1G HDD : 40G OS : FreeBSD 6.2-PRERELEASE (2006.12.28 頃)
いくつか ports を入れてあるものの、 kernel も GENERIC のままだし、凝った設定は何もしていない。
あえて言えばヘッドレス(KVM なし)なのが特徴かもしれない。 本体に刺さっているケーブルは 電源と UTP だけ。
準備
上述の ML のアーカイブ には tar ファイルが添付されていて、 その中に貴重なスクリプトが入っているので、入手して展開しておく。
kernel の設定
先述のメイルにある通り、kernel にパッチをあてる(かどうかを考える)。 ざっと見た感じでは、以下のような状況だった。
compat/linux/linux_misc.c …実験用の機材では、すでに入っている。 compat/linprocfs/linprocfs.c …該当箇所が見当たらない。 fs/pseudofs/pseudofs_vnops.c …面倒なので見ないことにしておく。
吸収されているっぽい雰囲気なので、パッチは特に当てないことにした。
次に、kernel config で共有メモリの設定をする。
options COMPAT_LINUX #it is as you would like it, you may load the module options SEMMAP=128 options SEMMNI=128 options SEMMNS=32000 options SEMOPM=100 options SEMMSL=250 options SHMMAXPGS=262144 options SHMMNI=4096 options SHMSEG=4096 options MAXDSIZ="(1024*1024*1024)" # as to this and what is below I am not sure options MAXSSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)"
面倒なので GENERIC をコピーしてファイル末尾に上記部分を加えただけ、とした。
# cd /usr/src # make buildkernel KERNCONF=ORA # make installkernel KERNCONF=ORA # sync # sync # sync # shutdown -r now
再起動後、無事にログインできることを確認。
linux_base
続いて linux_base の投入。 ところが、他の何かを ports で入れた時に既に linux_base は入っていたらしい。
# pkg_info -aI | grep linux_base linux_base-fc-4_9 Base set of packages needed in Linux mode (for i386/amd64)
libaio が入っていないので、これは入れることに。
# pwd /usr/ports/emulators/linux-libaio # make install clean
linprocfs が mount されていることも確認。
XE を投入
あとは rpm を突っ込めばいいらしい。本当か。
# mkdir -p /compat/linux/var/lib/rpm/ # rpm --root=/compat/linux --ignoreos --ignorearch --noscripts --nodeps -ivh \ oracle-xe-univ-10.2.0.1-1.0.i386.rpm oracle-xe-univ ##################################################
linux の流儀に従って、library を /usr/lib に移動する。 愚痴については上述の投稿を参照。
# mv /compat/linux/usr/lib/oracle /usr/lib
rpm でパッケージを突っ込んだあとで、install.sh を用いてインストールを行う。 何か変な感じもするが…。
# sh install.sh (略) Specify the HTTP port that will be used for Oracle Application Express [8080]: Specify a port that will be used for the database listener [1521]: Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration: (パスワード入力) Confirm the password: (パスワード入力) Starting Oracle Net Listener...Done Configuring Database... (ここでかなり、相当、待つ) Done Starting Oracle Database 10g Express Edition Instance...Done Installation Completed Successfully.
8080 は Tomcat などとぶつかるので、10210 など適当に違うポート番号に しておくとよいかもしれない。
これでしばらく待つと、Installation Completed Successfully. らしい。 マシン再起動時に下げ/上げできるよう、起動スクリプトも放りこんでおく。
# mv oraclexe.sh /usr/local/etc/rc.d
使え
install.sh が oracle ユーザを作ってくれているので、これを使ってみる。
# passwd oracle (適当に設定する) # su - oracle -su-3.00$ cat <<EOF > hoge ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server ORACLE_OWNER=oracle ORACLE_SID=XE SQLPLUS=\$ORACLE_HOME/bin/sqlplus LSNR=\$ORACLE_HOME/bin/lsnrctl export ORACLE_HOME export ORACLE_SID export PATH=\$ORACLE_HOME/bin:\$PATH export LD_LIBRARY_PATH=\$ORACLE_HOME/lib EOF -su-3.00$ . hoge -su-3.00$ which sqlplus /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/sqlplus -su-3.00$ sqlplus sys/admin as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 6 18:23:58 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production SQL> select count(*) from tab; COUNT(*) ---------- 3528 SQL> quit -su-3.00$ du -sk app oradata 543172 app 1077796 oradata
うぉ。動いた。
LANG と NLS_LANG を設定してあげれば日本語メッセージも出る。むぅ…。
export NLS_LANG=Japanese_Japan.JA16EUC export LANG=ja_JP.eucjp
tnsnames.ora を書いてあげれば SQL Plus で他のマシンに繋ぐこともできる。 これはかなり便利である。
Application Express (HTMLDB)
デフォルトでは http で LISTEN しているのが localhost である。 これを他のマシンからもアクセスできるようにするためには、 Application Express (HTMLDB) にて「管理 → HTTP アクセスの管理」を開いて ラジオボタンを操作してやる必要がある。
しかし、これって、ローカルにブラウザを持たない限り変更できないのでは? しょうがないので firefox でも入れることにする。
各国語パラメータ
NLS_DATABASE_PARAMETERS によれば、DB の national character set は AL16UTF16 らしい。 AL16UTF16 は Unicode 標準の最新バージョン(3.2)をサポートするキャラクタセット ということなので、これでよい。
SQL> column PARAMETER format a32 SQL> column VALUE format a32 SQL> select * from NLS_DATABASE_PARAMETERS; SQL> select * from NLS_DATABASE_PARAMETERS 2 where PARAMETER = 'NLS_NCHAR_CHARACTERSET'; PARAMETER VALUE -------------------------------- -------------------------------- NLS_NCHAR_CHARACTERSET AL16UTF16