• ベストアンサー
  • すぐに回答を!

Oracle10g・・ODBCで接続できない

Oracle10gのStandardEditionをサーバーにインストールし、データベースを作成しました。 それに対してクライアントにも10gをインストールし、ローカルメソッド名を設定して、接続テストも通りました。SQL*Plusを起動して接続することもできました。 ですが、Accessを使ってテーブルの中身を見ようと思い、ODBCを設定したのですが接続テストをすると固まってしまいます。どうすればODBCで接続できるようになるのでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数17297
  • ありがとう数19

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.6
  • tango7
  • ベストアンサー率42% (39/91)

tnspingの引数がわかりませんが、成功しているようですね。 tnspingはリスナーへの接続が成功するかどうかの確認です。 リスナーに接続した後、クライアント用に専用サーバプロセスが起動し、DBに接続します。 この部分が失敗しているようです。 要はリスナーには接続できているが、DBには接続できていない状態です。 一点気になる点がありますので、それを変更して試してもらえますか? tnsnames.oraを変更してください。 > (CONNECT_DATA = > (SERVICE_NAME = dev.dev_domain) > ) > ) この部分を (CONNECT_DATA=(SID=ORCL) に変更してください。 SIDはサーバ側のlistener.oraかlsnrctlで調べてみてください。 (間違うとどつぼにはまりますので慎重に確認してみてください) 念のため、tnsnames.oraのサンプルをアップしておきます。 DEV = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = DEVSV001)(PORT = 1521)) ) (CONNECT_DATA=(SID=ORCL)) ) SIDだけ違ったら変えて、既存のtnsnames.oraと入れ替えてもかまいません。 これでも不可な場合、サーバ側のlistener.oraと > lsnrctl status の出力結果を補足に記入してみてください。 たぶんいけると思うのですが...。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

(CONNECT_DATA=(SID=ORCL)) に変更しても状況は変わらなかったのですが、 クライアントに原因があるというアドバイスを元に Oracle Clientのアンインストール、再インストールを行ってみましたところ すんなり接続できるようになりました。 もしかしたらODBCドライバーがうまくインストールされていなかったのかもしれません。 今回のことで失敗の連続ではあったものの、ここでいただいた助言のおかげでOracleの設定について結構詳しくなりました。本当に感謝しています。 ありがとうございました!!

関連するQ&A

  • PHPからODBCによるOracle10gへの接続

    Windows2003Serverに展開しているPHPベースのページからODBCを経由して、Oracle10gへアクセスしようとすると以下のようなエラーが表示されてしまいます。 -------------------------------------------- Warning: odbc_connect(): SQL error: 指定されたドライバはシステム エラー 5 (Oracle in OraDb10g_home1) のため読み込めませんでした。, SQL state IM003 in SQLConnect in c:\php\pear\DB\odbc.php on line 129 データベースの接続に失敗しました。 -------------------------------------------- コントロールパネルのODBC設定でのテストはうまくいくんですが・・。 同様の環境で同様なトラブルの原因と対処策をご存じの方がいらっしゃったら、ご教授いただけないでしょうか?

  • oracle10gサーバに対しoracle9iのクライアントインストー

    oracle10gサーバに対しoracle9iのクライアントインストールしてsql plusで接続確認するとTNS操作タイムアウトが発生します。既にインストールされているoracle9iのクライアントからは問題なく接続できます。ファイアウオールの設定は同じです。やはりoracle10gをインストールしないとだめなのでしょうか。

  • Oracle10gExpressをインストールした後、Oracle8iの接続ができなくなった(ORA-12154)

    お世話になります。 Oracle8iクライアントがインストールされている環境に、 Oracle10gExpressをインストールしました。 Oracle8iでインストールした、SQL Plusからは問題なく接続できるのですが、 AccessにODBC接続させていた、Oracleへの接続がうまくいかなくなりました。 よくわかっていないのですが、 どうも、Oracle10gのtnsnamesを参照しにいっているような気がします。 でも、oracle8iのtnsnames.oraの内容をそのまま、 10gのtnsnames.oraにコピーしましたが、だめでした。 何かご存知の方アドバイスいただけないでしょうか? よろしくお願いいたします。 ●8iのtnsnames.oraでうまくいっていた内容を、10gにコピーした内容です。(内容は変更せずにそのままコピーしました) test.xxx.CO.JP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = test) ) )

その他の回答 (5)

  • 回答No.5
  • tango7
  • ベストアンサー率42% (39/91)

