Как получить доступ к локально установленному Oracle 11g через PL/SQL Developer 9

Мне нужно разрабатывать в PL SQL с использованием разработчика PL/SQL, но я не знаю, как заставить разработчика oracle 11g и pl/sql работать на одной машине, потому что разработчику pl/sql нужен 32-битный клиент oracle, установленный, когда oracle не требуется клиент, когда мы работаем на локальной машине. Вот что я сделал:

1) Я установил 64-разрядную версию oracle 11g Enterprise на диск d:\ 2) Затем я установил 32-разрядную версию клиента oracle на диск c: (разработчик pl/sql может работать только с 32-разрядной версией oci.dll) 3) После того, как я перешел к папку client_home%->Network->Admin и поправил файл tnsname.ora и написал туда свою настройку подключения, которая была скопирована из моего оракула 11 g home_dir..tnsnames.ora

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

После того, как я установил разработчика PL/SQL в c:\plsqldev\ и перезагрузил свою машину.

Итак, теперь я могу подключиться к своей базе данных с помощью sql * plus, расположенного в моем каталоге базы данных оракула, но когда я пытаюсь подключиться к своему оракулу с помощью моего клиента sql * plus, он говорит об ошибке протокола tns, когда я пытаюсь подключиться с помощью разработчика pl / sql. говорит, что не удалось разрешить указанный идентификатор соединения. Что я должен делать? Не могли бы вы мне помочь, пожалуйста

Добавлено: я удалил параметр TNSNAMES из NAMES.DIRECTORY_PATH (как в серверных, так и в клиентских файлах sqlnet.ora), и теперь, когда я вхожу в систему, он говорит: ora-12154 tns не может разрешить указанный идентификатор подключения, но он все еще успешно подключается к БД, когда я пытаюсь подключиться к СЕРВЕРУ - 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 developer 10.0.2 работать с локально установленным Oracle 11.2 x64:

1) Сначала нам нужно установить Oracle (я установил его в d:\app)

2) Затем нам нужно загрузить и установить мгновенный клиент oracle (я обнаружил, что в мгновенном клиенте нет никаких файлов конфигурации (даже каталога network->admin), нужны только dll, такие как oci.dll и т.д.. примечание: в первый раз я выбрал "администратора", который имеет свой собственный файл конфигурации внутри, похоже, такой тип клиента нужен только для удаленного доступа к Oracle). Я установил (распаковал) свой мгновенный клиент в c:\app\ ;

3) Откройте разработчик PL/SQL, перейдите в меню «Инструменты» -> «Настройки» -> «Подключение» и установите «Oracle Home» в домашний каталог вашего мгновенного клиента (я указал c: \ app), но обычно он уже существует в папке. вниз, и нам просто нужно щелкнуть раскрывающийся список и выбрать OraClient11g_home1_32bit, таким образом я устанавливаю путь к библиотеке oci (выбирается из раскрывающегося списка). Нажмите «Применить» и выйдите из разработчика pl/sql;

4) Теперь нам нужно создать две переменные окружения(первая укажет путь к папке с конфигами подключения, вторая язык(если не прав поправьте)) ->

  • TNS_ADMIN = %SERVER_HOME%\NETWORK\ADMIN\ (я указал D:\app\Light\product\11.2.0\dbhome_1\NETWORK\ADMIN)

  • TNS_LANG = АМЕРИКАНСКИЙ_СНГ.CL8MSWIN1251

5) Перезагружаемся (опционально) и запускаем pl/sql developer - должно быть три алиаса подключения, я выбрал orcl, ввел логин, пароль и нажал ОК и все заработало )));

Спасибо всем ответившим в этой теме, надеюсь кому-нибудь поможет


person Tnsman    schedule 11.09.2013    source источник
comment
Просто установите 32-разрядный клиент Oracle на той же машине и укажите PL/SQL Developer на его %ORACLE_HOME%.   -  person ThinkJet    schedule 11.09.2013
comment
Спасибо, ThinkJet, но я уже установил 32-битный клиент на свою машину и указал разработчику pl/sql домашний путь моего клиента (tools->preferences->connection->Oracle Home=c:\Oracle_client_home, а также установил библиотеку OCI=C :\app\product\11.2.0\client_1\bin\oci.dll). Я понятия не имею, что делать :(   -  person Tnsman    schedule 11.09.2013
comment
TNS не удалось разрешить указанный идентификатор соединения - это ошибка, которую я получаю при попытке подключиться к моей БД   -  person Tnsman    schedule 11.09.2013
comment
Попробуйте изменить файл sqlnet.ora, расположенный в том же каталоге, что и tnsnames.ora: установите SQLNET.AUTHENTICATION_SERVICES = (NONE) и NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)   -  person ThinkJet    schedule 11.09.2013
comment
Я сделал то, что ты сказал. Теперь, когда я вхожу в систему, он остается в течение 10 секунд, а затем предупреждает: тайм-аут подключения, а затем окно входа в систему закрывается.   -  person Tnsman    schedule 11.09.2013
comment
Когда я подключаюсь к клиентскому sql* plus, он говорит, что TNS: ошибка адаптера протокола. Но когда я подключаюсь к серверам SQL * plus, он подключается нормально   -  person Tnsman    schedule 11.09.2013
comment
В порядке. Последняя попытка: удалить TNSNAMES из списка: NAMES.DIRECTORY_PATH= (HOSTNAME) . Если это предложение не помогает, вам необходимо предоставить дополнительную информацию о вашей конфигурации (добавьте текст всех файлов конфигурации, описанных выше, плюс listener.ora к тексту вопроса). P.S. Также проверьте форматирование текста вопроса.   -  person ThinkJet    schedule 11.09.2013
comment
Если файл tnsnames.ora вашего клиента точно такой же, как вы его разместили, это ошибочно — у вас не должно быть пробелов перед ORCL.   -  person Frank Schmitt    schedule 11.09.2013
comment
Я исправил это (пробел перед ORCL), но он все еще не работает.   -  person Tnsman    schedule 11.09.2013
comment
Проверил собственные конфиги и нашел только одно существенное отличие: во всех местах указано 127.0.0.1 вместо localhost. Также просмотрите связанные вопросы в StackOverflow.   -  person ThinkJet    schedule 11.09.2013
comment
Вероятно, вам следует добавить решение в качестве ответа и принять его, чтобы оно не отображалось как открытый вопрос.   -  person Mt. Schneiders    schedule 01.05.2019


Ответы (1)


проверьте имя порта в файле tns, оно должно быть 1521, и где XE - это мое локальное имя базы данных, подобное этому E = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = Shantu) (PORT = 1521)) (CONNECT_DATA = (SERVER = ВЫДЕЛЕННЫЙ) (ИМЯ_СЛУЖБЫ = XE) )

)

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO)) )

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

person veeru    schedule 19.05.2017