2006.09.24

9iと10gでデータベースに接続できない場合

Oracle9iとOracle10gをインストールしている場合、アプリケーションによってはデータベースに接続できなくなるという現象が発生します。
まず、原因としてはおもに以下のことがあげられます。

1. 10gで動作できるアプリケーションかどうか
2. 環境変数は9iと10gのどちらが優先されているか
3. tnsnames.oraに接続情報が記述されているかどうか


◇1.の場合
9iで動作しても、10gで動作しないアプリケーションがあります。
そのアプリケーションが対応しているかどうか確認しましょう。


◇2.の場合
9iと10gではそれぞれ別々にPath環境変数が追加されます。
Path環境変数は、先に記述されたほうが優先されます。
そのため、9iの設定を読み込んでいるはずが10gの設定を読み込んでいて、思うように動作しない、といった現象がおきます。
これを自動的に防ぐ方法はありません。
9iの設定を読み込みたかったら優先順位を9iに変更する、
10gの設定を読み込みたかったら優先順位を10gに変更する、
といったように、状況によって逐一変更していくしかありません。
優先順位は次のようにして変更します。

 1. 10gのUniversal Installerを起動する
 2. 「インストール済の製品」をクリック
 3. 「環境」タブをクリック
 4. 優先したい変数を矢印ボタンで上にする
 5. 適用をクリック

これで優先順位が変更できます。


◇3.の場合
9iと10gでは別々にデータベースの接続情報が保持されています。
(Net Configuration Assistantで追加する情報のこと)
具体的にいうとtnsnames.oraというファイルに接続情報が設定されていて、そのファイルが9iと10gで別々に存在します。
9iでは接続情報が設定されていても、10gでは設定されていない場合があります。
きちんと設定されているか確認しましょう。
デフォルトではそれぞれ以下の場所にファイルがあります。

○9iの場合
ドライブ:\oracle\ora92\network\ADMIN\tnsnames.ora

○10gの場合
ドライブ:\oracle\product\10.1.0\Client_1\NETWORK\ADMIN\tnsnames.ora

中身はテキスト形式で同じ書き方なので、設定されていなかったら該当部分をそのままコピーしてくればいいでしょう。


ここまで説明しましたが、1~3をすべて確認してもアプリケーションによっては接続できない場合があります。
その場合はそのアプリケーションはあきらめるか、Microsoftのドライバで接続できるようならその方法で接続するしかないと思います。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
yamaoka