반응형
/********************************************************************************************
-- Title : [8i] 오라클 DB의 완전 복구(OLN)
-- Reference : OLN
-- Key word :
********************************************************************************************/

/****************************************************************************************
-- 온라인 리두 로그 파일 손상 체크
****************************************************************************************/
-- 온라인 리두 로그 파일에 필요한 리두 로그가 모두 존재하는지 확인.
SQL> SELECT *
  2  > FROM v$recover_file;
FILE#   ONLINE    ERROR    CHANGE#    TIME
-----   --------  -------- ---------- ----------
    2   OFFLINE            56744      09-MAR-01
   
-- 복구에 필요한 리두 로그 데이터가 온라인 리두 로그 파일에 존재하는지 확인.
SQL> SELECT group#, sequence#, first_change#, status
  2  FROM v$log;
    GROUP#  SEQUENCE# FIRST_CHANGE# STATUS
---------- ---------- ------------- ----------------
         1        478         49288 CURRENT
         2        476         49183 INACTIVE
         3        477         49225 INACTIVE

/****************************************************************************************
-- 복구를 위해 필요한 파일
****************************************************************************************/
  ㅇv$recover_file : 복구가 필요한 데이터 파일 찾기
  ㅇv$archive_log  : 데이터베이스의 모든 아카이브 로그 리스트 알기
  ㅇv$recovery_log : 복구 위해 필요한 모든 아카이브 로그 리스트 알기
-- 복구가 필요한 데이터파일 찾기
SVRMGR> select * from v$recover_file:
FILE#  ONLINE   ERROR  CHANGE#   TIME
-----  -------  -----  -------   ---------
    2  OFFLINE          288772   02-DEC-97
-- 적용할 아키이브 로그 찾기
SVRMGR> select * from v$recovery_log;
THREAD#   SEQUENCE#  TIME        ARCHIVE_NAME
-------   ---------  ---------   --------------------------
      1          34  02-DEC-97   /disk1/archive/arch_34.rdo
      ...          
      1          43  04-DEC-97   /disk1/archive/arch_43.rdo
      1          44  04-DEC-97   /disk1/archive/arch_44.rdo
SVRMGR> recover datafile 2;
ORA-00279 :  change 288772...12/02/97 15:32:29 needed for thread 1
ORA-00289 :  suggestion : /disk1/archive/arch_34.rdo
ORA-00280 :  change 288772 for thread 1 is in sequence #34
Specify log :  {<RET>=suggested | filename | AUTO | CANCEL}

/****************************************************************************************
-- 복구 정보 검색
****************************************************************************************/
-- 복구 상태 정보 뷰 : 이 뷰들에 대한 정보는 "alter database recover"명령 수행시
   서버 프로세스의 PGA에 존재한다. 따라서 다른 세션에서 볼 수 없다.
   ㅇv$recovery_status      : 전반적인 데이터베이스 복구 정보를 갖고 있음.
   ㅇv$recovery_file_status : 복구가 필요한 각 데이터파일에 대한 정보 소유.
-- 복구 상태 예(샘플)
SVRMGR> alter database recover datafile 2;
alter database recover datafile 2
*
ORA-00279: change 148448...11/29/97/ 17:04:20 needed for thread 1
ORA-00289: suggestion : /disk1/archive/arch_6.rdo
ORA-00280: change 148448 for thread 1 is in sequence #6
SVRMGR> select * from v$recovery_status;
RECOVERY   THREAD  SEQ_NEEDED  SCN_NEEDED  TIME_NEED  PREV_LOG
---------  ------  ----------  ----------  ---------  --------
29-NOV-97       1           6  0           29-NOV-97  NONE
1 row selected.
SVRMGR> select * from v$recovery_file_status;
FILENUM  FILENAME               STATUS
-------  ---------------------  ---------------
      6  /disk1/data/df2.dbf    IN RECOVERY
1 row selected.

/****************************************************************************************
-- 다른 위치로 복원
****************************************************************************************/
-- data/system01.dbf 파일을 data2폴더로 카피
$ cp ./data/system01.dbf ./data2/
$ sqlplus internal
SQL*Plus: Release 8.1.7.0.0 - Production on Wed Sep 1 08:18:40 2004
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
Connected to an idle instance.
SQL> STARTUP MOUNT
ORACLE instance started.
Total System Global Area   25419936 bytes
Fixed Size                    73888 bytes
Variable Size              24449024 bytes
Database Buffers             819200 bytes
Redo Buffers                  77824 bytes
Database mounted.
SQL> ALTER DATABASE RENAME FILE
  2     '/export/home/oracle8i/iORCL/data/system01.dbf'
  3  TO '/export/home/oracle8i/iORCL/data2/system01.dbf';