そういえば昔、あるアプリケーションでOracleのODBCドライバはダメだけど、MSから出ているOracleのODBCドライバは接続できたことがありました。 確か、MS ODBC Driver for Oracle...そんな名前かと思います。 当時バージョンが2から2.5に上がった頃の話でした。 今もMSからOracle用のODBCドライバが出ているのではないでしょうか? 試す価値ありと思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

アドバイスありがとうございます。 ODBCドライバの一覧に該当のドライバーがありましたので試してみました。 Oracleのドライバーを使ったときとは異なり、ODBCの構成時に「接続テスト」というボタンがありませんでしたので、ACCESSを使って、作成したODBCを選択しテーブルのリンクを試してみましたが、 指定された接続識別子を解決できませんでした。 のエラーが出て駄目でした。

  • 回答No.4
  • tango7
  • ベストアンサー率42% (39/91)

今回の件に関してはサーバー環境は問題ないと思いますので、クライアント環境を見直すことだと思います。 >それとsqlnet.oraはサーバーの方のですか?それともクライアントの方でしょうか。 クライアント側です。 でも特に問題はなさそうですね。 tnsnames.oraの内容をアップしてもらえませんか? サーバローカルはIPC接続もあるので、それでうまくいっているのかもしれませんね。 あとtnspingの結果もアップしてもらえますか? 使用法は > tnsping 接続文字列 です。

共感・感謝の気持ちを伝えよう!

質問者からの補足

tnsnames.oraは以下のとおりです ************************** # tnsnames.ora Network Configuration File: C:\Oracle\product\10.1.0\Client_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. DEV = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = DEVSV001)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = dev.dev_domain) ) ) ************************** tnspingというものは知りませんでした。 実行した結果は以下の通りです。 ************************** パラメータ・ファイルを使用しました: C:\Oracle\product\10.1.0\Client_1\network\admin\sqlnet.ora エイリアスを解決するためにTNSNAMESアダプタを使用しました。 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = DEVSV001)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = dev.dev_domain))) OK (50ミリ秒) ************************** よろしくお願いします

  • 回答No.3
  • tango7
  • ベストアンサー率42% (39/91)

>SQLState=08004 >[Oracle][ODBC][Ora]ORA-12154:TNS:指定された接続識>別子を解決できませんでした。 ORA-12154はTNSNAMES.ORAに接続文字列が無い場合に発生するエラーです。 SQL*PLUSでは接続できているとの事ですので、まさか接続文字列を間違っているとは思いませんが...。 ODBCの設定の入力項目を一応見直してみてください。 >これってデータベースの名前が間違ってるということ >でしょうか・・・・そんなはずないんですが データベースの名前...ではないんですよね。 tnsnames.oraで設定した接続文字列、またはサービス名と言います。 ちょっとデータベースといわれているのが気になりました。 SIDなどと取り違えてはいないですよね? あと可能性があるとすれば、sqlnet.oraの設定でしょうか? NAMES.DEFAULT_DOMAIN に入っている値が、tnsnames.oraで使われていますか? NAMES.DEFAULT_DOMAIN=WORLD で tnsnames.oraが db1.world=... となっていれば、user/pass@db1 で接続できます。 しかし NAMES.DEFAULT_DOMAIN=oracle tnsnames.oraが db1.world=... となっていると、ORA-12154が発生します。 この場合、user/pass@db1.world と指定しなければなりません。 御確認ください。

共感・感謝の気持ちを伝えよう!

質問者からの補足

>データベースの名前...ではないんですよね。 >tnsnames.oraで設定した接続文字列、またはサービス名と言います。 SIDとグローバル・データベース名が別という事でしょうか?インストールの時に ”.”の前の文字列が勝手にSIDになったのでデータベースの名前=SIDだと思っていました。 ご指摘ありがとうございます! それとsqlnet.oraはサーバーの方のですか?それともクライアントの方でしょうか。 どちらにしてもNAMES.DEFAULT_DOMAINというパラメータは無く、 SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) とだけ記述してあります。 下でも補足しましたが、サーバー上からODBCの設定をして接続するのは出来るんですが、クライアントからやろうとすると繋がりません。 まず接続テストのボタンを押しただけで5分くらい固まった後パスワードを要求するダイアログが開きます。 パスワードを入れて接続するとさらに5分くらい固まった後、問題のエラーがポップアップします。SQL*PLUSでは何秒と待つことなく接続できるのですが・・・・。

  • 回答No.2
  • O_cyan
  • ベストアンサー率59% (745/1260)

