Oracle8i Server for Linux R8.1.6

 Oracleは企業向けの高価なデータベースアプリケーションであり、安定面や機能面でもトップクラスの実用的なリレーショナルDBシステムである。ここではLinuxにOracleサーバをインストールし、実際に動作するまでの設定方法を紹介する。インストールはEnterprise版もWorkgroup版も大きな違いはない。
 Oracleサーバをインストールするのに最も適しているのはMiracle Linuxといわれており、最初からOracleナビゲータがインストールされているため、Miracle
Linuxを使っているならこれを見ながらインストールしていけばよい。その他のRedHat系Linuxでも、同じようにすれば基本的にインストールは可能である。なおOracleのインストーラはGUIなために、X
Window環境が必須となっているのでXサーバを起動しておく必要がある。インストール媒体はCD-ROMなため、ネットワーク経由でインストールするのは難しいだろう。またできるだけ高スペック、大容量のマシンにインストールすることをお勧めする。
 PHPでOracle関数を利用し、WebからDBにアクセスさせるには、ApacheとPHPをオプションつきでビルドする必要がある。サーバをインターネット上に公開する場合はセキュリティにも注意して設定を行わなくてはいけない。

http://www.oracle.com/
DefaultPort : 1521(Oracle)

1)インストール前の環境設定を行う。まずroot権限でログインし、Oracle用ユーザとグループを作成する。ここではユーザ名oracle、所属グループdba、インストールディレクトリを「/usr/local/oracle」としている。CD-ROMからインストールする場合はドライブにCD-ROMを入れ、マウントしておくとよい。

# groupadd -g 816 dba
# useradd -u 816 -g dba -d /usr/local/oracle oracle
# chmod 755 /usr/local/oracle/
# passwd oracle
# mount /mnt/cdrom
# exit

インストールは基本的にこのユーザで行うことになるため、作成後はこのユーザでログインし直し、X Windowを起動する。またOracleの動作に必要な環境変数を設定する。SIDはコンピュータのホスト名(ドメイン名を除いたもの)を設定しておく、ここでは「myhost」。NLS_LANGは、メッセージを日本語で出力する場合は「japanese_japan.ja16euc」を設定するが、コンソール画面で作業をすると日本語が化けるので(konなら問題ない)、ここでは「american_america.ja16euc」を設定している。

$ vi ~/.bashrc
   export ORACLE_BASE=$HOME
   export ORACLE_HOME=$ORACLE_BASE/product/8.1.6
   export ORACLE_SID=myhost
   export ORACLE_DOC=$ORACLE_HOME/doc
   export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
   export NLS_LANG=American_America.JA16EUC
   export PATH=$PATH:$ORACLE_HOME/bin
   export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
$ source ~/.bashrc
$ startx

※環境変数の設定はLinuxデフォルトのBASHの場合について説明しているが、TCSHの場合はexportコマンドではなくsetenvコマンドを使う。

2)ktermを起動し、インストーラを起動する。なお環境変数によっては起動したGUIが文字化けすることがあるので、その場合は文字コードを以下のように変更してから再度起動する。

$ export LANG=C
$ export LC_ALL=C
$ /mnt/cdrom/runInstaller

3)インストーラの指示に従ってインストールを進めていく。インストール先はデフォルトでよい。グループ名はここでは「dba」と設定。その後root権限が必要な旨のメッセージが表示されるので、ktermからrootにスイッチし、%ORACLE_HOME/orainstRoot.shスクリプトを実行する。完了したらRetryボタンを押して次へ進む。

$ su -
# cd ~oracle/product/8.1.6/
# ./orainstRoot.sh

4)製品選択ではサーバを選択。インストールの種類では、日本語を扱うためにここでは「Custom」を選択し、その後「Product Languages...」をクリックして「Japanese」を追加する。なお元から追加されている「English」は消さないこと。追加したら次へ進む。 インストール状態を確認し、グループ設定ではどちらも「dba」を設定する。データベースはここでは作成しないので「No」を選択する。インストールコンポーネントを確認したらインストールが開始される。

