Oracle for Linux インストール HOWTO Stephen Darlington, $Id: Oracle-8-HOWTO.sgml,v 1.1 2000/07/13 14:36:27 nakano Exp $ 酒井 英禎 v1.12j May 22, 2000 わずかばかりの幸運とこの HOWTO によって、Oracle8i Enterprise Edition for Linux をインストールし、データベースを作成し、リモートマシンからそ れに接続できるようになるはずです。最近の他のディストリビューションに対 してもおおよそ変更なしで適用できるはずですが、このガイドの主な焦点は RedHat Linux 6.0 に当てられています。 (訳注:本HOWTO では Release 8.1.5 について取り扱います。なお R8.1.5 の Enterprise Edition は日本で の出荷が見送られ、機能を削減した Workgroup Server だけが出荷されていま す。ただしインストール手順は大差ありません) ______________________________________________________________________ 目次 1. はじめに 1.1 この HOWTO の内容 1.2 この HOWTO は誰のためのもの? 1.3 このドキュメントの新しいバージョン 1.4 免責 1.5 謝辞 1.6 ライセンス(Licence) 2. はじめの一歩 2.1 概観 2.2 前提条件 2.3 Linux の設定 2.3.1 ディストリビューションの設定 2.3.2 カーネルのパラメータ 2.3.3 ユーザとグループ 2.4 はじめの一歩 Q&A 2.4.1 本当に 128MB の RAM が必要ですか? 2.4.2 RedHat 6.1 で動きますか? 2.4.3 Debian/SuSE/Mandrake/その他のディストリビューションで動きますか? 2.4.4 開発系カーネル上で動きますか? 3. インストーラ 3.1 どうやって? 3.2 インストールプログラムの質問にどう答えるか? 3.3 パッチのインストール 3.4 環境設定 3.5 インストール Q&A 3.5.1 インストールプログラムが 'CreateOUIProcess()' と言って終了してしまいます。 3.5.2 インストーラがスクリーン上でただ点滅して、その後消えてしまいます。 3.5.3 イントールプログラムを起動したとき、奇妙な Java のエラーが発生します。 3.5.4 インストールプログラムで 'Segmentation Fault'と言われます。 3.5.5 共有ライブラリをロードするときの問題。 3.5.6 Pro*C が動きません 3.5.7 パッチを当てたものの、ますます事態が悪化しました! 4. データベースの作成 4.1 概観 4.2 ステップバイステップガイド 4.3 Q&A 4.3.1 本当にそんなに簡単なんですか? 4.3.2 本当にすべてのファイルを別々のディスクに入れる必要がありますか? 4.3.3 dbassist を起動できません 4.3.4 "ORA-01034: ORACLE not available" と言われます 4.3.5 "ORA-01012: Not logged in" と言われます 5. コンフィギュレーション 5.1 概観 5.2 別ユーザとして接続する 5.3 別のマシンから接続する 5.4 別のマシンへ接続する 5.5 Q&A 5.5.1 netasst が起動できません。 6. 結びの言葉 6.1 役に立つソフトウェア 6.2 役に立つ本 6.3 インターネット上の役に立つリソース ______________________________________________________________________ 1. はじめに 1.1. この HOWTO の内容 Linux は難解で、一般にユーザにとっては近寄りがたいことで広く知られてい ます。ちょっとした Unix ファンの私としては、このことに同意できるかどう かわかりませんが。 Oracle も同じようなものだと思います。はじめはとっつ きにくいものの、慣れてしまえば、他の RDBMS なんて使っていられなくなり ます。この2つが一緒になるわけで、Oracle8i はまだ第 2 リリースだという ことを思い出せば、たとえこの両方に詳しくても、一筋縄ではいかないだろう と気づくでしょう。私自身、この両方に詳しいつもりですが、それにもかかわ らず、問題は起きました。私自身の愚かさや思い上がりから生じた問題も多 かったのですが、完全を期すため、すべて書き記すことにしました。 1.2. この HOWTO は誰のためのもの? このドキュメントは Linux 上の Oracle8i バージョン 8.1.5 をインストール したい人たちのためのものです。(訳注:Oracle Technet に入会すると1つの開発ライセンスつき CD を 無料で送ってくれます。つまり1人の開発者が使用可能だが、自由に配布でき ないというものです) これより前のバージョンについてはいっさい取り扱って いません。もし 8.0 をインストールしたいなら、 Linux Journals guide にトライする ことをお勧めします。これ以前のバージョンをインストールしたいときには、 SCO 版を使わなくてはならないでしょう。そのときは、Paul Haigh の Oracle Database HOWTO の指 示に従うこと。 「正しい」バージョンをインストールしようとしている人たちに、私のバック グランドを少し説明します。もし読者のバックグランドが似たものであるな ら、あきらかに私たちは波長がぴったりあうことになりますね。 o 私は Unix 経験者です。というより、おそらく私は Unix の「専門家」と いえるでしょう。大学で、SunOS/Solaris の初歩を覚えました。それか ら、SunOS/Solaris を使い続け、HP-UX (約1年) と Linux (5年。でもこ れは会社というより自分の時間で) が知識に付け加わりました。 Windows か NT のバックグランドから来ているなら、Oracle を Linux に インストールするのは、かなり難しいかもしれません。バグの前でお手上 げ状態になるまえに、まずたくさんの概念や専門用語を学ばなくてはなら ないのです。 o 私は Oracle 経験者です。DBA(データベース管理者) として、version 7.1 と 7.3 をインストールしたことがあるし、8.0 上でシステム開発したこと もあります。 (これらはみな Solaris 上) 幸いなことに、Oracle のイン ストール手順は簡単になってきています。あいにく、いまのところそれは あまり安定していません。少なくとも Linux の上ではそうです。 要するに、もし Oracle を前に使ったことがないのなら、これは手始めと してはよい製品ではないかもしれないということです。よほど時間と根気 でもないかぎり。 読者がこの分野で一定量の知識を持っていることを前提にしています。 Oracle をインストールすることさえささいな課題ではないので、「ではこ のキーを押しましょう」という手のガイドブックを書くつもりはありませ ん。もしこの手の「サルでもわかるガイドブック」がほしいなら、この HOWTO も Oracle もたぶんふさわしくないでしょうね。 1.3. このドキュメントの新しいバージョン Linux と Oracle の世界では、物事はめまぐるしく移り変わります。このド キュメントもすぐ時代遅れになってしまうということです。もしこのドキュメ ントが 1・2ヶ月以上古かったら、改訂版を私のウェブサイト で見てみること をお勧めします。 1.4. 免責 高いものには高いものなりの、安いものには安いものなりのことはあります。 私は、暗黙的であれ何であれ、いかなる種類の保証も提供しません。できるか ぎりの援助は惜しみませんが、法的には読者自身で責任をとってください。 1.5. 謝辞 この HOWTO は Stephen Darlington によって記述されました。 Oracle Technet ニュースグループと Usenet ニュースグループでの、途切れることの ない質問と答えの数々がなかったら、この HOWTO は作り出せなかったことで しょう。投稿しつづけてくれている人たちに感謝します。すべての人たちを個 別に記すことができなくてすみません。 このドキュメントへの貢献に対して、次の人たちに感謝を述べます(順不同) −Ton Haver, Guy Cole, Iain Frerichs, Albert Braun, Steve Morando そし て Krill Kokoshka. この HOWTO と Linux または Oracle に関する一般事項に関して、建設的なご 意見をお待ちしています。stephen@zx81.org.uk . にメールしてください。 1.6. ライセンス(Licence) This document is copyright 2000 Stephen Darlington. You may use, disseminate and reproduce it freely, provided you: o Do not omit or alter this copyright notice. o Do not omit or alter the version number and date. o Do not omit or alter the document's pointer to the current WWW version. o Clearly mark any condensed, altered or versions as such. These restrictions are intended to protect potential readers from stale or mangled versions. If you think you have a good case for an exception, ask me. (This copyright notice has been lifted from Eric Raymond's Distribution HOWTO.) (訳注:読者の便宜のため日本語訳をしますが、原文の著作権表示が優先しま す) このドキュメントの著作権は Stephen Darlington が所有します。以下の条件 を満たすかぎり、自由に使用、配布、再生産して構いません。 o この著作権表示を省略または改変しないこと。 o バージョン番号および日付を省略または改変しないこと。 o 現在の WWW 版へのドキュメント中のポインタを省略または改変しないこ と。 o あらゆる簡略版・改変版をそれとして明確に指し示すこと。 こんな規定をもうけてあるのは、将来の読者を旧版や改悪版から守るためで す。妥当な理由があるので例外を認めてほしい、という方はご連絡ください。 (この著作権表示は Eric Raymond の Distribution HOWTO から拝借しました) 2. はじめの一歩 2.1. 概観 この節では、送られてきた CD から Oracle8i を取り出して、ハードディスク にインストールするところまでたどりつけるように Linux を設定します。 Oracle のインストールをする前に、まず PC を組み立て、Linux をインスト ールし、各種設定を行って、ネットワークに接続しておかねばなりません。 2.2. 前提条件 思うに、最も重要な前提条件は、前提条件それ自体を軽視しないこと、そし て、ソフトウェアに関するかぎり、必要がなければ、違うふうにやらないこと です。 私の悲しいお話は以下の通り− o 最初のそして最大の過ちは、Oracle が 128MB の RAM が必要だと言ったと き、それを冗談だと思ったことです。それくらいのメモリを積んだ Sun サ ーバに2度 Oracle をインストールしたことはあるものの、どうして CISC マシンにそれ以上のメモリが必要なんだろう?私の勘ではなく、Oracle を 信じることです。32MB の RAM の私のマシンと格闘すること 30 分足ら ず、望みがないことに気づきました。 o Oracle が Java Runtime Environment version 1.1.6 が必要だと言った ら、まさにその通りのことを意味します。「新しいバージョンのほうがバ グが少ないだろう」とは考えないことです。インストーラはおそらくうま く動かないからです。まとめ−ドキュメントの指示通り、Blackdown の JRE 1.1.6v5 をインストールしましょう。いずれにしろ、最後はそうする はめになります。 Oracle は RedHat Linux の上で大部分の開発を行ったようです。平穏なイ ンストールのためには、同じ事をしましょう。他のディストリビューショ ンにインストールしようとしたときのぞっとする話をいくつか耳にしたこ とがあります。 ごくありふれた RH6 の設定を使ったところ、ほとんど問題は起きませんでし た。私は、JRE version 1.1.6v5 をダウンロード・インストール し、1999年8月までのすべてのパッチを当てました。さらにカーネルのバー ジョンを 2.2.13 に上げたのですが、これは私のネットワークカードを使える ようにするためでした。 Oracle は RedHat 付属の 2.2.5 カーネルでもきっ と動くはずです。 注意。Oracle のインストーラは JRE の実行ファイルが /usr/local/jre/bin/jre にあるという前提で実装されているようです。だか らと言ってそこに JRE をインストールしなければならないということではあ りませんが (下記参照) JDK で代用するわけにはいきません。これは重要なポ イントなので、もういちど言います。−必ず JRE を使うことです。Oracle の インストーラは JDK とは一緒に動きません! (訳注:JRE のダウンロードが 必要なのは R8.1.5 だけです。 Linux 版でも R8.1.6 では CD の中にインス トール用の JRE が含まれていますし、R8.0.5 はインストーラが Java を使い ません。R8.1.6 の試用版は Oracle Technet でダウンロード可能です) JRE の作業版を取得するために、次の手順を実行しました。 1. Blackdown のウェブサイト から Java Runtime Environment をダウンロードする。 2. JRE をインストールしたい場所に移動する - cd /usr/local 3. アーカイブを解凍する - bzip2 -d -c jre-1.1.6-v5-glibc-x86.tar.bz2 | tar xvf - 4. Oracle が想定する場所と実際の場所の間にシンボリックリンクを張る - ln -s jre116_v5 jre ハードウェアに関していうと、一定の「基本」水準を越えてさえいれば、 Linux の動くたいていのハードウェアの上で Oracle は動くはずです。参考ま でに、私のシステムは Intel Celeron 446 MHz に 128 MB のメモリ、 8 GB のハードディスク、そして DM9102 ネットワークカードです。これは、重いデ ータベースアプリケーション用のマシンではないものの、ちょっとしたテスト や開発システム用には十分すぎるほどです。 2.3. Linux の設定 2.3.1. ディストリビューションの設定 前節で指摘した通り、Oracle は RedHat 6.0 を使って開発を行っているの で、穏便なインストールのためには、読者もおそらくこれを使ったほうがいい でしょう。 ところで、Oracle を動かすためには、どんなオプションを使い、膨大な数の パッケージの中でどれとどれをインストールしたらいいのでしょうか? まず、スワップ空間の2・3倍のメモリが必要です。(ただインストーラを動か すだけでも、約 200MB の実また仮想メモリが必要になるでしょう!) 通説と は裏腹に、Linux のスワップパーティションは、128MB より大きくすることが できます。 他のパーティションのコンフィギュレーションもまた重要なことがあります。 必ず Oracle のソフトウェアは OS とは別のパーティションに入れ、Oracle のデータファイルはさらに別のパーティションに入れるようにしてください。 これは、データファイルがフラグメント化しないようにするためです。 (実際 の環境では、Oracle はいくつものディスクの上に散らばって存在する可能性 が高いものです。このことに関してさらに情報を得るためには、よい本がいく つもあります) ソフトウェアに関しては、私は、安直なオプションを選び、ただほとんどすべ てをインストールしました。必要なのは、確実にすべての 'base' パッケー ジ、X Windows (インストール・ルーティンは Java GUI)、そしてコーディン グするつもりのあるなしにかかわらず開発用ツールです。Oracle とデータベ ースの大きさに比べたら、Linux ディストリビューションは微々たるもので、 たぶん 1GB もないでしょう。楽するために、すべてをインストールする価値 はあります! 2.3.2. カーネルのパラメータ Oracle のドキュメントは、より多くの共有メモリを得るために、 Linux カー ネルに手を加えることを推奨しています。これは、Linux では非常に難しい (たいていの商用 Unix とちがって、カーネルを再コンパイルしなければなら ない) ので、私の取ったアプローチは、とにかくインストールをしてしまうこ とでした。RedHat Linux デフォルトの設定はうまくいきました。大規模な開 発や仕事用のシステムのためには設定を変更しなければならないかもしれませ んが。 そもそも Oracle を動かすためにカーネルを再コンパイルしなければならない 人たちもいたことに注意してください。同じマシン上で走らせている他のソフ トウェアに依存している部分があると思います。 新しいカーネルを構築するには、Oracle のドキュメント (インストール CD 上の HTML ファイル) と Linux Kernel HOWTO の指示に従ってくださ い。 2.3.3. ユーザとグループ LinuxConf(あるいはお好みの任意の方法) を使って、"dba" グループと "oracle" ユーザを追加する必要があります。"oracle" ユーザは、新しく作ら れた "dba" グループに所属させたほうがいいでしょう。 "dba" グループに入れることで、どんなユーザも DBA にすることができま す。複数の DBA がいるのなら、監査のために役立つかもしれません。 2.4. はじめの一歩 Q&A 2.4.1. 本当に 128MB の RAM が必要ですか? 128MB 以上のメモリを使うこと強く勧めます。それ以下では、どんなまともな 仕事をさせるのも難しいでしょう。 しかしながら、もし Java オプションを外して、すべての共有メモリ設定を比 較的小さいものにすれば、動かない理由はありません。64MB でうまくいった という話を聞いたことがあります。たぶん 32MB では無理でしょうけど。 心に留めておくべきことがあります。Oracle が推奨するところの半分だけ で、ソフトウェアを走らせることはできるかもしれませんが、インストールす るときには、その数字は意味を持ってきます。インストーラが 150MB を使っ ているという報告を耳にしたことがありますし、私の場合は、優に 120MB を 超えているのを見ました。もし 64MB 以下のメモリしかないなら、スワップ空 間と根気を忘れないようにしてください。 次の方法でもうまくいくはずです。(試す機会はまだないのですが) - Oracle を他のより大きなマシンにインストールして、$ORACLE_HOME ディレクトリに コピーします。もしユーザとグループがすべて同じなら、動かないはずはない と思います。 (訳注: dba グループだけ作ってあれば上記の方法で問題ありません。唯一の 問題として、インストーラを使ってプロダクトの追加をするときはどうする か?実は「前に何をインストールしたか」をインストーラが記述したテキスト ファイルがあるので、それもまとめてコピーすればよいはずです。しかしなが ら、少なくとも日本オラクルでは上記の方法によるインストールをサポートし ていません) 2.4.2. RedHat 6.1 で動きますか? 私自身まだ 6.0 を走らせているので、言えることはこのコンフィギュレー ションで多くの人たちが成功したと主張していることだけです。 これを書いている時点では、Oracle8i は RedHat 6.0 上で動作保証されてい て、「他のディストリビューションにおける動作保証は現在進行中」とのこと です。 (Oracle8i Patch FAQ) 2.4.3. Debian/SuSE/Mandrake/その他のディストリビューションで動きます か? Oracle の定める仕様は Linux kernel version 2.2 以上で、GLIBC version 2.1 そして任意のウィンドウマネジャとなっています。理論上は、これらの要 求仕様を満たす任意のディストリビューションでうまくいくはずです。 実際には、Oracle はそれをサポートしないかもしれませんし、インストール を完了させようとするときにより多くの問題にぶつかるかもしれません。他の ことをするたいへんよい理由でもないかぎり、当てられるだけのパッチを当て た RedHat 6.0 に固執することを勧めます。 (訳注:R8.1.5 に関して、日本 オラクルでは RedHat 6.0 英語版と TurboLinux Server 6.0 (日本語版)のみ をサポート対象としています) 2.4.4. 開発系カーネル上で動きますか? 動かないというはっきりした理由はありません - 当時の安定系カーネルが、 私のネットワークカードをサポートしていない一方、2.3.19 はサポートして いたので、それをすこしの間使いました - しかし差し迫った必要がないかぎ り、近寄らないのがいちばん安全なのは確かです。ドライバが安定系シリーズ に盛り込まれるようになるやいなや、私はカーネルをもとに戻しました。 3. インストーラ 3.1. どうやって? 一般的に、Oracle のドキュメントに従うのがいいでしょう。悪くない出来で すし、それに従っておけば、ずっとましなサポートを Oracle から受けること ができます。 (Oracle Applications のドキュメントに従って - そうなるん じゃないかとわかっていたものの - 物事をぶち壊して終わったことがありま した。それがまともなサポートを受ける唯一の方法だったのです) 私のドキュメントでは概略を説明しますが、Oracle のドキュメントも依然手 元におく必要があります。 3.2. インストールプログラムの質問にどう答えるか? インストール作業の一部として、Oracle は数多くの質問をたずねてきます。 一般に、そんなに難しいものではありませんが、私の入力とその理由を見てみ ましょう。 1. インストールプログラム(runInstaller)を 'oracle' ユーザとして走らせ ます。 2. タイトルスクリーンが出てくるはずです。'Next'をクリック。 3. インストール用のファイル('jar'ファイル) のソースディレクトリと Oracle インストール用ディレクトリを入力するように指示されます。前者 は特に指定しなくても大丈夫でしょう。後者の Oracle ホームディレクト リ (ORACLE_HOME)とは、ソフトウェアをインストールする場所のことで す。インストール作業ドキュメントによれば、それは /u01 の下のどこか ということですが、私はそれを無視して /home/oracle に設定しました。 本当は Oracle のアドバイスに従って、異なったデータベースファイルは 異なったディスクに分散して置いたほうがいいのですが。詳細項目を入力 したら 'Next' をクリックします。 4. それから DBA グループについてたずねてきます。これは、前節で作成した Unix グループで、おそらく 'dba' です。詳細を入力して、'Next' をク リックします。 5. 今度は 'root' としてログインし、/tmp/OraInstall/orainstRoot.sh を走 らせる必要があります。指示の通りにやりましょう。(pdksh や bash を 使って成功裏にこのスクリプトを終了させるには、「B シェル互換モー ド」で走らせる必要があるかもしれません) 終わったら 'Retry' をクリッ クします。 6. 次に何をインストールするか選ぶことができます。ほとんどすべてを含ん でいる 'Oracle Enterprise Edition' を選ぶのがベストです。 (Oracle のドキュメントの表 3.1 から、何をインストールするのかわかります) 右 のラジオボタンを選択していることを確認して、'Next' をクリックしま す。 7. ここでは、ずっと細かく何をインストールするか選べます。ディスク容量 の制限が特にきついとか、必要なものがはっきりわかっているとかでなけ れば、そのままにして、'Next'をクリックしたほうがいいでしょ う。Universal Installer は愚かな選択を許しませんので、何かのチェッ クを外してもあまり心配する必要はありません。いつでも元に戻って追加 することができます。 8. インストールするように指示した任意の製品について、どこに入れるか変 更することができます。ここでも、変更するのは、しっかりした理由のあ るときだけにしてください。終わったら 'Next'をクリック。 9. ウィンドウが消えて、指示したすべてのソフトウェアがインストールされ ます。これには、たぶんしばらく時間がかかり、思うよりずっとメモリを 消費するでしょう。 10. データベースを作成するか聞いてきます。よほどメモリや根気がないかぎ り、ここでは 'No'を選んでおきましょう。というのは、これが、別の Java バーチャルマシンと X Window を起動するようなのです。あいに く、2つの JVM プラス Oracle バックエンド (訳注:Oracle インスタンス のことと思われる) というのは、とても 128MB には収まりません。もしこ の方針を貫徹するのなら、いったん次節に進み、終わったらここに戻って きてください。 (多くの人たちがこの時点でデータベースを作ると実際に はうまくいかないとコメントしています) 11. Oracle にサポートさせたいネットワークプロトコルを聞いてきます。私の 場合、入力フィールドは全部空欄でした。何を記入すべきかわかりません が、 'Next'をクリックしてすべてうまくいきました。 (訳注:TCP 用の ネットワークアダプタがデフォルトでインストールされるので、その画面 が空欄でも問題はありません) 12. これで大変なところは終わりです。指示した製品はすべてインストールが 終わり、準備完了です。おめでとう。 3.3. パッチのインストール あいにく、Oracle から送られてきた CD はたぶんバージョン 8.1.5.0.0 で しょう。他のソフトウェアの最初のリリースがたいていそうであるように、こ のバージョンにも問題があり、(問題は空ファイルがらみなので、かなり深刻 です) バージョン 8.1.5.0.2 へバージョンを上げるためのパッチが不可欠で す。この HOWTO の「コンフィギュレーション」の節に進むには、確実に必要 になってきます。ここに記述されたパッチは、累積パッチです。つま り、8.1.5.0.0 から 8.1.5.0.2 へ移行するのに必要なファイルをすべて含ん でいるということです。 必要なファイルは Oracle のウェブサイト に あり、インストールするのは比較的簡単です。 (訳注:日本で出荷されている R8.1.5には R8.1.5.0.1 のパッチが付属しています) 1. これを手始めとしてたくさんのパッチを当てることになるでしょうから、 どこか便利なところに "patches" というディレクトリを作っておきましょ う (私の場合 $ORACLE_HOME)。 2. パッチファイルをダウンロードしてそこに置きます。 3. 一時ファイルのための場所を確保します。 mkdir /tmp/orapatch cd /tmp/orapatch 4. パッチファイルを解凍します。 tar zvxf $ORACLE_HOME/patches/linux815patches.gz 5. カレントディレクトリにできたシェルスクリプトを実行します。 ./linux_815patches.sh くれぐれも、カレントディレクトリ上で、パッチファイルを解凍しないように してください。パッチのインストーラは存在するファイルの数が正しいか確認 し、もしそうでないと失敗します。当然、パッチのアーカイブファイルを見つ け出すと、ファイルの数が多すぎることになってしまいます! 3.4. 環境設定 ".profile"(またはふだん使うシェルでそれに相当するもの) に次の行を加え てください。 . oraenv export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib なぜ Oracle のインストーラがこれをやらないのかは謎です。 次にログインするときに、"[: integer expression expected before -lt" と いうメッセージを見たら、それは 'oraenv' は ULIMITの中にデフォルトの 'unlimited' ではなく整数を求めていたからです。このエラーを無視しても悪 影響はありませんが、任意の有限数を ULIMIT に設定することで、出ないよう にすることができます。 3.5. インストール Q&A 3.5.1. インストールプログラムが 'CreateOUIProcess()' と言って終了して しまいます。 まず正しいバージョンの JVM を走らせているか確認してください。 Oracle が彼らのソフトウェアに対して何をしているのかはわかりませんが、使用する バージョンに深く依存しています。 次に、CD のルートディレクトリから runInstaller を走らせる代わりに、 install/linux に移動して シェルスクリプト runInst.sh を走らせるとうま くいくかもしれません。 この問題は、RedHat 6.0 より 6.1 でよくあるようで、新しい C ライブラリ に関係しているのかもしれません。 また、Gnome の通常のウィンドウマネジャ Enlightenment でバージョンが違 うとこの問題が発生する可能性があると聞いたことがあります。バージョンを 上げるか、 KDE や Fvwm2 といった他の環境に切り替えてみてください。 (訳 注:これは RedHat 6.0 に関する問題です。対応したパッチが RedHat からダ ウンロード可能になっています) 3.5.2. インストーラがスクリーン上でただ点滅して、その後消えてしまいま す。 これは珍しいことではありません。通常、これは古いバージョンの Enlightenment を走らせているということを意味しています。バージョンを上 げたり他の環境に切り替えたりすることで、この問題を解決することができる はずです。 これと似たような問題ですが、もっと先の段階でインストールプログラムが消 えてしまうこともあります。インストールが8割がた終了したあたりで起こる ことの多い現象です。どうやらメモリが不足しているらしいというのが大方の 見方です。マシンのスワップの量を増やしてみるといいでしょう。200MB より 多ければ十分なはずです。 3.5.3. イントールプログラムを起動したとき、奇妙な Java のエラーが発生 します。 どのバージョンの Java バーチャルマシンを使っていますか?多くの人たちが 他のバージョンでの成功を主張しているものの、私の場合、大部分の問題が解 決したのは、Oracle がドキュメントで推奨している JRE 1.1.6v5 にバージョ ンを下げたときでした。 指摘する価値のあることをあと2つ - 必ず JDK ではなく JRE を使うこと、 もう1つは、"green" スレッドを使うべきだということです。 THREADS_FLAG を 'native' と設定しないかぎりは、ほぼ確実に設定は正しいはずです。 3.5.4. インストールプログラムで 'Segmentation Fault'と言われます。 ちゃんと GLIBC 2.1 を使ってますよね? 3.5.5. 共有ライブラリをロードするときの問題。 問題のエラーメッセージはこんな感じです - error in loading shared libraries: libclntsh.so.8.0: cannot open shared object file: No such file or directory これは、NT が DLL を見つけられないと文句を言っているのと同じです。直す のはとても簡単です。もし B シェル風のシェルを使っているなら、 ".profile" の最後に次行を単純に追加します。 (何のことかわからなけれ ば、身近の詳しい人に質問してみてください) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib また、C シェル風のシェルでは次行を使います。 setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH$ORACLE_HOME/lib" 私は C シェルを使わないので、実際にこのコマンドを確認していただけると ありがたいです。 3.5.6. Pro*C が動きません 答えにたどり着くまでしばらく問題を追跡してみる必要がありました。もっと も一生懸命さがせば Oracle のウェブサイト自体に答えはあるのですが。 デフォルトのコンフィギュレーションでは、Pro*C はどこにすべてのライブラ リがあるのか知らないので、教えてあげる必要があります。インストールした 後 $ORACLE_HOME/precomp/admin/pcscfg.cfg は空ですが、次の項目を記入す る必要があります。 sys_include=(/home/oracle/precomp/public, /usr/include, /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/, /usr/include, /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include, /usr/include) include=(/home/oracle/precomp/public) include=(/home/oracle/rdbms/demo) include=(/home/oracle/network/public) include=(/home/oracle/plsql/public) ltype=short (sys_include から include) までの最初の4行はファイルの中ですべて同じ 行に置くこと) Oracle のドキュメントは触れていないのですが、 $ORACLE_HOME/precomp/lib/env_precomp.mk も修正の必要がありま す。CCPSYSINCLUDE を定義している行で、次のようにします。 CCPSYSINCLUDE=sys_include='($(ORACLE_HOME)/precomp/public, /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include, /usr/include/g++-2, /usr/include)' RedHat 6.0 ならこれでいいのですが、他のディストリビューションや RedHat の新しいバージョンではすこしひねりが必要かもしれません。 3.5.7. パッチを当てたものの、ますます事態が悪化しました! これは、Oracle のドキュメントにほとんど書かれていないものの、すべての 製品やインストールプログラムに共通するやっかいな問題です。この件に関し ては、いいかげん Oracle に手を打ってもらわないと! よく起こるのは次のようなことです - Oracle Enterprise Edition をインス トールします。そして、Oracle の言う通り、そのままこんどは手元にある パッチをインストールします。それから、プリコンパイラが必要だと決断し て、同じ CD から Oracle Programmer をインストールします。 Pro*C をインストールする前はデータベースは動いていたのに、いまはもう動 きません。 問題は、インストールしたバージョンのプリコンパイラにはパッチが当たって おらず、Oracle サーバのコードの一部はその修正部分に依存している、とい う点にあります - Oracle のインストーラは愚かにも同じコードの新しいバー ジョンを上書きしてしまうのです。 解決法はぱっとしません。CD から一つ一つのファイルを抜き出すことができ ないので、全体をインストールしなおす必要があります。今度は、パッチの前 に Oracle Programmer を追加するようにします。 4. データベースの作成 4.1. 概観 まだデータベースを作成しないようにという前節のアドバイスに従っていただ けたでしょうか? 多くの人々にとって、データベースの作成は次の言葉に要約できるかもしれま せん - 「'dbassist'を実行せよ」 Oracle を走らせるのが初めてでなけれ ば、'dbassist' が聞いてくる質問には難なく答えられるはずです。 完全を期すために、私のやったことをドキュメントに残しますが、まずは私の 目指していたものを述べるのがベストだと思います。要約 - これは仕事用の システムでも「本格的な」(複数ユーザの、または、常時使用の) 開発用ボッ クスでもないのです。私が 8i をインストールしたのは、8 以前のバージョン に比べてどこが新しいのか、あるいはどこが違っているのか、実際にいじくり まわしながら調べるためなのです。 そういうわけで、なるべく 'dbassist' の安易なオプションを選びました。別 のディスク、またはせめて別のパーティションを使用することを推奨されまし たが、そうしませんでした。私の $ORACLE_HOME は /home/oracle です。すべ てのデータファイルとソフトウェアはまとまってそこにあり、1 つのパーティ ションの上に載っています。 4.2. ステップバイステップガイド 1. コマンドプロンプトで下のようにタイプします。 dbassist 2. 私のマシンは "JNLS Exception: oracle.ntpg.jnls.JNLSException. Unable to find any National Character Sets." と言ってきます。 Oracle8i パッチマニュアルによると、これは既知の問題 (884001) なので 無視して大丈夫です。 3. "Create a database" ラジオボタンを選択し、"Next" を押します。 4. ここで2つのオプションがあります。通常(Typical)とカスタム(Custom)で す。 dbassist の操作がきちんとわかるぐらいなら、こんなところを読ん ではいないでしょうし、カスタムを選んでも楽勝でしょう。それはここで は取り扱いません。代わりに、"Typical" を選択し "Next" を押したもの とします。 (訳注: 日本語メッセージをインストールする場合は Custom を選択する必要があります。製品選択画面のところで右上の Language ボ タンをクリックし、Japanese を追加してください) 5. 次に CD からデータベースをコピーするかデータファイルを作成するか聞 いてきます。私が、最初のオプションを試したときは、 Oracle は CD プ レーヤを見つけることに常に失敗していました。 (たった今そこからイン ストールしたばかりなのに!) ですので、 2番目のオプションをお勧めし ます。別に難しいわけではなく、少し余計に時間がかかるだけでしょう 6. データベースを走らせる環境を聞かれたとき、'Hybrid' を選択するのがお そらく無難でしょう。 7. 今度は常時何人のユーザがデータベースを利用するか聞いてきます。私は 5 と入れました。 8. 次に新しいデータベースにどの製品を入れるか聞いてきます。ここでも、 自分が何を入れたいのかなんて私より読者の皆さんのほうがよくわかって いますよね! 9. ここで、Oracle は 「グローバルデータベース名」 と "SID" を必要とし ます。このデータベース名は、フルドメイン名のようなものです。 (しか し別物です) Oracle の達人なら何を入れるべきかわかるでしょうが、そう でない場合、読者の会社にはなんらかの命名規則があるかもしれません。 私の場合は、'dev1' としました。(SID とデータベース名の両方に対して) 10. さて、データベースを*いま*ここで作成しますか?それとも必要な情報 をシェルスクリプトに保存させたほうがいいでしょうか?128MB の RAM で は、前者のオプションは苦痛だということがわかりました。私はシェルス クリプトを作成し、X などメモリを大量に消費するものをすべて終了させ て、そのスクリプトを走らせました。そっちのほうがずっと手際がいいで す。 11. ドキュメントのどこにも見つからなかったのですが、これなしにはデータ ベースはまともに動きません! 'dbassist' が作成するデータベース自体 はいいのですが、デフォルトでユーザロールバックセグメントがオフライ ンになっています。(注釈 - 非システムユーザはトランザクションを必要 とする操作を実行できません) 以下のようにタイプします。 cd $ORACLE_HOME/dbs ここで、"init.ora" という名前のファイルを編集する必要があります。 (私の場合 "initdev1.ora" でした) ファイルの真ん中あたりで、こんな感じの行がコメントアウトされています。 # rollback_segments = (r01, r02, r03, r04) この行のコメントを外して(シャープ記号を取り除く) ファイルを保存すれば 終わりです。 12. これはメタステップとでも呼ぶべきものです。データベースがあって起動 できるはずだとしても、おそらくパスワードシステムについては何も知り ませんよね!知っておくべきことが2つあります。1つは SYSTEM のパスワ ードです。デフォルトは 'MANAGER' になっています。 (Oracle のパスワ ードは大文字にするのが習わしのようです。実際には、大文字小文字の違 いは認識されません) SQL*Plus のプロンプトで password とタイプして、 すぐにパスワードを変更することをお勧めします。 (ALTER USER コマンド じゃないかと思う人もいるでしょうが、これは 8i 付属バージョンの SQL*Plus の新コマンドです) 他に知る必要があるのは、 SYS のパスワー ドです。このデフォルトは 'CHANGE_ON_INSTALL' で、その名の通りインス トールしたらすぐに変更しましょう! 13. 最後のステップです。これは、SQL*Plus へのログイン時のうっとうしい 'no profile' 警告を取り除きます。'system' ユーザとしてログインして ください。(sqlplus system/) それから次のようにタイプしま す。 @?/sqlplus/admin/pupbld.sql 疑問符は $ORACLE_HOME ディレクトリのエイリアスです。 これで終わりです。これで、SQL*Plus を使ってログインできて、すぐに使え るデータベースができているはずです。 4.3. Q&A 4.3.1. 本当にそんなに簡単なんですか? 答えはイエスでありノーでもあります。ただ遊んだり、8i の新しい特徴を学 ぶため、自分自身用にデータベースを構築するなら、答えはイエスです。上の 指示に従ってできるデータベースは完全で、うまく動作します。 しかし、Oracle について知識があるなら、デフォルトのコンフィギュレー ションはあきれるほどひどいものだとすぐに気づくでしょう。もし本格的な仕 事用のシステムを作っているなら、"Custom" オプションを使ったほうがいい でしょう。 私のお遊びのシステムに対してさえ、いくらかひねりを入れました。大部分の テーブルスペースのサイズを増やし、かつそれが自動的に増えないようにしま した。 (利口ぶるソフトウェアは嫌いです) 4.3.2. 本当にすべてのファイルを別々のディスクに入れる必要があります か? 必要はありません。そうしなくても動作します。しかし、そうだとしても、す べてのファイルを同じディスクに入れるのは勧めません。 ファイルをいくつかのディスクに分散して置くと、たとえデータファイルとロ ールバックセグメントを別々にするだけでも、著しいパフォーマンス上の利点 があります。詳しくは、Oracle DBA book を読んでください。 4.3.3. dbassist を起動できません 最初にインストールした時にいくつかある長さ 0 のファイルが原因です。 パッチを当てると問題は解決します。 4.3.4. "ORA-01034: ORACLE not available" と言われます 簡単に言うと、おそらく、$ORACLE_SID が正しく設定されていないか、あるい はまったく設定されていないか、です。'dbassist' で与えたものと同じ値に 設定されていて、かつエクスポートされていることを確認してください。 (つ まり B シェル互換シェルでは、export ORACLE_SID) 4.3.5. "ORA-01012: Not logged in" と言われます これはとてもありふれたエラーで、いろいろな原因があります。 まず、共有サーバ構成 (MTS と呼ばれることもある) ではないことを確認して みたほうがいいでしょう。専用サーバ構成を使ってデータベースを作成し、後 でそれを変換します。 (訳注:共有サーバ構成では、は一つのサーバープロセ スが複数のユーザーセッションの処理を受け持つのに対し、専用サーバー構成 では、ユーザーのセッション1つに対して Oracle のサーバープロセスが一つ 生成されます) これが原因でなければ、NLS_LANG 環境変数をチェックします。一番簡単なの は、それを unset することです。もし本当に使いたいなら、必ず完璧に正し く設定します。 1 (いち) と l (エル) を取り違えないように気をつけてくだ さい! (訳注:EUC 使用の日本語環境では japanese_japan.ja16euc を使いま す。ただし環境変数 ORA_NLS33 も正しく設定しないと日本語メッセージは使 えません) 5. コンフィギュレーション 5.1. 概観 おめでとう。読者の Linux マシンに Oracle が走るようになりました。デー タベースもできていますし、SQL*Plus を使用すれば、データベースに接続で きます。 もちろん、これで終わりというわけではありません。理想を言えば、別の Unix ユーザやまったく異なったマシンからデータベースに接続できるといい ですね。この節ではそれに関して述べます。 5.2. 別ユーザとして接続する これは私が個人的に使っているコンフィギュレーションではないので、この節 の詳細についてはいくらかおおざっぱな記述もあります。しかし、次の手順の うちの一つを実行することでうまくいくはずです。 o B シェル風のシェル (Bash や pdksh) を走らせているなら . oraenv o C シェルが好きなら source coraenv 私の環境では、"oraenv" を走らせているとき、Linux のデフォルトのシェル である 'bash' を使うとエラーが出ます。何も問題は引き起こしていないよう なので、心配無用です。もしどうしても不安なら、'pdksh' を使えばいいで しょう。 5.3. 別のマシンから接続する 初期のバージョンの Oracle では非常に複雑だったと記憶しているものの、こ こではうまく動いているように見えました。確かなのは、これは、私が何かま ちがったことをしたか、やったことを忘れてしまったか、あるいは巨大なセ キュリティホールがあるか、ということです。 私がやったと記憶しているのは - 1. Linux の 'oracle' ユーザとしてログイン 2. "oraenv" が実行済みであることを確認する (つまり、$ORACLE_HOME が正 しく設定されているということ) 3. 次のようにタイプ - lsnrctl start クライアントマシンでする必要があるのは、マシンとデータベースインスタン スを正しく指定することだけです。 プロセスをもっと細かく制御したい場合には、Net8 Configuration Assistant ('netec') が役立つはずです。 5.4. 別のマシンへ接続する 多くの初期のバージョンの Oracle では、これは非常に難しいことでした。た くさんのテキストファイルを編集しなければならないのですが、その多くは驚 くほど複雑な構文を持っていました。 しかし 8i では、JVM が走っているかぎり、必要なのは Net8 Easy Config プ ログラムだけです。別のマシンのデータベースに読者のマシンを接続させるた めには、次の手順に従ってください。 1. oracle としてログインしている間に、コマンドプロンプトで netec とタ イプして "Net8 Easy Config" を起動します。 2. Java の初期化をしばらく待った後、welcome 画面が現れます。そこで何を するか聞かれるはずです。左のラジオボタンはそのままにして(デフォルト は create) テキストボックスにデータベース名を入力します。終わったら 'Next' をクリック。 3. 提供されるプロトコルのうち1つを選択します。特別なことでもないかぎ り、デフォルトの 'TCP/IP' でいいでしょう。'Next' を押します。 4. リモートマシンのホスト名 (または IP アドレス)を入力します。ポート番 号はおそらく変更する必要はありません。'Next' を押します。 5. ラジオボタンを使ってデータベースの種類(8i またはその他) を選択し、 適当なテキストボックスにその名前を入力します。'Next' を押します。 6. ここで、入力した情報が Oracle にとって意味をなすかテストできます。 もし詳細に間違いがあると、'netec' はクラッシュしやすいことに気づき ました。すべて大丈夫だと確信できたら、'Next' を押します。'Back' ボ タンを押し続けて元に戻り、どんな情報も訂正することができます。 7. 入力した情報にすべて満足いったら、'Finish' を押してください。これで 終わりです! プロセスに対して細かい制御を加えるなら、"Net8 Assistant" を使う必要 があるかもしれません。"Net8 Assistant" - 紛らわしいオプションがたく さんある大きなウィンドウ - は netasst コマンドで起動できます。 5.5. Q&A 5.5.1. netasst が起動できません。 この問題は2つの長さ0のファイルと関係しています。パッチをインストール すれば解決するはずです。 6. 結びの言葉 6.1. 役に立つソフトウェア なんとか Oracle をインストールできたので、試しに使ってみたいと思ってい ることでしょう。サーバの PC で何でもできますが、一般的には、クライアン トサーバの機能を使用して、他のマシンからデータベースにアクセスするのが ベストでしょう。 当然、Oracle には、おしなべてかなりよいクライアントソフトウェアがたく さんありますが、この時点では Linux 用はあまりありません。Oracle のソフ トウェアのなかでは、次のものを入手することを勧めます。 o Oracle Enterprise Manager. わかりづらい ALTER USER とか ALTER SYSTEM コマンドを覚えるよりずっと簡単です。 o Oracle WebDB. インストールするのはかなり難しいものの、 HTML を知ら なくても見栄えのするウェブサイトを構築できます。 しかし最高のソフトウェアは、大部分、他のところからやってきます・・・。 o Tool for Oracle Application Development (T.O.A.D.). これはかつては フリーでしたが、いまは Quest Software が所有 しています。 (もし2ヶ月ごとにダウンロードする気があるなら) フリー バージョンをダウンロードしてもいいし、あるいはお金を払ってもいいで しょう。無料のものと比べれば高いといえますが、それだけの価値があり ます。 o SQLNavigator. これも Quest Software によるも のです。実は、私は使ったことがないのですが、使った人たちはみんな強 く勧めると言っています。 o Orac . コンフィギュレーション可能 なよい DBA ツールです。 6.2. 役に立つ本 私は同僚と本から Oracle に関する情報の大部分を入手した気がします。同僚 をおすそ分けするわけにはいきませんが、私がお勧めする本は次の通りです。 o "Oracle Performance Tuning," Mark Gurry and Peter Corrigan, O'Reilly and Associates, ISBN 1-56592-237-9. o "Oracle Design," Dave Ensor and Ian Stevenson, O'Reilly and Associates, ISBN 1-56592-268-9. o "PL/SQL Programming," "PL/SQL Programming," Steven Feuerstein, O'Reilly and Associates, ISBN 1-56592-335-9. o "PL/SQL Built-in Packages," "PL/SQL Built-in Packages," Steven Feuerstein, O'Reilly and Associates, ISBN 1-56592-375-8. O'Reilly の本ばかりだと気づくと思います。私は まだ O'Reilly でダメな本を見たことがありません。同様に、Oracle Press でいい本を見たこともありません。 6.3. インターネット上の役に立つリソース ウェブには役に立つものがたくさんあります。 o Oracle Technet . Oracle の無料サポート のある公開ウェブサイト。非常に役立つ情報がたくさんあります。 o Oracle Metalink . Oracle の非公開 (サポ ート契約を結ぶ必要がある)サポートウェブサイト。Technet より役立つも のの違いはわずかでしかありません。 o Oracle Fans . 論説とサポートのフォーラム 群。Oracle とは公式のつながりはありません。 (従って情報に偏りが少な いです) o o OraFaq . すべてのプラットホームの Oracle に ついてQ&Aを満載。 o Oracle Linux メーリングリスト( ListGuru@fatcity.com に 'SUBSCRIBE ORACLE-LINUX-L' と本文 に書いてメールを送る) (訳注:日本では、o4l ML (Oracle for Linux ML) が有名です。日本オラクルが主催している ML ではありません。主に Linux 版 Oracle の話題が議論されています。登録手順はo4l- ctl@blue.gr.jp へ subscribe Taro Yamada (名前は適当に変えてくださ い) とだけ書いたメールを送れば OK です) o あと私のウェブサイト も忘れないように!