본문 바로가기

컴퓨터공학/데이터베이스

오라클 디렉토리 개념

디렉토리를 사용하는 이유?

오라클DB에서 OS에 있는 파일에 접근할 때 필요
DB에 디렉토리를 만들어서 사용해야 한다.
과거 exp/imp 사용할 땐 필요없었지만 expdp/impdp를 사용할 땐 꼭 지정해야 한다.

 

 

 


디렉토리 조회 
select * from dba_directories;

디렉토리 생성
create directory DATA_PUMP_TEST as 'C:\DUMP';
sys나 system 유저가 아닌 일반유저가 directory를 생성하려면 create any directory 권한이 있어야 한다. 
주는 방법 : grant create any directory to [사용자이름];

디렉토리 변경(OS위치 변경)
create or replace directory DATA_PUMP_TEST as 'C:\DUMP2';

디렉토리 권한 부여
grant read,write on directory DATA_PUMP_TEST to [사용자이름];
디렉토리를 다른 유저가 사용하려면 권한이 있어야 한다. 

디렉토리 권한 제거
revoke read,write on directory DATA_PUMP_TEST from [사용자이름];

디렉토리 삭제
drop directory DATA_PUMP_TEST;
삭제할 때도 sys, system 유저가 아닌 일반유저가 삭제하려면 drop any directory 권한이 있어야 한다.
주는 방법 : grant drop any directory to [사용자이름];

추천 방법 : sys as sysdba로 접근 후 디렉토리를 생성한다. 사용자에게 디렉토리 사용 권한을 부여한다. 

 



expdp 사용 

3가지 모드가 존재 
1. full export mode 
DB 전체 백업, 테이블 스페이스, ROLE 등 다 저장 
마지막에 반드시 full=y를 적어줘야 한다. 

2. schema mode
스키마만 저장한다. 테이블 스페이스, ROLE 등은 따로 저장 안함
@servicename에 sid이름 적어도 됨
스키마를 export할 땐 @서비스이름은 없어도 괜찮음

3. table mode 
테이블만 저장하고 테이블 스페이스, ROLE 등은 따로 저장 안 함
테이블을 export할 땐 @서비스이름은 없어도 됨

오류가 나면 폴더가 실제로 있는지? 폴더 권한이 있는지? 확인할 것..
폴더가 자동으로 생기지 않는다. 


impdp 사용

역시 마찬가지로 3가지 모드가 존재
1. full import mode
지정 디렉토리에 dmp파일과 log파일 필요
2. shcema mode
테이블스페이스나 스키마 이름을 변경하여 불러올 수 있다.
계정 정보 잘 입력되었는지 확인
3. table mode

오류가 나면 스키마 이름 확인할 것

 

 

일반적으로 내가 쓰는 방식은

디렉토리로 이동 후 Shift + 오른쪽클릭 

여기서 명령창 열기 실행 

명령어를 입력한다. 

<백업>

expdp [사용자이름]/[사용자비밀번호] dumpfile=[파일이름].dmp schemas=[스키마이름]

<복원>

impdp [사용자이름]/[사용자비밀번호] dumpfile=[파일이름].dmp table_exists_action=replace

 

 

 

 

새로운 Oracle export/import 유틸리티 - Oracle Data Pump(expdp/impdp) (tistory.com)

 

새로운 Oracle export/import 유틸리티 - Oracle Data Pump(expdp/impdp)

Oracle 10g 부터는 데이터의 백업과 복원을 위해서 기존에 사용되는 exp/imp툴을 대신할 Oracle Data Pump(expdp/impdp) 유틸리티가 제공되어 집니다. exp/imp 툴이 없어진것은 아닙니다. Oracle 11g 부터는 기..

offbyone.tistory.com



정리:

스키마를 사용하는 사용자가 있다.
사용자는 스키마에 아이디, 비밀번호, 포트, 서비스이름 or SID로 접근한다. 
dump 파일을 저장할 위치를 오라클에 등록한다..
이 저장 위치를 디렉토리라고 한다.
디렉토리를 만들고 사용자가 디렉토리를 만질 수 있게 권한을 준다.
사용자는 저장하려는 스키마의 사용자이다.
cmd 창을 띄우고 접근하려는 스키마 이름, 
스키마에 들어가기 위한 사용자 아이디/비밀번호, 
파일을 저장할 위치인 디렉토리
정보를 포함한 명령어를 실행한다. 
불러오기도 같은 원리이다. 

디렉토리를 만들고 디렉토리 권한을 사용자에게 부여한 다음
cmd창에서 만든 디렉토리 이름으로 사용자 정보와 스키마 정보를 넣어서 실행


참고링크
https://almost-native.tistory.com/340
https://blog.naver.com/PostView.nhn?blogId=jeong2091&logNo=222024698625&categoryNo=20&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search
https://nanci.tistory.com/249

유저 확인
select * from all_users;
유저 권한 확인
select * from dba_sys_privs where grantee='사용자명';