5)ファイルのコピー、リンクが終了すると、再びroot権限が必要な旨のダイアログが現れるので、ターミナルから$ORACLE_HOME/root.shを実行する。実行ファイルのコピー先は「/usr/local/bin」でよい。実行が終わったらOKボタンを押す。

# ./root.sh
# exit

6)データベースを作成するためにdbassistというプログラムを起動するが、その前にJAVAランタイムの古いバージョンをインストールする必要がある。OracleをインストールするとJRE-1.1.8が自動的にインストールされるが、このランタイムはdbassistと相性が悪いため、dbassistを実行するとエラーが出たり、またはエラーも出ずに停止してしまうこともある。今後の動作の安定性のためにも必ず入れ替え作業を行うこと。

$ cd ~/jre/
$ tar zxvf jre_1.1.6-v5-glibc-x86.tar.gz
$ mv jre116_v5 1.1.6v5
$ cd ~/product/8.1.6/
$ rm JRE
$ ln -s /usr/local/oracle/jre/1.1.6v5 JRE

さらに、ディストリビューションによってはデータベースの作成時にも処理が停止することがある。これを回避するために、stubパッチをあてる作業を行う。「glibc-2.1.3-stubs.tar.gz」をダウンロードし、$ORACLE_HOMEで解凍してセットアップスクリプトを実行すればパッチが適用される。

$ tar zxvf glibc-2.1.3-stubs.tar.gz $ ./setup_stubs.sh

7)dbassistを起動する。(2)で言語を変更したシェルを使っていると英語のGUIが起動するので、別のターミナルで起動するか以下のように設定を戻せば日本語GUIが起動する。

$ export LANG=ja_JP.eucJP
$ export LC_ALL=ja_jP.eucJP
$ dbassist &

「データベースの作成」を選択し、種類は「標準」を選択。作成方法は「データベース・ファイルの新規作成」、アプリケーションのタイプは「汎用」、同時接続数は適当な値に(デフォルトは15)、使用するオプションにチェックをつける。グローバル・データベース名はホスト名+ドメイン名(ここでは「myhost.mydomain.ne.jp」)、SIDはホスト名が自動的に設定される。データベースの作成は相当時間がかかり、メモリも多く使うためにXを終了した状態で行うほうがよいのでここでは「スクリプトに保存」を選択する。スクリプトはたとえば「$ORACLE_HOME/install/sqlmyhost.sh」などとして保存しておく。
 保存したらdbassistが終了するので、X Windowを抜けてコンソール画面に戻る。

8)保存したデータベース作成スクリプトを実行する。使用しているマシンのスペックによって変わるが、作成が終了するまで1時間以上、低スペックなマシンでは数時間かかることもあるので、すでにサーバをインターネットにつなげている場合は切断してから行ったほうがよい。

$ install/sqlmyhost.sh

9)DBの作成が無事終了したら、Oracleの起動・停止設定を行う。まずroot権限で「/etc/oratab」ファイルを編集する。最後の「N」を「Y」に変更する(大文字で)。設定したらoracleユーザに戻る。

$ su -
# vi /etc/oratab
myhost:/usr/local/oracle/product/8.1.6:Y
# exit

Oracleの起動スクリプト($ORACLE_HOME/bin/dbstart)、停止スクリプト($ORACLE_HOME/bin/dbshut)をそれぞれ書き換える。

