행위

"오라클 데이터 복구"의 두 판 사이의 차이

DB CAFE

(FLASHBACK DATABASE LEVEL 복구)
 
(사용자 2명의 중간 판 33개는 보이지 않습니다)
1번째 줄: 1번째 줄:
== 오라클 데이터 복구 FlashBack TIMESTAMP 이용 ==
+
== 오라클 데이터 복구 ==
 +
== FLASHBACK (TIMESTAMP 이용) ==
 +
=== [[:Flashback row level|FLASHBACK ROW LEVEL 복구]] ===
  
데이터를 실수로 삭제(delete, truncate는 불가) 하고 commit하였을때 실수로 지운다던지,
+
=== [[:FLASHBACK TABLE LEVEL|FLASHBACK TABLE LEVEL 복구]] ===
복원을 시켜야 한다던지 당황하고 멘붕이 왔던 경험이 많을 것이다.
 
  
이때 특정시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능이다.
+
=== [[:FLASHBACK DATABASE LEVEL|FLASHBACK DATABASE LEVEL 복구]] ===
이 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 할 수 있다.
 
  
 +
데이터를 실수로 삭제(truncate는 복구 불가) 할 경우
 +
특정시간 또는 시점으로 되돌릴 수 있는 기능.
 +
플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 가능.
  
▶ Flashback을 사용할 수 있는 조건
+
=== FLASHBACK 설정 조건 ===
※ 설정
+
1. 자동 언두 관리 시스템을 사용(UNDO_MANAGEMENT 파라미터를 AUTO로 설정)
1. 자동 언두 관리 시스템을 사용해야 합니다. (UNDO_MANAGEMENT 파라미터를 AUTO로 설정)
+
<source lang=sql>
<source>
 
 
     UNDO_MANAGEMENT = AUTO
 
     UNDO_MANAGEMENT = AUTO
 
</source>
 
</source>
2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정해야 한다.
+
 
<source>
+
2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정.
 +
<source lang=sql>
 
   ALTER SYSTEM SET UNDO_RETENTION=1200
 
   ALTER SYSTEM SET UNDO_RETENTION=1200
 
</source>
 
</source>
  
설정 확인 =>
+
3.설정 확인 SQL
<source>
+
<source lang=sql>
 
show paramter undo;
 
show paramter undo;
  
35번째 줄: 38번째 줄:
 
</source>
 
</source>
  
※ 사용자
+
※ 사용자 권한
Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한이 있어야 합니다.
+
Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한 필요.
  
 
▶ Flashback을 사용할 수 있는 조건
 
▶ Flashback을 사용할 수 있는 조건
하지만 모두 복구 할 수 있는 것은 아니다.
+
모두 복구 할 수 있는 것은 아님.
  
오라클은 데이터를 FLASHBACK이라는 임시 저장소에 가지고 있는다.
+
시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅.)
자료가 쌓이는 로그이다. 그렇기 때문에 일정시간 이내의 자료들은 어느정도 복구 가능하다.
 
시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅에 따라 달라진다.)
 
  
'''또한 제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.'''
+
'''제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.'''
  
 
▶ 테이블
 
▶ 테이블
 +
scn  번호로 복구
 +
<source lang=sql>
 +
flashback table emp_test to scn 1406603;
 +
-- scn번호확인 : select current_scn from v$database;
 +
</source>
 +
 +
* 기준시간으로 조회
 +
<source lang=sql>
 +
SELECT * FROM [TABLE 명] AS OF TIMESTAMP TO_TIMESTAMP ( '20210412 190000', 'YYYYMMDD HH24MISS' )
 +
WHERE [조회조건]
 +
</source>
 +
 +
* 10 분전 데이터 조회
 +
<source lang=sql>
 +
SELECT *
 +
  FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
 +
WHERE [조회조건]
 +
</source>
 +
또는
 +
<source lang=sql>
 +
SELECT *
 +
  FROM [TABLE 명] AS OF TIMESTAMP sysdate - 1/24/60*10
 +
WHERE [조회조건]
 +
</source>
 +
 +
* 10 분전 데이터 조회 후 입력
 
<source lang=sql>
 
<source lang=sql>
 +
INSERT INTO TB_XXX
 
SELECT *
 
SELECT *
   FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '수치' 단위)
+
   FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
 
WHERE [조회조건]
 
WHERE [조회조건]
 
</source>
 
</source>
+
또는
 +
