新トップページへ | Tip

「 Oracle Database 10g ExpressEdition for Linux x86 」を使ってみる

LastUpdate : 08/05/10

 無料版が公開され、数年経過しました。
とりあえず、まぁ、さわってみるか的な気分になったので、さわってみました。そのときの作業記録てきな感じの、メモをここに書いておきます。

ちなみに、私の環境は、Oracleを動かすサーバーがCentOS5.1(64Bit版)です(ただし、Xen上で動いている)。
そして、クライアントにはWindowsVista(home basicで32Bit版)を使用します

私がここを書くために、インストールしたバージョンは「 10.2.0.1.0 」です。

インストール
インストールを行う
問い合わせ用にクライアントをセットアップ

インストールを行う

 Oracleのページにインストールマニュアルらしきページがありましたので、アドレスを書いておきます(Linux用インストールマニュアル)。

http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm

私は、このページを見ながら作業をしました。

 インストールして、使用するまでには以下の作業が必要です。順番に作業していきます。

(1)ソフトウェアの入手
oracleのページで会員登録&ダウンロードをします
(2)インストール下準備
インストールマニュアルに変更しなさいと書かれているので、Linuxの設定を変更します。
(3)インストール
rpmでインストールを行います。
(4)管理ページへログインする
OracleXeの管理はこのページで行うみたいです。初期状態でlocalhostからのみしかアクセスできない状態です。面倒なのでリモートアクセス可能のように設定を行います。


(1)ソフトウェアの入手

 日本のoracle社のHPでは、よくわかりませんが、OracleXeはDLできません。理由は知りません。
 また、日本oracleのページにて、会員登録を行っても(OTN)、www.oracle.comにはログインできませんでした。なので、あっちのページにて、会員登録をしなければならない様子。IBMなんかはIDとか共有なのにね。

 会員登録をして(たぶんしなきゃ駄目だと思う)、DLします。現在のところ、Oracleの最新版は11gですが(08/05/31現在)、フリー版で公開されているのは、10gですので、10gのページにてDLします。

(2)インストール下準備

必要要件とか

 インストール要件のオペレーティングシステムに、FedoraやDebian、RHELなどの名前が挙がっていますが、CentOSの名前が見当たりません。
大丈夫なのかどーか、不明ですが、とりあえずインストールします(まぁ・・・・RHELの名前が挙がっているので、大丈夫かなぁ〜?とw)

その他、インストール要件(Table 1 Oracle Database XE Requirements)をみてみると、

glibc - 2.3.2
libaio - 0.3.96

こんなパッケージがインストールされてないと、ダメだよ?w
と書かれているので、Oracleのインストール作業前に、これらのパッケージがインストールされていない場合、インストールしておく必要があります。
私の環境にインストールされているものは、このバージョンではありませんが(ちょっとバージョンが上)、OKだったみたいです。

その他、必要メモリや、空き容量について、書かれていますが、今日の普通のPCなら、余裕で満たしている条件です(仮想化なのどで、必要量のリソースを振れていない場合は、増やしましょう私はメモリに1GB振り、swapを1GBにしました(が、最初512MBしかswapとして指定していなかったため、インストール時にエラーになることに・・・(インストールのところに書いてあります))。)。

 OracleXeをインストールする前に、下準備を行います。

カーネルパラメータについて

カーネルパラメータが、要件を見たさない場合、勝手に変更するよ?
ということが書かれています。

どんなふーに、変更されるん?というわけで、CentOSインストール直後のsysctl.confの内容と、インストール直後の内容ををコピペしておきます。

変更される前の /etc/sysctl.conf の内容
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

↓(インストール後)

変更された後の /etc/sysctl.conf の内容
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
###########
# Oracle XE Recommended Values
kernel.sem = 250 32000 100 128
########

インストール作業前まで、マニュアルに書いてあること

まぁ、私は英語をちゃんと読めるわけじゃないので&なおかつ、マニュアルを読む際、辞書を一回も引いていないので(意味調べるのめんどー・・・だから英語能力が向上しないんだろうなぁw)、勘違いして解釈している箇所がたくさんあるかもしれませんが、自分が思ってる範囲でメモしておきます。

のよーなことが、それとなく書いてあった気がしました。まぁ、私が興味ないところは、はしょってるので、ちゃんと原文を読んだほーがいいです。

(3)インストール

実際にインストールを行っていきます。インストールを行うのに、使用したrpmファイルは「 oracle-xe-univ-10.2.0.1-1.0.i386.rpm 」です。ヨーロッパ文字セット用と、全世界文字セット用と、二つある様子です。私は日本人なので、univと文字のはいっている、universal character setのほーを選択し、rpmファイルをDLしてきました。
現在、DLしたファイルはrootのホームディレクトリにコピーしてある状態です。

ためしに、インストールできるかどうか、テストを行ってみます。

[root@ora_server ~]# rpm -i --test oracle-xe-univ-10.2.0.1-1.0.i386.rpm
[root@ora_server ~]#

特に問題ない様子です。
〜のライブラリがないよー的なメッセージがでてきたら、適時、yumなんかでインストールしてやればOKだと思います。

では、インストールを行ってみます。

[root@ora_server ~]# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm
Preparing...                ########################################### [100%]
This system does not meet the minimum requirements for swap space.  Based on
the amount of physical memory available on the system, Oracle Database 10g
Express Edition requires 1024 MB of swap space. This system has 517 MB
of swap space.  Configure more swap space on the system and retry the installation.
error: %pre(oracle-xe-univ-10.2.0.1-1.0.i386) scriptlet failed, exit status 1
error:   install: %pre scriptlet failed (2), skipping oracle-xe-univ-10.2.0.1-1.0
[root@ora_server ~]#

