logmnr 的一个实例

上一篇 / 下一篇  2008-06-11 23:33:32 / 个人分类:Oracle 备份与恢复

logmnr 课程
logmnr的作用
 1. analyze redo logfile
 2. incomplete recover database
logmnr全部过程
1 backup database
2 modify spfile
3 restart database
4 manipulate database,switch logfile
5 use logmnr
6 analyze redo logfile
7 incomplete recover database
8 verify recover

1 备份数据库
 --操作
 --制作脚本备份数据库如下:
vi usualbk.rcv

connect targetsys/oracle@clonedb
run{
allocate channel d1 device type disk;
backup as compressed backupset
incremental level=0
format='/rmanbak/inc0_%d_%U'
tag='inc0'
channel=d1
database;
backup as compressed backupset
format='/rmanbak/arch_%d_%U'
tag='arch'
channel=d1
archivelog all delete input;
backup as compressed backupset
format='/rmanbak/backup.ctl'
tag='ctl'
channel=d1
current controlfile reuse;
}
 --使用命令备份数据库
rman cmdfile=/home/oracle/usualbk.rcv log=/home/oracle/rman.log append
.....

2 修改参数文件
 --步骤
 root@zhousi#mkdir/logmnr
 root@zhousi#chown-R oracle:dba /logmnr
 alter system set utl_file_dir='/logmnr' scope=spfile sid ='*';
 startup force
 --操作实例:
 oracle@zhousir->sqlclonedb
 sql> show parameters utl
 sql>alter system set utl_file_dir='/logmnr' scope=spfile;
 sql> startup force

3 模拟误操作
 --操作
sql>conn test
sql>select table_name from user_tables;
sql>create table tb_test3(col1 varchar2(100) default user not null);
sql>insert into tb_test3(col1) values('first row');
sql>/
sql>commit;
sql>drop table tb_test1;   --后面恢复到这个时间点
sql>insert into tb_test3(col1) values('three row');
sql>commit;
sql>create table tb_Test4 as select * from tb_test3;

 --归档日志
conn / as sysdba
alter system switch logfile;  --归档日志
select * from v$archived_Log;  --最新的一个归档日志是后面要分析的


4 使用logmnr
 --步骤:
 create dictionary
 add logfile
 start analyze
 create table as select * from v$logmnr_contents
 end logmnr
 find exact drop time
 --操作实例:
 sql>execute dbms_logmnr_d.build(dictionary_filename=>'dictionary.ora',dictionary_logcation=>'/logmnr');
 sql>commit;
       --添加日志文件
 sql>begin
 dbms_logmnr.add_logfile(logfilename=>'/oradata/clonedb/archive/1_2_653581041.dbf',options=>dbms_logmnr.new);
 end;
 /
5 分析日志文件
 --操作实例:
 sql>select * from v$logmnr_logs;  --查找添加结果
 sql>execute dbms_logmnr.start_logmnr(dictfilename=>'/logmnr/dictionary.ora');
 sql>select count(*) from v$logmnr_contents;
 sql>create table test.tb_logmnr as select * form. v$logmnr_contents;  --把数据转存到一个用户表,方便分析。
 sql> conn test
 sql>select count(*) from tb_logmnr;
 sql>
 ----使用pl/sql develop查看表具体内容:
 sql>select * from tb_logmnr;
 --重要的字段 username seg_name seg_owner seg_type_name timestamp operation
 sql>select count(*) from tb_logmnr where peration ='DDL';
 --sqlplus 启动数据库到 mount状态
 sql>conn / sysdba
 sql>shutdown immediate
 sql>startup mount
 sql>exit
6 不完全恢复数据库
 root#su - oracle
 --用RMAN恢复数据库到第一个删除表时间点(logmnr查询得到结果)
 oracle$uniread rman nocatalog targetsys/oracle@clonedb
 rman>run {
 allocate channel d1 device type disk;
 set until scn 1469380;
 restore database;
 recover database;
 }
 rman>
 ---------------
7 验证恢复结果
 --在另一个会话中打开数据库,查询恢复后的结果。
 sql>select open_mode from v$database;
 sql>alter database open resetlogs;
 sql>conn test
 sql>select table_name from user_tables;

 

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-13  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 1671
  • 日志数: 908
  • 文件数: 2
  • 建立时间: 2008-02-11
  • 更新时间: 2008-06-11

RSS订阅

Open Toolbar