3

PL/SQL開発者を使用してPL SQLで開発する必要がありますが、Oracleがインストールされていないときにpl/sql開発者が32ビットOracleクライアントをインストールする必要があるため、Oracle 11gとpl/sql開発者の両方を同じマシンで動作させる方法がわかりませんローカルマシンで作業するときはクライアントが必要です。これは私がしたことです:

1) ドライブ d:\ に oracle 11g 64 ビット エンタープライズをインストールしました。 client_home%->Network->Admin フォルダと tnsname.ora ファイルを修正し、そこに oracle 11 g home_dir..tnsnames.ora からコピーした接続設定を書き込みました

    MyOracle =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
)

c:\plsqldev\ に PL/SQL 開発者をインストールし、マシンを再起動した後。

これで、Oracle データベース ディレクトリにある sql*plus を使用してデータベースに接続できますが、クライアント sql*plus を使用して Oracle に接続しようとすると、pl/sql 開発者を使用して接続しようとすると tns プロトコル エラーが表示されます。指定された接続識別子を解決できませんでした。私は何をすべきか?私を手伝ってくれますか

追加: TNSNAMES パラメータを NAMES.DIRECTORY_PATH (サーバーとクライアントの sqlnet.ora ファイルの両方) から削除しました。ログインすると、 ora-12154 tns could not resolve the connect identifier specified と表示されますが、それでも DB への接続に成功すると、 SERVER - s sql*plus に接続しようとしています。

ここに私の設定ファイルがあります:

**servers listener.ora **

        SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = D:\app\Light\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Light\product\11.2.0\dbhome_1\bin\oraclr11.dll")
        )
      )

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
ADR_BASE_LISTENER = D:\app\Light

サーバーsqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NONE)

NAMES.DIRECTORY_PATH= (HOSTNAME)

サーバー tnsname.ora

 LISTENER_ORCL =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


    ORACLR_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
        (CONNECT_DATA =
          (SID = CLRExtProc)
          (PRESENTATION = RO)
        )
      )

    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )              

クライアント sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NONE)

NAMES.DIRECTORY_PATH= (HOSTNAME)

クライアント tnsnames.ora

    ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

追加: はい!)) 最後に解決策を見つけました: :) クライアントの代わりにサーバーの構成ファイルを使用する必要がありますが、oci.dll(32bit) はクライアント ディレクトリから取得する必要があります。基本的な手順について説明します-pl/sql開発者10.0.2をローカルにインストールされたOracle 11.2 x64で動作させる方法:

1) まず、Oracle をインストールする必要があります (私は d:\app にインストールしました)。

2)次に、Oracleインスタントクライアントをダウンロードしてインストールする必要があります(インスタントクライアントには構成ファイル(ネットワーク>管理ディレクトリでさえも)がないことがわかりました。oci.dllなどのdllが必要でした..注:内部に独自の構成ファイルを持つ「管理者」を初めて選択したのですが、この種のクライアントはOracleへのリモートアクセスにのみ必要なようです)。インスタント クライアントを c:\app\ にインストール (解凍) しました。

3) PL/SQL developer を開き、tools->preferences->connection に移動し、"Oracle Home" フィールドをインスタント クライアントのホーム ディレクトリ (私は c:\app と入力しました) に設定しますが、通常はドロップに既に存在します。ドロップダウンリストをクリックして、 OraClient11g_home1_32bit を選択するだけです。このようにして、ociライブラリパスを設定します(ドロップダウンリストから選択)。[適用] をクリックして、pl/sql 開発者を終了します。

4) ここで、2 つの環境変数を作成する必要があります (最初の 1 つは接続構成を含むフォルダーへのパスを表示し、2 番目は言語 (正しくない場合は訂正してください)) ->

  • TNS_ADMIN = %SERVER_HOME%\NETWORK\ADMIN\ (私は D:\app\Light\product\11.2.0\dbhome_1\NETWORK\ADMIN を置きました)

  • TNS_LANG = AMERICAN_CIS.CL8MSWIN1251

5) (オプションで) 再起動してから、pl/sql 開発者を開始します - 3 つの接続エイリアスが必要です。

このトピックで回答してくれたすべての人に感謝します。誰かの助けになることを願っています

4

1 に答える 1

0

tns ファイルのポート名を確認してください。1521 にする必要があります。XE は、次のようなローカル データベース名です E = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Shantu)(PORT = 1521)) (CONNECT_DATA = (SERVER = 専用) (SERVICE_NAME = XE) )

)

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (プレゼンテーション = RO) ) )

ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )

于 2017-05-19T19:34:58.083 に答える