Database altered.
SQL> ALTER DATABASE OPEN;
Database altered.

/****************************************************************************************
-- 완전 복구 방법
****************************************************************************************/
ㅇ방법 1. 닫힌 데이터베이스 복구
  - 24시간 운영하는 데이터베이스가 아닌 경우
  - 복구되는 파일이 시스템 또는 롤백 세그먼트 테이블스페이스에 속할 경우
  - 전체 데이터베이스 또는 배부분의 데이터 파일 복구가 필요한 경우
ㅇ방법 2. 초기에 오픈 상태로 오픈 데이터베이스 복구
  - 파일 손상, 우발적 파일 손실, 미디어 장애가 발생하여 데이터베이스가 종료되지 않은 상황
  - 24시간 운영되는 데이터베이스로 down-time을 최소한으로 유지해야 하는 경우
  - 복구된 파일들이 시스템이나 롤백 테이블 스페이스에 속하지 않는 경우
ㅇ방법 3. 초기에 닫힌 상태로 오픈 데이터베이스 복구
  - 미디어 또는 하드웨어 장애로 시스템이 다운 되었을 때
  - 24시간 운영되는 데이터베이스로 down-time을 최소한으로 유지해야 하는 경우
  - 복구된 파일들이 시스템이나 롤백 테이블 스페이스에 속하지 않는 경우
ㅇ방법 4. 백업없이 데이터파일 복구
  - 미디어 또는 사용자 장애로 인해 전혀 백업 받지 않은 데이터파일의 손실을 초래한 경우
  - 파일이 생성된 이후로 모든 아카이브 로그가 존재하는 경우
  - 저장되는 파일들이 시스템이나 롤백 테이블스페이스에 속하지 않는 경우

/****************************************************************************************
-- RECOVER 구문
****************************************************************************************/
-- 닫힌 데이터베이스 복구 예
SQL> recover database;
SQL> recover datafile '/disk1/data/df2.dbf'
SQL> alter database recover database;
-- 열린 데이터베이스 복구 예
SQL> recover tablespace USER_DATA;
SQL> recover datafile 2:
SQL> alter database recover datafile 2;

/****************************************************************************************
-- 아카이브를 다른 위치에 복원
****************************************************************************************/
-- "recover" 프롬프트에서 위치 및 이름 명시
specify  log: {<RET>=suggested | filename | AUTO | CANCEL}
-- "alter system archive" 명령 사용
SQL> alter system archive log start to <new location>;
-- "recover from <location>" 명령 사용
SQL > recover from '<new location>' database;

/****************************************************************************************
-- 자동적으로 리두로그 파일 적용
****************************************************************************************/
-- 1. 미디어 복구 시작 전에 명령문 사용
SVRMGR > set autorecovery on
-- 2. 리두로그 파일 요청 프롬프트시 auto 입력
SVRMGR > recover datafile 4;
ORA-00279: change 308810...12/02/97/ 17:00:14 needed for thread 1
ORA-00289: suggestion : /disk1/archive/arch_35.rdo
ORA-00280: change 308810 for thread 1 is in sequence #35
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO
Log applied.
   ...
    
-- 3. 복구 명령에서 "automatic" 옵션 사용
SVRMGR  > recover automatic datafile 4;
Media recovery complete.
 
