Oracle 9i (9.2)をRedHat 9にインストールする方法

RedHat9へのOracle9.2インストール

お試し版をダウンロードしてきて,Oracle9iを動かすことにした.

最近RedHat9を新規でインストールしたので,これに入れてみる.

...と安易に考えたのですが,今回はOracle9iが対応しているOSではないこともあって,はまりにはまりの大はまりでした. このサイトがなければ,一生インストールできなかったことでしょう.

Installing Oracle 9i on RedHat Linux 7.1, 7.2, 7.3, 8.0, 9 and on Red Hat Advanced Server 2.1
http://www.puschitz.com/InstallingOracle9i.shtml

まさに,救いの神でした.


今回使ったソフト

  • Linux: RedHat9
  • Oracle: Oracle9.2 for Linux トライアル版 (OTNからダウンロード)


1.OS関係の設定

 Oracle9.2のリリースノートによると,hostsファイルを変更した方が良いらしい.

自分自身のIPアドレスとホスト名を記述した行がないと,まずいとのことなので,

/etc/hosts

127.0.0.1       localhost
192.168.0.105   inspiron
こんな感じです.

このマシンには192.168.0.105というアドレスを振っているのですが,「inspiron」がホスト名です. 以下たびたび登場しますので,各自のホスト名で読み替えてください.

次にカーネルパラメータの設定.

SHMMAXはメモリ(512MB)の半分のサイズに設定し,その他は推奨値を使用してみる.

/etc/rc.d/rc.local に追加

echo 100 32000 100 100 > /proc/sys/kernel/sem
echo 268435456 > /proc/sys/kernel/shmmax
echo 65536 > /proc/sys/fs/file-max
ulimit -n 65536
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
ulimit -u 16384
また,rc.localに追加するだけでなく,これらの内容を実際にシェルから実行してから, 以降の作業を継続する.

2.OSのグループ,ユーザを追加

 グループを2個と,ユーザを1個追加する.
# groupadd oinstall
# groupadd dba
# useradd -d /home/oracle -G oinstall,dba -p xxxxx oracle
xxxxxは,ユーザoracleのパスワード.

3.oracleユーザの環境設定

 ここからが核心になります.

/home/oracle/.bash_profile に,以下の内容を追加

export DISPLAY=inspiron:0.0
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0.1.0
export ORACLE_SID=tets92
export NLS_LANG=Japanese_Japan.JA16SJIS
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export LD_ASSUME_KERNEL=2.4.1
DISPLAYのホスト名,ORACLE_SIDは各自で.

LD_ASSUME_KERNELは,神のサイトからの情報です. これを設定しないと,インストールが途中で止まるらしい.


4.インストール

準備から開始まで

 ユーザoracleでLinuxにログインし,ダウンロードしたファイル3個

  • R920Lv3d1.tar.gz
  • R920Lv3d2.tar.gz
  • R920Lv3d3.tar.gz

を展開する.

このとき,ファイル(ディスク)ごとにディレクトリを分けて展開しないと駄目です. 混ぜてしまうと失敗します.(しました)

例えばこんな具合.

$ mkdir disk1
$ mkdir disk2
$ mkdir disk3
$ mv R920Lv3d1.tar.gz disk1/
$ mv R920Lv3d2.tar.gz disk2/
$ mv R920Lv3d3.tar.gz disk3/
$ cd disk1;tar zxf R920Lv3d1.tar.gz; cd ..
$ cd disk2;tar zxf R920Lv3d2.tar.gz; cd ..
$ cd disk3;tar zxf R920Lv3d3.tar.gz; cd ..
そしてインストール開始.
$ cd disk1/mnt/cdrom
$ ./runInstaller
インストーラが起動するので,適当に進める.

なお,Oracle9.2ではJDKの事前インストールは不要です.インストーラが勝手にやってくれました.

リンクエラーその1

 すると,リンクの進行中に停止するのでログを見ると,
/home/oracle/app/oracle/product/9.2.0.1.0/network/lib/libnmi.a(nmijs.o)(.text+0x3552):
 In function `nmijsgn_GetNextTime':: undefined reference to `__ctype_b'
調べてみると,新しいバージョンのglibcでは__ctype_b ではなく,__ctype_b_loc がexportされているらしい.

