本文主要是介绍DML误操作基于时间点的不完全恢复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不完全恢复(必须归档)的步骤:
1、先做全备份(最好是关库备份)。
2、通过logmnr找到误操作的时间点
3、转储所有数据文件。其他不用。
4、startup mount;
5、把数据文件恢复到错误发生的时间点。
6.开库resetlogs;
7.再全备份一次。
utl
1、首先创建一个ult目录。
[oracle@rtest oracle]$ mkdir utl
[oracle@rtest oracle]$ cd utl/
[oracle@rtest utl]$ pwd
/u01/app/oracle/utl
然后修改:
sys@TEST0910> show parameter utl
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string
sys@TEST0910> alter system set utl_file_dir='/u01/app/oracle/utl';
alter system set utl_file_dir='/u01/app/oracle/utl'
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
2、使路径生效,shutdown immediate后startup
sys@TEST0910> alter system set utl_file_dir='/u01/app/oracle/utl' scope=spfile;
System altered.
sys@TEST0910> show parameter utl
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string
sys@TEST0910> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@TEST0910> startup
ORACLE instance started.
Total System Global Area 2505338880 bytes
Fixed Size 2230952 bytes
Variable Size 587203928 bytes
Database Buffers 1895825408 bytes
Redo Buffers 20078592 bytes
Database mounted.
Database opened.
sys@TEST0910> show parameter utl
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string /u01/app/oracle/utl
3、破坏试验之前,备份
冷备份:sys@TEST0910> @/u01/app/oracle/bak/cold_bak
热备份:sys@TEST0910> @/u01/app/oracle/bak/hot_bak
破坏性试验:dml语句的不完全恢复
注意utl参数
过程:删数据--查日志--logmnr--关库--转储--mount--不完全恢复--开库resetlogs
4、log miner主要目的是找出dml或ddl操作的时间和位置:
alter database add supplemental log data这样才找得到。 一定要激活。
log miner要用sys用户执行:
在使用log miner之前,先添加辅助日志:
sys@TEST0910> select count(*) from scott.test8;
COUNT(*)
----------
14
sys@TEST0910> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;即激活logmnr
Database altered.
5、误操作不带条件的删除
sys@TEST0910> delete from scott.test8;
14 rows deleted.
sys@TEST0910> commit;
Commit complete.
sys@TEST0910> select count(*) from scott.test8;
COUNT(*)
----------
0
这篇关于DML误操作基于时间点的不完全恢复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!