<source lang=sql>
 +
INSERT INTO TB_XXX
 +
SELECT *
 +
  FROM [TABLE 명]
 +
    AS OF TIMESTAMP TO_TIMESTAMP('20200101 102030','YYYYMMDD HH24MISS')
 +
WHERE [조회조건]
 +
</source>
 +
 
 +
* 다른 테이블명으로 복구
 +
<source lang=sql>
 +
FLASHBACK TABLE EMP.XTB_EVN
 +
      TO BEFORE DROP
 +
  RENAME TO EMP.XTB_EVN_COPY;
 +
</source>
 +
 
 +
* 이전테이블로 복구
 +
<source lang=sql>
 +
FLASHBACK TABLE RTIS_DEV.XTB
 +
            TO BEFORE DROP;
 +
 
 +
FLASHBACK TABLE "BIN$hAmsdSFUTtrgUwEAAH8yIQ==$0"
 +
            TO BEFORE DROP;
 +
</source>
  
  
 +
▶ 인덱스
 +
<source lang=sql>
 +
ALTER INDEX "BIN$UofUBMjYnkDgUOABLqNFXg==$0"
 +
      RENAME TO PK_TB_USER_INFO;
 +
</source>
  
 
▶ 프로시저
 
▶ 프로시저
 
<source lang=sql>
 
<source lang=sql>
 
SELECT *
 
SELECT *
FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위)
+
  FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE NAME = '프로시저이름'
+
WHERE NAME = '프로시저이름'
 
</source>
 
</source>
 
   
 
   
 
 
 
▶ EX)
 
▶ EX)
 
<source lang=sql>
 
<source lang=sql>
 
SELECT  *   
 
SELECT  *   
FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE)   
+
FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE)  -- 단위는 SECOND, MINUTE, HOUR, DAY
 
WHERE COMPANY = 'SK'
 
WHERE COMPANY = 'SK'
 
</source>
 
</source>
 
테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다.
 
테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다.
단위는 SECOND, MINUTE, HOUR, DAY로 바꿔 쓸 수 있다.
 
  
 
----
 
----
  
== FLASHBACK 명령 이용 복구 ==
+
=== 휴지통(RECYCLEBIN) 조회/비우기 ===
 +
====[[오라클 휴지통]]====
 +
 
 +
=== 데이터파일 복구 ===
 +
 
 +
* Complete Recovery – 백업 받지 않은 데이터파일 복구(1)
 +
*:- 마지막 cold backup이나 hot backup 이후에 만들어진 테이블스페이스에 장애가 발생하는 경우인데 손상된 파일이 system 테이블스페이스에 속하지 않을 때의 복구 방법
 +
 
 +
<SOURCE>예시)TEST라는 테이블스페이스를 만들었는데 이 테이블스페이스에 포함된 데이터파일에 장애가 발생 했다고 가정(이 파일은 백업이 되어 있지않음.)</SOURCE>
 +
 
 +
 
 +
'''1.DB가 종료되어 있다면 MOUNT 단계까지 실행하여 백업 전에 손상된 데이터 파일이나 데이터파일이 포함된 테이블스페이스를 offline으로 변경.'''
  
=== 휴지통 조회 ===
+
그러나 만약 데이터베이스가 오픈 되어 있는 상태라면 데이터파일 이나 테이블스페이스만 offline으로 변경
  
-- 사용자 휴지통 조회
 
 
<source lang=sql>
 
<source lang=sql>
SELECT OBJECT_NAME, ORIGINAL_NAME, CREATETIME
+
SQL>alter database datafile ‘c:\oracle\oradata\wink\test01.dbf’ offline
  FROM RECYCLEBIN ;
+
 
 +
Or
 +
 
 +
SQL>alter tablespace TEST offline;
 
</source>
 
</source>
-- DBA권한 전체휴지통 조회
+
 
 +
'''2. v$recover_file을 조회해서 복구 상태 확인'''
 
<source lang=sql>
 
<source lang=sql>
SELECT *
+
SQL>select * from v$recover_file;
  FROM DBA_RECYCLEBIN A
+
</source>
WHERE A.ORIGINAL_NAME LIKE 'XTB'
+
 
;
+
'''3.장애 파일을 다시 생성'''
 +
<source lang=sql>
 +
SQL>alter database create datafile ‘c:\oracle\oradata\wink\test01.dbf’
 +
      as ‘c:\oracle\oradata\wink\test01.dbf’
 +
