オラクルクライアントのバージョンアップ
バッチサーバー(開発機)のオラクルクライアントをバージョンアップした。
(旧)9i → (新)11g
<手順>
1.9iはアンインストールなどせずそのまま。
2.11gのsetup.exeをたたいてOUIを起動。まずは11.1.0.6にする
3.管理者を選択
4.インストールの場所で、Oracleベースとソフトウェアの場所で名前とパスを入力する。 → 参照
5.進んでインストール
6.11.1.0.7のsetup.exeを実行し再びouiを起動。
7.インストール先の名前とパスを入力。 → 参照
8.進んでインストール。
9.9iのtnsnames.ora を 11gの同じ場所にコピー。
10.ODBCの設定の変更もして完了。
と思いきや。ODBCの接続テストで下記エラー発生。
『ORA-12154: TNS: 指定された接続識別子を解決できませんでした。』
さてさてなんだろうと。この状態でバッチを流しても同じエラーがでた。←あたりまえ。
とりあえず”TNS”といってるのでtnsnames.oraからみる。いきなり怪しい。バッチ開発機のtnsnames.oraには接続識別子にドメインも記述されていた。なんらかのタイミングで必要だから(?)追加したのだろう。ODBCの接続でそのドメインも含めてTNSサービス名として接続テストしたところつながった。これが原因でした。
これによって接続識別子のドメインを削除するか、サーバー側の環境変数すべてにドメインを追加するかとなった。ドメインの削除は昔なんらかの理由があったのであまりしたくない。環境変数に追加するのも数があって手間。ただ9iでは繋がっていたのでそれをもうちょっと調べる。
・sqlnet.ora
tnsnames.oraと同じディレクトリにsqlnet.oraとゆうファイルがあった。このファイル内に
NAMES.DEFAULT_DOMAIN = (domain_name)
の記述が!これを11g側のsqlnet.oraに追記して解決!OYO先輩サンクス!
このsqlnet.oraファイルは何者?と調べる。sqlnet.oraとは?
oraclenetの構成ファイルである。ちなみにtnsnames.oraとlistner.oraも構成ファイルと。
#引用:
NAMES.DEFAULT_DOMAINパラメータを使用して、クライアントが最も頻繁に名前解決要求を参照するドメインを設定します。このパラメータが設定されると、デフォルトのドメイン名が未修飾のネット・サービス名またはサービス名に自動的に追加されます。 たとえば、デフォルト・ドメインがus.acme.comに設定されている場合、接続文字列CONNECT scott/tiger@salesは、sales.us.acme.comとして検索されます。接続文字列にCONNECT scott/tiger@sales.acme.comなどのドメイン拡張が含まれている場合、そのドメインは追加されません。
というわけ。他にもいろいろ設定できる。