Oracle 데이터 펌프, exp/imp 도구 내보내기 데이터 가져오기

1. 가장 자주 사용하는 내보내기 가져오기 방안 - exp,imp 명령 도구 1, ssh 도구는 서버 호스트에 연결하고, exp 명령은 1.1을 내보내서 데이터베이스의 모든 데이터를 내보냅니다.
 exp system/password@TestDB file=bak.dmp log=exp.log  full=y

1.2 데이터베이스에서 시스템 사용자와sys 사용자의 테이블을 내보내기
 exp system/password@TestDB file=bak.dmp log=exp.log  owner=(system,sys)

1.3 데이터베이스의 테이블 Table1, Table2를 내보내기
 exp system/password@TestDB  tables="(table1,table2)" file=bak.dmp log=exp.log

1.4 데이터베이스에 있는 테이블tableA의 필드 filed1 값이 "왕 5"인 데이터를 내보내기
 exp system/password@TestDB  tables=tableA  query=' where filed1=' ' file=bak.dmp log=exp.log

참고:
  • dmp 파일을 압축하고 싶다고 가정하고 위의 명령 뒤에 compress=y를 붙여서 실현합니다
  • 데이터 버전과 가져온 데이터베이스 버전이 일치하는지, 문자 집합이 일치하는지, 내보낸 테이블에 섹션 서브테이블이 있는지 확인한다.문제가 있으면 데이터 펌프를 사용하여 가져오기를 내보내는 것이 좋습니다
  • 데이터베이스 서버 호스트에서 작업하는 경우 실제 이름을 쓰지 않아도 된다.실례명은 일반적으로 tns 감청 파일에 설정되어 있습니다.

  • 2. ssh 도구는 서버 호스트를 연결하고 imp 명령은 2.1 전체 dmp 파일의 데이터를 가져옵니다.
     imp system/password@TestDB   file=bak.dmp log=imp.log ignore=y full=y
    

    2.2 사용자가 속한 데이터를 다른 사용자에게 가져옵니다.
     imp system/manager@TestDB  file=bak.dmp log=imp.log fromuser=seapark touser=seapark_copy
    

    2. 데이터 펌프 내보내기 방법 - expdp 명령
    1,ssh 도구는 서버 호스트에 연결하여 데이터베이스 디렉터리 대상을 만듭니다 -data_pump
     create directory data_pump as '/u01/data_pump';
    

    참고:
  • 그중/u01/data_pump는 디렉터리 대상에 대응하는 linux 파일 디렉터리로 데이터베이스 서버에서만 만들 수 있습니다.디렉터리를 만들기 전에 파일 디렉터리의 사용 가능한 공간 크기를 검사해서 내보내기 작업이 실패하지 않도록 하십시오
  • 디렉터리 대상을 만들기 전에 select * from dba_directories, 생성된 모든 데이터 펌프 디렉터리를 조회합니다. 여기서 DATA_PUMP_DIR은 기본값으로sys와 system 권한을 가진 사용자만 사용할 수 있으며 다른 사용자는 새 디렉터리 대상을 만들어야 합니다..
  • 디렉터리를 만드는 대상은 대응하며,dba 또는directory 권한을 부여한 사용자만 조작할 수 있습니다.dba 사용자는grantcreateanydirectory to user 명령을 사용하여 다른 사용자에게 권한을 부여할 수 있습니다

  • 2, 디렉토리 DATA_PUMP에 대한 읽기 및 쓰기 권한은 xxx 사용자에게 부여됩니다.
     grant read,write on directory DATA_PUMP to xxx;
    

    3. expdp 명령 내보내기 (1) table1, table2 내보내기
     expdp scott/tiger directory=DATA_PUMP dumpfile=emp1.dmp logfile=expdp1.log tables=table1,table2;
    

    (2) 조회 조건에 따라 emp1표 deptno를 10으로 내보내기
     expdp scott/tiger directory=DATA_PUMP dumpfile=condition.dmp logfile=condition.log tables=emp1 query=\' WHERE deptno\=\10\'
    

    (3) 테이블 공간별 내보내기
     expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=soe_tbs.dmp tablespaces=soe
    

    (4) 사용자별로 내보내기
     expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=scott.dmp schemas=scott
    

    (5) 전체 라이브러리 내보내기
     expdp system/manager@orcl directory=dump_dir logfile=expdp1.log dumpfile=full.dmp full=y
    

    참고:
  • 내보내기 전 검사표 사용 공간 크기..
  • /u01/data에 파일 및 로그 내보내기_pump 디렉터리에서..
  • 내보낸 파일을 더 작게 하려면compression=data_오직 매개 변수

  • 2. 데이터 펌프 가져오기 방법 -impdp 명령
    (1) 소스 데이터 파일을 타겟의 디렉토리로 복사
     scp 192.168.3.88:/u01/data_pump/* /u01/oracle/dir
    

    (2) 사용자 변경 사항 가져오기
     impdp \'/ as sysdba \' directory=DIR dumpfile=emp1.dmp remap_schema=scott:wr
    

    (3) 가져온 테이블 공간에 변화가 있음
     impdp \' / as sysdba \' directory=DIR dumpfile=tbs.dmp logfile=tbs.log remap_tablespace=abc:soe
    

    넷째, 대상 라이브러리 원격 연결 원본 라이브러리 가져오기 ① 디렉터리 대상 만들기
     create directory data_pump as '/u01/data_pump';
    

    ② 읽기와 쓰기 권한 부여
     grant read,write on directory DATA_PUMP to zyz;
    

    ③ tnsnames 구성
     ORCL =
    
           (DESCRIPTION =
    
               (ADDRESS = (PROTOCOL = TCP)(HOST = xxbora)(PORT = 1521))
    
               (CONNECT_DATA =
    
                    (SERVER = DEDICATED)
    
                    (SERVICE_NAME = orcl)
                )
            )
    

    ④ dblink 만들기
     create public database link orcl18 connect to zyz identified by zyz using 'ORCL18';
    
     select count(*) from zyz.userinfo@orcl18;
    

    ⑤ 데이터 가져오기
     impdp zyz/zyz directory=data_pump network_link=orcl18 schemas=zyz logfile=zyz.log remap_tablespace=JCTABLESPACE:ZYZTABLESPACE exclude=statistics
    

    ⑥ 통계 수집
     exec dbms_stats.gather_schema_stats(ownname=>'ZYZ',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');
    

    좋은 웹페이지 즐겨찾기