반응형

/********************************************************************************************
-- Title : [8i] 리두 로그 파일 관리(OLN)
-- Reference : OLN
-- Key word : Dictionary View redo log redolog 리두로그파일
********************************************************************************************/

/****************************************************************************************

-- 데이터베이스 로그 모드와 아카이브 모드 표시하는 뷰

****************************************************************************************/

SQL> SELECT name, log_mode

  2  FROM v$database;

 

NAME      LOG_MODE

--------- ------------

ORCL      NOARCHIVELOG

 

SQL> SELECT archiver

  2  FROM v$instance;

 

ARCHIVE

-------

STOPPED

 

 

/****************************************************************************************

-- 리두 로그 그룹의 정보와 시퀀스 번호에 대한 뷰

****************************************************************************************/

SQL> SELECT groups, current_group#, sequence#

  2  FROM v$thread;

 

    GROUPS CURRENT_GROUP#  SEQUENCE#

---------- -------------- ----------

         3              2        443

 

 

/****************************************************************************************

-- 온라인 리두 로그 그룹 및 멤버 정보 얻는 뷰

SQL> SELECT group#, sequence#, bytes, members, status

  2  FROM v$log;

 

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS

---------- ---------- ---------- ---------- ----------------

         1        442     512000          1 INACTIVE

         2        443     512000          1 CURRENT

         3        441     512000          1 INACTIVE

 

 

/****************************************************************************************

-- v$log STATUS 상태

****************************************************************************************/

   - Current  : user가 쓰고 있는 상태

   - Inactive : 다 쓰고 checkpoint 완료 상태

   - Active   : 다 쓰고 checkpoint 완료되지 않은 상태

   - Unused   : 한번도 사용 해 본적 없는 상태

        

       

/****************************************************************************************

-- 온라인 리두 로그 그룹과 멤버에 대한 정보를 얻는 뷰

****************************************************************************************/

SQL> SELECT *

  2  FROM v$logfile;

 

    GROUP# STATUS  MEMBER

---------- ------- ---------------------------------------------

         1         /export/home/oracle8i/iORCL/data/redo01.log

         2         /export/home/oracle8i/iORCL/data/redo02.log

         3         /export/home/oracle8i/iORCL/data/redo03.log

 

 

/****************************************************************************************

-- 테이블 변경 사항 추적 뷰 : LOGMNR 실행 후

****************************************************************************************/

SQL> SELECT timestamp, username, sql_redo

  2  FROm v$logmnr_contents

  3  WHERE seg_name = 'EMP';

 

 

/****************************************************************************************

-- 분석 중인 로그 정보 얻기

****************************************************************************************/

   - V$LOGMNR_DIXTIONARY : 사용중인 딕셔너리 파일

   - V$LOGMNR_PARAMETERS : LogMiner에 대한 현재 매개변수 설정

   - V$LOGMNR_CONTENTS   : 분석 중인 리두 로그 파일 내용

 

 

/****************************************************************************************

-- 관리용(log.sql)

****************************************************************************************/

select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"

from v$logfile a, v$log b

where a.group# = b.group#

/

 

 

/****************************************************************************************

-- 파리미터 파일에서 체크포인트 발생 파라미터 확인

****************************************************************************************/

$ more $ORACLE_HOME/dbs/initORCL.ora

...

log_checkpoint_interval = 10000

log_checkpoint_timeout = 1800

FAT_START_IO_TARGET = ???

...

 

 

/****************************************************************************************

-- 파라미터 파일에서 모든 체크포인트 정보의 ALERT 파일에 대한 기록 확인

****************************************************************************************/

$ more $ORACLE_HOME/dbs/initORCL.ora

...

LOG_CHECKPOINTS_TO_ALERT = FLASE

...

 

 

/****************************************************************************************

-- 파라미터 파일에서 아카이브 자동 실행 확인

****************************************************************************************/

$ more $ORACLE_HOME/dbs/initORCL.ora

...

log_archive_start = true

