database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 8859 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 8859
Oracle 8 - Backup & Recovery (1)
작성자
정재익(advance)
작성일
2001-12-12 22:36
조회수
10,270

01. 백업과 리커버리의 개념 (Backup and Recovery considerations)

 

 
[b]1. Business Requirements[/b]

   - Mean Time to Recover
   - Mean Time Between Failure
   - Evolving Process
   
[b]2. Operational Requirements[/b]

   - Mean-Time-To-Recover (MTTR)
   - Mean-Time-Between-Failures (MTBF)
   - 24-Hour Operations
   - Testing and validating backups
   
[b]3. Technical Requirements[/b]

   - Physical image copies of the operating system files
   - Logical copies of the objects in the database
   - Database configurations
   - Transaction volume affects desired frequency of backups

 

02. 오라클 복구의 구조와 과정 (Oracle Recovery Structures and Processes)

 

 
[b]** Oracle8의 구조[/b]

   1) Database - Datafile
               - Redo log files
               - Control file
               - Parameter file
       
   2) Instance - SGA - Shared pool
                     - DB buffer cache
                     - Redo log buffer
               - Backgroud Process 

[b]1. Basic Oracle Architecture[/b]

   1) Oracle Instance
      ; SGA(System Global Area) + Backgroud Process(DBWR,LGWR,SMON,PMON,CKPT)
      
   2) Memory Structures
   
      - Data buffer cache : data file 로 부터 읽어진 내용을 저장하는 memory 공간.
      - Log buffer : redo log file에 기록되기 전의 data 저장 공간.
      - Large pool : UGA 대용으로 사용, RMAN 사용시 I/O buffer로 사용.
      - Shared pool : 현재까지 사용된 SQL 문장을 다른 user도 사용가능하게 shared 한다.
      
   3) Backgroud Processes
   
      - Database wirter(DBWR) : data buffer cache로 부터 data file에 dirty buffer를 기록한다.
      - Log writer(LGWR) : log buffer로 부터 redo log file에 data를 기록한다.
      - System monitor(SMON) : instance recovery를 자동으로 수행한다.
      - Process monitor(PMON) : 비정상적으로 종료된 user process에 의해 생성된 server process를 
                                clean한다.
      - Checkpoint(CKPT) : 현재 redo log와 checkpoint 번호로 data file과 control file의 
                           header를 동기화한다.
      - Archiver(ARCH) : redo log 를 backup 한다.
   
   4) User Process
      ; SQL*Plus, svrmgr, forms, reports, Enterprise Manager 등을 실행 시켰을때 생성된다.
   
   5) Server Process
      ; User process가 던진 질의에 대한 응답을 해준다.
      
   6) Oracle Database
   
      - Data files : data 물리적 저장 공간. binary file
      - Redo logs : recovery를 위한 저장공간. binary file
      - Control files : database의 물리적 구조 저장 공간. binary file
      - Parameter file : instance config를 할 수 있는 file. text file
      - Password file : user가 database를 start, stop, recover 할 수 있는 정보를 갖고 있는 공간. 
                        binary file
      - Archive logs : redo log file 의 backup file. binary file
   
   7) Dynamic Views
   
      - V$SGA : shared pool, log buffer, data buffer cache 에 대한 instance size 정보
      - V$INSTANCE : instance mode, instance name, startup time, host name 등의 instance 에 
                     대한 정보
      - V$PROCESS : instance에 의해 생성된 background 와 server process 정보
      - V$DATABASE : database 에대한 정보.(database name, database identifier, creation date, 
        control file creation date 와 time, last database checkpoint...)
      - V$DATAFILE : data file 의 location 과 name 에 대한 정보.
      
[b]2. ARCH process[/b]
   ; log가 switch 되었을때 log를 다른곳에 copy하는 일을 한다.
   
   - ARCH process와 ARCHIVE_LOG_MODE가 조화를 이룰때 적절한 사용법이다.
   - LOG_ARCHIVER_DEST parameter : copy할때 디렉토리 위치 지정.

