Oracle9i R9.2.0 インストール

 Red Hat Linux 7.2にOracle9i R9.2.0の90日限定トライアル版をインストールする方法を解説する。
 インストールはOTNからダウンロードできるOracle9iDatabase Release2(9.2.0) for Linux スタートガイドを参考に進めた。なお、データベースはCREATE DATABASE文によって作成したいので、初期データベースは作成しないようにインストールする。

1.インストール用件

 Oracle9i Databaseをインストールするための推奨は次のとおりである。

OSRed Hat Linux Advanced Server 2.1
Red Hat Linux Advanced Server 2.1 powerd by MIRACLE
Red Hat Linux Advanced Server 2.1
(Kernel 2.4.7以上、glibc 2.2.2以上)
CPUPentium II 233MHz以上
メモリ512MB以上
空きディスク容量3.5MB以上(モジュール 2.5GB、初期DB 1GB)
スワップ領域搭載メモリの2倍、または400MB以上の大きいほうの値以上
その他/tmpに400MB以上の空きディスク容量

 Red Hat Linux Advanced Server 2.0はRed Hat Linux 7.2をベースに作られているため、Red Hat Linux 7.2を使うことにした。インストーラーを起動すると妙なエラーメッセージが流れるが、無事にインストールできた(ようである)。しかし、Red Hat Linux 8.0で行うと同じようなエラーメッセージが出てからインストーラーが起動しなかった。また、Red Hat Linux 7.3ではインストールの最後の最後でインストーラが落ちた。

2.ディレクトリ配置

 Oracle9iRelease2のOFA(Oracle Flexible Architecture)に準拠したディレクトリ構成は次のとおり(Oracle9iから多少変更がある)。

※初期化パラメータファイル(マスタファイル)のシンボリックリンクファイルを配置する

 OFAに準拠した構成でデータベースを作成することで、データ量の増加や新規データベースの作成に柔軟に対応できる。以下のインストール手順は、このディレクトリ構成で作成することにする。

3.インストール前に行う作業

3-1 ディスクイメージをハードディスクにコピー

 今回テストするOracle9i R9.2.0トライアル版はOTNからダウンロードした。/tmpにディレクトリを作成し、その中に解凍する。

/tmp/disk1
/tmp/disk2
/tmp/disk3

3-2 グループとユーザを作成

 Oracle9iをインストールするためのユーザとグループ、およびOracleを管理するユーザとグループを作成する。この作業はrootで行う。

# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
パスワードを入力

3-3 oracleユーザの環境変数を設定

 oracleユーザの環境変数を設定する。環境変数は.bashrcに設定するのがいいだろう。

# su - oracle
$ vi .bashrc

 # User specific aliases and functionsの下に、次のように設定して保存する

# User specific aliases and functions
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_SID=ora920 ←作成予定のデータベース名
export NLS_LANG=Japanese_Japan.JA16EUC
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_DOC=$ORACLE_HOME/doc
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/classes12.zip
CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/nls_charaset12.zip
export CLASSPATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/etc/lib:$ORACLE_HOME/jdbc/lib
export LD_LIBRARY_PATH

 保存したら、再度ログインしなおすか、以下のコマンドで環境変数が有効になる。

$ source .bashrc

3-4 Oracleをインストールするディレクトリを作成

 OracleServerのプログラムや、データベースの格納先を作成する。OracleDatabaseはrootユーザではなく、管理用のユーザである「oracle」ユーザで管理するため、ディレクトリの所有者も変更しなければならない。

$ su -
(rootのパスワードを入力)
# mkdir /opt/oracle
# mkdir /opt/oracle/product
# mkdir /opt/oracle/product/9.2.0
# chown -R oracle.oinstall /opt/oracle
# chmod -R 755 /opt/oracle

4.インストーラの起動

 ここからは、Oracleの管理ユーザであるoracleユーザで作業を行う。oracleユーザでログインしなおしてから、Oracle8iのインストーラはX Window上でしか動かないため、X Windowを起動する。

