2014-01-28 5 views
4

Amazon rds 서버로 가져 오려는 덤프 파일이 있습니다. Oracle 데이터 펌프 impdp를 원격 서버

내가 무슨 짓을 :

공공 DB 링크를 생성 및 작동 확인 :

CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'G:\DB'; 

가져 오기 덤프 파일 :

create public database link rdsdblink 
connect to dbuser identified by dbpsw 
using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST='xxx')(PORT=1521)))(CONNECT_DATA=(SID=dbsid)))'; 

SQL> select * from dual @ rdsdblink; 

D 
- 
X 

덤프 파일의 디렉토리를 생성 :

impdp dbuser/[email protected] tablespaces=EMP directory=DATA_PUMP_DIR dumpfile=EMP_dump.DMP logfile=EMP_dump.log network_link=rdsdblink 

또한 tnsnames.ora 파일에 rdsdblink 연결 문자열을 추가하고 oracle 서비스 ("즉시 종료", "시작")를 다시 시작했습니다.

다음 오류가 발생했습니다

에 연결 : - : 유효하지 않은 인수 값 가 ORA-39200
: 링크 이름 "rdsdblink는"무효 인 오라클 데이터베이스 11g 릴리스 11.2.0.2.0 생산이
ORA-39001은 64 비트 .
ORA-02019 :

내 지역의 오라클 버전을 찾을 수 없습니다 원격 데이터베이스에 대한 연결 설명 : 오라클 데이터베이스 11g Express Edition을 출시 11.2.0.2.0 - 생산

원격 오라클 버전 : 오라클 데이터베이스가 11.2 11g 릴리스 .0.2.0 - 64 비트 생산

답변

4

원격 데이터베이스에 연결했으나 (dbuser/[email protected] 경유) DB 링크가 로컬 데이터베이스에 생성되었습니다. 현재 원격 DB에 대한 가져 오기를 실행하려고하고 있으며 원격 DB에도 네트워크 링크가 있으며 해당 네트워크 링크는 해당 원격 DB에없는 DB 링크를 사용하려고합니다.

tnsnames.ora 항목과 DB 링크는 완전히 별개입니다.

DB 링크를 만드는 데 사용한 자격 증명을 사용하여 일반적으로 로컬로 연결해야합니다. 그러면 network_link 매개 변수는 impdp에 의해 시작되는 로컬 데이터베이스 세션을 원격 서버에 대해 실행합니다. 따라서 귀하의 로컬 디렉토리를 사용할 수 있습니다.

예외적으로 ... 그런 식으로 작동하지 않습니다. network_link으로 식별 된 원격 데이터베이스는 덤프 파일없이 가져 오기 소스로 사용될 수 있습니다. 하지만 파일에서 가져 오기 대상이 될 수는 없습니다. impdpdocumentation에서

:

NETWORK_LINK 매개 변수는 데이터베이스 링크를 통해 가져 오기를 시작합니다. 이것은 시스템이 impdp 클라이언트가 접촉 source_database_link 의해 참조되는 소스 데이터베이스 연결에서 데이터를 검색되는 것을 의미하고, 연결 인스턴스 데이터베이스에 데이터를 직접 기입한다. 덤프 파일이 없습니다. 파일이 있습니다.

정말이 루트를 사용하고 싶다면 로컬에서 로컬로의 링크가 필요하고 원격지에서 가져 오기를 실행해야하지만 스키마 - 이전 내보내기에서 가져온 것이 아닙니다. 덤프 파일을 복사하지 않아도 로그 등이 거기에 쓰여지므로 원격 서버의 DIRECTORY 객체에 대한 액세스가 필요합니다. 심지어 nologfile을 사용하여 디렉토리를 지정하지 않았거나 권한이없는 경우 오류가 발생한다고 생각합니다.

수입

NETWORK_LINK 매개 변수는 원본 서버를 가리키는 데이터베이스 링크를 식별

article you linked to in your previous question

같은 일 말했다. 차이점은 개체가 덤프 파일에 쓰여지는 없이 로컬 서버로 직접 가져온 것입니다. DUMPFILE 매개 변수는 필요하지 않지만 작업과 관련된 로그 인 에는 여전히 디렉터리 개체가 필요합니다.

+0

정말 고맙습니다. 원격으로 가져 오기를 실행하면 로컬 덤프 파일을 어떻게 가리 킵니까? – Cal

+0

@Cal - 할 수 없습니다. 파일은 연결된 DB 인스턴스가 실행중인 서버에 있어야합니다. 그것은 rds 서버에 있어야 할 것입니다, 그리고 그것은 옵션이 아닌 것 같아요? 그렇지 않으면 중간 덤프 파일없이 한 단계로 내보내고 가져와야하고 DB 링크가 다른 방향으로 이동하는 것은 문제가 될 수 있습니다 (청취자가 인터넷에 노출되지 않는다고 가정). 도움을 주신 덕분에 –

+0

. 우리는 그것을 할 방법을 찾으려고 노력할 것입니다. – Cal