Solaris7でのOracle8i環境
Intel(x86)用Solaris8のパッケージにはOracle8i EE(Enterprise Edition)のCD-ROMが付属しています(開発者用ライセンス)。
そのOracle8i EEのCD-ROMには「From the Oracle Technology Network」と書かれています。しかしそのOTN(Oracle Technology Network)のサイトのダウンロードコーナにはIntel Solaris用のOracle8i EEは見当たりません(2000年5月時点)。Sun SPARC版はありますが...。
Oracle8i EEの体験版が本や雑誌に付くことは無いと思うので約1万円程度の「Intel Solaris8パッケージ」に開発者用Oracle8i EEが付属しているというのはとてもラッキーという感じです。
さて、このOracle8i は元々Solaris2.6及びSolaris7対応ということでしたが「Intel Solaris8パッケージ」に付属しているということはSolaris8にも当然対応しているということですね。
とりあえずSolaris7(SunOS 5.7)のテストマシンにOracle8i をお試し感覚で組み込んでみましたので少し紹介します。
尚、このテストマシンには開発環境ツールとしてGNUzip,GNUmake,GNUgcc,GNUlstdcは組み込み済みです。
(1)Oracle8i インストールのための心構え
SolarisにOracle8i をインストールする場合にはWindowsNTやLinuxにOracle8i をインストール感覚でOKだろうと思っていると思わぬ落とし穴に陥ることがありますので以下の2点に気を付けるといいかと思います(HP-UXやSun SPARC SolarisにOracle8をインストールした経験があればOracle8i のインストールは割とすんなりいくと思いますが)。
【留意事項】
- Oracle8i のCD-ROMに入っているインストールガイド(英語版pdfファイル)に事前に目を通す。
- Solaris8パッケージ付属のOracle8i インストーラ(Javaベースのインストーラ)を日本語環境セッションで使用することは諦めるのが無難。
(2)Oracle8i インストールのための前準備
- ネットワーク動作の確認
Oracle8i はネットワーク定義のないスタンドアロンマシンにもインストールできますが今回はネットワークに接続されたサーバ系マシンにインストールしています。
- Oracle8i のCD-ROMに入っているインストールガイドに書かれている通りにシェアードメモリ及びセマフォの設定を行います。
具体的には/etc/systemファイルに以下のカーネルパラメータの設定を追加します。
(SolarisにはHP-UXのsamユーティリティのようなGUIベースのカーネル設定ツールは無いようですのでエディタで/etc/systemファイルを直接編集します)
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=100
set semsys:seminfo_semmns=200
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
これらの設定をしておかないとOracle8i のいくつかのバックグラウンドプロセスを起動できなくなって結局Oracle8i のインスタンスが立ち上がらなくなることがあります。
- dbaグループの定義とそれに属するoracleユーザアカウントの定義
(これについては特に説明は要らないと思います)
- マウントパスの作成
私の場合「/u01/app/oracle」をマウントパスとしました(所有者はoracleユーザです)。
- oracleユーザアカウント用プロファイル「.profile」への環境変数設定
LD_LIBRARY_PATH, ORACLE_BASE, ORACLE_HOME, ORACLE_SID, PATH, DISPLAY, CLASSPATH, TMPDIR等の環境変数を定義します。
PATH環境変数の場合はmakeの存在する/usr/ccs/binの指定も大事です。
各種のライブラリの指定もれがあるとsvrmgrl, lsnrctl, sqlplus の起動で必要なファイルが見つからないというエラーになりますので入念な事前見直しが必要です。
Oracle8i のインストーラはインストール処理中にテンポラリファイルを数多く作成しますが/tmpのあるスライスサイズが小さい場合は/tmpに代わるディレクトリをTMPDIR環境変数で指定します。
(LD_LIBRARY_PATHについてはSolaris用Motifライブラリへのライブラリパス/usr/openwin/lib:/usr/dt/libも一応設定しておいた方がいいかも知れません...)
【注意事項】
Solaris8パッケージ付属のOracle8i インストーラは英語モードでログインしていないとインストール時のリンク処理(make)でエラーが発生することがありますので安全を期して環境変数としては明示的に「LANG=C」を指定しておきます(日本語環境でのSolarisでは通常は「LANG=ja」扱い)。
(3)インストールの流れ
- oracleユーザとしてログインします(英語モードになります)。
日本語環境Solaris7ではログインダイアログ自体は日本語表示ですがこのoracleユーザでログインすると基本的にすべてのアプリケーションが英語モードとなります(メニューやメッセージ等が英語表示となります)。
(但しHotJava等の一部のアプリケーションのみが日本語表示となります)
- File Managerでの[File]−[Open CD-ROM]でOracle8i のCD-ROMをマウントします。
- File Managerの中に表示されたrunInstallerアイコンをダブルクリックして起動します。
英語モードのインストーラの初期画面が表示されます。
- インストールウィザードに従って簡単な質問に答えていきます。私の場合はインストールタイプとして「Typical」(694MB要)を選択しました。
- まずファイルのコピーが行われます。
- 次にリンク処理が行われます。
このリンク処理でエラーがなければ第一関門突破です。
- インストールの途中で2回ほどrootユーザセッションでのシェルスクリプト(Orainst.loc作成用orainstRoot.sh, oratab作成用root.sh)の実行指示が出ますのでそれに従います。root.shについてはrootによる実行権限を与える必要があります。
- 後はNet8の設定とDB作成が自動的に行われます。
このDB作成でエラーがなければ第二関門突破です。
尚、自動的に作成されたtnsnames.oraやlistener.oraは特に変更する必要はありません。
これでインスールは終了です(インストーラが終了しない場合はSolaris7のプロセスマネジャでkillしていいかと思います)。
インストール後のディスクの使用状況はこんな感じでした。
尚、Oracle8i インスタンスを複数使い分けする場合にはdbassistコマンドで別のORACLE_SIDをもつインスタンスを作成できます。
dbassistコマンドを使用するとtnsnames.oraやlistener.oraへのエントリ追加も自動的に行われます(但しoratabへのエントリ追加は自動的には行われないようです)。
(4)Oracle8i サーバの利用
- oratab(/var/opt/oracle/oratab)の編集
dbstart, dbshutスクリプトでOracle8i インスタンスを起動・停止できるようにoratabの内容を変更します(もちろんsvrmgrlを使って起動・停止を行うこともできます)。
具体的にはpcu5:/u01/app/oracle/product/8.1.5:NのNをYに変更します。
- dbstart, dbshutスクリプトの編集
dbstart, dbshutスクリプトの中にはoratabへのパス情報が存在しますがそのパスが/etc/oratabになっていますのでこれを正しい値に変更します。
私の環境では/var/opt/oracle/oratabに変更しました。
- dbstartによるサーバの起動
サーバ起動画面はこちらです。
サーバを起動した後はSolaris7のプロセスマネジャでバックグラウンドプロセスの存在を確認した方がよいかと思います。
- SQL*Plusによる検索
ローカルで実行する分についてはリスナー起動は不要で、リスナーなしでSQL*Plusが使用できます。
SQL*Plusを起動してデモデータの簡単な検索をしてみました。
SQL*Plusを使う場合は日本語セッションでも構いません(「LANG=C」は不要です)。
- SQL*Plusを使って簡単なテーブルを作成して検索してみました。
- クライアントマシンからのアクセス
Windows側のSQL*PlusからOracle8i サーバを使用するにはリスナー起動が必要です。
リスナーが起動しているかどうかをWindows側から確認する一つの方法としてtnsping80コマンドがあります。
tnsping80コマンドを発行して、もしサーバ側のリスナーが起動されていない場合には「TNS-12541: TNS: リスナーはありません。」というエラーになります。
まずWindows側の「Oracle Net8 Easy Config」でサーバ接続用のサービスを定義します。
その後Windows側のSQL*PlusでOracle8i サーバをアクセスしてみました(ODBCアクセスもできます)。
尚、「Intel Solaris8パッケージ」付属のOracle8i EEのCD-ROMにはWindowsクライアントソフトは入っていませんのでここでは「Oracle8 Enterprise Edition(8.0.5)」付属のクライアントを使用しています。
WindowsからSolaris7にtelnetで入ってOracle8i サーバをアクセスしたのがこれです。
またMacOSからSolaris7にtelnetで入ってOracle8i サーバをアクセスしたのがこれです。
更に、LinuxからLinux上のOracle8をアクセスしながらSolaris7にtelnetで入ってOracle8i サーバをアクセスしたのがこれです。
- Xサーバを利用してのOracle8i サーバアクセス
まずはSolaris7にログイン(ユーザ名指定、パスワード入力)し、SQL*PLusによる検索を行ってみました。
- サーバのシャットダウン
サーバシャトダウンの画面はこちらです。
- チューニング
大きなレベルのチューニングはinitxxxx.ora(xxxxはORACLE_SID)の中の項目を編集してDB実行環境を最適なものにします。チューニング項目の中にはカーネルパラメタの変更も必要になるものもあります。
(5)その他
- Oracle8i の情報はNIFTYのORACLEステーションにも結構あるようです。
- Oracle8i のインストール自体は一過性のものであまり問題なくできると思いますがJava/SQLJ, CORBA、ストリーム配信を含めたインターネット対応機能をいかに活用していくかが重要なテーマです。
- Solaris7からSolaris8へのアップグレードが中途半端な状態の場合、アップグレード後のSolaris8上で「LANG=C」を指定して英語モードでログインしてOracle8i をインストールしようとしてもインストール時のリンク処理(make)でエラーが発生することがあるようです。