2014년 12월 8일 월요일

[백업/복구]완전복구 – DB Open상태에서(2)[구로디지털단지/오라클초보기초교육/SQL초보평일주말교육학원/오라클12c/개발자SQL을 위하여]

Complete Recovery – DB Open상태에서(2) 

현재 데이터베이스는 아카이브 로그 모드로 운영 중이며 이전에 손상된 데이터파일에 대한 
백업을 받아둔 것이 있으며 백업을 받은 이후의 아카이브 로그가 아카이브    로그 폴더로 
지정된 곳에 저장되어 있다고 가정 하겠습니다. 


------------------------------------------------ 
환경 : Oracle 9.2 윈도우 
Close backup이 있는곳 : c:\backup\oradata\wink 
데이터파일 위치 : c:\oracle oradata\wink 
아카이브 로그 폴더 : C:\oracle\ora92\database\archive 
------------------------------------------------ 


====================================================== 
복구 예 
====================================================== 


1.        아카이브 로그 모드로 운영 중인지를 확인, 아카이브 로그 폴더 확인 

SQL> conn / as sysdba 
Connected. 

SQL> archive log list 
Database log mode              Archive Mode 
Automatic archival            Enabled 
Archive destination            C:\oracle\ora92\database\archive 
Oldest online log sequence    304 
Next log sequence to archive  306 
Current log sequence          306 


2.        아카이브 로그폴더에 로그가 있는지 확인 

SQL> host dir C:\oracle\ora92\database\archive 
 C 드라이브의 볼륨에는 이름이 없습니다. 
 볼륨 일련 번호: FC30-E1BC 

 C:\oracle\ora92\database\archive 디렉터리 

2005-03-26  오전 11:37    <DIR>          . 
2005-03-26  오전 11:37    <DIR>          .. 
2005-03-20  오후 01:09        5,435,392 001_00292.ARC 
2005-03-20  오후 02:59          195,072 001_00293.ARC 
2005-03-20  오후 07:15          225,792 001_00294.ARC 
2005-03-21  오전 01:26          167,424 001_00295.ARC 
2005-03-22  오전 09:00        4,068,864 001_00296.ARC 
2005-03-22  오전 09:01          148,480 001_00297.ARC 
2005-03-24  오전 09:12        10,485,248 001_00298.ARC 
2005-03-24  오전 09:13        10,477,568 001_00299.ARC 
2005-03-24  오전 09:22        10,485,248 001_00300.ARC 
2005-03-24  오전 09:23        10,485,248 001_00301.ARC 
2005-03-24  오전 09:32        10,485,248 001_00302.ARC 
2005-03-24  오전 09:33        10,485,248 001_00303.ARC 
2005-03-24  오전 09:38        10,485,248 001_00304.ARC 
2005-03-26  오전 11:37        4,341,248 001_00305.ARC 
              14개 파일          87,971,328 바이트 

3.        SCOTT 계정에서 실습을 위해 기본 테이블스페이스를 USERS로 바꾸고 USERS 테이블스페이스의 데이터파일을 확인 해두자… 

SQL>conn / as sysdba 

SQL> -- SCOTT 계정에서 테스트 할 것이므로 SCOTT의 기본 테이블스페이스를 확인 

SQL> select username, default_tablespace 
  2  from dba_users 
  3  where username = 'SCOTT'; 

USERNAME                      DEFAULT_TABLESPACE 
------------------------------ ------------------------------ 
SCOTT                          SYSTEM 

SQL> -- SYSTEM으로 되어 있으므로 실습을 위해 user로 변경 
SQL> -- 이미 users로 되어 있다면 이 부분은 SKIP 

SQL> alter user scott default tablespace users; 

User altered. 

SQL> -- users 테이블스페이스의 데이터파일을 확인해 두자... 


SQL> select FILE_NAME, TABLESPACE_NAME 
  2  from dba_data_files 
  3  where tablespace_name = 'USERS'; 

FILE_NAME 
-------------------------------------------------------------------------------- 

TABLESPACE_NAME 
------------------------------ 
C:\ORACLE\ORADATA\WINK\USERS01.DBF 
USERS 


4.        SCOTT 계정에서 테이블을 하나 만들고 데이터를 넣음… 나중에 이 테이블이 만들어지고 데이터가 들어가 있는 상태까지 복구를 함… 

SQL> conn scott/tiger 
Connected. 
SQL> drop table test; 

Table dropped. 

SQL> create table test ( 
  2  name varchar2(10) not null primary key, 
  3  tel varchar2(20) 
  4  ); 

Table created. 

SQL> insert into test (name, tel) 
  2  values ('이종철','010-999-0009'); 

1 row created. 

SQL> commit; 

Commit complete. 

SQL> select * from test; 

NAME      TEL 
---------- -------------------- 
이종철    010-999-0009  

5.        관리자로 접속해서 TEST Table이 USERS 테이블스페이스에 만들어짐을 확인하며 checkpoint, switch logfile을 통해 아카이브 로그를 강제로 만듭니다. 