[b]3. CKPT process[/b]
   ; 현재 redo log와 checkpoint 번호로 data file과 control file의 header를 동기화한다.
   
   * Checkpoint는 언제 발생하나?
     - log switch 시
     - shutdown abort를 제외한 shutdown 시
     - ALTER SYSTEM CHECKPOINT command를 DBA가 날렸을 때
     - backup 이 실행될 때
     - LOG_CHECKPOINT_TIMEOUT parameter에서 설정한 값이 수행될 때.
     - LOG_CHECKPOINT_INTERVAL parameter에서 설정한 값이 수행될 때.

[b]4. Data files[/b]
   ; system과 user data를 저장하고 있는 file.
     commit 된 data를 갖고 있지만, uncommit된 data 도 갖고 있을 수 있다.
     
   * uncommit 된 정보를 저장하는 예
     update data를 commit 하지 않고 장시간 wait상태에 있으면, 다른 user들이 계속 update를
     하고 있기 때문에 buffer가 밀려서 결국에는 data file에 쓰게된다.
     (이때, lock 정보를 갖고 저장된다.)
     
[b]5. Configuring Tablespaces[/b]
   ; tablespace는 2개 이상의 data file을 갖는다.
   
   - SYSTEM : system 과 user data가 같은 tablespace를 갖고 있다면 backup과 recovery하기가 더 
              복잡해진다.
   - TEMPORARY : sort정보를 갖고 있다. 복구시 recovery하는 것보다, create하는게 더 좋다.
   - ROLLBACK SEGMENTS
   - READ ONLY DATA : backuup 시간을 줄일 수 있다.
   - HIGHLY VOLATILE DATA : recover 시간을 줄일 수 있다.
   - INDEX DATA : recovery하는 것보다, create하는게 더 좋다.
   
[b]6. Multiplexed Redo Log Files[/b]
   ; log file 을 동시에 여러개에 기록하기 때문에 file 하나가 깨져도 정상적으로 작동된다.
   
   * Dynamic Views
     - V$LOG : group no, log sequence no, group size, mirror갯수, status(CURRENT or INACTIVE), 
               ckpt change no..
     - V$LOGFILE : name, status(STALE or INVALID), log file member
     - V$LOG_HISTORY : control file의 log history 정보
     
[b]7. Control file 속성[/b]

   - 모든 database file 과 log file은 id를 필요로 한다.
   - database name을 저장한다.
   - checkpoint 와 log sequence 정보를 갖고 있다.
   - 2개 이상의 control file은 각각 다른 disk에 저장하는게 좋다.
   - database의 Timestamp를 저장한다.
   - Recovery Manager(RMAN) 사용시 backup 정보를 갖고 있다.

 

03. 오라클 백업의 복구와 설정 (Oracle Backup and Recovery Configuration)

 

[b]1. NOARCHIVELOG mode 와 ARCHIVELOG mode Setting[/b]

   parameter setting (initSID.ora file)
   --------------------------------------
   LOG_ARCHIVE_START=TRUE
   LOG_ARCHIVE_DEST=$HOME/DATA1/archive/
   LOG_ARCHIVE_FORMAT=arch%s.arc
   
[b]2. Archivelog Mode Enable하는 절차[/b]

   1) SVRMGR> shutdown immediate
   
   2) SVRMGR> startup mount
   
   3) SVRMGR> alter database archivelog ;
   
   4) SVRMGR> alter database open ;
   
   5) SVRMGR> shutdown immediate
   
   6) databse full backup을 꼭 받는다.
   
[b]3. Archive log file Options[/b]

   SVRMGR> ALTER SYSTEM ARCHIVE LOG SEQUENCE 052 ;
   
   THREAD : Specifies thread containing the redo log file group to be archive
            (for Oracle Parallel Server)
   SEQUENCE : Archives the online redo log file group identified by the log sequence number
   CHANGE : Archives based upon the SCN
   GROUP : Archives online redo log file group
   CURRENT : Archives the current redo log filegroup of the specified thread
   LOGFILE : Archives redo log file group with member identified by filename
   NEXT : Archives the oldest online redo log file group that has not been archived
   ALL : Archives all online redo log file groups
   START :Enables automatic archiving of redo log file groups
   TO : Specifies the loacation to which the redo log file group is archived
   STOP : Disables automatic archiving of redo log file groups
   
