Oracle import

유비빅·2022년 7월 18일
0
  • Oracle 11g 기준으로 작업

impdp

  • 모든 터미널 작업은 oracle 계정으로 진행하고, sqlplus '/as sysdba' 로 sysdba 권한으로 진행한다.

directory 생성

  • exp 해서 받은 dmp 파일의 위치를 오라클에서 생성해줘야 한다.
  • 기존에 사용할 directory가 있다면 그대로 사용할 수 있고, 신규 directory를 항상 신규로 생성하지 않아도 된다.
# DIRECTORY들 조회
SELECT * FROM DBA_DIRECTORIES;

# 삭제할 디렉토리(예:DUMP_DIR2) 가 있다면,
DROP DIRECTORY DUMP_DIR2;

# 실제 dmp 파일이 위치한 경로
CREATE DIRECTORY PUMP_DIR AS '/opt/oracle/datapump';

# 사용자에게 생성한 디렉토리의 읽기/쓰기 권한을 설정
GRANT READ, WRITE ON DIRECTORY PUMP_DIR TO XXXUSER;

impdp 실행

  • 터미널(bash)에서 실행
# 위에서 생성한 PUMP_DIR의 dmp 파일을 import하고 작업 로그를 import_01.log로 남긴다.
impdp '[사용자/비밀번호]' directory=PUMP_DIR dumpfile=xxx.dmp full=y logfile=import_01.log
  • 실행 중에 발생한 로그를 import_01.log로 쓰도록 설정했다.

Issue


ORA-00959: tablespce 'xxx' does not exist

  • 테이블스페이스를 생성하거나, impd 할때 옵션으로, 다른 테이블스페이스로 대체할 수 있다.
  • 우린 개발DB니깐 관리할 필요도 없으니 생성으로 해결했다.
CREATE TABLESPACE XXXX DATAFILE
    '/app/oracle/oradata/.../xxxx.dbf' SIZE 1000 M
DEFAULT
    STORAGE ( INITIAL 10 K NEXT 10 K MINEXTENTS 2 MAXEXTENTS 50 PCTINCREASE 50 );

ORA-39151: Table 'xxx' exists.

  • 기존 테이블을 삭제하거나, RENAME하여 import가 되게 한다.
# 테이블명 변경
ALTER TABLE [원본 테이블명] RENAME TO [신규 테이블명];

ORA-01688: unable to extend table ... in tablespce xxx

  • 테이블 스페이스를 확장해준다.
  • 개발DB라 autoextend를 무한으로 확장되게 설정했다.
# TABLESPCE 조회
select file_name, tablespace_name, bytes, autoextensible from dba_data_files;

# FILE_NAME이 '/app/oracle/oradata/.../xxx.dbf'인 TABLESPACE를 자동으로 확장되게 한다.
ALTER DATABASE DATAFILE '/app/oracle/oradata/.../xxx.dbf' 
  autoextend on MAXSIZE UNLIMITED;

ORA-01691: unable to extend lob segment string.string by string in tablespace string. Cause: Failed to allocate an extent of the required

  • 데이터 파일(dbf) 용량이 거의 사용되어서 발생하고, 아래 2가지 방법 중 선택
  1. 테이블 스페이스에 데이터 파일(dbf) 추가 (에세스 효율 증가)
# 테이블 스페이스 TEST_TABLESPACE 에 1GB의 xxx.dbf 데이터 파일을 추가한다.
ALTER TABLESPACE TEST_TABLESPACE ADD DATAFILE '/app/oracle/.../xxx.dbf' size 1024m;
  1. 데이터 파일의 크기를 리사이징
# 테이블 스페이스 TEST_TABLESPACE 에 XXX.dbf 데이터파일을 2GB로 증가시킨다.
ALTER TABLESPACE TEST_TABLESPACE ADD DATAFILE '/app/oracle/.../xxx.dbf' size 2048m;

0개의 댓글