</source>
 +
 
 +
'''4.recover 명령으로 파일을 복구'''
 +
<source lang=sql>
 +
SQL>recover tablespace TEST;
 +
</source>
 +
 
 +
'''5.테이블스페이스를 온라인으로…'''
 +
<source lang=sql>
 +
alter tablespace test online;
 +
</source>
 +
 
 +
== 데이터파일 위치 변경(디스크 full 장애시 신규 디스크로 이동..)  ==
 +
1.신규 디스크로 데이터파일 이동(현재 DB가 죽어있는 상태..)
 +
<source lang=shell>
 +
mv /data1/TS_XXX_D01.dbf /data2/TS_XXX_D01.dbf
 
</source>
 
</source>
-- 삭제된 오브젝트로 조회
+
 
 +
2.오라클 접속 후 데이터파일 변경
 
<source lang=sql>
 
<source lang=sql>
SELECT *
+
-- 1.접속
  FROM "BIN$Ulu8B5c+Oz3gUOABLqObkg==$0";
+
sqlplus / as sysdba;
 
+
-- 2.mount 상태로 시작
SELECT *
+
startup mount;
  FROM DBA_RECYCLEBIN A
+
-- 3. datafile 변경
WHERE A.ORIGINAL_NAME LIKE 'XTB'
+
alter database rename file '/data1/TS_MIG_D01.dbf' to '/data2/TS_XXX_D01.dbf';
;
+
-- 4.DB open
 +
alter database open;
 
</source>
 
</source>
=== 다른 이름 으로 복구 ===
 
  
 +
* 현재 데이터파일 상태 확인
 
<source lang=sql>
 
<source lang=sql>
FLASHBACK TABLE RTIS_dev.XTB
+
SELECT STATUS,NAME,BYTES/1024/1024 MB
            TO BEFORE DROP
+
  FROM V$DATAFILE;
        RENAME TO XTB2;
 
 
</source>
 
</source>
  
=== 이전테이블로 복구 ===
+
== 데이터파일 위치 변경(온라인 상태에서 변경)  ==
 +
1.온라인 상 변경 하는 방법
 
<source lang=sql>
 
<source lang=sql>
FLASHBACK TABLE RTIS_DEV.XTB
+
-- 1.offline 변경
            TO BEFORE DROP;
+
alter database datafile ‘/data1/ACCMIG/ACCMIG/TS_MIG_I01.dbf’ offline;
 +
-- 2.rename
 +
alter database rename file '/data1/ACCMIG/ACCMIG/TS_MIG_I01.dbf' to '/data2/ACCMIG/ACCMIG/TS_MIG_I01.dbf';
 +
-- 3.online 변경
 +
alter database datafile ‘/data1/ACCMIG/ACCMIG/TS_MIG_I01.dbf’ online;
 +
</source>
 +
 
 +
== 리두(REDO) 로그 파일 이동 ==
 +
'''redo log file은 offline이 안되서 반드시 사용 안하게 만드려면 DB를 mount상태로 두고 작업해야 함'''
 +
 
  
FLASHBACK TABLE "BIN$hAmsdSFUTtrgUwEAAH8yIQ==$0"
+
1.서버 종료후 mount로 시작
            TO BEFORE DROP;
+
<source lang=sql>
 +
SQL> select status from v$instance;
 +
SQL> shutdown immediate;
 +
SQL> startup mount;
 
</source>
 
</source>
  
=== 이전 인덱스 복구 ===
+
2.이동할 디렉토리 생성
 +
<source lang=sql>
 +
SQL> !mkdir /app/oracle/disk4
 +
SQL> !mkdir /app/oracle/disk5
 +
</source>
  
 +
3.리두로그 파일 복사(이동)
 
<source lang=sql>
 
<source lang=sql>
ALTER INDEX RTIS."BIN$UofUBMjYnkDgUOABLqNFXg==$0"
+
-- 로그파일 정보
    RENAME TO PK_TB_;
+
SQL> select member from v$logfile;
 +
-- 신규디스큿에 복사
 +
SQL> !cp /app/oracle/oradata/orcl/redo01.log /app/oracle/disk4/redo01_a.log
 +
SQL> !cp /app/oracle/oradata/orcl/redo02.log /app/oracle/disk4/redo02_a.log
 +
SQL> !cp /app/oracle/oradata/orcl/redo03.log /app/oracle/disk4/redo03_a.log
 +