神のサイトの指示に従って,一時的にglibcを2.3.2-5にバージョン下げます.

http://www.puschitz.com/rh9_gcs_download/
から,以下のrpmをダウンロードした.

  • glibc-2.3.2-5.i686.rpm
  • glibc-devel-2.3.2-5.i386.rpm
  • glibc-common-2.3.2-5.i386.rpm

そして,

# rpm --import /usr/share/rhn/RPM-GPG-KEY
# rpm --checksig *.rpm
# rpm -Uvh --oldpackage *.rpm
でglibcをダウングレードし,再度インストールを実行する.これでここはOK.神に感謝.

リンクエラーその2

 しかし今度は,
/lib/libdl.so.2: undefined reference to `__ctype_b_loc@GLIBC_2.3'
というエラーで止まる.

これも,神のサイトの指示に従おう.エラーで止まってダイアログが表示されているままで, 裏から

$ORACLE_HOME/ctx/lib/env_ctx.mk
を編集する.ほとんどファイルの終わりのところに記述されている
INSO_LINK =
の行に,
$(LDLIBFLAG)dl
を挿入し,結果としてINSO_LINKの行を,
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl ...
という具合に修正する.その後,エラーのダイアログで再試行のボタンを押すと, 無事に処理が再開された.

5.インストール後の確認

 何とかインストールが終わったようなので,
$ sqlplus '/ as sysdba'
で,アイドルインスタンスに接続できることだけ確認した.

データベースはまだ作成していないので,データベースの起動はできないが, ここまでやって疲れ果ててしまったので,いったん切り上げた.

あと,glibcを元の(RedHat9の)バージョンに戻しておく.これはRHN自動更新で自動的にやってくれるとは思います.


6.データベースの作成

 初期化パラメータの設定とか面倒なので,DataBase Configuration Assistantを使って行う.
$ dbca
設定は適当に,

  • Global Database Name: tets92.inspiron
  • SID: tets92
  • メモリー:標準,物理メモリの割合=50%,データベースタイプ=汎用
  • キャラクタセット:JA16SJISTILDE
  • ソートサイズ:524288 バイト
  • ファイルの位置:デフォルト
  • アーカイブログモード:off

しかしこれで作成すると,エラー!

create control fileの箇所で,以下の意味不明なエラーが発生した. トホホ,一体どこまでうまくいかないんでしょうか.

ORA-01503: CREATE CONTROLFILE???????
ORA-00058: ???????DB_BLOCK_SIZE?8192?????(6144??????)?
とりあえずメッセージが文字化けて分からないので,文字化け回避のためにシェルから
$ LANG=C
として英語モードでdbcaを起動し,同じことを再実行してみたら...正常終了した. ???謎です.

まぁ謎は謎として,

$ sqlplus '/ as sysdba'
SQL> startup
で,データベースの起動を確認できた.OK

7.データベースの設定変更

 ここから先は,私の利用目的に依存した話なので, どうでもいいっちゃどうでもいいことです.

ユーザscottにusers表領域を使わせる

ユーザsystemでログインして実行する.
SQL> alter user scott default tablespace users

users表領域へのファイル追加

SQL> alter tablespace users add datafile 'users02.dbf' size 300M autoextend off

ユーザscottにv$ビューへの参照権限付与 (AUTOTRACE用)

SQL> grant select any table to scott
SQL> alter system set O7_DICTIONARY_ACCESSIBILITY=TRUE scope=spfile

PLAN_TABLEの作成 (実行計画の確認用)

これだけは,ユーザscottでログインして実行する.
SQL> @/home/oracle/app/oracle/product/9.2.0.1.0/rdbms/admin/utlxplan.sql

 まぁ,ユーザscottを使って,SQLのチューニング実験をやろうというわけです. そのために,実行計画やAUTOTRACEの統計が欲しいのでこんなことを.

 scottにSELECT ANY TABLE権限を与えてもv$ビューを参照できないので,しばらく悩みました. マニュアルを見てようやくO7_DICTIONARY_ACCESSIBILITYに気づいた次第です.

...と思っていたが,実はこんなややこしいことをしなくても, scottにv$ビューへの参照権限を付与するには,

SQL> grant select any dictionary to scott
とすれば済むのであった. O7_DICTIONARY_ACCESSIBILITYの設定も不要だった.


© 2024 KMIソフトウェア