oracle按时间点还原数据
?1、數據庫處于歸檔模式
???????? 查看命令???????? SQL> archive log line
2、備份數據庫中的所有數據文件
???????? 聲明數據庫備份????????????? SQL> alter database begin backup;
???????? 創建一目錄 mkdir /home/oracle/db_bak2
???????? 拷貝所有的.dbf文件????? cp /oracle/app/oradata/TEST/*.dbf ?/home/oracle/db_bak2/
???????? 結束備份狀態?????????????????? alter database end backup;
3、模擬丟失數據, 刪掉數據庫中的abc表???? SQL> drop table abc;
4、使用日志挖掘技術,確定誤刪除表的時間
???????? 1、創建一個目錄(放置提取出的文件)[oracle@sql1 ~]$ mkdir logminer
???????? 2、指定存儲目錄?
??????????????????????????? SQL>alter system set utl_file_dir='/home/oracle/logminer' scope=spfile;
???????? 3、建立日志挖掘的數據字典
??????????????????????????? SQL>execute dbms_logmnr_d.build('shwdict.ora','/home/oracle/logminer');
???????? 4、創建分析的文件列表(可以使歸檔日志或日志文件)
???????? SQL> execute ??????????????????????????? ???? ???????? ???????? dbms_logmnr.add_logfile('/oracle/app/oradata/TEST/redo01.log',dbms_logmnr.new);
???????? SQL> execute ??????????????????????????? ???? ???????? ???????? dbms_logmnr.add_logfile('/oracle/app/oradata/TEST/redo02.log',dbms_logmnr.new);
???????? SQL> execute ??????????????????????????? ???? ???????? ???????? dbms_logmnr.add_logfile('/oracle/app/oradata/TEST/redo03.log',dbms_logmnr.new);
???????? 5、開始挖掘數據
???????? SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logminer/shwdict.ora');
???????? 6、設置回話的時間格式
?????????????????? SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
???????? 7、查看分析內容
?????????????????? SQL> select scn, timestamp, sql_redo from v$logmnr_contents where sql_redo ??????????????????????????????????? like'%drop%';
?
?????? ??????????? SCN ?????? ?????????????????? TIMESTAMP ??????????? ???????? SQL_REDO????????????????
?????????????????? ????????
?????????????????? ???????? 798149 ?------ 2013-04-16 20:47:08? ----- ?drop table abc -----
?? ? 8、結束分析
?????????????????? SQL>execute dbms_logmnr.end_logmnr;
5、數據恢復
???????? 1、關閉數據庫進入mount模式
?????????????????? SQL> shutdown immediate
?????????????????? SQL> startup mount
???????? 2、還原所有的數據文件
?????????????????? [oracle@sql1 ~]$ cp db_bak2/*.dbf /oracle/app/oradata/TEST/
???????? 3、設置會話的時間格式
?????????????????? SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
???????? 4、恢復數據庫到時間點
?????????????????? SQL> recover database until time '2013-04-16 20:47:08';
???????? 5、重置日志打開數據庫
?????????????????? SQL> alter database open resetlogs;
???????? 6、查看數據是否恢復
?????????????????? SQL> select count(*) from abc;???????????????? 數據恢復出來了
??????????????????
???????? ????????
? ? ? ? ? ? ? ? ? ? ? ? ? ??
轉載于:https://blog.51cto.com/6274815/1179563
總結
以上是生活随笔為你收集整理的oracle按时间点还原数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: puppet kick 功能实现
- 下一篇: oracle 创建触发器_oracle创