-- 리두로그파일 rename
 +
SQL> alter database rename
 +
    file '/app/oracle/oradata/orcl/redo01.log'
 +
    to '/app/oracle/disk4/redo01_a.log';
 +
 
 +
SQL> alter database rename
 +
    file '/app/oracle/oradata/orcl/redo02.log'
 +
    to '/app/oracle/disk4/redo02_a.log'
 +
 
 +
SQL> alter database rename
 +
    file '/app/oracle/oradata/orcl/redo03.log'
 +
    to '/app/oracle/disk4/redo03_a.log';
 +
 
 +
-- 필요시 그룹(b) 추가
 +
SQL> alter database add logfile member
 +
    '/app/oracle/disk5/redo01_b.log' to group 1,
 +
    '/app/oracle/disk5/redo02_b.log' to group 2,
 +
    '/app/oracle/disk5/redo03_b.log' to group 3;
 +
-- 확인
 +
SQL> select member from v$logfile;
 
</source>
 
</source>
 +
 +
[[Category:oracle]]

2024년 3월 16일 (토) 19:04 기준 최신판

thumb_up 추천메뉴 바로가기


1 오라클 데이터 복구[편집]

2 FLASHBACK (TIMESTAMP 이용)[편집]

2.3 FLASHBACK DATABASE LEVEL 복구[편집]

데이터를 실수로 삭제(truncate는 복구 불가) 할 경우 특정시간 또는 시점으로 되돌릴 수 있는 기능. 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 가능.

2.4 FLASHBACK 설정 조건[편집]

1. 자동 언두 관리 시스템을 사용(UNDO_MANAGEMENT 파라미터를 AUTO로 설정)

UNDO_MANAGEMENT = AUTO

2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정.

ALTER SYSTEM SET UNDO_RETENTION=1200

3.설정 확인 SQL

show paramter undo;

NAME                     TYPE
-----------------------------------------------
VALUE
------------------------
undo_management          string
auto
auto_retention           integer
1200
UNDOTBS1
SQL

※ 사용자 권한 Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한 필요.

▶ Flashback을 사용할 수 있는 조건 모두 복구 할 수 있는 것은 아님.

시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅.)

제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.

▶ 테이블 scn 번호로 복구

flashback table emp_test to scn 1406603;
-- scn번호확인 : select current_scn from v$database;
  • 기준시간으로 조회
SELECT * FROM [TABLE 명] AS OF TIMESTAMP TO_TIMESTAMP ( '20210412 190000', 'YYYYMMDD HH24MISS' ) 
 WHERE [조회조건]
  • 10 분전 데이터 조회
SELECT *
  FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE [조회조건]

또는

SELECT *
  FROM [TABLE 명] AS OF TIMESTAMP sysdate - 1/24/60*10
WHERE [조회조건]
  • 10 분전 데이터 조회 후 입력
INSERT INTO TB_XXX
SELECT *
  FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE [조회조건]

또는

INSERT INTO TB_XXX
SELECT *
  FROM [TABLE 명] 
    AS OF TIMESTAMP TO_TIMESTAMP('20200101 102030','YYYYMMDD HH24MISS') 
WHERE [조회조건]
  • 다른 테이블명으로 복구
FLASHBACK TABLE EMP.XTB_EVN
       TO BEFORE DROP
   RENAME TO EMP.XTB_EVN_COPY;
  • 이전테이블로 복구
FLASHBACK TABLE RTIS_DEV.XTB
             TO BEFORE DROP;

FLASHBACK TABLE "BIN$hAmsdSFUTtrgUwEAAH8yIQ==$0" 
             TO BEFORE DROP;


▶ 인덱스

ALTER INDEX "BIN$UofUBMjYnkDgUOABLqNFXg==$0"
      RENAME TO PK_TB_USER_INFO;

▶ 프로시저

SELECT *
  FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) -- 단위는 SECOND, MINUTE, HOUR, DAY
 WHERE NAME = '프로시저이름'

▶ EX)

SELECT  *  
FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE)  -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE COMPANY = 'SK'

테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다.


2.5 휴지통(RECYCLEBIN) 조회/비우기[편집]

2.6 데이터파일 복구[편집]

  • Complete Recovery – 백업 받지 않은 데이터파일 복구(1)
    - 마지막 cold backup이나 hot backup 이후에 만들어진 테이블스페이스에 장애가 발생하는 경우인데 손상된 파일이 system 테이블스페이스에 속하지 않을 때의 복구 방법