こんなのがでましたwwwwwwwwwww
どうやら、swap領域が必須量ないと、インストールすらさせてもらえないらしいです。
仕方がないので、swap領域を512MB追加し、再びインストールします。

[root@ora_server ~]# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm
Preparing...                ########################################### [100%]
   1:oracle-xe-univ         ########################################### [100%]
Executing Post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to
configure the database.

[root@ora_server ~]#

さてはて、なにやら〜を走らせてね的なメッセージが現れました。正常に終わったのか、ダメだったのかぐらいメッセージが表示してもいいと思うんですがね。
愚痴をこぼしても仕方がないので、言われたとおりにします。

[root@ora_server ~]# /etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press <Enter> to accept the defaults.
Ctrl-C will abort.

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:

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:

Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"
[root@ora_server ~]#

Oracle Application Expressで使うHTTPポートを指定してね?
データベースの接続待機ポートを指定してね?
データベースのアカウントのパスワードを指定してね?
OSの起動時に、Oracle Database 10g Express Edition を起動しますか?

といった質問がなされます。パスワードの指定以外は、デフォルトの設定でいいならばエンターキーを押すだけでかまいません。

そして、エンターを押したり、パスワードを指定したりすと、インストールが完全に成功したよ、とメッセージが表示され、「 http://127.0.0.1:8080/apex 」というアドレスも表示されます。
このページで、管理などを行っていきます。

※おまけ

最初、インストールしたとき、何が原因なのかわかりませんでしたが、ちゃんと動いていませんでした。しかし、アンインストールして、もっかい入れなおすと、直ってしまいました・・・・・。
原因不明です><
まぁ、動かない場合、再インストールすると、動くようになることもあるということで^^;

ちなみに、動いてる状態のサービスのステータス↓

[root@ora_server ~]# service oracle-xe status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 01-JUN-2008 00:40:05

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                01-JUN-2008 00:27:16
Uptime                    0 days 0 hr. 12 min. 49 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/listener.ora
Listener Log File         /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora_server.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora_server.localdomain)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully

(4)管理ページへログインする

 さて、めでたく、動作した様子なので、「 http://192.168.11.71:8080/apex/ 」にアクセスします。
外部からの接続は、デフォルトでは不可になっているため、インストールしたマシンから「 http://192.168.11.71:8080/apex/ 」にブラウザでアクセスします。ここで、できることについては、マニュアルなどを見てください^^;
 私もちゃんと理解しているわけではないので^^;
ちなみに、ログインIDはSYSTEM、パスワードは、インストールの際、入力したパスワードでOKです。

 管理ページへリモートアクセスできないのは不便なので、リモートアクセス可能のように、設定を変更します。

http://192.168.11.71:8080/apex/ よりログインし、homeのメニューから、「Administration」の右側の▽アイコンより、「Manage HTTP Access」を選択し、「Available from local server and remote clients」を選択し「Apply Changes」ボタンを押下します。

これだけの変更でリモートアクセス可能になりました^^;
クライアントから同アドレスにブラウザでアクセスしてみてください。

※おまけ1

 管理画面へは、最初、localhostからしかアクセスができないようになっていると書きましたが(それが本当なのか試してはいませんが・・・。だってそー書いてあるんだもん><)、いちいち、この設定を変更するためだけに、X-Window環境をインストールするのも面倒です(TextInternetだとかいうパッケージもありますが、使ったことがありませんw)。
 なので、私は、SSHのポートフォワーデョングを使いました。SSHでポートフォワードしてもらい、リモートアクセスの許可だけ設定を変更してしまえば、あとは普通に、ブラウザでアクセスできます。

※おまけ2

 oracleユーザ(インストーラが自動的に作成するユーザ)に、なぜかsqlplusなどのコマンドへのパスが通っていない状態でした。とりあえず、以下のスクリプトを走らせるとパスが通ります。

source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

※おまけ3

oracleをインストールしたサーバにSSHやtelnetでつなげるなら、以下の方法が一番簡単かも。(2011/7/9追記)

1.おまけ2に書いてあるコマンドを実行してコマンドへのパスを通す
  source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
2.sqlplusを起動してログイン(ユーザ名はSYSTEM、パスワードはインストール時のconfigureで設定したパスワード)
3.以下のコマンドを実行
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)
4.sqlplusをログアウト(quitコマンド) これでいけるようになるはず

問い合わせ用にクライアントをセットアップ

 クライアントとして、Windowsを私は使いたいので、Windowsの話になります。
ダウンロードサイトより、「 OracleXEClient.exe 」をDLして、ウイザードに従い、ボタンを押していくだけで、何も悩ます成功するはずです。

スタートメニューに「Oracle Client 10g Express Edition」という項目が追加され、その中に「SQLコマンドラインの実行」がありますので、これがSQL*PLUSです(このショートカットは/nologオプションが自動的にはいるようになっています)。

 リモートのDBにアクセスしてみます。

SQL*Plus: Release 10.2.0.1.0 - Production on 日 6月 1 01:05:19 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> connect SYSTEM@192.168.11.71:1521
パスワードを入力してください:
接続されました。
SQL> select instance_name, status, version, edition from v$instance
  2  ;

INSTANCE_NAME                    STATUS
-------------------------------- ------------------------
VERSION                            EDITION
---------------------------------- --------------
XE                               OPEN
10.2.0.1.0                         XE


SQL> disconnect;
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Productionとの接続が切断されました。
SQL>

っという感じです。
デフォルト以外の場所に、接続する際は、connectコマンドに

connect ユーザ名前@ホスト名:ポート番号

とやるみたいです。