[b]4. Manullay Disable Archiving[/b]

   SVRMGR> alter system archive log stop ;
   
   LOG_ARCHIVE_START=FALSE
   
[b]5. Archive Log 정보를 볼 수 있는 방법.[/b]

   1) SVRMGR> ARCHIVE LOG LIST ;
   
   2) V$ARCHIVED_LOG : archive log 정보를 보여준다.
   
   3) V$ARCHIVE_DEST : 현재 instance에 있는 모든 archive log의 destinations, current value, 
                       mode, status를 보여준다.
   
   4) V$LOG_HISTORY : log file 정보를 보여준다.
   
   5) V$DATABASE : archive의 현 상태 정보를 보여준다.

 

04. 리커버리 메니저 (RMAN) 를 사용하지 않은 물리적 백업 (Physical Backups Without Oracle Recovery Manager)

 

1. Database file 정보를 갖고 있는 data dictionary view

 

- Data File

SQL> select name, status from v$datafile ;

 

- Control File

SQL> select name from v$controlfile ;

 

- Log File

SQL> select member from v$logfile ;

 

- Tablespace와 data file

SQL> select t.name "Tablespace", f.name "File"

2 from v$tablespace t, v$ datafile f

3 where t.ts# = f.ts#

4 order by t.name ;

 

2. Closed Database Backup 의 절차

 

1) SVRMGR> shutdown immediate

 

2) $ cp <files> /backup/

 

3) SVRMGR> startup open ;

 

* $ORACLE_HOME/dbs/sgadbs 파일.

; instance가 생성될 때, file이 생기고, 죽으면 없어진다.

혹시 startup이 되지 않는다면...이 파일을 제거 해보자!!!

 

3. Open Database Backup 의 절차 -- archive log mode 일때만 해당됨.

 

1) SVRMGR> ALTER TABLESPACE user_data BEGIN BACKUP ;

 

2) $ cp <files> /backup/

 

3) SVRMGR> ALTER TABLESPACE user_data END BACKUP ;

 

4) ALTER SYSTEM SWITCH LOGFILE ;

 

4. Backup 상태를 갖고 있는 data dictionary

 

SQL> select * from v$backup ;

--> STATUS가 ACTIVE이면 begin backup 상태이다.

 

SQL> select name, status, fuzzy from v$datafile_header ;

--> FUZZY가 YES이면 begin backup 상태이다.

 

5. Control file backup 하는 법

 

SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'control01.bkp' ;

 

6. Control file을 생성할 수 있게 script를 자동으로 만들어 주는 명령

 

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE ;

--> ora_1234.trc : 이런 식으로 만들어 진다.

 

7. DataBase 환경을 변경 할 수 있는 commands

 

- ALTER DATABASE [ADD | DROP] LOGFILE

- ALTER DATABASE [ADD | DROP] LOGFILE MEMBER

- ALTER DATABASE [ADD | DROP] LOGFILE GROUP

- ALTER DATABASE [NOARCHIVELOG | ARCHIVELOG]

- ALTER DATABASE RENAME FILE

- CREATE TABLESPACE

- ALTER TABLESPACE [ADD | RENAME] DATAFILE

- ALTER TABLESPACE [READ WRITE | READ ONLY]

- DROP TABLESPACE

 

8. Tablespace Read only mode로 만들어 주기

 

ALTER TABLESPACE query_data READ ONLY ;

 

<--> ALTER TABLESPACE query_data READ WRITE ;

[/pre]

 

05. Fail 의 형태와 문제점 해결 (Types of Failures and Troubleshooting)

 

 
[b]1. Failure의 종류[/b]

   - Statement failure
   - User process failure
   - User error
   - Instance failure
   - Media failure
   
[b]2. Alert Log File[/b]

   * initSID.ora 에서 지정한 parameter "background_dump_dest=$HOME/ALERT" 의 위치에 생성된다.
   
   - startup, shutdown 정보
   - CREATE, ALTER, DROP 정보
   - Database error 정보
   
