暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle误删数据怎么恢复?



今天主要介绍利用LogMiner 工具结合日志去做数据恢复。

LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具。

日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。

一、开启归档日志

1、oracle需要 启动到mount状态

mkdir -p data/arch     ---要修改的归档路径

archive log list;            ---查看oracle归档

shutdowm immediate;

startup mount;            ---oracle需要 启动到mount状态

alter database archivelog;

alter system setlog_archive_dest_1='location=/data/arch';   ---归档路径修改为 指定路径

alter database open;

2、安装dbms包

SQL> @?/rdbms/admin/dbmslmd.sql

SQL> @?/rdbms/admin/dbmslm.sql

SQL> @?/rdbms/admin/dbmslms.sql

3、查看utl_file_dir参数

SQL> show parameter utl_file_dir

如无路径,须添加路径

SQL> alter system set utl_file_dir='/dblog' scope=spfile;

SQL> shut immediate;

SQL> startup

4、手动切换日志

alter system switch logfile;

5、查看日志文件和归档文件路径

select * from v$logfile;

select name from v$archived_log;



二、日志挖掘

1、创建日志挖掘的字典

execute dbms_logmnr_d.build(dictionary_filename=>'log.ora',dictionary_location=>'/dblog',options=>dbms_logmnr_d.store_in_flat_file);

2、添加归档日志

第一个归档日志为new,后面的直接add

exec dbms_logmnr.add_logfile('/data/arch/1_4_1127298192.dbf',dbms_logmnr.new);

exec dbms_logmnr.add_logfile('/data/arch/1_5_1127298192.dbf',dbms_logmnr.addfile);

exec dbms_logmnr.add_logfile('/data/arch/1_6_1127298192.dbf',dbms_logmnr.addfile); 

3、开启日志挖掘

exec dbms_logmnr.start_logmnr(dictfilename=>'/dblog/log.ora');

4、查看日志挖掘记录,建议使用spool

spool home/oracle/1.sql

select scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss'),sql_redo from v$logmnr_contents where seg_name='表' and seg_owner='用户;

spool off

5、关闭日志挖掘

exec dbms_logmnr.end_logmnr;

6、查看/home/oracle/1.sql,寻找删除的语句。




欢迎关注公众号:小周的数据库进阶之路,一起交流数据库、中间件和云计算等技术。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以扫描下面的二维码加入群聊,与业界的大佬们一起交流学习。


文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论