내 tnsnames를 수정하지 않고 sqlplus를 사용하여 다른 호스트에있는 Oracle Database에 연결하는 방법


80

sqlplus를 사용하여 다른 호스트에있는 Oracle 데이터베이스에 연결하고 싶습니다. 이 페이지 는 데이터베이스에 연결하기 위해 내 tnsnames에 항목을 추가하도록 제안했습니다.

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )

그런 다음 sqlplus에서 사용하십시오.

sqlplus user/pass@local_SID

그러나 내 환경에서는 로컬 tnsname을 수정할 수 없습니다. tnsnames를 변경하지 않고 sqlplus 인수를 사용하여 원격 데이터베이스에 연결할 수 있습니까? 같은 것

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)

1
더 짧은

@GlennLong-그러나 귀하의 버전에서는 database여전히 TNS 별칭이 있어야합니다. tnsnames.oraLouis가 피하려고하는 것과 동일합니까?
Alex Poole

답변:


85
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

어쩌면 이것은 사용중인 명령 줄 환경에 따라 다를 수 있습니다. 문자열을 인용해야합니다.

 sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

또는

 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'

35

당신은 이것을 위해 쉬운 연결 을 사용할 수 있습니다 :

sqlplus usr/pass@hostname.network/remote_service_name

컴퓨터에서 쉽게 연결 하려면 NAMES.DIRECTORY_PATH sqlnet.ora 에 다음을 추가해야합니다 .

NAMES.DIRECTORY_PATH=(EZCONNECT)

리스너가 기본 포트가 아닌 포트에있는 경우을 사용하십시오 ...@hostname.network:port/....

실제로 SID가 아닌 서비스 이름을 제공해야합니다. 그것들은 같을 수도 있지만 그렇지 않다면 서버에서 그것을 얻어야합니다.


1
서비스 이름이 호스트 이름과 동일하면 연결할 때 서비스 이름을 지정할 필요조차 없습니다. (
실제로이 작업

죽은 링크 .......
Harvey

1
@Harvey-감사합니다.
Alex Poole

17

쓸 수있는 디렉토리에 tnsnames.ora 파일의 사본을 작성하고 그에 따라 파일을 수정 한 다음 TNS_ADMIN 환경 변수를 해당 디렉토리의 위치로 설정하십시오.

예 :

cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries

# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look 
export TNS_ADMIN=/tmp

2
이것은 훨씬, 훨씬 더 반응이다
앤드류 썰매

이 접근법은 sqlplus 클라이언트 이외의 Oracle 인프라가 설치되지 않은 시스템에서 작동합니다. db 서버에서 tnsnames.ora를 복사하고 Phil의 프로세스를 따르십시오.
theRiley

3

Unix / Linux 시스템에서 사용자 레벨 구성 파일 을 사용하여 시스템 레벨 항목을 대체 할 수 있습니다 .

시스템 레벨 사용자 레벨 
구성 파일 구성 파일
------------------ -------------------
sqlnet.ora $ HOME / .sqlnet.ora
tnsnames.ora $ HOME / .tnsnames.ora

시스템 레벨 구성 파일은 디렉토리에서 찾을 수 있습니다 $TNS_ADMIN. 변수 TNS_ADMIN가 설정되지 않으면 디렉토리에서 검색됩니다 $ORACLE_HOME/network/admin.

사용자 레벨 구성 파일은 시스템 레벨 구성 파일을 전체 ( TNS_ADMIN대체 디렉토리가 전체 $ORACLE_HOME/network/admin디렉토리를 대체 함) 로 대체하지 않지만 시스템 레벨 구성 파일의 항목을 추가하거나 변경합니다. 항목이 사용자 레벨 구성 파일에 존재하면이 파일이 사용되며, 사용자 레벨 구성 파일에 존재하지 않으면 시스템 레벨 구성 파일의 항목이 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.