$ vi bin/dbstart
    /PL\/SQL (Release|Version)/ {substr($3,1,3) ;
      を
   /(PL\/SQL|JServer) (Release|Version)/ {Substr($3,1,3);
      に書き換える

$ vi bin/dbshut
   connect internal
   shutdown
      を
   connect internal
   shutdown immediate
      に書き換える(3箇所)

またsqlplusの起動時に表示される警告メッセージを消すために、以下のようなコマンドを入力する。実行したらSQLから出て、警告が出なくなったか確認する。

$ sqlplus system/manager @sqlplus/admin/pupbld.sql
SQL> quit;

設定したら、自動起動の設定を行う。まずroot権限で起動スクリプトを「/etc/rc.d/init.d/」ディレクトリに置く。Miracle Linuxなどディストリビューションによっては「dbora」というファイルがすでに存在しているので、必要に応じて環境に合うように修正する。修正したらstart、stopオプションをつけて実行し、それぞれ起動、停止が正しく行われることを確認する。その後必要に応じてchkconfigで自動起動の設定を行う(oracleをあまり使わないなら自動起動はしないほうがよい)。

$ su -
# cd /etc/rc.d/init.d/
# vi dbora
# ./dbora start (起動)
# ./dbora stop (停止)
# chkconfig dbora on (自動起動の設定)
# chkconfig dbora off (自動起動の解除)
# exit

正しく起動すれば、インストール完了。

10)oracleにはデフォルトでsystem、sysというシステムユーザと、scottというユーザが登録されている。systemのパスワードは「manager」、scottのパスワードは「tiger」になっており、このユーザを使って悪意のある第三者に入り込まれる危険性がある。サーバをインターネットに公開する場合は、セキュリティのため一般ユーザを削除し、システムユーザのパスワードを変更したほうがよい。

$ sqlplus system/manager
SQL> drop user scott cascade;
SQL> alter user system identified by ****;
SQL> alter user sys identified by ****;
(****は設定するパスワード)

自分で利用する一般ユーザを登録するには、以下のように行う。ここでは一般ユーザ「oracle」、デフォルトテーブルスペースを「users」、テンポラリテーブルスペースを「temp」として登録している。データベース権限としては「connect」および「resource」を与えている

SQL> create user oracle identified by ****
default tablespace
users temporary tablespace temp;
SQL> grant connect to oracle;
SQL> grant resource to oracle;

11)PHPとApacheを利用して、OracleのデータベースをWebで利用する場合、ApacheとPHPをオプションをつけてコンパイルする必要がある。Apacheでは「pthread」ライブラリを組み込んでconfigureする。これを行わないとApacheの起動でエラーになり、うまく連携させることができない。
(mod_sslを組み込んでいる場合は、mod_sslのconfigureで指定する。)

LIBS="-lpthread" ./configure ...

PHPでOracle関数を扱うためには、configureで以下のオプションをつけてコンパイルする必要がある。

--with-oci8=/usr/local/oracle/product/8.1.6

従来のoracle関数を使う場合は、以下のオプションをつける(上のオプションを有効にした場合はつける必要はない)。

--with-oracle=/usr/local/oracle/product/8.1.6

またApacheでも(1)で設定したORACLEの環境変数が必要なので、ORACLE用の設定を追加して起動する必要がある。起動スクリプトに追加しておけばよい。設定したらApacheを起動して、phpinfo()などでoci8セクションがあること、そして環境変数にORACLE_HOMEなどが設定されていることを確認する。

[phpOracleAdmin]

 Oracle8iとPHP、Apacheを連携させることができれば、「phpOracleAdmin」というツールを利用することもできる。Webブラウザ上でOracleのデータベースを操作できるというものである。OracleのデータベースはOracle Clientを使って操作するのが普通だが、PHPと連携できているのならこちらのほうがシンプルでわかりやすい。インストールについても簡単に行えるので試してみるとよい。

1)Apacheのドキュメントルートに、phpOracleAdminのアーカイブを解凍する。

# cd /home/httpd/
# tar zxvf phporacleadmin-0.1.3.tar.gz
# cd phporacleadmin/php/

2)phpOracleAdminの設定ファイルを書き換える。ユーザ名、パスワード、データベース名を入力。

# cp config.inc.php config.inc.php-dist
# vi config.inc.php
$DBUser_C[0] = "oracle";
$DBPass_C[0] = "****";
$DBName_C[0] = "myhost";

(****はユーザ「oracle」のパスワード)

3)必要ならば、Apacheからアクセスできるようhttpd.confの内容を変更する。Apacheの再起動後、ブラウザからphpOracleAdminのページにアクセスし、緑色の信号が現れていることを確認する。

# vi /usr/local/apache/conf/httpd.conf
Alias /phpora/ "/home/httpd/phporacleadmin/php/"
# service httpd restart

※セキュリティのためにパスワード制限などもかけておいたほうがよい。

TOP OF PAGE