Oracle基于时间的不完全恢复
实验时间:2011年10月14日 环境:RED HAT4,Oracle 10.0.20
基于时间的不完全恢复,难点之一是找出恢复的时间点。如果用户记得当然很多,但很多时候,用户是不知道的,或者不能说知道。如果用户不知道,可以借助于LOG MINIER工具的确定。
一、假定场景 用户误删一个重要的表(SCOTT用户的EMP表),并且清空了回收站。当然此种情况也可以使用闪回技术来恢复,这里使用不完全恢复方法进行恢复。
二、场景模拟以SCOTT用户登录,删除表,新建一个表。
SQL> conn scott/oracle
Connected.
SQL> drop table emp purge;
Table dropped.
SQL> create table dept_new as select * from dept;
Table created.
不完全恢复后,EMP表应该存在,DEPT_NEW表应该不存在
为了更加接近实际情况,再手动切换几次日志。
SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
三、恢复过程1、设置LOG MINER用的参数SQL> conn / as sysdba
Connected.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /home/oracle/oracle/product/10
.2.0/db_1/dbs/spfileorcl.ora
SQL> alter system set utl_file_dir='/tmp/logmnr' scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 130023424 bytes
Fixed Size 1218100 bytes
Variable Size 62917068 bytes
Database Buffers 62914560 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter utl_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string /tmp/logmnr
验证一下,设置成功,当然,对应的目录要存在。
2、创建数据字典SQL> exec dbms_logmnr_d.build('dictora','/tmp/logmnr');
PL/SQL procedure successfully completed.
SQL> !ls -l /tmp/logmnr
total 22992
-rw-r--r-- 1 oracle oinstall 23509170 Oct 14 22:20 dictora
创建成功后,可以看到对应的文件
3、添加要分析的日志(包括联机日志和归档日志)SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
&n