[b]3. Trace File[/b]

   * initSID.ora 에서 지정한 parameter "user_dumb_dest", "background_dump_dest" 의 위치에 생성된다.
   
   - Background process에 의해 생성된다.
   - diagnostic information

[b]4. Datafile Checksum[/b]

   DB_BLOCK_CHECKSUM=TRUE
   
   - 모든 block이 wirte 하기 전에 checksum을 한다.
   - block이 read될때 corruption check 를 한다.
   - trace file에 write와 error 정보를 return한다.
   - 자주 사용하면 perfomance가 않좋다.
   
[b]5. Log File Checksum[/b]

   LOG_BLOCK_CHECKSUM=TRUE
   
   - 모든 block이 wirte 하기 전에 checksum을 한다.
   - Archiver는 non-corrupt online redo log file을 사용한다.
   - 모든 group member가 corrupt되면 database는 hang 된다.
   - 많이 사용함.

[b]6. DBVERIFY utility 사용법[/b]
   ; data file이 깨지지 않았는지를 확인 할 수 있다.

   1) $ dbv file=system01.dbf logfile=dbv.log

   2) dbv.log 파일이 생성된다.

   3) $ vi dbv.log

      Total Pages Examined         : 25600
      Total Pages Processed (Data) : 5283
      Total Pages Failing   (Data) : 0
      Total Pages Processed (Index): 2218
      Total Pages Failing   (Index): 0
      Total Pages Empty            : 0
      Total Pages Marked Corrupt   : 0
      Total Pages Influx           : 0 

 

