14

私は SQL Server ユーザーです。

私はOracleを使用しているプロジェクトにいます(めったに使用しません)。ODBC接続を作成して、MS Access経由でデータにアクセスできるようにする必要があります。自分のマシンにoraHome90というアプリケーションがあります。「ネット設定ユーティリティ」でリスナーと呼ばれるものの設定ができるようですが、「ローカルネットサービス名の設定」も行う必要があると思います。IT サポートから、ODBC 接続をセットアップするための情報が提供されました。思いつく限りの組み合わせを試しました。Oracle サーバー データベースに「ログイン」するためのテストに合格するテストを通過できます。ODBC 接続を作成しようとすると、次のエラーが発生します: ORA-12154: TNS: サービス名を解決できませんでした。

ゼロから始めたいと仮定し、次の情報でデータベースに接続できるはずです….. 何か提案やコメントはありますか? 注: 最終的に、プロジェクトには Web サイトの .ASP ページがデータを照会しますが、最初に、MS Access を介した ODBC 接続を使用してデータを表示できることを証明する必要があります。

Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'Oracle Connection
Dim ocst
Dim oconn

ocst = "Provider=OraOLEDB.Oracle;" & _ 
        "Data Source=DATASOURCE;" & _ 
        "User ID=CHIJXL;" & _ 
        "Password=password;" 

set oconn = CreateObject("ADODB.Connection")
4

22 に答える 22

9

http://ora-12154.ora-code.comから

ORA-12154 : TNS: 指定された接続識別子を解決できませんでした
原因: 接続識別子を使用してデータベースまたは他のサービスへの接続がリクエストされましたが、構成されたネーミング・メソッドのいずれかを使用して、指定された接続識別子を接続記述子に解決できませんでした. たとえば、使用された接続識別子のタイプがネット・サービス名である場合、ネーミング・メソッド・リポジトリでネット・サービス名が見つからないか、リポジトリが見つからないか到達できませんでした。
アクション:

  • ローカル・ネーミング (TNSNAMES.ORA ファイル) を使用している場合:

  • Oracle Netプロファイル(SQLNET.ORA)のNAMES.DIRECTORY_PATHパラメータの値の1つとして「TNSNAMES」がリストされていることを確認してください。

  • TNSNAMES.ORA ファイルが存在し、適切なディレクトリにあり、アクセス可能であることを確認してください。

  • 接続識別子として使用されるネット・サービス名が TNSNAMES.ORA ファイルに存在することを確認してください。

  • TNSNAMES.ORA ファイルのどこにも構文エラーがないことを確認してください。一致しない括弧またははぐれた文字を探します。TNSNAMES.ORA ファイルにエラーがあると、使用できなくなる場合があります。

  • ディレクトリ命名を使用している場合:

  • Oracle Netプロファイル(SQLNET.ORA)のNAMES.DIRETORY_PATHパラメータの値の1つとして「LDAP」がリストされていることを確認します。

  • LDAP ディレクトリ サーバーが起動していて、アクセス可能であることを確認します。

  • 接続識別子として使用されるネット・サービス名またはデータベース名がディレクトリに構成されていることを確認してください。

  • 完全修飾ネット サービス名または完全な LDAP DN を接続識別子として指定して、使用されているデフォルト コンテキストが正しいことを確認します。

  • 簡易接続ネーミングを使用している場合:

  • Oracle Netプロファイル(SQLNET.ORA)のNAMES.DIRETORY_PATHパラメータの値の1つとして「EZCONNECT」がリストされていることを確認します。

  • 指定されたホスト、ポート、およびサービス名が正しいことを確認してください。

  • 接続識別子を引用符で囲んでみてください。ネーミングの詳細は、『Oracle Net Services管理者ガイド』またはOracleオペレーティング・システム固有のガイドを参照してください。

于 2008-10-15T19:26:59.717 に答える
5

TNSNAMESネーミングを使用していると仮定して、次のことを行います。

  • OraHome90に関連付けられたnetwork/adminサブディレクトリにtnsnames.oraファイルを作成/変更して、Oracleデータベースのエントリを含めます。
> SERVICENAME_alias =
>    (DESCRIPTION =
>     (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521))
>     (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))