/****************************************************************************************
-- 완전 복구 : 방법 1 (Closed Databse)
****************************************************************************************/
-- 1. 임의 에러 생성(shutdown후 system01.dbf를 과거 파일로 대체)
-- 2. 에러 확인(다시 startup시 에러 발생)
SQL> STARTUP
...
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/export/home/oracle8i/iORCL/data2/system01.dbf'
-- 3. 전체 shutdown
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
-- 4. 백업으로부터 파일 복원(이용 가능할 시 가장 최근 것)
$ cp /backup/systemp01.dbf ../../iORCL/systs/
-- 5. mount 모드로 인스턴스 기동
SQL> STARTUP MOUNT PFILE=$ORACLE_HOME/iORCL/init/initORCL.ora
ORACLE instance started.
-- 6. 데이터 파일 복구
SQL> RECOVER DATAFILE '/export/home/oracle8i/iORCL/systs/system01.dbf';
Media recovery complete.
-- 7. 데이터베이스 오픈
SQL> ALTER DATABASE OPEN;
Database altered.
-- 8. 장애 발생 시점으로 데이터파일 복원에 필요한 아카이브 로그 및 리두로그 적용 확인.
-- 9. 추후, 사용자에게 데이터베이스가 이용가능하며 시스템 장애 전의 커밋 안된 데이터는
      재입력해야 한다고 공지.
-- 주. ㅇ적용할 많은 아카이브 로그 존재시 "recover"명령의 "automatic"기능을 사용하거나
         다음 Server Manager 명령을 사용.
         svrmgr> set autorecovery on
         svrmgr> recover database;
       ㅇ이용 가능한 스페이스가 존재 시 log_archive_dest에 명시된 위치로 필요한 아카이브
         리두 로그 파일을 저장한다.
        
/****************************************************************************************
-- 완전 복구 : 방법 2 (Open Database, Initially Opened)
****************************************************************************************/
-- 1. 데이터파일과 테이블스페이스 확인
SQL> SELECT file_id f#, file_name, tablespace_name tablespace, status
  2  FROM dba_data_files;
F# FILE_NAME                                 TABLESPACE  STATUS
------- ----------------------------------------------- ----------- ----------
1 /export/home/oracle8i/iORCL/data2/system01.dbf SYSTEM     AVAILABLE
2 /export/home/oracle8i/iORCL/systs/tools01.dbf TOOLS     AVAILABLE
3 /export/home/oracle8i/iORCL/systs/rbs01.dbf RBS     AVAILABLE
4 /export/home/oracle8i/iORCL/systs/temp01.dbf TEMP     AVAILABLE
5 /export/home/oracle8i/iORCL/systs/users01.dbf USERS     AVAILABLE
6 /export/home/oracle8i/iORCL/systs/indx01.dbf INDX     AVAILABLE
-- 2. 데이터파일을 오프라인으로 할 필요가 있는지 결정한다.
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#;
 
F# NAME                                         STATUS STATUS
------- ----------------------------------------------- ------- -------
1 /export/home/oracle8i/iORCL/data/system01.dbf SYSTEM ONLINE
2 /export/home/oracle8i/iORCL/systs/tools01.dbf ONLINE ONLINE
3 /export/home/oracle8i/iORCL/systs/rbs01.dbf ONLINE ONLINE
4 /export/home/oracle8i/iORCL/systs/temp01.dbf ONLINE ONLINE
5 /export/home/oracle8i/iORCL/systs/users01.dbf RECIVER OFFLINE
6 /export/home/oracle8i/iORCL/systs/indx01.dbf ONLINE ONLINE
-- 3. 이 파일이 오프라인 상태기에 복원 가능. 백업된 해당 파일을 카피
      SQL이 실행중인 창은 그대로 두고 다른 창을 띄어 카피한다.
      오라클은 계속 online중. users TS만 offline.
$ cp /backup/users01.dbf ../../iORCL/systs/
-- 4. 복원된 데이터파일에 아카이브와 리두로그 적용
SQL> RECOVER DATAFILE '/export/home/oracle8i/iORCL/systs/users01.dbf'
Media recovery complete.
또는
SQL> RECOVER TABLESPACE USERS;
-- 5. 온라인 상태로 만든다.
SQL> ALTER TABLESPACE USERS online;
Tablespace altered.
또는
SQL> ALTER DATABSE DATAFILE
  2        '/export/home/oracle8i/iORCL/systs/users01.dbf' online;
-- 주. ㅇ오라클은 가끔씩 파일 문제를 발견하여 해당 파일을 오프라인 상태로 만든다. 복구 전
         어떤 에러가 있는지 조사하기 위해 alert log를 항상 검사하고 또한 파일의 상태를
         점검해야 한다. offline 파일 자체도 복구가 요구될 수 있다.
       ㅇ테이블스페이스가 오프라인 상태일 때 해당 데이터파일 내부에 포함되어 있는 데이터만
         액세스될 수 없다. 해당 테이블 스페이스는 여전히 이용 가능한 상태로 남아있다.
        
