2012-08-16 1 views
0

하나의 쿼리에서 두 개의 데이터베이스 링크를 사용하려고합니다. 하나는 데이터를 가져오고 다른 하나는 데이터를 삽입하는 것입니다. 그러나 비록 두 쿼리가 별도의 쿼리에서 사용될 때 완벽하게 작동하지만 단일 쿼리에서 사용할 수는 없습니다. 단일 쿼리에서 별도의 데이터베이스 링크를 사용할 수 있습니까? 그렇다면 그 이유는 무엇입니까? 내가 실행하려고하는 쿼리는 다음과 같습니다.단일 쿼리에서 두 개의 데이터베이스 링크를 사용할 수 없습니다.

INSERT INTO [email protected] SELECT * FROM [email protected]; 
+2

어떤 오류가 발생합니까? –

+4

이것은 매우 비효율적으로 보입니다. 귀하의 진술은 하나의 데이터베이스에 삽입하기 위해 3 개의 다른 데이터베이스를 사용한다는 것을 의미합니다. insert 문이 @ dblink1 데이터베이스에서 직접 실행되지 않는 이유가 궁금합니다. 중간 데이터베이스를 사용하여 다른 두 쿼리간에 쿼리를 실행하는 것처럼 보입니까? – OraNob

+0

@DanielHilgarth 오류는 ORA-02019입니다 : 원격 데이터베이스에 대한 연결 설명을 찾을 수 없습니다. – Nitish

답변

0

이것은 10g의 버그처럼 보입니다. 아마도 버그 6320621, ORA-2019가 DBLINK를 통해 SQL에 다중 사이트 연결시 발생합니다 '; 또는 5713736, 'INSERT INTO STATEMENT WITH SELECT OPTION DB-LINK ORA-02019'를 사용하십시오. 특정 상황에 대해 조사하도록 Oracle에서 SR을 준비해야합니다.

하나의 데이터베이스에서 데이터를 언로드 한 다음 다른 데이터베이스로로드하는 것이 좋습니다. 예를 들어 expdpimpdptablescontent=data_only 옵션을 사용하여 두 단계로 전송할 수 있습니다. 물론 중간 데이터베이스 서버에 덤프 파일을 저장할 공간이 필요하며 다소 편리하지 않습니다. 중개를 피하면서 원본 또는 대상 데이터베이스 서버를 구성 할 수는 있지만 직접 액세스 할 수 있는지 여부는 분명하지 않습니다.

+0

expdb를 실행했을 때 오류가 발생했습니다. UDE-00008 : 작업이 오라클 오류 12560 을 생성했습니다. ORA-12560 : TNS : 프로토콜 어댑터 오류 – Nitish

+0

@Nitish - 아마도 새로운 질문 일지 모르지만 연결하는 방법에 문제가있을 수 있습니다. DB 연결이 TNS 별칭을 사용하고 있다면'expdp user/password @ alias ... '를 할 수 있어야합니다; 그렇지 않다면'expdp user/password @ // server : port/service_name ... '와 같은 EZConnect를 사용할 수 있습니다. 그다지 사소한 것이 아니라면, 새로운 질문을 할 필요가있을 것입니다. 아마도 [dba.se]에서 물어볼 것입니다. 이미 [expdp] (http://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_export.htm)에 익숙하다고 가정합니다. –

관련 문제