- 오라클(oracle) DB 백업 및 복원 방법2024년 08월 26일에 업로드 된 글입니다.작성자: gamzah반응형
보통 새로운 pc , 노트북에 이전에 사용하던 프로젝트 db를 가져와서 복원을 시킬 때
그냥 db 툴에서 복원하면 쉽게 복원이 가능하지만 특수한 경우에 툴에서 복원이 어려운 상황이 있을 수 도있다.
나같은 경우에는 db 툴에서 복원을 하던대로 진행을 했는데 갑자기 오류가 터지면서 복원이 계속 실패해서
원인을 찾아보니 clob 데이터가 제약조건에 벗어나면서 clob 컬럼이 모두다 복원 실패된 것이였다.
그래서 이것저것 열심히 찾아봤지만 툴에서 복원하는건 어려웠다. 그래서 툴에서 복원 말고 다른걸로 복원 할 수 있는방법이 있는지 생각해보다 cmd 에서 expdp 명령어를 사용하여 복원 할 수 있는 방법을 찾았고 이를 활용해 문제를 해결했다.
expdp 은 간단히 설명하면 오라클에서 지원하는 복원 유틸리티라 생각하면 된다.
설명은 아무것도 없는 pc에 오라클을 다운해서 설치까지 완료했다 가정하에 시작합니다.
맨처음 오라클 sql plus 에서 시스템계정으로 접속을 합니다
시스템 계정 ID 는 sys as sysdba PW 는 설치 진행시 입력했던 PW로 접속합니다.
이후 아래 명령어를 입력.
1. 오라클 계정 생성
1-1. 패스워드 c## 넣지 않기 위해서 아래의 스크립트 실행
-- alter session set "_ORACLE_SCRIPT"=true;
1-2. 계정생성(create user 아이디 identified by 패스워드)
-- create user BACKUPUSER identified by 1234;
1-3. 권한 부여(grant connect, resource, dba to 아이디)
-- grant connect, resource, dba to BACKUPUSER2. 백업 폴더 지정
2-1. DB상에 스크립트로 폴더 추가 (CREATE OR REPLACE DIRECTORY DB_BACKUP as '경로 포함한 폴더명';)
-- CREATE OR REPLACE DIRECTORY DB_BACKUP as 'C:\DB_BACKUP\DB_ORACLE';
--> 해당 스크립트 실행 시 폴더 권한은 모든 스키마에 적용됨(oracle이 설치되어 있는 드라이버만 가능함)--> C:\DB_BACKUP\DB_ORACLE 이경로대로 폴더 생성
2-2. DB상에 스크립트로 유저에 해당 폴더 권한 부여(GRANT READ, WRITE ON DIRECTORY DB_BACKUP TO 아이디;)
-- GRANT READ, WRITE ON DIRECTORY DB_BACKUP TO BACKUPUSER;
--> 해당 스크립트 실행 시 계정 권한은 해당 스키마에만 적용됨
** 디렉토리 확인 쿼리
-- select * from all_directories;--> DB 툴에서 위에 생성한 계정으로 접속 후 위 명령어를 통하여 디렉토리에 DB_BACKUP 가 생겼는지 확인
위에 디렉토리까지 생성된걸 확인이 끝났다면 cmd 창을 열어서 백업,복원 사용처에따라 아래 명령어를 사용하면 백업 및 복원이 가능합니다. 백업을 원하는 경우엔 디렉토리에 지정한경로 C:\DB_BACKUP\DB_ORACLE 위치에 덤프파일이 생성되고 복원을 원하는 경우엔 C:\DB_BACKUP\DB_ORACLE에 복원할 덤프파일을 넣어놔야 복원이 가능합니다.
3. 백업 방법(expdp 명령어 사용)
3-1. 아래의 명령어 실행(expdp DB접속아이디/DB접속패스워드@xe schemas=백업스키마명 directory=저장할디렉토리명칭 dumpfile=덤프파일명.dmp logfile=로그파일명.log)
ex) expdp BACKUPUSER/1234@xe schemas=elmsuser directory=DB_BACKUP dumpfile=생성할백업덤프파일명.dmp logfile= 생성할백업로그파일명.log4. 복원 방법(impdp 명령어 사용)
4-1. 아래의 명령어 실행(impdp 복원할DB접속아이디/복원할DB접속패스워드 remap_schema=백업된스키마명:복원할스키마명 directory=저장된디렉토리명칭 dumpfile=백업한덤프파일명.dmp)
ex) impdp BACKUPUSER/1234 remap_schema= 백업된스키마명:BACKUPUSER directory=DB_BACKUP dumpfile= 백업한덤프파일명 .dmp TABLE_EXISTS_ACTION=TRUNCATE4-2. 특정 테이블만 복원할 경우
ex) impdp BACKUPUSER/1234 remap_schema= 백업된스키마명:BACKUPUSER directory=DB_BACKUP dumpfile= 백업한덤프파일명 .dmp TABLE_EXISTS_ACTION=REPLACE tables= 백업된스키마명.부분복원할 테이블명그리고 추가적으로 아래는 데이터 복원 옵션인데 추가로 적어본다 ( 둘다 똑같은 거긴한데 그냥 REPLACE 추천 )
"TABLE_EXISTS_ACTION=TRUNCATE" 옵션은 테이블이 존재할 경우 해당 테이블의 데이터를 지운 후 데이터만 insert
"TABLE_EXISTS_ACTION=REPLACE" 옵션은 테이블 삭제 후 테이블을 생성하고 데이터를 insert반응형'ORACLE' 카테고리의 다른 글
오라클 (oracle) 마이그레이션 하는방법 (0) 2024.07.18 오라클 공백 오류 (1) 2024.07.08 다음글이 없습니다.이전글이 없습니다.댓글