/****************************************************************************************
-- 완전 복구 : 방법 3 (Open Database, Initially Closed)
****************************************************************************************/
-- 1. 조사시 미디어 오류로 가정.
      $ORACLE_HOME/iORCL/systs/users01.dbf를 $ORACLE_HOME/iORCL/data/users01.dbf로 옮기고
      새로운 미디어를 사용한다고 가정함.
-- 2. 데이터베이스를 마운트하고 user01.dbf가 오픈되지 않는다고 가정한다.
      만약 users01.dbf가 어느 테이블스페이스에 속하는지 모른다면 두번째 쿼리를 사용한다.
SQL> STARTUP MOUNT PFILE=$ORACLE_HOME/iORCL/init/initORCL.ora
Database Mounted.
       
SQL> SELECT d.file#, d.ts#, h.tablespace_name ts_name, d.name, h.error
  2  FROM v$datafile d, v$datafile_header h
  3  WHERE d.file# = h.file#;
FILE# TS# TS_NAME NAME                                        ERROR
------- ------- ------- ---------------------------------------------- ---------------
1 0 SYSTEM /export/home/oracle8i/iORCL/data/system01.dbf 
2 1 TOOLS /export/home/oracle8i/iORCL/systs/tools01.dbf 
3 2 RBS /export/home/oracle8i/iORCL/systs/rbs01.dbf 
4 3 TEMP /export/home/oracle8i/iORCL/systs/temp01.dbf 
5 4 USERS /export/home/oracle8i/iORCL/systs/users01.dbf  FILE NOT FOUND 
6 5 INDX /export/home/oracle8i/iORCL/systs/indx01.dbf 
-- 3. 데이터파일이 오프라인이 아니라면 데이터베이스는 오픈되지 않는다. 따라서 오프라인을
      다음 명령으로 실행한다.
SQL> ALTER DATABASE DATAFILE
  2        '/export/home/oracle8i/iORCL/systs/users01.dbf' OFFLINE;
Database altered.
-- 4. 데이터베이스가 이제 오픈될 수 있다.
SQL> ALTER DATABASE OPEN;
Database altered.
-- 5. 백업 디바이스로 부터 새로운 미디어에 users01.dbf 파일 카피
$ cp /backup/users01.dbf $ORACLE_HOME/iORCL/data/
-- 6. 새로운 위치의 파일을 오라클에 통보한다. 데이터베이스가 오픈되고 테이블스페이스 복구가
      요구될 때 이 데이터파일을 소유하고 있는 테이블스페이스 이름을 알기 위해 두번 째 명령을
      사용한다.
SQL> ALTER DATABASE RENAME FILE
  2        '/export/home/oracle8i/iORCL/systs/users01.dbf'
  3     TO '/export/home/oracle8i/iORCL/data/users01.dbf';
Database altered.
SQL> SELECT file_id f#, file_name, tablespace_name ts_name, status
  2  FROM dba_data_files;
F# FILE_NAME                                 TS_NAME STATUS
------- ----------------------------------------------- ------- ---------
1 /export/home/oracle8i/iORCL/data/system01.dbf SYSTEM AVAILABLE
2 /export/home/oracle8i/iORCL/systs/tools01.dbf TOOLS AVAILABLE
3 /export/home/oracle8i/iORCL/systs/rbs01.dbf RBS AVAILABLE
4 /export/home/oracle8i/iORCL/systs/temp01.dbf TEMP AVAILABLE
5 /export/home/oracle8i/iORCL/data/users01.dbf USERS AVAILABLE
6 /export/home/oracle8i/iORCL/systs/indx01.dbf INDX AVAILABLE
-- 7. 복원된 데이터파일에 아카이브 및 리두 로그 적용을 개시한다.
SQL> RECOVER TABLESPACE users;
Media recovery complete.
또는
SQL> RECOVER DATAFILE '/export/home/oracle8i/iORCL/data/users01.dbf';
-- 8. 복구가 완료되었을 때 모든 데이터파일은 동기화된다. 테이터 파일을 온라인시킨다.
SQL> ALTER TABLESPACE users online;
Tablespace altered.
또는
SQL> ALTER DATABASE DATAFILE '/export/home/oracle8i/iORCL/data/users01.dbf' ONLINE;
-- 9. 사용자들에게 데이터베이스가 이용가능하고 시프템 장애 전의 커밋이 안된 데이터는
      재입력하라는 통보를 내린다.

