디렉토리를 사용하는 이유?
오라클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)
정리:
스키마를 사용하는 사용자가 있다.
사용자는 스키마에 아이디, 비밀번호, 포트, 서비스이름 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=¤tPage=1&postListTopCurrentPage=1&from=search
https://nanci.tistory.com/249
유저 확인
select * from all_users;
유저 권한 확인
select * from dba_sys_privs where grantee='사용자명';
'컴퓨터공학 > 데이터베이스' 카테고리의 다른 글
오라클> Left outer join 예시 (0) | 2021.11.26 |
---|---|
오라클 데이터베이스 접속하는 법 (0) | 2021.11.04 |
SQL DECODE와 CASE WHEN의 차이점 (0) | 2021.10.28 |
SQL with 절, row number , lag/lead 함수 사용 (0) | 2021.10.28 |
SQL 기초와 예시 (0) | 2021.10.28 |