2014-01-07 2 views
0

서버에 Oracle 11g가 설치되어 있고 .Net oracle 클라이언트가 데이터베이스에 액세스합니다. 어제 틸
내가이 연결 문자열을 사용하여 클라이언트에서 연결되었다서버를 다시 시작한 후 ORA-12514 오류가 발생했습니다.

User ID=dbcplas;Password=pwd123;Data Source=(DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = 172.17.26.7)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl.cplas3.com))) 

틸 어제는 같은 클라이언트에서 오라클 SQL Developer를 사용 할 수 있었다.
오늘 아침 우리는 maintanance를 위해 서버를 다시 시작했습니다. 서버를 다시 시작한 후에 클라이언트 .Net 응용 프로그램 또는 sqldeveloper에서 로그인 할 수 없습니다.
서버 시스템의 SQL Plus를 통해 로그인 할 수 있습니다.
그 외에도 다른 방법으로 로그인 할 수 없습니다.
서버 측 sql-developer도 작동하지 않습니다.

# listener.ora Network Configuration File: E:\app\administrator\product\11.2.0\dbhome_1\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) 
     (PROGRAM = extproc) 
     (ENVS = "EXTPROC_DLLS=ONLY:E:\app\administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") 
    ) 
) 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.26.7)(PORT = 1521)) 
    ) 
) 

ADR_BASE_LISTENER = E:\app\administrator 
LISTENER.ORA에게

C:\Users\Administrator>lsnrctl status 

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 07-JAN-2014 15:20 
:42 

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.26.7)(PORT=1521)) 
) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ 
ction 
Start Date    07-JAN-2014 13:17:40 
Uptime     0 days 2 hr. 3 min. 7 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Listener Parameter File E:\app\administrator\product\11.2.0\dbhome_1\network\a 
dmin\listener.ora 
Listener Log File   e:\app\administrator\diag\tnslsnr\cplas3\listener\aler 
t\log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.17.26.7)(PORT=1521))) 
Services Summary... 
Service "CLRExtProc" has 1 instance(s). 
    Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... 
The command completed successfully 

:

LSNRCTL 서비스 :

C:\Users\Administrator>lsnrctl services 

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 07-JAN-2014 15: 
:45 

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.26.7)(PORT=1521 
) 
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 
The command completed successfully 

LSNRCTL 상태
나는 서버에서 자세한 내용을 아래에있다

SQLNET.ORA

# sqlnet.ora Network Configuration File: E:\app\administrator\product\11.2.0\dbhome_1\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) 


TNSFILES.ORA 

    # tnsnames.ora Network Configuration File: E:\app\administrator\product\11.2.0\dbhome_1\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 = 172.17.26.7)(PORT = 1521)) 
     (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = orcl.cplas3.com) 
     ) 
    ) 

tnsping 결과 - orcl.cplas3.com

C:\Users\Administrator>tnsping orcl.cplas3.com 

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 07-JAN-2 
014 15:30:44 

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

Used parameter files: 
E:\app\administrator\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 

TNS-03505: Failed to resolve name 

tnsping 결과 -

C:\Users\Administrator>tnsping orcl 

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 07-JAN-2 
014 15:31:22 

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

Used parameter files: 
E:\app\administrator\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 


Used TNSNAMES adapter to resolve the alias 
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2 
6.7)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.cpl 
as3.com))) 
OK (1560 msec) 

오류 ORCL : 012,380, . NET 응용 프로그램 :
ORA-12514 TNS : Listener는 현재 연결 설명자의 서비스 요청을 알지 못합니다.

lsnrctl status의 상태가 orcl입니까?
orcl 서비스를 시작하려고했습니다. 하지만 그 말은 이미 시작되었습니다 ..
무엇이 문제일까요 ??

+1

SQL * Plus를 통해 연결할 수있는 경우 데이터베이스가 작동하며 리스너보다 먼저 시작된 경우에도 등록되어 있어야합니다. 그러나 당신은'alter system register '를 사용해서 그것을 강요 할 수있다. 그것을 시도해보고 lsnrctl이 이제 서비스를 보여 주는지 확인하십시오. 그렇지 않다면'local_listener' 매개 변수는 무엇으로 설정되어 있습니까? –

+0

@AlexPoole 나는 lsnrctl을 시도했다. 그것은 orcl 서비스가 아니다. local_listener에는 'value'열에 값이 없습니다. 그것을 설정해야합니까? – Olivarsham

+1

[기본값은 서버의 호스트 이름] (http://docs.oracle.com/cd/E18283_01/server.112/e17110/initparams116.htm); 서버 이름은 여전히'172.17.26.7'로 해결됩니까? 로그 파일 'e : \ app \ administrator \ diag \ tnslsnr \ cplas3 \ listener \ aler t \ log.xml'을 보면 사용하려는 서버 이름을 볼 수 있습니다. IP 주소를 사용하도록 설정할 수는 있지만 필수는 아닙니다. 나는 IP가 DHCP에 의해 할당되지 않은 정적이라고 가정한다. –

답변

4

의견에서 default local_listener parameter은 새 네트워크 어댑터의 동적 IP를 사용하려고 시도하는 것 같아서 리스너가 사용하는 동일한 주소를 사용하지 않는 것 같습니다.이 문제를 해결하는 가장 간단한 방법은 수동으로 매개 변수를 설정하는 아마 :

alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.26.7)(PORT=1521))' scope=memory; 
alter system register; 

아니면 당신이 짧은 버전을 사용할 수 있다고 생각을하지만, 지금은 확인할 수 없습니다 : 그 경우

alter system set local_listener = '172.17.26.7:1521' scope=memory; 
alter system register; 

lsnrctl servicesorcl이 표시되고 만족 스럽다면 memoryboth으로 변경하고 다음 DB를 다시 시작할 때까지 계속 실행되도록하십시오.

또 다른 버전은 tnsnames.ora에 수신기를 정의한 다음 local_listener 값에 해당 별칭을 사용하는 것입니다. listener.oratnsnames.ora (물론 모든 클라이언트) 만 변경해야하므로 고정 IP가 변경된 경우 변경하기가 더 쉬워 지므로 DB 매개 변수를 직접 수정할 필요가 없습니다. 아마도 DB와 파일을 관리하는 사람이 다른 경우에 유용 할 것입니다. 그러나 조금 깔끔할지도 모른다.

+0

나는 첫 번째 명령을 시도했다. 지금은 잘 작동하고 있습니다. local_listener = '(ADDRESS = (PROTOCOL = TCP) (호스트 = 172.17.26.7) (포트 = 1521))'scope = both; 그게 무슨 용도예요? – Olivarsham

+1

그것은 그것을 지속시킵니다. 'scope = memory' 버전을 실행하면 실행중인 인스턴스에만 영향을 미칩니다. DB가 다시 시작되면 잊어 버리고 해당 매개 변수의'spfile'으로 돌아갑니다. 'scope = both' (또는이 시점에서'scope = spfile')를하면, 변경된 매개 변수를'spfile'에도 쓰게됩니다; 그래서 다음 재시작시에도 여전히 해당 설정을 사용하게됩니다. [자세한 내용은 설명서를 참조하십시오.] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_2014.htm#SQLRF53147). –

+0

감사합니다 .. 모든 것이 지금 해결되었습니다 .. – Olivarsham

관련 문제