# su - oracle
$ startx

インストーラの起動

 runInstallerというファイルを実行すると、インストーラが起動する。ターミナルを開き、次のように実行する。

# cd /tmp/disk1/mnt/cdrom
# ./runInstaller &

 なお、3枚組みのCDがある場合は、DISK1をCDドライブに入れ、マウントしてからインストーラを起動する。

$ su -
(rootのパスワードを入力)
# mount /mnt/cdrom
# su - oracle
# /mnt/cdrom/runInstaller & ←※

 ※ /mnt/cdromにCDしてからインストーラを起動してしまうと、インストール途中のディスクの入れ替えができなくなるので、他のディレクトリから呼び出す

5.インストールの実行

 Oracle9i R9.0.1から、日本語環境のままインストールができるようになった。ここからは、インストーラが立ち上がってからの作業を順番に説明する。インストールはカスタムで行い、初期データベースは作成しないことにする。

5-1 ようこそ

 「次へ」をクリック。インベントリの場所を指定するダイアログボックスが表示されるので、次のように指定して、OKボタンをクリック。

/opt/oracle/oraInventory

5-2 UNIXグループ名

 インストールを行うユーザのユーザグループを指定する。次のように指定して「次へ」をクリック。

oinstall

 すると、ダイアログが表示される。メッセージの通り、これは、rootユーザでorainstRoot.shを実行する。ターミナルで、次のように実行する。

$ su -
(rootのパスワードを入力)
# /tmp/orainstRoot.sh

 エラーメッセージが出なければ成功。ダイアログの「続行」ボタンをクリックする。

5-3 ファイルの場所

 インストール元(ソース)とインストール先を設定する。インストール元はそのままでいいはずなので、インストール先を次のように指定して「次へ」をクリック。

/opt/oracle/product/9.2.0

5-4 使用可能な製品

 Oracle9i Databaseをインストールするので、Oracle9i Database 9.2.0.1.0を選択して「次へ」をクリック。

5-5 インストール・タイプ

 テスト環境なので、必要最小限のものだけをインストールしたい。「Custom」を選択して「次へ」をクリック。

5-6 使用可能な製品コンポーネント

 必要最小限のもののみをインストールすることにする。以下の製品にのみチェックをつけ、それ以外の製品は全て外して、「次へ」をクリック。

5-7 コンポーネントの場所

 「次へ」をクリック。

5-8 Privileged Operating System Groups

 OS認証を行うためのグループを指定する。そのままで「次へ」をクリック。

5-9 Create Database

 インストール時にデータベースを作成するかどうかを指定する。データベースはコマンドで作成したいため、ここでは作成ないことにする。「いいえ」を選択して「次へ」をクリック。

5-10 サマリー

 サマリーの確認。インストールの情報が正しいことを確認して「インストール」ボタンをクリック。やっとインストールが始まる。
 途中で「ディスクの場所」ウィンドウが現れるので、2枚目、3枚目のディスクが入っているディレクトリを指定する。CDからインストールしている場合はrootユーザでCDのマウントを解除し、ディスクを入れ替えてから再度マウントを行い、OKボタンをクリックする(インストーラをCDドライブから実行しているとマウントが解除できない!!)。

 インストールが終わる直前で、Setup Privilegesというダイアログが表示される。これは、root.shを実行しなさいというメッセージなので、ターミナルでrootユーザになり、次のように実行する。

$ su -
(rootのパスワードを入力)
# /opt/oracle/product/9.2.0/root.sh

 実行すると、次のようなメッセージが出る。

Running Oracle9 root.sh script...
The following environment variables are set as:
  ORACLE_OWNER= oracle
  ORACLE_HOME= /opt/oracle/product/9.2.0

Enter the full pathname of the local bin directory: [/usr/local/bin]:

 ここで、次のように入力してEnterキーを押す。