/****************************************************************************************
-- 완전 복구 : 방법 4 (백업없는 데이터파일의 손실)
               에러 발생. 차후 재확인 요.
****************************************************************************************/
-- 1. 데이터파일이 손실되었는데 백업본이 없다. 시스템이나 롤백세그먼트 파일이 아니고 과거
      동안의 모든 아카이브 로그를 갖고 있음을 가정으로 한다.
-- 2. 데이터베이스가 close되었다면 마운트하고 데이터파일(백업 없음)을 오프라인으로 한 다음
      open시킨다. 이렇게 해서 다른 테이블스페이스 사용자의 작업을 계속 진행시킬 수 있다.
      데이터베이스가 open되어 있다면 데이터파일만 offline시킨다.
      주. 존재하지 않는 파일에 쓰기를 시도하는 체크포인트를 피하기 위해 immediate 옵션 포함.
SQL> ALTER TABLESPACE users OFFLINE IMMEDIATE;
Tablespace altered.
-- 3. 백업 상태를 점검하기 위해 v$recover_file을 검색하여 복구 상태를 확인한다.
SQL> select * from v$recover_file;
FILE#  ONLINE   ERROR           CHANGE#  TIME
-----  -------  --------------  -------  -----
    7  OFFLINE  FILE NOT FOUND        0
-- 4. 손실된 데이터파일(백업 없음)을 재생성한다.
SQL> ALTER DATABASE CREATE DATAFILE
  2        '/export/home/oracle8i/iORCL/data/users01.dbf'   -- 기존 파일
  3     AS '/export/home/oracle8i/iORCL/data2/users01.db';  -- 새로운 파일
Database altered.
SQL> SELECT * FROM v$recover_file;
     FILE# ONLINE  ERROR  CHANGE#  TIME
---------- ------- ------ -------- ----------
         5 OFFLINE        22649    04-SEP-04
        
-- 5. 재생성된 데이터파일에 아카이브와 리두로그를 적용한다.
      그러나, 자꾸 이상한 에러가 생겨서 확인 못하고 넘어갔다..ㅡ.ㅜ
SQL> RECOVER TABLESPACE users;
ORA-00279: change 22649 generated at 09/04/2004 11:52:16 needed for thread 1
ORA-00289: suggestion : /export/home/oracle8i/iORCL/arch/arch_1_82.arc
ORA-00280: change 22649 for thread 1 is in sequence #82

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00308: cannot open archived log '/export/home/oracle8i/iORCL/arch/arch_1_82.arc'
ORA-27037: unable to obtain file status
Intel SVR4 UNIX Error: 2: No such file or directory
Additional information: 3
-- 6. 테이블스페이스를 온라인 시킨다.
SQL> ALTER TABLESPACE users ONLINE;
-- 7. 복구 완료가 되었으면 백업 전략에 이 파일을 포함 시키고 해당 테이블 스페이스가 다시
      사용 가능한 상태가 되었다고 통보한다.

/****************************************************************************************
-- 백업 모드에서의 파일 복구(no test)
****************************************************************************************/
-- 백업모드에서의 데이터파일 복구 방법
   1. 위에 언급된 완전복구 방법을 사용한 복구
   2. 파일을 동기화 시키기 위한 다른 하나의 방법 모색
-- 문제점
   1. "alter tablsapce"명령은 데이터베이스가 오픈될 때까지 사용될 수 없으면 데이터베이스
      파일들이 동기화되어 오프라인 될 때까지 오픈될 수 없다.
   2. 파일들을 오프라인으로 하는 것은 소용이 없는데 이는 "alter tablespace end backup"이
      오프라인 상태인 데이터파일에 대해 수행될 수 없기 때문이다.
