2014-06-17 3 views
0

DB 서버가있는 머신 A가 있습니다. Oracle 클라이언트가 설치된 시스템 B가 있습니다. 나는 성공적으로 기계 B에서 명령 sqlplus name/[email protected] as sysdba를 실행할 수 없습니다,다른 서버의 데이터베이스에 어떻게 연결합니까?

TRIAL1 = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = machineName.example.com)(PORT = 1521)(QUEUESIZE=100)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = Trial1.world) 
    ) 
) 

아직 :

나는 다음을 추가하여 시스템 B에서 tnsnames.ora 파일을 수정했습니다. "충분하지 않은 권한"이라는 오류가 발생합니다. A 시스템의 sqlnet.ora 또는 tnsnames.ora 파일에 수정이 필요합니까?

+0

as sysdba를 연결해야합니까 - 관리자에게 연결하고 있습니까? 계정? 그것은 오류의 원인입니다. 해당 절없이 일반 사용자로 연결하면 정상적으로 작동합니다. 관리자로 원격으로 연결해야하는 경우 추가 작업이 필요하지만 필요한지 확실하지 않은 경우? –

+0

예, Alex, 관리자 계정에 연결하려고합니다. 추가로해야 할 일은 무엇입니까? –

답변

1

sysdba로 원격으로 연결할 수 있으려면 해당 시스템 권한을 사용자에게 부여해야합니다.

grant sysdba to name; 

지금부터 sqlplus name/[email protected] as sysdba을 사용하는 모든 컴퓨터에서 연결할 수 있습니다. 이름은 연결할 수있는 한 연결하는 OS 계정이나 연결하는 시스템에 관계없이 연결하는 데이터베이스에 정의 된 사용자 이름입니다.

남아있는 질문은 다음과 같습니다. 해당 데이터베이스에서 sysdba로 작업해야합니까? 자신이하는 일을 알지 못하면 그렇게하지 마십시오. 효과적으로 카탈로그의 소유자 인 SYS로 작업합니다. 사소한 오타는 데이터베이스를 도도 (dodo)로 만들 수 있습니다.

대부분의 경우, 일반 dba 계정조차도 이미 너무 많습니다. 정규 계정 만들기 최대한 빨리 필요한 권한을 부여하고 작업을 수행하십시오. 필요한 권한은 작업을 수행하는데 필요한 최소한의 권한입니다 (세션 생성, 테이블 생성, 프로 시저 생성 등).

+0

@ Zelf, 그래서 machineB.example.com의 "User"사용자에게 권한을 부여해야한다고 가정하면 다음 명령이 사용됩니까? -> sysdba를 [email protected]에 부여하십시오. –

+0

아니요, 데이터베이스에 sysdba로 로컬로 연결하고 sysdba에 해당 데이터베이스 내에 이미 정의 된 사용자 이름을 부여하십시오. 이것은 호스트 인증을 사용하지 않습니다. –

+0

제 질문은 기계 -B의 "사용자"에게 권한을 부여하여 기계 -A의 DB에 액세스 할 수있는 방법입니다. –