/usr/bin

 正常に実行されると、次のようなメッセージが出て、プロンプトに戻る。これにより、Oracleプログラムのユーザ権限が正しく設定される。

Copying dbhome to /usr/bin
Copying oraenv to /usr/bin
Copying coraenv to /usr/bin
・・・省略・・・
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.

 ダイアログの「OK」ボタンをクリックする。

5-11 構成ツール

 インストールとリンクが成功し、構成ツールの画面になる。ここでRed Hat Enterprise LinuxならOracle Net Configuration Assistantが起動されるので、次のように設定する。

  1. ようこそ
    「次へ」をクリック
  2. ディレクトリ使用構成
    「後でこの構成を完了する」を選択し、「次へ」をクリック
  3. リスナーの構成−リスナー名
    リスナー名が「LISTENER」になっていることを確認し、「次へ」をクリック
  4. リスナーの構成−プロトコルの選択
    「次へ」をクリック
  5. リスナーの構成−TCP/IPプロトコル
    「次へ」をクリック
  6. リスナーの構成−リスナーを追加しますか?
    「いいえ」を選択し、「次へ」をクリック
  7. リスナーの構成が完了
    「次へ」をクリック
  8. ネーミング・メソッドの構成
    「ネーミング・メソッドの構成を変更しない」を選択し、「次へ」をクリック
  9. 完了
    「完了」をクリック

 なお、Red Hat Linux 7.3ではOracle Net Configuration Assistantの起動に失敗し、エラーメッセージが表示される。ここで設定しなければならないわけではないので、気にせずにエラーメッセージの「OK」ボタンをクリックする。Installerに制御が戻るので、「次へ」をクリック。

5-12 インストールの終了

 これでインストールが終了である。左下の「終了」ボタンをクリックして、インストーラを終了させる。ダイアログが表示されるので、「はい」を選択する。

4.Oracleデータベースの作成

 DB AssistまたはCREATE DATABASEでデータベースを作成する。これは別のページで解説する。

5.リスナーの設定・起動

 作成したデータベースを他クライアントマシンから接続して利用するには、リスナーを起動しなければならない。これは別のページで解説する。

6.自動起動の設定

 Oracleデータベースを作成したら、サーバ起動時にデータベースが起動するように設定を行う。この作業はrootで行う。

6-1 /etc/rc.d/init.d/dboraファイルの作成

 /etc/rc.d/init.dディレクトリ内にdboraというファイルを作成する。

$ su -
(rootのパスワードを入力)
# vi /etc/rc.d/init.d/dbora

 以下のスクリプトを入力し、保存する。

#!/bin/sh
#
# chkconfig: - 99 10
# description: Oracle Database Server
# processname: ora_
#
# dbora This shell script takes care of starting and stopping
# Oracle Database Server.
SUBSYS=/var/lock/subsys/dbora
dbora_init() {
# get ORACLE_HOME from the first entry,
# whose 3rd field is Y, in /etc/oratab.
if [ ! -f /etc/oratab ]
then
echo "auto startup/shutdown of Oracle: /etc/oratab does not exist."
exit 1
fi
ORA_HOME=`awk -F: '/^[^#:]+:.+:[Y]$/ { print $2; exit}' /etc/oratab`
if [ x$ORA_HOME = "x" ]; then
echo "There is not Y entry in /etc/oratab."
exit 1
fi
# get oracle's owner from owner of dbstart.
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "auto startup/shutdown of Oracle: Oracle may not be installed" \
"correctly."
exit 1
fi
ORA_OWNER=`ls -l $ORA_HOME/bin/dbstart ¦ awk '{print $3}'`
}
case "$1" in
'start')
if [ -f $SUBSYS ]; then
echo $0 already started.
exit 1
fi
dbora_init
# Start the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
# Start Intelligent Agent and Oracle Management Server
# --- for Oracle9i ---
# su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl start"
# su - $ORA_OWNER -c "$ORA_HOME/bin/oemctl start oms"
# --- for Oracle8i ---
# su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_start"
# su - $ORA_OWNER -c "$ORA_HOME/bin/oemctrl start oms"
# --------------------
# Start the Oracle HTTP Server
# This is a BUG workaround. $ORACLE_HOME/Apache/Jserv/etc
# /jserv.properties needs DISPLAY.
# test -z "$DISPLAY" && export DISPLAY=":60000.0"
# su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start"
# --------------------
touch $SUBSYS
;;
'stop')
if [ ! -f $SUBSYS ]; then
echo $0 already stopped.
exit 1
fi
dbora_init
# Stop Intelligent Agent
# --- for Oracle9i ---
# su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl stop"
# --- for Oracle8i ---
# su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_stop"
# --------------------
# Stop the Oracle HTTP Server
# su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop"
# --------------------
# Stop the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
rm -f $SUBSYS
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $SUBSYS ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 {start¦stop¦status}"
exit 1
esac
exit 0

 ※マニュアルとは違い、リスナーとデータベースの起動順序を入れ替えた。リスナーが起動している状態でOracleDatabaseを起動すると、リスナーに自動登録されるという機能を利用することにより、リスナーの設定を不要とするため。

 作成した/etc/rc.d/init.d/dboraファイルに実行権をつけ、起動スクリプトに追加。