06. 오라클 데이터베이스의 완전한 복구 (Complete Recovery of Oracle Database)

 

 
[b]1. Noarchivelog Mode에서 Recovery[/b]

   장점:
   - Easy to perform, with low risk of error.
   - Recovery time = Time to restore files.
   
   단점:
   - Data is lost and must be reapplied manually.
   - The entire database is restored to the point of the last whole colsed backup.
   
   1) SVRMGR> shutdown abort
   2) SVRMGR> ! cp /disk1/backup/* /disk1/data/
   3) connect / as sysdba ;
   4) statup pfile=initSID.ora ;
   
[b]2. datafile을 다른 위치에 restore 하기[/b]

   SVRMGR> connect / as sysdba
   SVRMGR> startup mount pfile=initSID.ora
   SVRMGR> alter database rename file
        2     '/disk1/data/user_01.dbf'
        3  to '/disk2/data/user_01.dbf'    <-- 이때, 파일이 존재해야함.
        
[b]3. Archiving Mode에서 Complete Recovery[/b]

   장점:
   - Only need to restore lost files
   - Recovers all data to the time of failure
   - Recovery time = time to restore lost files and apply all archived logs
   
   단점:
   - Must have all archived logs since the backup from which you are restoring
   
[b]4. Complete Recovery Methods[/b]

   1) Closed database recovery : For system, rollback segment data files, or whole database
   2) Open database recovery with database initially open : For file loss
   3) Open database recovery with database initially closed : For hardware failure
   4) Recover a datafile with no backup
   
[b]5. Recovery를 위한 File정보를 갖고 있는 data dictionary[/b]

  - V$RECOVER_FILE : recovery가 필요한 datafile의 위치
  - V$LOG_HISTORY : 모든 archive log list
  - V$RECOVERY_LOG : recovery를 위한 모든 archive log list

[b]6. Complete Recovery : Method 1 (Closed Database)[/b]

   1) $ cp /disk1/backup/df2.dbf /disk2/data/
   
   2) SVRMGR> startup mount pfile=initSID.ora
      SVRMGR> recover datafile '/disk2/data/df2.dbf' ;
      
   3) alter database open ;
   
[b]7. Complete Recovery : Method 2 (Open Database, Initially Open)[/b]
   
   1) SQL> select d.file# f#, d.name, d.status, h.status
        2  from v$datafile d, v$datafile_header h
        3  where d.file#=h.file# ;
        
   2) $ cp /disk1/backup/db2.dbf /disk2/data/
   
   3) SVRMGR> recover datafile '/disk2/backup/db2.dbf' ;
   
   4) SVRMGR> alter database datafile
           2  '/disk2/data/df2.dbf' online ;
           
[b]8. Complete Recovery : Method 3 (Open Database, Initially closed)[/b]

   1) SVRMGR> startup mount pfile=$HOME/initSID.ora
   
      SVRMGR> select d.file#, d.ts#, h.tablespace_name, d.name, h.error
           2  from v$datafile d, v$datafile_header h
           3  where d.file#=h.file# ;
           
   2) SVRMGR> alter database datafile
           2  'disk2/data/df2.dbf' offline ;
           
   3) SVRMGR> alter database open ;
   
   4) $ cp /disk1/backup/df2.dbf /disk3/data/
   
      SVRMGR> alter database rename file '/disk2/data/df2.dbf'
           2  to '/disk3/data/df2.dbf' ;
           
      SQL> select file_id f#, file_name
        2  tablespace_name tablespace, status
        3  from dba_data_files ;
        
   5) SVRMGR> recover datafile '/disk3/data/df2.dbf' ;

   6) SVRMGR> alter database datafile
           2  'disk3/data/df2.dbf' online ;
           
[b]9. Complete Recovery : Method 4 (Loss of Datafile with No Backup)[/b]

   1) SVRMGR> alter tablespace TABLE_DATA offline immediate ;
      SVRMGR> select * from v$recover_file ;
      
   2) SVRMGR> alter database create datafile '/disk2/DATA/df7.dbf'
           2  as '/disk1/DATA/df7.dbf' ;
      SVRMGR> select * from v$recover_file ;
      
   3) SVRMGR> recover tablespace TABLE_DATA ;
   
   4) SVRMGR> alter tablespace TABLE_DATA online ;
   
[b]10. online backup중에 정전이 된 경우 recovery 방법[/b]

   SVRMGR> select * from v$backup ;
           --> status가 ACTIVE이면 backup mode에 걸려있다.
           --> FIlE# 를 알아 논다.
   
   SVRMGR> alter database datafile 2 end backup ;
           --> 여기서 2는 file#이다. file명 full name을 써줘도 된다.
           
   SVRMGR> select * from v$backup ;  --> 다시 확인해본다.
   
[b]11. Redo log가 2개 밖에 없을때, redo log recovery[/b]

    1) Re-creating Redo Logs
    
       SVRMGR> select * from v$logfile ;
       --> group# 가 1, 2 이고 1의 status가 null이면...
       
       SVRMGR> alter database drop logfile group 1 ;
       --> drop 되지 않는다. redo log가 2개 뿐이어서...
       
       SVRMGR> alter database add logfile group 3
            2  'disk/1/DATA/log3a.rdo' size 140k ;
       --> 새로운 redo log를 만든다.
       
       SVRMGR> alter database drop logfile group 1 ;
       --> group 1을 삭제한다.
       
       SVRMGR> alter database add logfile group 1
            2  '/disk1/DATA/log1a.rdo' sie 150k ;
       --> Re-creat한다.
       
       SVRMGR> alter database drop logfile gourp 3 ;
       --> 새로만든 group 3을 제거한다.
       
       $ rm /disk1/DATA/log3a.rdo
       
       SVRMGR> alter database open ;
       
    2) Clearing Online Redo Logs
    
       SVRMGR> ! cp /disk1/DATA/log2a.rdo /disk1/DATA/log1a.rdo
       SVRMGR> alter database clear logfile 'disk1/DATA/log1a.rdo' ;
       
    * 1) 과 2)는 동일한 방법이다.
    
[b]12. Recovery 상태 정보를 갖고 있는 view[/b]

    - V$RECOVERY_FILE_STATUS : 각 file들에 대한 recovery 정보
    - v$RECOVERY_STATUS : 모든 database recovery 정보

 

아카이빙을 이용한 불완전한 백업 (Incomplete Oracle Recovery with Archiving)

 

 
[b]1. Incomplete Recovery의 종류[/b]

   - Time-based recovery : 지정한 시간까지만 복구해라.
   - Cancel-based recovery : cancel 할때까지 복구 하겠다.
   - Recovery using a backup control file
   - Change-based recovery : 분산 data 환경에서 사용. SCN(System Change Number)-based recovery.
   
[b]2. Incomplete Recovery command[/b]

   recover [automatic] database 

 

오라클 Export, Import 유틸리티 (Oracle Export and Import Utilities)

 

[b]1. Export and Import Utility 가 하는 일[/b]
   - historical archive를 생성한다.
   - table의 데이터와 구조를 binary file로 저장한다.
   - oracle의 다른버전으로 migration 할 때 사용하면 좋다.
     - 갑작스런 drop or truncate로부터 복구를 목적으로 사용된다.

[b]2. Export 사용법 (exp scott/tiger file=/backup/orabackup.dmp owner=scott)[/b]

   $ exp scott/tiger tables=(dept,emp) \
   > file=emp.dmp log=exp.log compress=n \
   > direct=y recordlength=32768
   
   [syntax]
   $ exp [keyword=]{value | (value, value ...)}
      [ [ [,] keyword=]{value | (value, value ...)} ] ...
   
Parameter       Description
USERID           Username/password of schema objects to export
FILE               Name of output file
ROWS            Include table rows in export file: (Y)ex/(N)o
FULL              Export entire database : (Y)es/(N)o
OWNER          Users to export : Username
TABLES         Tables to export : List of tables
INDEXES        Indexes to export : (Y)es/(N)o
DIRECT         Specify direct mode export : (Y)es/(N)o -- 좀더 빨리처리한다.
INCTYPE      Type of export level
PARFILE       Name of file in which parameters are specified.
HELP           Display export parameters in interactive mode (Y)
LOG             Name of file for informational and error messages
CONSISTENT  Read-consistent view of the database when data is updated during an export : (Y)es/(N)o
BUFFER       Size of the data buffer in bytes : (Integer)
POINT_IN_TIME_RECOVER   Indicates whether or not the Export utility exports 
                   one or more tablespaces in an Oracle database 
                   Refer to the Oracle Server Readme, Relaease 8.0.4
RECOVERY_TABLESPACES
                 Specifies the tablespaces that will be recovered using point-in-time 
                 recovery 
                  Refer to the Oracle Server Readme, Release 8.0.4
COMPRESS   Specified to include all data in one extent : (Y)es/(N)o
 
[b]3. Import 사용법 (imp scott/tiger file=/backup/orabackup.dmp full=y commit=y)[/b]

   $ imp scott/tiger tables=(dept, emp) \
   > file=emp.dmp log=imp.log ignore=y
   
Parameter           Description
USERID        Username/passwordof schema objects to export
FILE            Name of the input file. Must be a valid Export Utility file.
ROWS         Include table rows in import file.
IGNORE       Ignore create errors due to an object's existence.
FULL           Import entire file.
TABLES      Tables to import
INDEXES     Indexes to import
INCTYPE    Specifies the type of incremental import. Options are SYSTEM 
                 and RESTORE.
PARFILE     Parameter specification file
HELP         Display export parameters in interactive mode.
LOG          File for informational and error messages
DESTROY  Specifies whether or not the existing datafile making up the database 
                should be reused.
FROMUSER  A list of schemas containing objects to import
TOUSERS    Specifies a list of usernames whose schemas will be imported.
INDEXFILE   Specifies a file to receive index-creation commands.
POINT_IN_TIME_RECOVER
                  Indicates whether or not Import recovers one or more tablespaces
                 in an Oracle database to a prior point in time without affecting the 
                rest of the database.
Refer to the Oracle Server Readme, Release 8.0.4
[Top]
No.
제목
작성자
작성일
조회
8865Oracle 9i Online Documentation
정재익
2001-12-13
3945
8864리눅스에서 오라클 JDBC연동 [1]
정재익
2001-12-13
7188
8862Oracle 8 - Situation
정재익
2001-12-12
6096
8859Oracle 8 - Backup &amp; Recovery (1)
정재익
2001-12-12
10270
8858Oracle 8 - Network Administration
정재익
2001-12-12
12046
8854Oracle 8 - Database Administration (2)
정재익
2001-12-12
28672
8853Oracle 8 - Database Administration (1)
정재익
2001-12-12
14725
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다