Red Hat Linux 7.2にOracle9i R9.2.0の90日限定トライアル版をインストールする方法を解説する。
インストールはOTNからダウンロードできるOracle9iDatabase Release2(9.2.0) for Linux スタートガイド
を参考に進めた。なお、データベースはCREATE DATABASE文によって作成したいので、初期データベースは作成しないようにインストールする。
Oracle9i Databaseをインストールするための推奨は次のとおりである。
OS Red 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以上)CPU Pentium 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ではインストールの最後の最後でインストーラが落ちた。
Oracle9iRelease2のOFA(Oracle Flexible Architecture)に準拠したディレクトリ構成は次のとおり(Oracle9iから多少変更がある)。
- $ORACLE_BASE
- oraInventory
- logs ・・・ インストールログ格納ディレクトリ
- product
- bin ・・・ 実行モジュール格納ディレクトリ
- rdbms ・・・ DBに必要なサーバファイルおよびライブラリ格納ディレクトリ
- dbs ・・・ 初期化パラメータ格納ディレクトリ(※)
- network
- admin ・・・ Oracle Net設定ファイル格納ディレクトリ
- admin
- SID1
- bdump ・・・ バックグラウンドプロセストレースファイル格納ディレクトリ
- cdump ・・・ コアダンプファイル格納ディレクトリ
- create ・・・ データベース構築、オブジェクト作成スクリプト格納ディレクトリ
- pfile ・・・ 初期化パラメータ(マスタファイル)格納ディレクトリ
- SID2
- bdump
- cdump
- create
- pfile
- /home/oracle/・・・/oradata ・・・ データベースファイル格納ディレクトリ
- SID1
- SID2
※初期化パラメータファイル(マスタファイル)のシンボリックリンクファイルを配置する
OFAに準拠した構成でデータベースを作成することで、データ量の増加や新規データベースの作成に柔軟に対応できる。以下のインストール手順は、このディレクトリ構成で作成することにする。
3-1 ディスクイメージをハードディスクにコピー
今回テストするOracle9i R9.2.0トライアル版はOTNからダウンロードした。/tmpにディレクトリを作成し、その中に解凍する。
/tmp/disk1
/tmp/disk2
/tmp/disk33-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
ここからは、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してからインストーラを起動してしまうと、インストール途中のディスクの入れ替えができなくなるので、他のディレクトリから呼び出す
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 使用可能な製品コンポーネント
必要最小限のもののみをインストールすることにする。以下の製品にのみチェックをつけ、それ以外の製品は全て外して、「次へ」をクリック。
- Oracle9i 9.2.0.1.0
- Oracle Net Services 9.2.0.1.0
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が起動されるので、次のように設定する。
- ようこそ
「次へ」をクリック- ディレクトリ使用構成
「後でこの構成を完了する」を選択し、「次へ」をクリック- リスナーの構成−リスナー名
リスナー名が「LISTENER」になっていることを確認し、「次へ」をクリック- リスナーの構成−プロトコルの選択
「次へ」をクリック- リスナーの構成−TCP/IPプロトコル
「次へ」をクリック- リスナーの構成−リスナーを追加しますか?
「いいえ」を選択し、「次へ」をクリック- リスナーの構成が完了
「次へ」をクリック- ネーミング・メソッドの構成
「ネーミング・メソッドの構成を変更しない」を選択し、「次へ」をクリック- 完了
「完了」をクリックなお、Red Hat Linux 7.3ではOracle Net Configuration Assistantの起動に失敗し、エラーメッセージが表示される。ここで設定しなければならないわけではないので、気にせずにエラーメッセージの「OK」ボタンをクリックする。Installerに制御が戻るので、「次へ」をクリック。
5-12 インストールの終了
これでインストールが終了である。左下の「終了」ボタンをクリックして、インストーラを終了させる。ダイアログが表示されるので、「はい」を選択する。
DB AssistまたはCREATE DATABASEでデータベースを作成する。これは別のページで解説する。
作成したデータベースを他クライアントマシンから接続して利用するには、リスナーを起動しなければならない。これは別のページで解説する。
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 on6-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 immediate6-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-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 使えるユーザ
データベース作成時に利用できるユーザとパスワードは次の通りである。
アカウント名 パスワード SYS change_on_install SYSTEM manager このままにしておくのは非常に危険なので、パスワードはすぐに変更しよう。なお、Oracleでは大文字、小文字の区別は無い。
$ sqlplus /nolog
SQL> connect system/manager
SQL> ALTER USER sys IDENTIFIED BY 新しいパスワード;
SQL> ALTER USER system IDENTIFIED BY 新しいパスワード;
SQL> disconnect
SQL> exit