SQL> conn / as sysdba 
Connected. 

SQL> select table_name, tablespace_name 
  2  from dba_tables 
  3  where owner = 'SCOTT' 
  4  and  table_name = 'TEST'; 

TABLE_NAME                    TABLESPACE_NAME 
------------------------------ ------------------------------ 
TEST                          USERS 

SQL> alter system checkpoint; 

System altered. 

SQL> alter system switch logfile; 

System altered. 

6.        user01.dbf를 삭제 함으로서 사고를 칩니다…^^(데이터파일을 오프라인으로 만든 후 지웁니다. 온라인으로 되어 있는 경우 다른 프로세스가 사용하고 있다면서 삭제 되지 않습니다.) 

SQL> conn / as sysdba 
Connected. 

SQL> alter database datafile 'c:\oracle\oradata\wink\users01.dbf' offline; 

Database altered. 

SQL> host del c:\oracle\oradata\wink\users01.dbf  --데이터 파일 삭제 

7.        사고난 것을 확인 

SQL> conn scott/tiger 
Connected. 

SQL> select * from test; 
select * from test 
              * 
ERROR at line 1: 
ORA-00376: file 9 cannot be read at this time 
ORA-01110: data file 9: 'C:\ORACLE\ORADATA\WINK\USERS01.DBF' 


8.        장애 파일을 확인… 

SQL>conn / as sysdba 

SQL> col tablespace_name format a10 
SQL> col name format a30 
SQL> col error format a10 

SQL> select h.tablespace_name, d.name, h.error 
  2  from v$datafile d, v$datafile_header h 
  3  where d.file# = h.file#; 

TABLESPACE      NAME                                          ERROR 
---------- ------------------------------ ----------------------- 
SYSTEM    C:\ORACLE\ORADATA\WINK\SYSTEM01.DBF 
UNDOTBS1  C:\ORACLE\ORADATA\WINK\UNDOTBS01.DBF 
EXAMPLE    C:\ORACLE\ORADATA\WINK\EXAMPLE01.DBF 
INDX        C:\ORACLE\ORADATA\WINK\INDX01.DBF 
            C:\ORACLE\ORADATA\WINK\USERS01                FILE NOT 

  TABLESLACE이름이 비어 있는 ERROR에 FILE NOT FOUND라는 부분이 
오류를 나타냅니다. 


SQL> select d.file#, d.name, d.status, h.status 
  2  from v$datafile d, v$datafile_header h 
  3  where d.file# = h.file#; 

    FILE# NAME                          STATUS  STATUS 
---------- ------------------------------ ------- ------- 
        1 C:\ORACLE\ORADATA\WINK\SYSTEM01.DBF SYSTEM  ONLINE 
          1.DBF 
          …… 
          …… 
          …… 

        8 C:\ORACLE\ORADATA\WINK\TOOLS01.DBF ONLINE  ONLINE 
        9 C:\ORACLE\ORADATA\WINK\USERS01.DBF ONLINE  ONLINE 
          .DBF 

SQL>-- ONLINE으로 되어 있다면 OFFLINE으로 변경 

SQL> alter database datafile 'c:\oracle\oradata\wink\users01.dbf' offline; 

Database altered. 

9.        손상을 입은 users01.dbf를 데이터파일이 있는 위치에 복사 

SQL> host copy c:\backup\oradata\wink\users01.dbf c:\oracle\oradata\wink 
        1개 파일이 복사되었습니다. 

10.        복구를 진행 합니다. 

SQL> recover datafile 'c:\oracle\oradata\wink\users01.dbf' 
Media recovery complete. 

SQL> alter database datafile 'c:\oracle\oradata\wink\users01.dbf' online; 

Database altered. 

11.        복구된 데이터를 확인 

SQL> conn scott/tiger 
Connected. 

SQL> select * from test; 

NAME                          TEL 
------------------------------ -------------------- 
이종철                        010-999-0009 

* 이종철님에 의해서 게시물 이동되었습니다 (2006-06-04 12:25)




 [100%환급외,실무전문]빅데이터/SQL/자바/스프링/안드로이드/닷…오라클자바…12-272769
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-112010
53 [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… 오라클자바…03-151824
52 [주말]C#,ASP.NET마스터 오라클자바…01-311982
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312934
50 [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 오라클자바…01-311527
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… 오라클자바…01-191851
48 [평일야간,주말]안드로이드개발자과정(Android기초실무) 오라클자바…01-111729
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032289
46 [100%환급외,실무전문]빅데이터/SQL/자바/스프링/안드로이드/닷… 오라클자바…12-272769
45 [평일주간]NoSQL,MongoDB,빅데이터기초과정 오라클자바…12-191942
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141922
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-112010
42 [평일주간]빅데이터하둡기초과정(BigData Hadoop) 오라클자바…12-091568
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011795
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-012007
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011445

댓글 없음:

댓글 쓰기