log_archive_dest_1 = "location=/export/home/oracle8i/admin/ORCL/arch"

log_archive_format = arch_%t_%s.arc

...

 

 

/****************************************************************************************

-- 아카이브 정보 얻기

****************************************************************************************/

SQL> ARCHIVE LOG LIST;

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            /export/home/oracle8i/dbs/arch

Oldest online log sequence     441

Current log sequence           443

 

SQL> SELECT log_mode

  2  FROm v$database;

 

LOG_MODE

------------

NOARCHIVELOG     

 

 

/****************************************************************************************

-- DB mode 변경(no archive log mode archive log mode)

-- 10g에서 http://dbrang.tistory.com/514

****************************************************************************************/

SQL> SHUTDOWN IMMEDIATE;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

$ vi $ORACLE_HOME/dbs/initORCL.ora

...

 log_archive_start = true

 log_archive_dest_1 = "location=/export/home/oracle8i/iORCL/init/arch"

 log_archive_format = arch_%t_%s.arc

...

 

SQL> STARTUP MOUNT

ORACLE instance started.

 

Total System Global Area   34869408 bytes

Fixed Size                    73888 bytes

Variable Size              11079680 bytes

Database Buffers           23543808 bytes

Redo Buffers                 172032 bytes

Database mounted.

 

SQL> ALTER DATABASE ARCHIVELOG;

 

Database altered.

 

SQL> ALTER DATABASE OPEN;

 

Database altered.

 

SQL> ARCHIVE LOG LIST;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /export/home/oracle8i/iORCL/init/arch

Oldest online log sequence     444

Next log sequence to archive   446

Current log sequence           446

 

 

/****************************************************************************************

-- archive log file 생성 확인

****************************************************************************************/

SQL> CONNECT scott/tiger

Connected.

SQL> INSERT INTO emp(empno, ename, sal)

  2  VALUES(7111,'aaa',3000);

 

1 row created.

 

SQL> COMMIT;

 

Commit complete.

 

SQL> CONNECT INTERNAL

 

SQL> SELECT group#, sequence#, archived, status

  2  FROM v$log;

 

    GROUP#  SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

         1        446 NO  CURRENT

         2        445 YES INACTIVE

         3        444 YES INACTIVE

 

SQL> ALTER SYSTEM SWITCH LOGFILE;

 

System altered.

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /export/home/oracle8i/iORCL/init/arch

Oldest online log sequence     445

Next log sequence to archive   447

Current log sequence           447

SQL> select group#, sequence#, archived, status from v$log;

 

    GROUP#  SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

         1        446 YES ACTIVE

         2        445 YES INACTIVE

         3        447 NO  CURRENT

 

 

/****************************************************************************************

-- 로그 스위치 수동 시행

****************************************************************************************/

SQL> ALTER SYSTEM SWITCH LOGFILE;

 

System altered.

 

 

/****************************************************************************************

-- 체크포인트 수동 시행

****************************************************************************************/

SQL> ALTER SYSTEM CHECKPOINT;

 

System altered.

 

 

/****************************************************************************************

-- 온라인 리두 로그 그룹 추가

****************************************************************************************/

SQL> ALTER DATABASE

  2  ADD LOGFILE

  3      ('/export/home/oracle8i/iORCL/data/log3a.rdo',

  4       '/export/home/oracle8i/iORCL/data/log3b.rdo') size 1M;

 

Database altered.

 

SQL> SELECT *

  2  FROM v$logfile;       /* 추가 그룹 확인 */

 

    GROUP# STATUS  MEMBER

---------- ------- ---------------------------------------------

...

         4         /export/home/oracle8i/iORCL/data/log3a.rdo

         4         /export/home/oracle8i/iORCL/data/log3b.rdo

        

        

/****************************************************************************************

-- 온라인 리두 로그 멤버 추가

****************************************************************************************/

SQL> ALTER DATABASE

  2  ADD LOGFILE MEMBER

  3      '/export/home/oracle8i/iORCL/data/log1b.rdo' TO GROUP 1,

  4      '/export/home/oracle8i/iORCL/data/log2b.rdo' TO GROUP 2;

 