これは、1521の標準Oracleポートを使用していることを前提としています。servicename_aliasは、ローカルシステムで使用する任意の名前にすることができることに注意してください。(SERVICENAME = SERVICENAME)の代わりに(SID = SERVICENAME)を指定する必要がある場合もあります。

  • tnsping servicename_aliasを実行して、接続を確認します。先に進む前に、これを機能させてください。これにより、12154エラーを過ぎたかどうかがわかります。
  • 接続が良好であると仮定して、コントロールパネルを使用してODBC DSNを作成し、選択したOracle用のODBCドライバーを指定します(通常、少なくともMicrosoft ODBCドライバーがあり、概念実証として適切に機能するはずです)。あなたがDATASOURCEに付けた名前を想定します。ODBC構成のサーバー名としてservicename_aliasを使用します。
  • この時点で、Accessを介してデータベースに接続できるはずです。私はVBプログラマーではありませんが、[ファイル]->[外部データの取得]->[リンクテーブル]に移動して、ODBCソースに接続できるはずです。私はあなたのコードも同様に機能すると思います。
于 2008-10-15T23:23:54.433 に答える
4

このMSDN POSTの #7 を参照すると、レジストリ エントリを追加するとうまくいきました。Vs2010、et oracle 11.0 をインストールしました。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE でレジストリ キー「TNS_ADMIN」を確認します。存在する場合は、「Dir:\app\product\11.1.0\client_1\network\admin」として正しい値であることを確認してください。キーが表示されない場合は、キーを作成し、以下のように適切な値を設定します。Regedit->HKEY_LOCAL_MACHINE->Software->Oracle->NEW->StringValue を右クリックし、TNS_ADMIN という名前を付け、値「X:\app\product\11.1.0\client_1\network\admin」を指定します</p>

于 2013-05-29T15:45:59.330 に答える
3

この問題を解決するのに何時間も苦労しましたが、TNS_ADMIN という環境変数が My Computer => Properties => Advanced => Environment Variables => TNS_ADMIN というエントリのシステム変数で設定されていることがわかりました。Tnsnames.ora エントリのデフォルト パスを変更するために、TNS_ADMIN が追加されました。これは、すべてのネットワーク コンピュータに対して一般的な tnsnames.ora エントリを設定できるネットワーク環境で使用する場合に便利です。tnsnames.ora のデフォルト パスを確認するには、TNS_ADMIN にデフォルト パスを追加します。

于 2012-02-21T09:53:42.773 に答える
2

フォルダ構造に埋め込まれたスペースとは関係ありません。

私も同じ問題を抱えていました。しかし、TNS_HOME という環境変数 (システム レベルとユーザー レベルの両方で定義) を作成し、TNSNAMES.ORA が存在するフォルダーを指すようにすると、問題は解決しました。出来上がり!

ヴェンキ

于 2014-04-02T21:18:13.150 に答える
2

file で定義されている tns 名の先頭にスペースがある場合、tnsnames.oraodbc などの一部のコネクタでこのエラーが発生する可能性があります。先頭の空白文字を削除します。

于 2012-01-11T11:51:53.760 に答える
2

@Warren と @DCookie がソリューションをカバーしています。強調すべきことの 1 つは、tnsping. これを使用して、接続を試みる前に TNSNames が正しいことを証明できます。

tnsnames を正しく設定したら、ODBC を使用するか、ネイティブの Oracle 接続を使用するTOraを試すことができます。TOra または類似のもの (TOAD、SQL*Plus など) は、SQL のデバッグと改善に非常に役立ちます。

最終的に ASP.net に接続するときは、Oracle データ接続ライブラリを使用できることを忘れないでください。多くのリソースについては、Oracle.comを参照してください。

于 2008-10-15T23:46:52.873 に答える
2

ああああ!! 私はこれに再び遭遇しました!!!

ToadForOracle を C:\ またはパスに括弧のない任意のディレクトリにインストールするだけです。


私の場合は、x64 PC を使用していて、古い Oracle 9i と 32 ビット ドライバーをまだ使用しているためです。

Oracle データベースで SQL Reporting Services を使用しています。問題は、Visual Studio (入札) へのパスに含まれる角かっこです。Oracle は、括弧で囲まれたパスで始まるアプリを好みません。

パスに括弧がある場合の RDBMS 10g XE の問題

そこで、「Program Files (x86)」の短いパス名として Progra~2 を使用して Visual Studio を開くための BAT ファイルを作成しました。

BAT ファイルの内容は次のとおりです。

rem Progra~2 is short path name for "Program Files (x86)" and works around an Oracle client bug that doesn't like the ()'s in the path
start /B "C:\Progra~2\Microsoft Visual Studio 9.0\Common7\IDE" "C:\Progra~2\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

この BAT ファイルに StartBIDS.BAT という名前を付けて、次のディレクトリに配置します。

"C:\Program Files\Microsoft SQL Server\Start BIDS.bat"

次に、デスクトップとスタート メニューに BAT ファイルへのショートカットを作成し、ショートカット アイコンを変更します。これにより、Oracle での作業に使用する TOAD、Visual Studio、BIDS などのアプリを開くことができます。

アップデート:

または、ジャンクションを作成します。

