your programing

오라클의 다른 스키마에서 데이터 선택

lovepro 2023. 8. 30. 23:29
반응형

오라클의 다른 스키마에서 데이터 선택

DB 연결에 지정된 것과 다른 스키마(같은 Oracle 서버, 같은 데이터베이스, 다른 스키마)에서 데이터를 선택하는 쿼리를 실행하려고 합니다.

오라클 서버와 대화하는 파이썬 앱이 있습니다.데이터베이스(서버/스키마) A에 대한 연결을 열고 해당 데이터베이스 내의 테이블에 대한 선택 쿼리를 실행합니다.

다음을 시도해 보았습니다.

select .... 
from pct.pi_int, pct.pi_ma, pct.pi_es
where ...

하지만 난 이해해요.

ORA-00942: table or view does not exist

스키마 이름을 괄호로 둘러싸기도 했습니다.

from [PCT].pi_int, [PCT].pi_ma, [PCAT].pi_es

이해합니다.

ORA-00903: invalid table name

쿼리는 Django 앱 내부에서 cx_Oracle python 모듈을 사용하여 실행됩니다.

이것을 할 수 있습니까 아니면 제가 새로운 db 연결을 해야 합니까?

데이터베이스에 연결하는 데 사용하는 사용자(사용자)A이 예에서는)가 있습니다.SELECT의 개체에 대한 액세스PCT스키마?라고 가정하면A이 액세스 권한이 없습니다. "table or view is not exist" 오류가 발생합니다.

대부분 사용자에게 권한을 부여하려면 DBA가 필요합니다.A모든 테이블에 대한 액세스PCT필요한 스키마.비슷한 것

GRANT SELECT ON pct.pi_int
   TO a;

이 작업이 완료되면 다음 항목의 개체를 참조할 수 있습니다.PCT구문을 사용한 스키마pct.pi_int당신이 질문에서 처음에 보여준 것처럼.괄호 구문 접근 방식이 작동하지 않습니다.

보조금 외에도 동의어를 만들어 볼 수 있습니다.테이블 소유자 스키마를 매번 지정할 필요가 없습니다.

연결 스키마에서:

CREATE SYNONYM pi_int FOR pct.pi_int;

그런 다음 쿼리할 수 있습니다.pi_int다음과 같이:

SELECT * FROM pi_int;

데이터베이스에 연결하는 데 사용하는 스키마/계정에 따라 데이터베이스에 연결하는 데 사용하는 계정에 대한 허가가 누락된 것 같습니다.

데이터베이스에서 PCT 계정으로 연결한 다음 사용 중인 계정에 테이블에 대한 선택 권한을 부여합니다.

grant select on pi_int to Account_used_to_connect

언급URL : https://stackoverflow.com/questions/13709164/select-data-from-another-schema-in-oracle

반응형