oracle按时间点还原数据
2013-04-16 21:57
99 查看
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; 数据恢复出来了
查看命令 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; 数据恢复出来了
相关文章推荐
- Oracle按时间点还原数据表--用于处理数据误删除
- Oracle查询还原时间点数据/还原数据
- ORACLE 取24小时并且时间与数据相对应
- Oracle_数据的还原_09
- Oracle查询一批数据,某字段的内容有重复数据,怎样取相同的记录中时间最近的一条
- Oracle 误删除 或者更改找回 指定时间之前的数据
- 为Oracle数据表的时间列建立Unique index后发生的
- oracle恢复某段时间点的数据
- oracle按时间查询翻页时出现与前面一页重复数据
- oracle按时间排序,取得表中第一条数据(数据可能重复)
- 关于Oracle SQL中系统时间和库里数据时间的比较
- 在xp或win7下 oracle11g通过exp/imp方式来对db数据的备份与还原
- 《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列三:时间类型
- oracle数据查询时间
- oracle时间转换:12小时24小时制/ 快速查询表中有无数据
- ORACLE数据泵还原(IMPDP命令)
- oracle数据还原与备份
- Linux下程序访问oracle数据的时间格式
- Oracle数据的备份与还原
- ORACLE数据泵还原(IMPDP命令)【转】