>ORA-12154:TNS:指定された接続識別子を解決・・ 使用された接続識別子のタイプがネット・サービス名の場合、そのネット・サービス名がネーミング・メソッド・リポジトリで見つからないか、リポジトリが見つからないかだと思います。 まずグローバルデータベース名・ホスト名の確認をしてみてください。 その他は・・ ローカルネーミング(TNSNAMES.ORAファイル)を使用している場合 *Oracle Netプロファイル(SQLNET.ORA)のNAMES.DIRECTORY_PATHパラメータに値としてTNSNAMESが指定されていることを確認する。 *TNSNAMES.ORAファイルが適切なディレクトリに存在していてアクセスできることを確認する。 *接続識別子として使用したネット・サービス名がTNSNAMES.ORAファイルに存在することを確認する。 または、Oracle10gを例えば再インストールしたとかありますでしょうか? レジストリが正しく参照されていないのかもしれません。その場合も同様のメッセージが出ます。 環境変数でORACLE_HOMEを作り強制的に指定してもダメでしょうか? >ADOの設定ってどこでやるのですか・・ Accessを開きメニューのツールからマクロを選択しVisualBasicEditorを起動してVBのメニューのツールから参照設定をクリックすると表示されます。現在参照設定されているLibrayはチェックが付いています。 OracleならMicrosoftActiveXDataObjects2.1Librayがチェックされていれば大丈夫なはずです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

非常に丁寧な説明ありがとうございます。 なんとか解決できました。 色々勉強させていただきました。 本当にありがとうございます!!

質問者からの補足

最新バージョンのODBCドライバーをOTNから落とし、クライアントにインストールしましたが駄目でした。 ちなみにMicrosoftActiveXDataObjects2.1Librayにはチェックがついておりましたが、 MicroSoft ODBC Administratorでの接続テストの段階でエラーとなっているので、Accessは関係ないかなと思っています。 あと、Oracle10gをインストールしているサーバーにはインストール前に9iが入っていて、アンインストールしてから10gをインストールしました。10gのインストールも3度やり直しています。 サーバーでlsnrctlコマンドを使い、リスナーが認識しているサービス名を確認し、それがクライアントのtnsnames.oraのサービス名と同じことも確認しました。 サーバー上でODBC接続をすればなんの問題もなくうまくいくんですが、クライアントから接続しようとすると駄目なんです・・・・・

  • 回答No.1
  • O_cyan
  • ベストアンサー率59% (745/1260)

Accessの参照設定はどうでしょうか? ADOを設定してあるか等の確認は? MicrosoftActiveX Data Objects 2.? Libraryにチェックしてあるかとか・・ でも参照設定がしてない場合はメッセージでるはずですよね。 Oracle10gとODBCドライバがバージョン等で合っていないとか・・。 そのくらいしか思いつきませんが。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ODBCドライバのバージョンは10.01.00.02でした。 これは10gインストール時にインストールされたものなので合っていると思います。 ADOの設定ってどこでやるのですか?詳しくないものでわかりません。 補足ですが、先ほど接続テストをしたまましばらく放っておいたら以下のようなエラーのポップアップが出ました。 接続できませんでした。 SQLState=08004 [Oracle][ODBC][Ora]ORA-12154:TNS:指定された接続識別子を解決できませんでした。 これってデータベースの名前が間違ってるということでしょうか・・・・そんなはずないんですが

