expdp\impdp 데이터베이스 데이터 전송

3217 단어 expdpimpdp
oracle에서 제공하는expdp\impdp 및exp\imp 명령을 사용하여 내보내기\가져오기를 실현합니다.exp\imp 명령은 row 를 자동으로 무시하므로num=0의 시계입니다. 마지막으로 내보낸 시계가 완전하지 않습니다.그래서 expdp\impdp 명령을 사용하기로 했습니다.
우리가 완수해야 할 임무:
1, 에어테스트 사용자로부터 내보내기.dmp의 파일 형식 (.sql 형식도 선택할 수 있지만, sql 테이블에는 큰 필드 (blob,clob,long) 가 있을 수 없습니다. 만약 있다면, sql 파일을 실행하면 오류가 발생합니다.)
2, 내보낸 a.dmp 파일을 에어테스트 사용자에게 다시 부어 백업하는 것과 같다.
3. 내보낸 a.dmp 파일을 dev 사용자에게 저장하면 데이터 전송에 해당한다
sqlplus    /nolog
connect    /as sysdba
plsql 또는 sqlplus에서 명령을 실행합니다.
create directory dump_test as 'F:\dump'
('F:\dump'파일을 하드 드라이브에 미리 생성)
--           

select * from dba_directories;
 
-- 사용자 이 dump 디렉토리를 조작할 수 있는 권한
grant read, write on directory dump_test to airtest;
grant read, write on directory dump_test to dev;
sql를 종료하고 cmd에서 다음 명령을 실행합니다
작업 1: 로컬 사용자 에어테스트를 사용하여 데이터를 내보내고dump테스트에서 지정한 디렉터리에 있습니다.즉'F:\dump'
형식: Expdp 로컬 사용자/사용자의 비밀번호 @oracle의sid,directory 매개 변수는 로컬 디렉터리dumpfile로 내보내기 파일의 파일 이름을 지정합니다
expdp  airtest/airtest@orcl  directory=dump_test  dumpfile=a.dmp logfile=a.log
작업 2:airtest에 데이터 가져오기
impdp airtest/airtest@orcl   directory=dump_test   dumpfile =a.dmp   logfile=b.log ;
작업 3: 데이터를 dev로 가져오기
impdp dev/dev@orcl    directory=dump_test    dumpfile=a.dmp   logfile=b.log         remap_schema=airtest:dev (끝에는 번호가 없습니다!!!)
참조 자료:
http://blog.163.com/shexinyang@126/blog/static/1367393122013612105445369/
http://www.cnblogs.com/lanzi/archive/2011/01/06/1927731.html
실제 작업에서 impdp와expdp에서 다음과 같은 오류가 발생했습니다.
ORA-39002: invalid operation
  ORA-39070: Unable to open the log file.
  ORA-29283: invalid file operation
  ORA-06512: at "SYS.UTL_FILE", line 536
  ORA-29283: invalid file operation
이 오류가 발생하는 원인은 보통 두 가지가 있다.
  1.dmp 파일이나 로그 파일을 저장하는 경로에 권한이 없습니다.
  2.dmp 파일에 권한이 없습니다.
반복해서 조사했지만 여전히 원인을 찾아내지 못했다.다른 방법: 오로라클이 가지고 있는directory를 사용합니다
select * from dba_directories;
directory를 선택하십시오. 여기는 DATA 입니다.PUMP_DIR,path:/opt/oracle/admin/orcl/dpdump/
shadow 파일을 루트/Downloads에서 이directory로 이동하기;
mv SHADOW.DMP    /opt/oracle/admin/orcl/dpdump/
bash에서 다음을 수행합니다.
impdp  shadow/shadow@orcl directory=DATA_PUMP_DIR dumfile=SHADWO.DMP logfile=2.log  TABALE_EXISTS_ACTION=REPLACE;
TABALE_EXISTS_ACTION: 테이블이 중복될 때 작업은 대체입니다.기본값은 skip입니다.반복되는 탭에 대해서만 교체 작업을 수행하지만 sequence가 반복될 때 오류가 발생합니다.
sequence를 삭제하고impdp에 있을 수 있습니다. 
drop sequence hibernate_sequence;
보충, 만약에 데이터베이스를 새로 만들면 무에서 유로 데이터를 가져옵니다. 예를 들어 에어백을 새로 만들고 impd를 실행할 때 다음과 같은 오류가 발생합니다.
연결: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39006: 내부 오류
ORA-39068: PROCESS에서ORDER=-4 행의 마스터 테이블 데이터가 잘못되었습니다.
ORA-01950: 테이블 공간'USERS'에 대한 권한 없음
ORA-39097: 데이터 펌프 작업에 의외의 오류가 발생했습니다. - 1950
해결 방법:
grant unlimited tablespace to  airback;
이유:
39068 오류는 테이블 공간 점유율 부족으로 인한 연쇄 반응입니다
remap_모델 사용 권한 부족:
데이터베이스에 가져오기 내보내기 권한 부여grant expfull_database 
(grant imp_full_database to user/grant exp_full_database to user)

좋은 웹페이지 즐겨찾기