2015年11月21日土曜日

専用の tnsnames.ora でAccess MDB から ORACLE にリンクを張る

通常 tnsnames.ora ファイルは、管理者権限がないと修正できません。
しかし、その端末に OracleClient さえ入っていれば以下の方法で tnsnames.oraを修正しなくても Access からODBC接続することができます。

本来の tnsnames.ora は %OracleHome%\NETWORK\ADMIN\ にあります。
これは修正不可です。

そこで、
Access の MDBファイルと同じところに専用の tnsnames.ora と、専用のファイルデータソース(hoge.dsn など)を作成する。

これで、Access から通常のリンクテーブルの方法でODBCリンクを張れます。

tnsnames.ora の例

Agyomu_hoge01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = hoge01)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = Agyomu)
    )
  )

赤字が、ファイルデータソースを作成するときに頼りにする、接続用のニックネームのようなものです。
緑字が、ORACLEのデータベースが存在するサーバーの名称です。IPアドレスで指定することも可能。
青字が、接続したいデータベースの名称(=サービス名)です。



2015年11月8日日曜日

インターネットに接続できない環境でアプリケーションの起動が異常に遅い

今回は SQLServer についてではありません。

社内でクローズ(インターネット接続なし)のネットワーク環境があり、
そこで使用するHTTPを使用したアプリケーションの起動が異常に遅いことがありました。

通常15秒程度で起動するはずが、最大2分ほど必要。
これは使用に耐えない。

色々調べましたが、開発元からの回答は、
「インターネットオプションで、セキュリティーを『信頼済みサイト』から『ローカルイントラネット』に変更してください。」とのことでした。

しかし、いまいち。

よくよく確認したら、「前提条件として、インターネットオプションの『発行元証明書の取り消しを確認する』がOFFになってますよね?」とも。

私「えっ?なってないよ。」
開発元「いや、私が先日設定しました。」
私「でも、なってない。とりあえず、OFFにしてみるね。」

おお!15秒で起動するやん。

私「やっぱり、問題は証明書の取り消しでした。OFFにしてくれてないやん。」
開発元「いや、しました。ドメインアドミニ権限で。」

それ!
この「発行元証明書の取り消しを確認する」はユーザー単位なんですね。
なので、開発元さんが設定してくれたのは、アドミニの時だけ効いて(OFF)ました。

「発行元証明書の取り消しを確認する。」とは、
事前にアプリケーションの開発者が申請してあった、発行元証明書(正しく作成されたアプリであることを証明する電子署名)が、現在も取り消されていないかどうかを、インターネットで確認するものだそうです。
なので、インターネットに接続できない環境では、タイムアウトするまで待ち続けます。

クローズ環境ではONにする必要は全くないですね。