[SQL 기초] Oracle DB 백업하기
2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents
일단 백업을 하기 위해서는 디렉토리를 생성하고 여기에 권한을 부여해주어야 합니다. 저는 D드라이브 안에 Databackup\backdup2 라는 경로를 만들어두고 권한을 부여했습니다. (제 데이터는 주식시장 정보라서 schema이름이 C##FINANCE인데, 여러분은 여러분이 사용하시는 schema명을 입력해주시면 됩니다. 역시 BACKUP_STORE라는 이름도 여러분 각각에 맞춰 설정해주시면 되겠죠?)
CREATE DIRECTORY BACKUP_STORE AS 'D:\Databackup\backup2';
GRANT READ, WRITE ON DIRECTORY BACKUP_STORE TO C##FINANCE;
백업을 수행하는 방법은 다양하게 존재합니다. syntax는 아래와 같습니다.
expdp user/password@servicename DIRECTORY=directory_name DUMPFILE=dumpfilename LOGFILE=dumplogfilename [ tables=table_name | schemas=schema_name | full={y|n} | ..... ]
아래에서 예시를 통해 알아볼까요?
전체백업
expdp system@xe directory=BACKUP_STORE full=yes dumpfile=fullbackup.dmp logfile=fullback.log
schema 백업
expdp C##FINANCE/4321@XE DIRECTORY=BACKUP_STORE DUMPFILE=oracle_finance.dmp LOGFILE=fin.log
Table 백업
expdp C##FINANCE/4321@XE directory=BACKUP_STORE dumpfile=tdump.dmp logfile=table.log tables=FMP_FOREX
(2025-05-04 업데이트) 백업을 했다면 로드하는 것도 필요하겠죠?
만약 포맷이나 기타 이유로 DB를 다시 설치했다면 Schema를 만들고 권한부여작업을 해주어야 합니다. 저는 Dbeaver를 쓰고 있어서 Dbeaver에서 실행했습니다.
-- Schema 생성
CREATE USER C##FINANCE IDENTIFIED BY "1234";
-- 백업파일 경로 지정(안에 백업파일 필요)
CREATE DIRECTORY BACKUP_STORE AS 'D:\FIN_BACKUP';
-- 디렉토리 객체에 대한 읽기, 쓰기 권한 부여
GRANT READ, WRITE ON DIRECTORY BACKUP_STORE TO C##FINANCE;
-- 데이터베이스 연결 권한 부여
GRANT CREATE SESSION TO C##FINANCE;
-- 테이블 생성 권한 부여 (자신의 스키마 내)
GRANT CREATE TABLE TO C##FINANCE;
-- 추가적인 일반적인 권한 롤 부여 (CONNECT, RESOURCE)
-- CONNECT: 데이터베이스에 연결할 수 있는 권한을 포함합니다.
-- RESOURCE: 테이블, 시퀀스, 트리거, 프로시저 등을 생성할 수 있는 권한을 포함합니다.
GRANT CONNECT, RESOURCE TO C##FINANCE;
-- 불필요하거나 과도한 권한 (일반적인 사용자에겐 권장하지 않음)
-- GRANT CREATE ANY TABLE TO C##FINANCE; -- 모든 스키마에 테이블 생성 권한 (일반적으로 불필요)
-- GRANT DBA TO C##FINANCE; -- 데이터베이스 관리자 권한 (일반적으로 불필요)
COMMIT;
그리고 이제 cmd 창에서 로드 명령어를 수행해야 합니다. (물론 schema명을 다르게 할 수도 있습니다)
impdp C##FINANCE/1234@XE directory=BACKUP_STORE dumpfile=FOREX.dmp logfile=table_import_replace.log tables=FMP_FOREX table_exists_action=replace
그럼, 도움이 되셨기를