関連するQ&A

  • oracle10g ODBC設定

    oracleクライアントをインストールし直したら、 今まで正常に接続できていたデータベースにアクセスできなくなりました。 odbc adminで接続テストを行うと、 ORA-12154: TNS: 指定された接続識別子を解決できませんでした というエラーが表示されます。 原因が分かる方いらっしゃいますでしょうか? よろしくお願いします。

  • AccessからODBCでOracleに接続する際の環境

    AccessからODBCを使用してOracleに接続する際の環境について教えてください。 想定しているクライアントとサーバの環境は以下となるのですが、 >クライアント:WindowsXP + Access2003 >サーバ: Solaris + Oracle10g 上記以外にクライアント側にインストールする必要があるソフトウェアを教えてください。 ODBCドライバはWindowsXPに標準で入っていると思うので、 あとはOracle関係のソフト(Oracle Net Services?)だと思うのですが、 最低限どれが必要なのかが正確に知りたいです。 よろしくお願い致します。

  • EUCのORACLE10gデータベースに、ODBCにてACCESSで接続すると問題ありますか?

    このたび、社内のシステムでOracle10gが導入されまして、OSがRedhat Enterprise Linux v5で、Oracleは文字コードがEUCになるのですが、このデータベースに対して、ODBCを経由してMS ACCESSから接続したいと考えています。 この構成で、問題なく動作できるものでしょうか?既知の問題などありましたら、教えていただけますでしょうか。よろしくお願いします。

  • ACCESSにODBC経由でORACLE接続

    ACCESSのプロジェクト(帳票印刷など)ですが、データはORACLEに置いています。 ORACLEのクライアントをインストールしないで、ODBCを経由して、接続できますか?

  • ACCESSからODBC接続でORA-12504

    Access上でオラクルのテーブルのリンクを設定しようと していますが、「ORA-12504」のエラーが表示されてしまい 接続できず、困っています。 【エラー詳細】 ODBC-呼び出しが失敗しました。 [Oracle][ODBC][Ora]ORA-12154 TNS~ (#12154)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(♯0)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0) なお、SQLPlusで接続ができていますし、ODBCアドミニストレータ の接続テストも成功します。 Accessで問題があるのでしょうか? 【環境】 OS:WinXP x64 Access:003 Oracle:サーバ 10g(10.2.0.1) for 64-bit    :クライアント 10g(10.1.0.2) for 32-bit     ※64-bitのオラクルクライアントはAccessが      ドライバを認識しないため使用できませんでした。 何かわかりましたらご教授ください。 よろしくお願いします。

  • Oracle9i でODBC接続したい

    Oracle初心者です。 ODBC接続したいのですがうまくいきません。 【環境】 win2003サーバ(XPに上にVirtualPCを使ってたてたサーバ):Oracle9iインストール winXP:Oracle9iのインストールCDからODBCドライバのみインストール 【作業内容】 ○Win2003サーバ ・Net Configuration Assistant で ローカル・ネット・サービス名を登録し  正常に接続できることを確認。 ・DSNを登録し接続テストを実施 → 成功。 ○WinXP ・DSNを登録し接続テストを実施 → 失敗。    接続できませんでした。  SQLState=08004  [Oracle][ODBC][Ora]ORA-12154:TNS:サービス名を解決できませんでした。    という上記エラーメッセージが表示されます。  何か根本的に間違っているのかもしれませんが解決策がわかりません。  どうかお力を貸して下さい。  よろしくお願いします。

  • エクセル2003からODBCでoracleのデータを取り出す

    oracle10gをwindows2003serverにインストールしました。 oracleは完全な初心者です。 最終目的は、クライアントのエクセル2003からODBCでサーバーのoracleのデータを取り出すということを行う必要があります。 クライアントから接続するためにリスナーの設定を「Net Configuration Assistant」で行っています。 クライアント側からの接続テストで「接続中...ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません テストが失敗しました。」というエラーが出て接続ができません。 tnspingは成功します。リスナーは起動中となっています。 サーバー側にクライアントとしてのローカルネットワーク構成をして試してみても同じ状況でした。 どこに問題があるのでしょうか? サーバー:windows2003server クライアント:xp

  • ORACLE のバージョンアップに伴うODBC接続について

    オラクルのバージョンアップを行います。 クライアントで、サブシステムとしてアクセスによるODBC接続でリンクを張ってデータを利用していますが、影響があるのでしょうか? Oracle 10g Release2(10.2.0)    ?  ↓ Oracle 10g Release2(10.2.0.4)

  • Oracle10g SQL*PLUSにログインするには?

    Oracleを使うのが初でよくわかっていない者の質問です。 Oracle10gをインストールの中に 「データベースの構成の選択」という画面で 初期データベースを作成する→詳細 を選択し、SIDをdevにし、 「ステップ4/11」の画面では sysやsystemにdevというパスワードを設定しました。 インストール終了後、SQL*Plusを起動し ユーザー名sys パスワードdev ホスト文字列dev と入力したのですが、接続できません SQL*PLUSの各項目には何を入力するのが正しいのでしょうか?

  • VB2005からOracle10gへの接続

    いつもご参考にさせて頂いております。 今年からVB2005(VIsual Basic)を勉強しています。 データベース接続なんですが、Accessでの接続は上手くいきましたが、 Oracle10gがどうしても接続できません。 根本的に間違えているのかもしれないですが...。 どなたかOracle10gへの接続方法を教えて頂けませんでしょうか? また接続には色々種類があるみたいですが、どれがどの様なときに適切なのかも教えて頂ければ、とても助かります。 ご教授宜しくお願い致します。