Red Hat Linux 7.1JにOracle9i R9.0.1の90日限定トライアル版をインストールする方法を解説する。なお、この方法でRed Hat Linux 8.0にも入れてみたが、無事にインストールできた(ようである)。
インストールはOTNからダウンロードできるOracle9iDatabase Release1(9.0.1) for Linux スタートガイド
を参考に進めた。なお、データベースはCREATE DATABASE文によって作成したいので、初期データベースは作成しないようにインストールする。
Oracle9i Databaseをインストールするための推奨は次のとおりである。
OS Kernel 2.4.4以上、glibc 2.2を搭載したMIRACLE LINUX V2.0、Red Hat Linux 7.1 CPU Pentium II 233MHz以上 メモリ 512MB以上 空きディスク容量 3.5MB以上(モジュール 2.5GB、初期DB 1GB) スワップ領域 搭載メモリの2倍、または512MB以上の大きいほうの値以上 その他 /tmpに400MB以上の空きディスク容量
Sun JDK 1.3.1もしくはBlackdown JDK 1.1.8
Oracle9iから、標準のOFA(Oracle Flexible Architecture)が次のように変わった。
- Oracle8iまでのOFA
- /u01 ORACLE_HOME
- /u02 データファイル用1
- /u03 データファイル用2
- /u04 データファイル用3
- データファイル用のマウントポイントを3つに分割し、制御ファイルおよびREDOログファイルを分散させる。そのため、/u02から/u04は物理的に異なるハードディスクに割り当てることが推奨されていた。
- Oracle9iのOFA
- /opt ORACLE_HOME + データファイル用
- トップディレクトリが1つになっているため、インストール時には明確に制御ファイルの分散などを行わない。インストール後の手動の設定が必要となる。
また、Oracle9iでのデフォルトディレクトリ設定は次のようになる。
ORACLE_BASE /opt/oracle ORACLE_HOME /opt/oracle/product/9.0.1 初期データベース /opt/oracle/product/9.0.1/oradata/ora901/*.dbf 制御ファイル /opt/oracle/oradata/ora901/*.ctl REDOログファイル /opt/oracle/oradata/ora901/*.log 以下のインストール手順は、このディレクトリ構成で作成する。
3-1 ディスクイメージをハードディスクにコピー
今回テストするOracle9i R9.0.1トライアル版はDB Magazineの2002年5月号の付録DVDから入手した。インストールだけでCD3枚分、さらにJDKもインストールしなければならないので、ハードディスクにコピーして、ハードディスクからインストールすることにする。
/tmp/disk1
/tmp/disk2
/tmp/disk3
/tmp/jdk3-2 JDK 1.3.1インストール
Oracle HTTP Serverに含まれるApache JServを利用するには、JDK 1.3.1をインストールしなければならない。まずはパッケージの解凍を行う。
# cd /tmp/jdk
# ./j2skd-1_3_1_02-linux-i386-rpm.bin上記のように実行すると、使用権許諾の条項が表示された後にyes/noを聞かれる。yesと入力してEnterを押すと、RPM形式のJDKが作成される。これをインストールする。
# rpm -ivh jdk-1.3.1_02.i386.rpm インストールしたら、シンボリックリンクを作成しておく。
# ln -s /usr/java/jdk1.3.1_02 /usr/lib/java 3-3 グループとユーザを作成
Oracle9iをインストールするためのユーザとグループ、およびOracleを管理するユーザとグループを作成する。この作業はrootで行う。
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
パスワードを入力3-4 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.0.1
export ORACLE_SID=orcl901←作成予定のデータベース名
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.0.1
# 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
# ./runInstaller &なお、3枚組みのCDがある場合は、DISK1をCDドライブに入れ、マウントしてからインストーラを起動する。
$ su -
(rootのパスワードを入力)
# mount /mnt/cdrom
# su - oracle
#/mnt/cdrom/runInstaller & ←※※ /mnt/cdromにCDしてからインストーラを起動してしまうと、インストール途中のディスクの入れ替えができなくなるので、他のディレクトリから呼び出す
Oracle9i R9.0.1からは、日本語環境のままインストールができるようになった。ここからは、インストーラが立ち上がってからの作業を順番に説明する。インストールはカスタムで行い、初期データベースは作成しないことにする。
5-1 ようこそ
Nextをクリック。インベントリの場所を指定するダイアログボックスが表示されるので、次のように指定して、OKボタンをクリック。
/opt/oracle/product/9.0.1/oraInventory 5-2 UNIXグループ名
インストールを行うユーザのユーザグループを指定する。次のように指定して、次へをクリック。
oinstall すると、ダイアログが表示される。メッセージの通り、これは、
rootユーザでorainstRoot.shを実行する。ターミナルで、次のように実行する。
$ su -
(rootのパスワードを入力)
# /tmp/orainstRoot.shエラーメッセージが出なければ成功。ダイアログの続行ボタンをクリックする。
5-3 ファイルの場所
インストール元(ソース)とインストール先を設定する。インストール元はそのままでいいはずなので、インストール先を次のように指定して、次へをクリック。
/opt/oracle/product/9.0.1 5-4 使用可能な製品
Oracle9i Databaseをインストールするので、Oracle9i Database 9.0.1.0.0を選択して次へをクリック。
5-5 インストール・タイプ
Enterprise Editionが選択されていることを確認して、次へをクリック。
5-6 Database Configuration
インストール時に作成する初期データベースの設定を選択する。初期データベースを作成せず、ソフトウェア・モジュールのみをインストールしたいので
Software Onlyを選択して、次へをクリック。5-7 Choose JDK Home Directory
JDKのインストール先を設定する。次のように入力して次へをクリック。
/usr/lib/java 5-8 サマリー
サマリーの確認。インストールの情報が正しいことを確認して、インストールボタンをクリック。やっとインストールが始まる。
途中で「ディスクの場所」ウィンドウが現れるので、2枚目、3枚目のディスクが入っているディレクトリを指定する。CDからインストールしている場合はrootユーザでCDのマウントを解除し、ディスクを入れ替えてから再度マウントを行い、OKボタンをクリックする(インストーラをCDドライブから実行しているとマウントが解除できない!!)。エラー!!!
インストールは正常に終了するが、リンクが62%くらいのところで次のようなエラーが出る。
Makeファイル/opt/oracle/product/9.0.1/plsql/lib/ins_plsql.mkのターゲットinstallを起動中にエラーが発生しました。 OTN(http://otn.oracle.co.jpからダウンロードしたOracle9i for Linux Intel リリースノート リリース1(9.0.1)の16ページ目に原因と、回避方法が書いてある。まとめると、次のようになる。
- ターミナルでoracleユーザになる
- 次のようにコマンドを実行する
# su - oracle
$ cd $ORACLE_HOME/bin
$ cp genclntsh genclntsh.ORIG
$ vi genclntsh- 147行目を次のように編集する
変更前:LD_SELF_CONTAINED = "-z def"
変更後:LD_SELF_CONTAINED = ""- 変更したgencltshスクリプトを実行
実行しても何のメッセージも表示されずにとまっているように見える。でもちゃんと処理をしているのでじーっと待つ(結構時間がかかる)。「Created /opt/oracle/product/9.0.1/lib/libclntst9.a」と表示されれば成功。
./genclntsh - エラーのダイアログに戻り、再試行ボタンをクリック
インストールが終わる直前で、Setup Privilegesというダイアログが表示される。これは、root.shを実行しなさいというメッセージなので、ターミナルでrootユーザになり、次のように実行する。
$ su -
(rootのパスワードを入力)
# /opt/oracle/product/9.0.1/root.sh実行すると、次のようなメッセージが出る。
Running Oracle9 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /opt/oracle/product/9.0.1
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-9 構成ツール
Oracle Net Configuration Assistantを起動させるようだが、処理中のメッセージのまま停止してしまう。ここで設定する必要は特にないのでOracle Net Configuration Assistantを選択して「中止」ボタンをクリック。エラーメッセージのOKボタンをクリックするとInstallerに制御が戻るので、次へをクリック。
5-10 インストールの終了
これでインストールが終了である。左下の終了ボタンをクリックして、インストーラを終了させる。ダイアログが表示されるので、「はい」を選択する。
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/dbstart" su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" # 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/lsnrctl stop" su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" 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作成した/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.0.1:N
変更後:orcl901:/opt/oracle/product/9.0.1: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 Oracle HTTP Serverの起動・停止
標準のインストールではOracle HTTP Serverもインストールされる。起動は次のように実行する。
$ $ORACLE_HOME/Apache/Apache/bin/apachectl start 停止は次のように実行する。
$ $ORACLE_HOME/Apache/Apache/bin/apachectl stop 7-5 使えるユーザ
データベース作成時に利用できるユーザとパスワードは次の通りである。
アカウント名 パスワード 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