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
|