#백업의 종류
( Closed backup & Open backup )
CLOSED BACKUP | 반드시 SHUTDOWN 한 후에 BACKUP한다. |
OPEN BACKUP | STARTUP 된 상태에서 BACKUP |
# 백업모드의 종류
(NOARCHIVE MODE / ARCHIVE MODE)
(NOARCHIVE에서는 closed backup만 가능하다. 하지만 archive 모드에서는 ( Closed backup & Open backup ) 모두 지원한다.)
## 백업 전의 정보확인 하기
SELECT *
FROM V$DATABASE;
SELECT *
FROM V$controlfile;
SELECT *
FROM V$controlfile_record_section;
p333 practice 2 문제 재정리해보기~* 하나마나 이긴한듯하지만...
select *
from dba_tablespaces
where contents='TEMPORARY';
select *
from dba_temp_files;
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\TEMP01.DBF 이 파일을 오라클을 정지시킨 후, 지운다.
그리고 다시 접속을 하고~*
sql>
select *
from dba_tablespaces;
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
CLOSED BACKUP(NOARCHIVE MODE)하기!
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
SELECT log_mode
FROM V$DATABASE;
--현재 NOARCHIVE MODE 임을 확인할 수 있다.
첫째. 가장 먼저 백업해야할 대상을 조회하고 복사해둔다.
1. PARAMETER FILE | C:\oracle\product\10.1.0\db_1\database\SPFILEORA10G.ORA |
2. CONTROLFILE | C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\CONTROL01.CTL --C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\CONTROL02.CTL --C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\CONTROL03.CTL
SELECT NAME FROM V$CONTROLFILE; |
3. DATAFILE | C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\USERS01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\EXAMPLE01.DBF
D:\KHDATA\KHTBS01.DBF
SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES; |
4. REDO LOG FILE |
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\REDO01.LOG --C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\REDO02.LOG --C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10G\REDO03.LOG
SELECT MEMBER FROM V$LOGFILE; |
5. PASSWORD FILE | C:\oracle\product\10.1.0\db_1\database\PWDora10g.ora |
이제 위의 오라클의 주요 5개 FILE( Parameter / Control / Datafile / REDO LOG FILE / PASSWORD) FILE을 복사하여 한 곳에 둔다.
둘째, 이제 SCN No.를 불일치시켜주기 위해 임의의 사용자(KHORAUSER)로 접속하여 데이터를 갱신한다.
1. 해당 계정에 있는 테이블을 조회한다.
select *
from tab;
2. 그 중 하나를 선택하고, 데이트 갱신을 시행한다.
select *
from tblbuseo;
insert into tblbuseo values(40,'놀자부','서울');
commit;
CREATE TABLE TBLBUSEO2
AS
SELECT dname, loc
FROM TBLBUSEO;
3. 이제 데이터의 유실을 발생시켜본다.
--우선 시스템을 shutdown immediate 명령을 통해 비정상적으로 종료시킨다. --그리고 테이블스페이스를 제거한다.
--이제 다시 오라클 서버를 재구동시킨다. |
재구동을 시키게 되면 테이블스페이스를 지웠기 때문에 아래와 같은 오류메세지가 발생하게 된다.
SQL> STARTUP |
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 171966464 bytes Fixed Size 787988 bytes Variable Size 145750508 bytes Database Buffers 25165824 bytes Redo Buffers 262144 bytes 데이터베이스가 마운트되었습니다. ORA-01157: 데이터 6 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을 보십시오 ORA-01110: 6 데이터 파일: 'D:\KHDATA\KHTBS01.DBF' |
이와 같은 문제 발생하게 되는데 이제 다시 백업받은 파일 중 위에서 문제가 되고 있는 (일부러 지운) 'KHTBS01.DBF' 를 원위치에 복사한다.
그리고 다시 STARTUP을 해보면 |
SQL> STARTUP |
ORACLE 인스턴스가 시작되었습니다. Total System Global Area 171966464 bytes Fixed Size 787988 bytes Variable Size 145750508 bytes Database Buffers 25165824 bytes Redo Buffers 262144 bytes 데이터베이스가 마운트되었습니다. ORA-01113: 6 파일이 매체 복구되어야 합니다 ORA-01110: 6 데이터 파일: 'D:\KHDATA\KHTBS01.DBF' |
여전히 문제가 발생하는데 이는 SCN 이 다르기 떄문이다. (백업받은 데이터와 그 후에 입력한 데이터값으로 인하여 scn이 불일치 되었기 때문이다. 그러므로 control file, 및 REDO LOG FILE등도 같이 복원하여 준다. |
셋째. 이제 다시 오라클 서버를 재구동(STARTUP)시켜주게되면 정상적으로 작동하게 되는 것을 확인할 수 이다. 단, 여기서 문제는 주요 파일을 백업한 시점까지의 데이터만 살아난 다는 것이다. (다른 말로, 위에서 'insert into tblbuseo values(40,'놀자부','서울');' 값이나 'TBLBUSEO2'은 복원되지 않는다는 것이다.
'Database' 카테고리의 다른 글
OUTER JOIN 기본 사용규칙 (0) | 2010.04.15 |
---|---|
오라클 주요 간단 정리 (0) | 2009.05.13 |
Backup Solution (0) | 2009.04.30 |
오라클 내장 주요 sql 스크립트 (0) | 2009.04.26 |
오라클 예약어 (0) | 2009.04.26 |
CHAPTER18. Oracle Password Management (0) | 2009.04.21 |
Chapter16. Oracle OS authentication User create (0) | 2009.04.21 |
CHAPER 10 ORACLE TEMPORARY TABLE (0) | 2009.04.20 |
chaper 9 oracle extent & segment 정보확인 (0) | 2009.04.20 |
TABLESPACE의 생성 및 관리 (0) | 2009.04.20 |