Oracle Backup And Recovery 강좌
Open 백업(=Hot Backup) 7 9 24,851

by drakula Open 백업 Hot Backup v$controlfile v$logfile [2008.04.20]


Open 백업(=Hot Backup)

  - 데이터베이스가 운영중인 상태(OPEN상태)에서 백업하는 방법을 의미합니다.

  - DATA FILE을 Online Backup하고 있다면 이 시점에 DATA FILE에 저장되어야 할 사항이 REDO LOG FILE에 저장 됩니다. 만약 NOARCHIVELOG MODE라면 ONLINE REDO LOG를 재사용하게 되므로 후에 Recovery가 불가능 할 수 있기 때문에 Oracle은 NOARCHIVE LOG MODE에서는 Online Backup을 불가능 하도록 해 놓았습니다. 그러므로 ARCHIVELOG MODE에서만 백업이 가능 합니다.

  - 테이블 스페이스의 모든 DATA FILE 또는 하나의 DATA FILE을 백업 할 수 있습니다.

1. 데이터파일, 컨트롤 파일, redo 로그 파일의 위치와 이름을 확인한다.
 

-- sqlplus를 실행합니다.
C:\> SQLPLUS /NOLOG

-- SYSDBA권한으로 접속합니다.
SQL> CONNECT / AS SYSDBA

-- Controlfile의 위치 및 이름을 확인합니다.
SQL> SELECT name FROM V$CONTROLFILE;




-- 해당 테이블 스페이스의 데이터 파일 위치 및 이름을 확인합니다.
SQL> SELECT file_id, tablespace_name, file_name 
     FROM DBA_DATA_FILES;  




--Redo Log 파일들의 위치 및 이름을 확인 합니다.
SQL> SELECT * FROM V$LOGFILE;     


    

2. SYSTEM 테이블 스페이스를 OPEN 백업 수행합니다.
 
-- 테이블 스페이스를 open 백업을 수행한다.
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;

-- SYSTEM TABLESPACE에 속하는 데이터 파일을 백업 한다.(E:\BACKUP\HOT\백업)
-- HOST는 SQL 프롬프트에서 OS명령어를 수행하기 위한 명령어이다
SQL> HOST COPY E:\ORACLE\ORADATA\GHLEE\SYSTEM01.DBF E:\BACKUP\HOT\


    

3. 현재 백업중인 데이터 파일의 정보를 확인 합니다.

  위에서 SYSTEM TABLESPACE에 해당하는 FILD_ID가 1번 이므로 FILE#이 1번인 것을 확인하면은 현재 SYSTEM TABLESPACE에 속하는 데이터파일이 백업 중(ACTIVE)인 것을 확인할 수 있습니다

  status가 NOT ACTIVE인 FILE은 현재 File이 BACKUP MODE에 있지 않다는 것을 의미하며, ACTIVE인 상태는 현재 데이터 File이 백업 모드에 있다는 것을 의미합니다.

  CHANGE#SCN(System Change Number)를 보여주는 Column이며 TIME은 BACKUP MODE에 있던 일자를 보여주는 컬럼 입니다. 위는 2007년 8월1일 File#가 1번인 File이 Online 백업 중 이라는 것을 의미합니다.

 
SQL> SELECT * FROM V$BACKUP;

  
    

4. 온라인 백업 종료

  백업이 완료 되면 (COPY명령어로 인한 백업 작업이 완료 되었다는 명령어가 나오면은) 온라인 백업을 종료 합니다.

 
SQL> ALTER TABLESPACE SYSTEM END BACKUP;  

  
    

5. 다시한번 데이터 파일의 정보 확인

  다시 한번 데이터 파일의 정보를 확인하면, NOT ACTIVE인 상태를 확인하실 수 있습니다.

 
SQL> SELECT * FROM V$BACKUP;

    
    

CONTROL FILE의 백업

  데이터베이스가 오픈된 상태에서 백업 받을 경우 DataFile들만 Copy하므로 CONTROL FILE은 따로 백업을 받아야 합니다.

  만약, 테이블 스페이스가 추가 되는 경우 와 같이, 데이터베이스의 구조가 변경되었을 경우 데이터 파일만 백업받고, CONTROL FILE은 백업받지 않을 경우 이전의 CONTROL FILE만을 가지고 복구를 수행 할 경우 새로 추가된 테이블 스페이스는 복구하려고 하지 않습니다. 그러므로, 반드시 데이터 베이스의 구조가 변경되었을 경우에는 CONTROL FILE도 백업을 받아야 합니다.

CONTROL FILE을 백업 받아야 하는 경우
  • - CREATE TABLESPACE
  • - ALTER DATABASE LOGFILE
  • - ALTER DATABASE LOGFILE MEMBER
  • - ALTER DATABASE LOGFILE GROUP
  • - ALTER DATABASE RENAME FILE
  • - ALTER DATABASE DATAFILE
  • - DROP TABLESPACE

CONTROL FILE Backup수행
 
-- 현재의 CONTROL FILE을 Image Copy 하는 방법
-- 파일 경로를 생략할 경우 윈도우의 경우는 %ORACLE_HOME%/database에,
-- 유닉스 계열에서는 $ORACLE_HOME/dbs에 존재합니다.
SQL> ALTER DATABASE BACKUP CONTROLFILE TO <파일 경로>;


-- CONTROL FILE을 재생성 할 수 있도록 Script를 생성하는 방법
-- 저장 위치는 USER_DUP_DEST에 현재 Session의 Process번호로 생성 됩니다
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
    

- 강좌 URL : http://www.gurubee.net/lecture/1986

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 유효열 [2008.10.06 17:26:57]
중복)- alter database
수정) drop tablespace ◈ Control File Backup수행 ->
drop tablespace
◈ Control File Backup수행

by 나그네79 [2009.02.17 18:33:49]
강좌에서 HOST COPY 명령으로 파일을 복사하셨는데요
solaris -> window 로 복사해올려면 어떻게 해야하나요?
solaris -> solaris 로 복사할때 rcp, scp 명령으로 쓰는걸로 알고 있는데요
이때도 SQL> HOST RCP 명령어로 하면 될까요? 어렵네요;

by 나그네79 [2009.02.17 21:08:29]
!cp 라는 명령어를 (unix) 사용하면 되나요?? 솔라리스에 먹는지 정확하게 모르겠습니다. ^^;

by 김정식 [2010.07.09 10:00:49]
오타 수정하였습니다. 감사합니다.

by 존오웬 [2014.12.12 14:43:15]

리눅스 서버(A)에서 외부에 있는 오라클 서버(B)에 sqlplus로 접속해서

핫백업을 했을 때 리눅스 서버(A)로 백업 파일이 저장되게 할수 있는건가요?


by 구루비 [2015.04.16 13:58:50]

감사합니다 ;)


by 구루비 [2015.04.17 15:10:51]

DBA_DATA_FILES 와 V$DATAFILE 테이블은 다른 테이블인가요?


by 임상준 [2015.04.17 16:57:47]

v$datafile 은 v_$datafile 뷰를 바라보는 시노님입니다.

v_$datafile 은 x$, v$ 등의 여러 원본 뷰를 조합한 뷰 입니다.

dba_data_files 는 v_$datafile 을 소스로 하는 뷰입니다.


by 구루비 [2015.04.20 14:21:28]

감사합니다 ~ ;)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입