어떤 의미로는 문제가 없습니다. ORACLE_HOME
및 ORACLE_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입니다.나는 당신이 사용하려고했던 것에 집중했습니다. 로컬로 연결할 수 있기 때문에 반드시 사용할 필요는 없습니다.
언급 할 가치가있는 한 가지는 :'tnsnames.ora'를 사용하지 않고 명령 줄 ('@'다음에)에 완전한 연결 문자열을 사용하여 빠져 나올 수 있습니다. –
@a_horse_with_no_name - 실제로는 그렇습니다. 벌써 길고 혼란스러워서 OP가 사용하려고했던 방법에 집중하고있었습니다. 대안에 대한 링크를 추가했습니다. - 감사합니다. –