Database altered.

 

SQL> SELECT *

  2  FROM v$logfile        /* 추가 멤버 확인 */

  3  WHERE group# in (1,2);

 

    GROUP# STATUS  MEMBER

---------- ------- ---------------------------------------------

         1         /export/home/oracle8i/iORCL/data/redo01.log

         2         /export/home/oracle8i/iORCL/data/redo02.log

         1 INVALID /export/home/oracle8i/iORCL/data/log1b.rdo

         2 INVALID /export/home/oracle8i/iORCL/data/log2b.rdo

 

 

/****************************************************************************************

-- 온라인 리두 로그 그룹 삭제

****************************************************************************************/

alter database drop logfile group 2;

 

 

/****************************************************************************************

-- 온라인 리두 로그 멤버 삭제

****************************************************************************************/

alter database drop logfile member '/export/homr/oracle8i/iORCL/data/log2b.rdo';

 

 

/****************************************************************************************

-- 온라인 리두 로그 파일 정리

****************************************************************************************/

alter databse clear logfile '/export/homr/oracle8i/iORCL/data/log2b.rdo';

 

 

/****************************************************************************************

-- 온라인 리두 로그 파일 재배치

****************************************************************************************/

1. 오라클 정상 종료.

2. online redo log 파일을 새로운 위치에 복사.

3. 데이터베이스 마운트.

4. alter database rename file 'old filespec' to 'new filespec'; 실행

5. 데이터베이스 오픈.

 

 

/****************************************************************************************

-- 온라인 리두 로그 파일 재배치(RENAME)

****************************************************************************************/

1) 데이터베이스 종료

SQL> SHUTDOWN IMMEDIATE;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

2) 온라인 리두 로그 파일 재배치

$ cp $ORACLE_HOME/iORCL/data/log2b.rdo $ORACLE_HOME/iORCL/redata/log2c.rdo

 

3) 데이터베이스 마운트

SQL> STARTUP MOUNT;

ORACLE instance started.

 

Total System Global Area   34869408 bytes

Fixed Size                    73888 bytes

Variable Size              11079680 bytes

Database Buffers           23543808 bytes

Redo Buffers                 172032 bytes

Database mounted.

 

4) ALTER DATABASE RENAME FILE 실행

SQL> ALTER DATABASE

  2  RENAME FILE '/export/home/oracle8i/iORCL/data/log2b.rdo'

  3         TO   '/export/home/oracle8i/iORCL/redata/log2c.rdo';

 

Database altered.

 

5) 재배치 확인

SQL> SELECT *

  2  FROM v$logfile;

 

    GROUP# STATUS  MEMBER

---------- ------- ---------------------------------------------

         1         /export/home/oracle8i/iORCL/data/redo01.log

         2         /export/home/oracle8i/iORCL/data/redo02.log

         3         /export/home/oracle8i/iORCL/data/redo03.log

         4         /export/home/oracle8i/iORCL/data/log3a.rdo

         4         /export/home/oracle8i/iORCL/data/log3b.rdo

         1 INVALID /export/home/oracle8i/iORCL/data/log1b.rdo

         2 INVALID /export/home/oracle8i/iORCL/redata/log2c.rdo   -- 변경라인

 

7 rows selected.

 

6)기존 파일 삭제

$ rm /export/home/oracle8i/iORCL/data/log2b.rdo

 

 

/****************************************************************************************

-- 온라인 리두 로그 그룹 삭제

****************************************************************************************/

SQL> ALTER DATABASE

  2  DROP LOGFILE

  3       GROUP 4;

 

Database altered.

 

SQL> SELECT *

  2  FROM v$logfile;

 

    GROUP# STATUS  MEMBER

---------- ------- ---------------------------------------------

         1         /export/home/oracle8i/iORCL/data/redo01.log

         2         /export/home/oracle8i/iORCL/data/redo02.log

         3         /export/home/oracle8i/iORCL/data/redo03.log

         1 INVALID /export/home/oracle8i/iORCL/data/log1b.rdo

         2 INVALID /export/home/oracle8i/iORCL/redata/log2c.rdo

        

        

