如果你的数据库是运行在归档模式下,可以恢复到某个时间点conn sys@实例名 as sysdbaSQL>startup mountSQL>recover database until time '2005-02-10 10:00:00'
解决方案 »
- Oracle提示the account is locked
- ORCLE存储过程循环取值问题
- oracle 的 ODBC 连接不上
- Oracle 9i 中merge的问题
- 新增問題
- 请问这样的sql语句如何实现
- 请问各位高手怎么把如下这个SQL改为一个select语句
- orcale 8i 中,data的数据类型是什么样子的?在表中,存在data类型数据,无法插入?
- 问一个老问题,关于ORACLE打包的问题,具体要怎么写注册表。
- 在存储过程中使用动态SQL为什么会提示 insufficient privileges
- 在oracle10g中怎样可视化的创建数据库,就像在sql server中那样
- A query with LOB's requires OCI8 mode,but OCI7 mode is used
Logminer是oracle提供的一个日志分析工具。它可以根据数据字典对在线联机日志、归档日志进行分析,从而可以获得数据库的各种DML操作的历史记录以及各种DML操作的回退信息。根据这些用户就可以将由于误操作而丢失的数据重新加入数据库内。
1. 确认数据库的utl_file_dir参数已经设置,如果没有则需要把这个参数加入oracle的初始化参数文件,然后重新启动数据库。下面例子中假设utl_file_dir=’/opt/oracle/db01’;
2. 创建logminer所需要的数据字典信息,假设生成的数据字典文本文件为dict.ora:
svrmgrl>execute dbms_logmnr_d.build(dictionary_filename=>'dict.ora', dictionary_location=>'/opt/oracle/db01’);
3. 确定所需要分析的日志或者归档日志的范围。这可以根据用户误操作的时间来确定大概的日志范围。假设用户误操作时可能的日志文件为/opt/oracle/db02/oradata/ORCL/redo3.log和归档日志’/opt/oracle/arch/orcl/orclarc_1_113.ora’。
4. 创建要分析的日志文件列表,按日志文件的先后顺序依次加入:
svrmgrl>execute dbms_logmnr.add_logfile(logfilename=>’/opt/oracle/arch/orcl/orclarc_1_113.ora’,options=>dbms_logmnr.NEW);
svrmgrl> execute dbms_logmnr.add_logfile(logfilename=>’ /opt/oracle/db02/oradata/ORCL/redo3.log’,options=>dbms_logmnr.ADDFILE);
5. 开始日志分析,假设需要分析的时间在’2003-06-28 12:00:00’和’2003-06-28 13:00:00’之间:
svrmgrl>execute dbms_logmnr.start_logmnr(dictfilename=>’ /opt/oracle/db01/dict.ora’,starttime=>to_date(’ 2003-06-28 12:00:00’,’YYYY-MM-DD HH:MI:SS’),endtime=>to_date(to_date(‘2003-06-28 13:00:00’,’YYYY-MM-DD HH:MI:SS’));
6. 获取分析结果:
svrmgrl>select operation,sql_redo,sql_undo from v$logmnr_contents;
7. 根据分析结果修复数据。
8.结束logmnr:
svrmgrl>dbms_logmnr.end_logmnr;
9. 用适当的方法对原数据库进行数据库全备份。
最不济就克隆一个库,进行时间点恢复,再把单个表imp回来