예시)TEST라는 테이블스페이스를 만들었는데 이 테이블스페이스에 포함된 데이터파일에 장애가 발생 했다고 가정(이 파일은 백업이 되어 있지않음.)


1.DB가 종료되어 있다면 MOUNT 단계까지 실행하여 백업 전에 손상된 데이터 파일이나 데이터파일이 포함된 테이블스페이스를 offline으로 변경.

그러나 만약 데이터베이스가 오픈 되어 있는 상태라면 데이터파일 이나 테이블스페이스만 offline으로 변경

SQL>alter database datafile ‘c:\oracle\oradata\wink\test01.dbf’ offline

Or

SQL>alter tablespace TEST offline;

2. v$recover_file을 조회해서 복구 상태 확인

SQL>select * from v$recover_file;

3.장애 파일을 다시 생성

SQL>alter database create datafile ‘c:\oracle\oradata\wink\test01.dbf’
       as ‘c:\oracle\oradata\wink\test01.dbf’

4.recover 명령으로 파일을 복구

SQL>recover tablespace TEST;

5.테이블스페이스를 온라인으로…

alter tablespace test online;

3 데이터파일 위치 변경(디스크 full 장애시 신규 디스크로 이동..)[편집]

1.신규 디스크로 데이터파일 이동(현재 DB가 죽어있는 상태..)

mv /data1/TS_XXX_D01.dbf /data2/TS_XXX_D01.dbf

2.오라클 접속 후 데이터파일 변경

-- 1.접속 
sqlplus / as sysdba;
-- 2.mount 상태로 시작 
startup mount;
-- 3. datafile 변경 
alter database rename file '/data1/TS_MIG_D01.dbf' to '/data2/TS_XXX_D01.dbf';
-- 4.DB open
alter database open;
  • 현재 데이터파일 상태 확인
SELECT STATUS,NAME,BYTES/1024/1024 MB 
  FROM V$DATAFILE;

4 데이터파일 위치 변경(온라인 상태에서 변경)[편집]

1.온라인 상 변경 하는 방법

-- 1.offline 변경 
alter database datafile ‘/data1/ACCMIG/ACCMIG/TS_MIG_I01.dbf’ offline;
-- 2.rename 
alter database rename file '/data1/ACCMIG/ACCMIG/TS_MIG_I01.dbf' to '/data2/ACCMIG/ACCMIG/TS_MIG_I01.dbf';
-- 3.online 변경
alter database datafile ‘/data1/ACCMIG/ACCMIG/TS_MIG_I01.dbf’ online;

5 리두(REDO) 로그 파일 이동[편집]

redo log file은 offline이 안되서 반드시 사용 안하게 만드려면 DB를 mount상태로 두고 작업해야 함


1.서버 종료후 mount로 시작

SQL> select status from v$instance;
SQL> shutdown immediate;
SQL> startup mount;

2.이동할 디렉토리 생성

SQL> !mkdir /app/oracle/disk4
SQL> !mkdir /app/oracle/disk5

3.리두로그 파일 복사(이동)

-- 로그파일 정보 
SQL> select member from v$logfile;
-- 신규디스큿에 복사 
SQL> !cp /app/oracle/oradata/orcl/redo01.log /app/oracle/disk4/redo01_a.log
SQL> !cp /app/oracle/oradata/orcl/redo02.log /app/oracle/disk4/redo02_a.log
SQL> !cp /app/oracle/oradata/orcl/redo03.log /app/oracle/disk4/redo03_a.log
-- 리두로그파일 rename 
SQL> alter database rename
    file '/app/oracle/oradata/orcl/redo01.log'
    to '/app/oracle/disk4/redo01_a.log';

SQL> alter database rename
    file '/app/oracle/oradata/orcl/redo02.log'
    to '/app/oracle/disk4/redo02_a.log'

SQL> alter database rename
    file '/app/oracle/oradata/orcl/redo03.log'
    to '/app/oracle/disk4/redo03_a.log';

-- 필요시 그룹(b) 추가 
SQL> alter database add logfile member
    '/app/oracle/disk5/redo01_b.log' to group 1,
    '/app/oracle/disk5/redo02_b.log' to group 2,
    '/app/oracle/disk5/redo03_b.log' to group 3;
-- 확인 
SQL> select member from v$logfile;