...

logminer & redo scripts 본문

ORACLE/Oracle Trouble Shooting

logminer & redo scripts

zepply 2016. 5. 11. 02:16



p.148




supplemental 확인===========================================


select supplemental_log_data_min from v$database;



supplemental 활성화=========================================


alter database add supplemental log data;


select supplemental_log_data_min from v$database;


supplemental 비활성화=======================================


alter dataabse drop supplemental log data;


select supplemental_log_data_min from v$database;




supplemental log 특정 테이블 적용===========================

alter table scott.emp add supplemental log data (all) columns;


p. 151


vi log.sql


set line 200

col group# for 999

col mb for 999

col member for a 45

col seq# for 999

col status for a8

col arc for a5


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

from v$logfile a, v$log b

where a.group#=b.group#

order by 1,2

/



select supplemental_log_data_min from v$database;



create table scott.test1 (no number);


insert into scott.test1 values(1);


commit;


drop table scott.test1 purge;



p. 152


@log


Insert into emp (name,salary)values('John Doe',50000);


p.154



01) DB 전체를 종료한 후 Parameter file 에 딕셔너리 파일의 위치를 아래와 같이 지정 합니다.

        

        utl_file_dir=/app/oracle/logminer

                       디렉토리는 미리생성 해야합니다.

                       

    02) DB를 시작합니다.

    

    03) 아래와 같이 딕셔너리를 생성합니다.

    

         SYS> exec dbms_logmnr_d.build(dictionary_filename=>d'dict.dat' - dictionary_location => '/app/oracle/logminer');

         

    04) Log Miner에 분석할 로그를 추가합니다.

         SYS> exec dbms_logmnr.add_logfile('app/oracle/oradata/testdb/redo01.log'1);

         

         위 명령의 마지막에 있는 숫자의 의미는 

             1- 신규 등록 , 2- 파일 삭제, 3- 추가 등록

             

         SYS> exec dbms_logmnr.add_logfile('app/oracle/oradata/testdb/redo02.log'3);

         

         SYS> exec dbms_logmnr.add_logfile('app/oracle/oradata/testdb/redo03.log'3);

         

p. 155



set line 200

col db_name for a15

col filename for a50

select db_name, filename from v$logmnr_logs;



vi ar.sh


for i in $(ls /data/arc2);

  do echo"exec dbms_logmnr.add_logfile("/data/arc2/$i'3);" >> /home/oracle/arch.sql;

done;


:wq!



sh ar.sh


vi /home/oracle/arch.sql