/****************************************************************************************

-- 온라인 리두 로그 멤버 삭제

****************************************************************************************/

SQL> ALTER DATABASE

  2  DROP LOGFILE MEMBER

  3       '/export/home/oracle8i/iORCL/redata/log2c.rdo';

 

Database altered.

 

SQL> SELECT *

  2  FROM v$logfile;

 

    GROUP# STATUS  MEMBER

---------- ------- ---------------------------------------------

         1         /export/home/oracle8i/iORCL/data/redo01.log

         2         /export/home/oracle8i/iORCL/data/redo02.log

         3         /export/home/oracle8i/iORCL/data/redo03.log

         1 INVALID /export/home/oracle8i/iORCL/data/log1b.rdo

        

        

/****************************************************************************************

-- 온라인 리두 로그 파일 정리(재 초기화)

****************************************************************************************/

SQL> ALTER DATABASE

  2  CLEAR LOGFILE

  3        '/export/home/oracle8i/iORCL/data/redo02.log';

 

Database altered.

 

 

-- LogMiner 사용 방법  ##에러 발생한다...>.<

1) 파라미터 파일에서 UTL_FILE_DIR 지정

$ more $ORACLE_HOME/dbs/initORCL.ora

...

UTL_FILE_DIR = /export/home/oracle8i/iORCL/init/dLogMiner

...

 

2) 딕셔너리 파일 생성

SQL> EXECUTE DBMS_LOGMNR_D.BUILD('ORCLdict.ora',

  2                              '/export/home/oracle8i/iORCL/init/dLogMiner');

BEGIN dbms_logmnr_d.build('ORCLdict.ora','/export/home/oracle8i/iORCL/init/dLogMiner'); END;

 

*

ERROR at line 1:   -- 에러 원인 모름... 3번 이후 내용은 에러로 스크립트만 표현 >.<

ORA-01309: specified dictionary file cannot be opened

ORA-06510: PL/SQL: unhandled user-defined exception

ORA-06512: at "SYS.DBMS_LOGMNR_D", line 793

ORA-06512: at line 1

 

3) 분석할 로그 파일 지정-새 목록 초기화하고 첫번째 로그 파일 지정

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('/export/home/oracle8i/iORCL/init/redo01a.log',

                                     DBMS_LOGMNR.NEW);

                                     

4) 분석할 로그 파일 지정-목록에 로그 파일 추가

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(/export/home/oracle8i/iORCL/init/redo02a.log',

                                     DBMS_LOGMNR.ADDFILE);

                                    

5) 리두 로그 파일 분석 시작

SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR(

             DICTFIKENAME=>'/export/home/oracle8i/iORCL/init/dLogMiner/ORCLdict.ora');

 

 

/****************************************************************************************

-- LOGMNR 세션 시작 옵션

****************************************************************************************/

   - StartScn     : SCN(시스템 변경 번호) 범위 시작

   - EndScn       : SCN 범위 종료

   - StartTime    : 시간 간격 시작

   - EndTime      : 시간 간격 끝

   - DictFileName : 딕셔너리 파일 이름

   - 옵션         : logmnr.opt 파일에 지정딘 열 맵을 사용하며 값은 USE_COLMAP이다.

 

 

/****************************************************************************************

-- 테이블 변경 사항 추적    #LogMiner 실패 후 에러

****************************************************************************************/

SQL> SELECT timestamp, username, sql_redo

  2  FROm v$logmnr_contents

  3  WHERE seg_name = 'EMP';

 

 

/****************************************************************************************

-- 리두 로그 파일 분석 종료 #LogMiner 실패 후 에러

****************************************************************************************/

SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR;

 

 

/****************************************************************************************

-- 관리용(logswitch.sql)

****************************************************************************************/

alter system switch logfile;

alter system checkpoint;

 



 
반응형

+ Recent posts