impdp
- 모든 터미널 작업은
oracle
계정으로 진행하고, sqlplus '/as sysdba'
로 sysdba 권한으로 진행한다.
directory 생성
- exp 해서 받은 dmp 파일의 위치를 오라클에서 생성해줘야 한다.
- 기존에 사용할 directory가 있다면 그대로 사용할 수 있고, 신규 directory를 항상 신규로 생성하지 않아도 된다.
SELECT * FROM DBA_DIRECTORIES;
DROP DIRECTORY DUMP_DIR2;
CREATE DIRECTORY PUMP_DIR AS '/opt/oracle/datapump';
GRANT READ, WRITE ON DIRECTORY PUMP_DIR TO XXXUSER;
impdp 실행
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를 무한으로 확장되게 설정했다.
select file_name, tablespace_name, bytes, autoextensible from dba_data_files;
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가지 방법 중 선택
- 테이블 스페이스에 데이터 파일(dbf) 추가 (에세스 효율 증가)
ALTER TABLESPACE TEST_TABLESPACE ADD DATAFILE '/app/oracle/.../xxx.dbf' size 1024m;
- 데이터 파일의 크기를 리사이징
ALTER TABLESPACE TEST_TABLESPACE ADD DATAFILE '/app/oracle/.../xxx.dbf' size 2048m;