exec dbms_logmnr.add_logfile('data/arc2/('위에서 수행한 아카이브 파일 번호',3);

exec dbms_logmnr.add_logfile('data/arc2/('위에서 수행한 아카이브 파일 번호',3);

exec dbms_logmnr.add_logfile('data/arc2/('위에서 수행한 아카이브 파일 번호',3);

exec dbms_logmnr.add_logfile('data/arc2/('위에서 수행한 아카이브 파일 번호',3);

exec dbms_logmnr.add_logfile('data/arc2/('위에서 수행한 아카이브 파일 번호',3);

exec dbms_logmnr.add_logfile('data/arc2/('위에서 수행한 아카이브 파일 번호',3);




p.156


@/home/oracle/arch.sql



exec dbms_logmnr.start_logmnr(dictfilename => '/app/oracle/logminer/dict.dat', - options => dbms_logmnr.ddl_dict_tracking + dbms_logmnr.committer_data_only);


col username for a10

col operation for a10

col sql_redo for a50


alter session set nls_date-format='YYYY-MM-DD:HH24:MI:SS';



select timestamp,usemade,operation,sql_redo from v$logmnr_contents where seg_name='TEST1';


p.157


@log



select supplemental_log_data_min from v$database;


create table scott.test2 (no number, name varchar2(10);


insert into scott.test2 values (1,'AAA');


insert into scott.test2 values (2,'BBB');



p. 158


insert into scott.test2 values (3,'CCC');


commit;



select * from scott.test2;



update scott.test2 set nmae='DDD';


select* from scott.test2;


commit;



p. 159



show parameter utl


exec dbms_logmnr_d.build(dicitionary_filename => 'dict2.dat',-dictionary_location => '/app/oracle/logmnr');


@log


set line 200

col filename for a50

col db_name for a10

select db_name, filename from v$log mnr_logs;


exec dbms_logmnr.start_logmnr(dictfilename => '/app/oracle/logminer/dict2.dat')


col username for a10

col operation for a10

col sql_redo for a70

set pagesize 50


alter session set nls_date_format='YYYY-MM-DD:HH24:MI:SS';




select timestamp,username,operation,sql_redo

   from v$logmnr_contents

    where seg_name='TEST2'

    



P.163


Alter database add supplemental log data;


p.167


vi log.sql


set line 200

col group# for 999

col mb for 999

col member for a 45

col seq# for 999

col status for a8

col arc for a5


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

from v$logfile a, v$log b

where a.group#=b.group#

order by 1,2

/


:wq!



@log



case 1 -1 개의 member 가 삭제되는 장애가 발생하는 경우


!rm -f /app/oracle/oradata/testdb/redo03_a.log


!ls /app/oracle/oradata/testdb/redo03_a.log



alter system switch log file;


/


/


/


@log




p. 169

!


vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log




p. 170


@log



alter database drop logfile member '/app/oracle/oradata/testdb/redo03_a.log';



@log



alter database add logfile member '/app/oracle/oradata/testdb/redo03_a.log'to group 3;


@log



p.172


@log



!rm /app/oracle/oradata/testdb/redo02*


!ls /app/oracle/oradata/testdb/redo02*



shutdown immediate;


startup


p.173


vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log



p.174



exit


sqlplus sys/[패스워드 입력] as syssdba


startup mount;


@log



p. 175




alter database drop logfile group2;


@log


alter database open;




p. 176



alter database add log file group 2 (

 '/app/oracle/oradata/testdb/redo02_a.log',

 '/app/oracle/oradata/testdb/redo02_b.log') size 50M;

 

 

 @log

 

!rm -f /app/oracle/oradata/testdb/redo03*


p.177


!ls /app/oracle/oradata/testdb/redo03*



alter system switch logfile;



/



/



/



/




@log



p.178



vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log




p.179


alter database clear unarchived logfile group 3;


p. 180



alter system switch logfile;


/


/



/



tail -f /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log



p. 181



alter database clear unarchived logfile group 3;


alter database drop logfile group 3;


!


rm -f /app/oracle/oradata/testdb/redo03*

ls /app/oracle/oradata/testdb/redo03*


exit


@log


alter database add logfile group 3

 ('/app/oracle/oradata/testdb/redo03_a.log'.'/app/oracle/oradata/testdb/redo03_b.log') size 50M;

 

 

@log

 

 

p. 182



@log



p.183



!rm -f /app/oracle/oradata/testdb/redo02*


!ls /app/oracle/oradata/testdb/redo02*



alter system switch logfile;


/



/


/


p.184


sqlplus scott/tiger


sys/[패스워드] /as sysdba



shutdown abort;



startup




p.185



vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log



exit


sqlplus sys/[패스워드] as sysdba




p.186



startup mount;



alter database drop logfile group 2;


alter database cler unarchived logfile group 2;


alter database open;



!ls /app/oracle/oradata/testdb/redo02*


/app/oracle/oradata/testdb/redo02_a.log /app/oracle/oradata/testdb/redo02_b.log 




@log




p. 187


@log



p. 188



create table scott.tt200 (no number) tablespace users;


insert into scott.tt200 values (1);


commit;


@log


p.189



!rm -f /app/oracle/oradata/testdb/redo02*



!ls /app/oracle/oradata/testdb/redo02_b.log



!ls /app/oracle/oradata/testdb/redo02_a.log



shutdown immediate;



startup


vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log



p.191



recover database until cancel;


alter database open restlogs;


select * from scott.tt200;



p.192


@log



p.193



create table scott.tt600 (no number);


insert into scott.tt600 values (1);


commit;


alter system switch logfile;


@log



p.194



insert into scott.tt600 values (2);


commit;


alter system switch logfile;


@log



insert into scott.tt600 values (3);


commit;


select * from scott.tt600;


p.195


@log


!rm -f /app/oracle/oradata/testdb/redo03*


!ls /app/oracle/oradata/testdb/redo03*



shutdown abort;




p. 196


!cp /data/backup/close/*.dbf /app/oracle/oradata/testdb/


p. 197


startup mount;


recover databse;


recover databse until cancel;



p.198


alter database open restlogs;


select * from scott.tt600;



p.199


shutdown immediate;



startup mount;



archive log list;



p. 200

alter databse noarchivelog;


alter database open;


@log


create table scott.tt650 (no number);


insert into scott.tt650 values (1);


p.201


commit;


alter system switch logfile;


@log



insert into scott.tt650 values (2);



commit;



alter system switch logfile;


@log


p. 202


insert into scott.tt650 values (3);


commit;


select * from scott.tt650;



alter system switch log file;


/


p. 203

/


@log



!rm -f /app/oracle/oradata/testdb/redo03*


!ls /app/oracle/oradata/testdb/redo03*



shutdown abort;




! $ORACLE_HOME/dbs/inittestdb.ora


_allow_resetlogs_corruption=true


:wq!


p. 204


startup


@log



p. 205


recover database until cancel;


alter database open resetlogs;


select * from scott.tt650 ;



p. 206


@log



create table scott.tt650 (no number);


insert into scott.tt650 values (1);


commit;


alter system switch logfile;


insert into scott.tt660 values (2);


commit;



p. 207


@log


alter system switch logfile;


insert into scott.tt660 values (3);



commit;


@log


!rm /app/oracle/oradata/testdb/redo03*



p. 208


!ls /app/oracle/oradata/testdb/redo03*



shutdown abort;



!vi $ORACLE_HOME/dbs/inittestdb.ora



_allow_resetlogs_corruption=true


:wq!


startup mount


@log



p. 209



recover database until cancel;


p. 210



alter database open resetlogs;


select * from scott.tt660;


p.213


@log


select status from v$instance;


!rm /app/oracle/oradta/testdb/*.log


alter system switch logfile;


/



p.214


/



@log


alter databse clear unarchived logfile group 3;


alter system switch logfile;


/



p. 215



@log



alter database clear unarchived logfile group 1;


alter system switch logfile;


/


p. 216


@log


alter database clear unarchived logfile group 2;


alter system switch logfile;


/


/



'ORACLE > Oracle Trouble Shooting' 카테고리의 다른 글

Oracle Logmminer  (0) 2016.05.10