mklink /J "C:\Program Files (x86)\" "C:\Program Files x86\"

次に、ショートカットの括弧を削除します。

ここに画像の説明を入力

于 2015-10-08T06:10:01.373 に答える
1

私は同じ問題を抱えていて、同じエラーが表示されていました。私の TNSNAMES:ORA ファイルも問題ありませんでしたが、ファイアウォールがアクセスをブロックしているため問題があったようです。そのため、ファイアウォールがデータソースへのアクセスをブロックしていないことを確認することをお勧めします。

于 2011-04-12T10:43:44.517 に答える
1

この手順を使用してこの問題を修正しました。

まず、同じディレクトリまたはドライブをインストールしていない場合、このエラーが発生しました。

しかし、答えはここにあります。

  1. 管理者としてウィンドウにログインします。
  2. コントロール パネルに移動します。
  3. システムのプロパティをクリックし、環境をクリックします
  4. OS 変数を見つけて、名前を「TNS_ADMIN」に変更します。

    ここに画像の説明を入力

  5. そして、値を「tnsnamesのディレクトリアドレス」に変更します ここに画像の説明を入力

  6. システムを再起動します。

  7. おめでとうございます。
于 2017-04-10T13:03:41.517 に答える
0

同じ名前の 32 ビット DSN と 64 ビット DSN がある場合、Windows は自動的に 64 ビット DSN を選択し、アプリケーションが 32 ビットの場合、このエラーが表示されます。ただ気をつけてください。

于 2015-11-12T09:40:37.080 に答える
0

私はこれに1時間費やしました.私はOracleに慣れていないので、完全に混乱していました..

状況:

Visual Studio 2012 Oracle 開発者ツールをインストールしました。これを行ったときに、TOAD の TNS エントリを含むドロップダウンのアイテムを失いました。Visual Studio AND TOAD からこのエラーが発生していました!! なんて!そのため、環境変数 TNS_ADMIN を「ALL USERS」の下に追加し、.ora ファイルへのパスを追加しました (これは、壊れるまで機能していたため、正常に機能していました)。ヒキガエルはその変化を拾いました。それでもVisual Studioは私に愛を与えません...それでも同じエラーが発生します。次に、環境変数をユーザー変数に追加しました.. VIOLA!!

環境変数がシステムとユーザーに設定されていることを確認します

于 2013-01-10T01:39:29.113 に答える
0

同様の問題もありました。tnsnames.ora で接続文字列に複数のエイリアスを提供していたことがわかったのは、次のようなものです。

svc01, svc02=(説明=(アドレス=(プロトコル=TCP)(ホスト=xxxx)(ポート=50))(CONNECT_DATA=(サーバー=専用)(サービス名=yyyysvc.world)))

そのため、ODBC を使用して接続を作成するときに、TNS サービス名の値を選択すると、自動入力で「svc01」が表示されました (余分なコンマがあることに注意してください)。コンマを削除するとすぐに、機能し始めました。

于 2015-08-27T18:31:39.407 に答える
0

私の場合、エラーは、2 つの Oracle クライアントがあるためです。これが解決策です。

ローカル IIS では Oracle ORA-12154 エラーが発生するが、Visual Studio 開発サーバーでは発生しない

于 2014-10-02T13:13:45.443 に答える
0

Oracle Database Client を再インストールすることで問題を解決しました。どういうわけか、ワークステーションの 1 つでインストールが成功しませんでしたが (ログは記録されていませんでした)、Oracle ディレクトリのサイズ/ファイル/フォルダーを動作中のクライアント ワークステーションと比較すると、かなりの量のファイルが欠落していました。クリーン インストールを実行すると、すべてが完全に機能しました。

于 2014-07-30T14:57:37.900 に答える
0

SID サービスのみを再起動します。たとえば、SID名= orclの場合、orclに関連するすべてのサービスを再起動する必要があり、問題は解決されます

于 2014-02-06T11:59:52.483 に答える
0

何時間もの問題を解決しました。Beta Entity Framework for Oracle をインストールし、ビジュアル スタジオ 2010 MVC 3 プロジェクトで、タブ .NET の下で Oracle.DataAccess を参照していました ... これにより、「Oracle ORA-12154: TNS: できませんでした.. 。" エラー。最後に、古い 10.2.0.100 バージョンの dll を使用して、c:\Oracle\product の下にある以前の Oracle インストールを参照しました。最後に、それは今動作します。それが他の誰かに役立つことを願っています。

于 2011-06-09T17:31:12.883 に答える
0

tnsnames.ora ではなく tsnames.ora というファイル名のタイプミスが原因で、この問題が発生しました

于 2015-12-15T15:05:19.513 に答える