2013-11-13 8 views
12

У меня есть Oracle 11, работающий на сервере Windows, и я зарегистрирован на том же сервере, который пытается использовать SQL Plus. Когда я пытаюсь подключиться, я получаю ORA-12154, хотя TNSPING и другая диагностика выглядят нормально.TNSPING OK, но sqlplus дает ORA-12154?

Может ли кто-нибудь предложить почему? Загрузка деталей ниже.


я могу использовать SQLPLUS, если я использую EZCONNECT как это ..

sqlplus EST/[email protected]/ORCL 

... но если я пытаюсь подключиться с помощью TNSNAMES как это ...

sqlplus EST/[email protected] 

... Я получаю ...

ORA-12154: TNS:could not resolve the connect identifier specified 

TNSPING работает OK

C:\Documents and Settings\user1>tnsping ORCL 

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 12-NOV-2013 12:41:14 

Copyright (c) 1997, 2010, Oracle. All rights reserved. 

Used parameter files: 
E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\sqlnet.ora 


Used TNSNAMES adapter to resolve the alias 
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.15)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)) 
) 
OK (20 msec) 

И в слушателя выглядит следующим образом:

C:\Documents and Settings\user1>lsnrctl services 

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-NOV-2013 12:02:59 

Copyright (c) 1991, 2010, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) 
Services Summary... 
Service "CLRExtProc" has 1 instance(s). 
    Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... 
    Handler(s): 
     "DEDICATED" established:0 refused:0 
     LOCAL SERVER 
Service "orcl" has 1 instance(s). 
    Instance "orcl", status READY, has 1 handler(s) for this service... 
    Handler(s): 
     "DEDICATED" established:55 refused:0 state:ready 
     LOCAL SERVER 
Service "orclXDB" has 1 instance(s). 
    Instance "orcl", status READY, has 1 handler(s) for this service... 
    Handler(s): 
     "D000" established:0 refused:0 current:0 max:1022 state:ready 
     DISPATCHER <machine: MARIEL, pid: 2400> 
     (ADDRESS=(PROTOCOL=tcp)(HOST=mariel)(PORT=1045)) 
The command completed successfully 

И это

C:\Documents and Settings\user1>lsnrctl status 

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-NOV-2013 12:29:21 

Copyright (c) 1991, 2010, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 
Start Date    14-NOV-2013 11:41:10 
Uptime     0 days 0 hr. 48 min. 11 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Listener Parameter File E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\listener.ora 
Listener Log File   e:\app\administrator\diag\tnslsnr\mariel\listener\alert\log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.15)(PORT=1521))) 
Services Summary... 
Service "CLRExtProc" has 1 instance(s). 
    Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "orcl" has 1 instance(s). 
    Instance "orcl", status READY, has 1 handler(s) for this service... 
Service "orclXDB" has 1 instance(s). 
    Instance "orcl", status READY, has 1 handler(s) for this service... 
The command completed successfully 

Вот различные конфигурационные файлы:

LISTENER.ORA

# listener.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\listener.ora 
# Generated by Oracle configuration tools. 

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

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.15)(PORT = 1521)) 
    ) 
) 

ADR_BASE_LISTENER = E:\app\Administrator 

tnsnames.ora

# tnsnames.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\tnsnames.ora 
# Generated by Oracle configuration tools. 

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

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

sqlnet.ora

# sqlnet.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\sqlnet.ora 
# Generated by Oracle configuration tools. 

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT. 

SQLNET.AUTHENTICATION_SERVICES= (NTS) 

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) 

ответ

12

Создайте переменную окружения TNS_ADMIN, которая указывает на каталог, в котором находится ваш файл tnsnames.ora. Затем попробуйте подключиться к sqlplus.

Если это работает, то, возможно, вы, возможно, установили клиентское программное обеспечение Oracle, и когда вы запустите sqlplus, он ищет файл tnsnames.ora в вашем доме клиента.

- Инструкции по добавлению переменной среды TNS_ADMIN в окнах
1. Зайдите в панель управления/система
2. выберите Дополнительные параметры системы
3. Выберите вкладку «Дополнительно», а окружение кнопки переменная в дно.
4. Создайте новую переменную TNS_ADMIN и укажите путь, в котором хранятся файлы .ora. например C: \ app \ oracle \ product \ 11.2.0 \ client_1 \ network \ admin

+0

Отлично, это сделало работу, спасибо. – glaucon

4

Sqlplus предоставит эту ошибку, если у вас есть знак at (@) в вашем пароле, который вы делаете. Sqlplus считает, что вы вводите строку подключения в качестве параметра.Измените свой пароль (вы можете сделать это с помощью SQL Developer).

Мораль: не использовать знаки at в символах Oracle.

+0

И здесь я тратил часы, царапая себе голову, что я сделал не так. Какая глупость в поле пароля SQL * Plus! Большое спасибо за ваш ответ, я бы не подумал об этом сам. – toddlermenot

 Смежные вопросы

  • Нет связанных вопросов^_^