# chmod 755 /etc/rc.d/init.d/dbora
# chkconfig --add dbora
# chkconfig dbora on

6-2 $ORACLE_HOME/bin/dbshutの編集

 $ORACLE_HOME/bin/dbshutを実行すると、Oracleデータベースが終了するが、SHUTDOWNコマンドがノーマルで実行されるため、トランザクションが実行されたまま暴走している場合などに待ちが発生し、終了できなくなってしまう。そのため、viで$ORACLE_HOME/bin/dbshutを編集する。

# vi $ORACLE_HOME/bin/dbshut

 80行目と85行目にあるshutdownコマンドを、次のように変更して保存する。

変更前:shutdown
変更後:shutdown immediate

6-3 /etc/oratabの編集

 自動起動させたいOracleデータベースを/etc/oratabで指定する。

# vi /etc/oratab

 一番下にサンプルの設定があるので、その行を修正して保存する。

変更前:*:/opt/oracle/product/9.2.0:N
変更後:ora920:/opt/oracle/product/9.2.0:Y ←ここをYにしないと起動しない

7.その他

7-1 データベースの起動・停止

 データベースの起動・停止は管理ユーザであるoracleユーザで行わなければならない。データベースの起動は次のように行う。

$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
・・・データベースが起動する・・・
SQL>

 起動中のデータベースを停止させるには次のように行う。

$ sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown
・・・データベースが停止する・・・
SQL>

 なお、shutdown immediateとすると、実行中のトランザクションを強制的に取り消してから停止する。

7-2 SQL*Plusを使わずにデータベースを起動・停止する

 SQL*Plusを使わずに/etc/oratabに設定されているデータベースを起動するには、次のように実行する。

$ dbstart

 同様に、データベースを停止させるには次のように実行する。

$ dbshut

7-3 Oracle Net リスナーの起動・停止

 Oracleデータベースを他のクライアントマシンから利用するには、Oracle Net(旧Net8)が起動していなければならない。起動は次のように実行する。

$ lsnrctl start

 停止は次のように実行する。

$ lsnrctl stop

7-4 使えるユーザ

 データベース作成時に利用できるユーザとパスワードは次の通りである。

アカウント名パスワード
SYSchange_on_install
SYSTEMmanager

 このままにしておくのは非常に危険なので、パスワードはすぐに変更しよう。なお、Oracleでは大文字、小文字の区別は無い。

$ sqlplus /nolog
SQL> connect system/manager
SQL> ALTER USER sys IDENTIFIED BY 新しいパスワード;
SQL> ALTER USER system IDENTIFIED BY 新しいパスワード;
SQL> disconnect
SQL> exit

[ TOP ]