2013-02-15 2 views
0

OS 사용자가 oracle 인 우분투에 Oracle을 설치했습니다. 그때 내가 어떤 오류가 발생하지 않는 오라클 SID를 언급하지 않는 경우, 그러나다른 OS 사용자와 함께 oracle에 연결할 수 없습니다.

SQL> connect user1/[email protected] 
ORA-12154: TNS:could not resolve the connect identifier specified 

: 나는 (oracle 제외) 등 다양한 OS 사용자에 로그인 할 때 오라클에 연결하려고하면, 나는 오류가 발생합니다 :

SQL> connect user1/user1 
Connected to: 
Oracle Database 
SQL> 

나는 사용자 프로필에 ORACLE_HOMESID을 선언했다. 그러나 그것은 효과가 없었습니다. 누군가가 문제를 이해하도록 도와 줄 수 있습니까?

답변

1

어떤 의미로는 문제가 없습니다. ORACLE_HOMEORACLE_SID 환경 변수를 사용하여 로컬로 연결할 수 있습니다.

connect user1/[email protected] 버전을 사용하는 경우 orcl이 아니며 SID입니다. the documentation에서 설명한 바와 같이 'Oracle Net 연결 식별자'입니다.

connect_identifier

An Oracle Net connect identifier. The exact syntax depends on the Oracle Net configuration. For more information, refer to the Oracle Net manual or contact your DBA. SQL*Plus does not prompt for a service name, but uses your default database if you do not include a connect identifier.

따라서 IPC를 내부적으로 사용하는 대신 네트워크 연결을 통해 동일한 호스트에 연결합니다. IPC에 사용되며 네트워크 연결의 일부가 아니기 때문에 ORACLE_SID을 설정할 필요가 없습니다.

이제 연결 식별자는 실제로 SID와 동일한 문자열 일 수 있지만 반드시 필요하지는 않습니다. 일반적으로 orcl과 같은 단일 용어를 사용하는 경우 tnsnames.ora 파일에 정의 된 '네트워크 서비스 이름'을 사용하고 있습니다. (연결 식별자가 어떻게 결정되는지는 naming methods are configured in your sqlnet.ora의 방식에 따라 다르나, 이것은 여전히 ​​가장 일반적인 구성입니다).

oracle 사용자로 netca 구성 보조자를 사용하여 Oracle Net 구성을 구성 할 수 있습니다. 단,이를 구체화하기 위해 개인 tnsnames.ora을 생성 할 수는 있습니다.

연결이 작동하고 구성되는 방법에 대한 자세한 내용은 Oracle Net admin guide을 참조하고 더 짧은 버전은 SQL*Plus user guide을 참조하십시오. 당신의 user1/[email protected] 연결을 위해서는

는 같은 tnsnames.ora 항목을보고 뭔가해야 작동합니다 : my_host는 DNS 이름 또는 Oracle 서버의 IP 주소입니다

orcl = 
(DESCRIPTION = 
    (ADDRESS = (PROTOCOL=tcp)(HOST=my_host)(PORT=1521)) 
    (CONNECT_DATA = (SERVICE_NAME = orcl))) 

을 ... 및 1521이있다 포트에서 리스너가 실행되도록 구성됩니다. (이 방법으로 연결할 수 있으려면 리스너가 실행 중이어야합니다.) SERVICE_NAME은 반드시 SID와 같을 필요는 없지만 데이터베이스 구성에 따라 다릅니다. lsnrctl status 명령은 사용 가능한 서비스 이름을 표시합니다.

ORA-12154 오류로 인해 tnsnames.ora 파일이 전혀 없거나 별칭 orcl에 대한 항목이 없다는 오류가 표시됩니다.

@a_horse_with_no_name은 연결 식별자의 다른 형태가 있으므로 네트워크 연결을 위해 반드시 tnsnames.ora 파일이 필요하지는 않습니다. 옵션은 explained here입니다.나는 당신이 사용하려고했던 것에 집중했습니다. 로컬로 연결할 수 있기 때문에 반드시 사용할 필요는 없습니다.

+0

언급 할 가치가있는 한 가지는 :'tnsnames.ora'를 사용하지 않고 명령 줄 ('@'다음에)에 완전한 연결 문자열을 사용하여 빠져 나올 수 있습니다. –

+0

@a_horse_with_no_name - 실제로는 그렇습니다. 벌써 길고 혼란스러워서 OP가 사용하려고했던 방법에 집중하고있었습니다. 대안에 대한 링크를 추가했습니다. - 감사합니다. –

관련 문제