-- 해답(테스트 없이 정리만)
   1. 어떤 파일이 복구될 필요가 있는지 확인 할 수 없거나 또한 파일이 "hot backup"모드에
      있다면 v$backup뷰를 조회.
      SQL> SELECT * FROM v$backup;
      FILE#   STATUS       CHANGE#   TIME
      -----   ----------   -------   ---------
          1   NOT ACTIVE         0
          2   ACTIVE        228596   30-NOV-97    -- 2번 파일이 핫백업 모드임을 의미
          3   NOT ACTIVE         0
          4   NOT ACTIVE         0
   2. 파일 2의 헤더를 풀기 위해 다음 명령 사용
      SQL> ALTER DATABASE DATAFILE 2 END BACKUP;
      Statement processed. 
 
      SQL> SELECT * FROM v$backup;
      FILE#   STATUS       CHANGE#   TIME
      -----   ----------   -------   ---------
          1   NOT ACTIVE         0     
          2   NOT ACTIVE    228596   30-NOV-97   -- ACTIVE -> NOT ACTIVE로
          3   NOT ACTIVE         0
          4   NOT ACTIVE         0
   3. 이제 사용자를 위해 데이터베이스를 오픈한다.
      SQL> ALTER DATABASE OPEN;

/****************************************************************************************
-- 리두 로그 파일 제거(no test)
****************************************************************************************/
-- 손상된 리두 로그 제거에 "unarchived" 옵션 사용
SQL> ALTER DATABASE CLEAR UNARCHIVED
  2  logfile group 1;
   ㅇ"Alter database clear unarchived logfile"은 다음 두 경우를 극복해 준다.
     1. 오직 2개의 로그 그룹이 존재하는 경우
     2. 손상된 리두 로그 파일이 현재 그룹에 속할 때
   ㅇ주.
     1. 이 명령은 조심스럽게 사용해야 한다. 아무런 아카이브 로그가 생성되어 있지 않다면
        완전 복구는 불가능하다. 이 명령 완료 후에 백업을 수행해야 한다.
     2. 복구를 위해 현재 요구되는 로그 파일은 제거 될 수 없다.
-- 오프라인 데이터파일에 의해 요구되는 로그 제거
SQL> ALTER DATABASE CLEAR UNARCHIVED
  2  logfile group 1
  3  UNRECOVERABLE datafile;
   ㅇ"Alter database clear logfile ... unrecoverable datafile"은 두 가지 접근 방식이 있다.
     1. 로그 파일을 제거하기 전에 모든 데이터파일을 복원하고 불완젆나 복구를 수행한다.
     2. 복구 불가능한 데이터파일을 포함하고 있는 테이블스페이스를 삭제한다.
   ㅇ주.
     1. 이 로그가 필욯나 오프라인 데이터파일은 이 명령 후에 사용할 수 없게 된다.
     2. 아카이브 로그는 제거된 로그 파일에 대해 아마도 존재하지 않을 것이다.
     3. 이 명령 수행 후에 즉각 백업 받는 것을 고려해야 한다.   
    
/****************************************************************************************
-- 비활성화 리두 로그의 손실
****************************************************************************************/
-- 1. 로그 파일 및 그룹 확인
      일단 문제는 없지만 그룹1이 있다고 가정.
SQL> SELECT a.group#, a.member, b.bytes, b.status
  2  FROM v$logfile a, v$log b
  3  WHERE a.group# = b.group#; 
    GROUP# MEMBER                                             BYTES STATUS
---------- --------------------------------------------- ---------- ----------------
         1 /export/home/oracle8i/iORCL/data/redo01.log       512000 INACTIVE
         2 /export/home/oracle8i/iORCL/data/redo02.log       512000 INACTIVE
         3 /export/home/oracle8i/iORCL/data/redo03.log       512000 CURRENT
-- 2. 그룹이 최소 2개여야 하는데 3개라서 그룹 1 삭제 가능.
      그러나 그냥 그룹 1 삭제후 새로 생성함.
      그룹이 2개인 경우 새로운 그룹 생성 후 그룹 1을 삭제해야 함.
SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
Database altered.
-- 3. 그룹 1 생성
SQL> ALTER DATABASE ADD LOGFILE GROUP 1 
  2  '/export/home/oracle8i/iORCL/log/log01.log' size 150K;
Database altered.
-- 4. 로그 파일 물리적 제거
$ rm -rf redo01.log
-- 5. 필요시 데이터베이스 오픈
SQL> ALTER DATABASE OPEN;
-- 주. 다른 리두 그룹에서 파일 크기가 같을 경우(이캐도 가능)
SQL> !cp /disk1/DATA/log2a.rdo /disk1/DATA/log1a.rdo
SQL> alter database clear logfile `/disk1/DATA/log1a.rdo`;
 
 
반응형

+ Recent posts