저는 Oracle noob이며 모든 데이터와 메타 데이터를 한 스키마에서 Oracle 데이터베이스 내의 다른 스키마로 전송하려고합니다. 데이터 펌프 expdp
와 impdp
명령 을 사용할 계획 입니다. 이것에 관한 질문이 있습니다.
- 사용자없이 대상 스키마를 생성 할 수 있습니까? 아니면 먼저 사용자를 생성해야합니까 (스키마도 생성)?
- 나는 실행할 수
expdp
및impdp
SYS에게 (AS SYSDBA) 계정을 사용하여 명령? 이것이 바람직한 방법입니까? -
이 명령문은 스키마에서 모든 오브젝트 (데이터 및 메타 데이터)를 가져 와서 다른 스키마로 이동합니까?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log
대상 스키마는
impdp
명령 후 소스 스키마의 정확한 사본 입니까?
답변
impdp
아직 존재하지 않는 경우 사용자를 생성하므로 원하는 것이 아니라면 걱정할 필요가 없습니다.
실행하지 마십시오 impdb
또는 expdp
으로 sysdba
만 그렇게 특정 상황에서 오라클의 지원 요청을하는 경우. dba
예를 들어 역할을 부여받은 일반 사용자를 사용하십시오 . ( [IMPORT|EXPORT]_FULL_DATABASE
이러한 유형에 대해서는 특권이 있으므로 Oracle 디렉토리 객체에 대한 액세스 권한도 부여해야합니다.)
전체 스키마 내보내기 (메타 데이터 및 내용)는 실제로 다음과 같습니다.
expdp user/pass schemas=<schemaname> directory=dumpdir \
dumpfile=<schemaname>.dmp \
logfile=expdp_<schemaname>.log
다른 사용자 / 스키마로 가져 오려면 (대상 데이터베이스가 소스와 동일 할 수 있음) 다음을 사용할 수 있습니다.
impdp user/pass schemas=schema1 directory=dumpdir \
remap_schema=schema1:schema2 \
dumpfile=schema1.dmp \
logfile=impdp_schema2.log
전체 가져 오기를 원하지 않으면 데이터와 메타 데이터 모두에 일부 필터를 설정할 수 있습니다. 가져 오기 작업 중 필터링을 참조하십시오 .
유틸리티 가이드는 모두에게 세부 사항을 가지고, 나는 강하게 개요 부분 적어도 읽어 보시기 바랍니다.
답변
잘린 테이블을 가져 오는 경우, 즉 데이터를 다시 테이블로 가져 오려고합니다.
impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE
내 테이블 위에 dept
가져오고 싶은 것이 있습니다. 나는 그것을 일찍 잘랐다. 는 IS 덤프에서 TEST.dmp
, 그리고 logfile
이는 expdpTEST.log
내가 데이터 만 가져올 할 (우리가 매개 변수를 사용할 수 있도록 테이블 구조는 동일합니다 TABLE_EXISTS_ACTION
).
당신은 예를 들어,이 개 테이블을 절단 한 경우 emp
와 dept
, 그리고 emp
테이블이 dept_id
외부 키로, 당신은 가져와야 dept
후 첫 번째 테이블을하고 emp
가져 오는 동안 회피 오류 테이블.