当前位置:  数据库>oracle

巧用Oracle闪回数据库来查看历史数据

    来源: 互联网  发布时间:2017-06-24

    本文导语: 假日期间有一个例行维护的任务,需要在大早上7点起来,先根据业务指定的SQL查出指定数据,然后运行一个存储过程来更新数据。查出来的这部分数据需要作为后期的数据稽核所用,涉及到审计,所以优先级还是比较高的。因...

假日期间有一个例行维护的任务,需要在大早上7点起来,先根据业务指定的SQL查出指定数据,然后运行一个存储过程来更新数据。
查出来的这部分数据需要作为后期的数据稽核所用,涉及到审计,所以优先级还是比较高的。
因为这样的查询有几个,所以为了统一数据格式,先加了rownum看看数据的基本情况。
SQL类似于下面的形式:
select cn 账号,present_point 剩余积分点 , last_date 积分最后更新时间 from test.user_present_point_sp  where  present_point > 0 and last_date < to_date('2016-10-07','yyyy-MM-dd')  and rownum 0 and last_date < to_date('2016-10-07','yyyy-MM-dd');
而我当时格式化的时候竟然给忘了去掉rownum 0 and last_date < to_date('2016-10-07','yyyy-MM-dd')
                                                                              *
ERROR at line 1:
ORA-01555: snapshot too old: rollback segment number 22 with name
"_SYSSMU22_163011606$" too small
这个时候问题就摆在了我的面前,这个问题该怎么解决。首先不能作假,其次这部分内容是要提供的,完全能没有办法通过日志 或者其它的方式来间接得到了。
这个时候我想到了我之前的一个完美的决定。那就是一主两备,在异机备库开了闪回数据库的特性。保留的时间是4天,这下我是这个问题的真正受益者了。
来看看在备库做真实的闪回数据库操作是否可行,这次艰巨的任务就靠它了。
首先确认备库的状态:
SQL> select flashback_on,database_role,open_mode from v$database;
FLASHBACK_ON      DATABASE_ROLE    OPEN_MODE
------------------ ---------------- --------------------
YES                PHYSICAL STANDBY READ ONLY WITH APPLY
确认了时间点,就准备停库,停库前还是需要确认是否有其它的业务连接。
SQL> select username,count(*)from v$session group by username;
USERNAME                        COUNT(*)
------------------------------ ----------
                                      50
PUBLIC                                  5
SYS                                    1
启库到mount阶段,闪回到具体的时间点。
flashback database to timestamp to_timestamp('2016-10-06 07:20:00','yyyy-mm-dd hh24:mi:ss');

这个闪回的过程因为涉及到的闪回日志还是蛮多的,所以持续时间就略微长一些。大概有15分钟的样子。
Sat Oct 08 11:14:59 2016
 flashback database to timestamp to_timestamp('2016-10-06 07:20:00','yyyy-mm-dd hh24:mi:ss')
Flashback Restore Start
 Sat Oct 08 11:27:03 2016
Flashback Restore Complete
Flashback Media Recovery Start
 started logmerger process
Parallel Media Recovery started with 24 slaves
Flashback Media Recovery Log /U01/app/Oracle/fast_recovery_area/SGCDB2/archivelog/2016_10_06/o1_mf_1_3696_czc0wj0f_.arc
Flashback Media Recovery Log /U01/app/oracle/fast_recovery_area/SGCDB2/archivelog/2016_10_06/o1_mf_1_3697_czc540wp_.arc
Sat Oct 08 11:27:15 2016
Incomplete Recovery applied until change 229374582017 time 10/06/2016 07:20:01
Sat Oct 08 11:27:15 2016
Flashback Media Recovery Complete
Completed:  flashback database to timestamp to_timestamp('2016-10-06 07:20:00','yyyy-mm-dd hh24:mi:ss')
Sat Oct 08 11:29:34 2016
再次查询,数据就是当时的状态了,就和一个完整的快照一样,如果对闪回时间有疑问,还可以再次闪回,直到满足要求,经过比对,发现数据准确无误。
重启数据库,开启日志应用,备库又开始接受应用归档了。整个过程也是有惊无险,我也在这个过程中对闪回数据库有了更深入的理解。对此我有几点感触,一个就是如果异机备库的空间较大,日志量不是非常大,可以考虑将闪回的时间设置长一些。对于很多操作来说,还是需要尽可能保留一些关键的日志,没准哪天那些看似不重要的时间戳就非常重要了。


    
 
 

您可能感兴趣的文章:

  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE数据库常用字段数据类型介绍
  • 怎样调出ORACLE数据库中的数据,该如何连接?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • 关于JDBC连接Oracle数据库,是否必须有Oracle客户端
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • win2000+jbuilder6+oracle817编出的程序,在win2000下执行很好,在win98下却访问不了oracle数据库
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  • 将Oracle 8i数据成功移植Oracle 10g的方法
  • Oracle收购TimesTen 提高数据库软件性能
  • 我从JSP页将数据插入到oracle数据库中,为何汉字插入后数据库中显示为乱码呢?
  • Oracle数据库恢复后心得
  • 紧急求救:对Oracle数据库中long 型数据进行模糊查询 如何查?
  • Linux下Oracle数据库,dbstart持续不动,数据库无法启动解决
  • 卸载oracle数据库
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle数据库运行Oracle form时避免出现提示信息
  • 如何在JBuilder中连接Oracle数据库?
  • Oracle数据库访问参数文件的顺序
  • 安装Oracle加载数据库错误areasQueries的解决
  • Jbuilder 7.0 连接 Oracle 数据库
  • 让两个ORACLE数据库和平共处
  • 在数据库安全方面 微软强于Oracle
  • 数据库服务器 Oracle
  • 深入理解Oracle数据库的启动和关闭
  • oracle停止数据库后linux完全卸载oracle的详细步骤
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • Oracle商业数据库对Linux的策略是什么
  • Linux下Oracle数据库相关知识集粹
  • Oracle 11g R2 数据库将在9月发布
  • oracle数据库入门知识简述
  • 更改Oracle数据库的归档模式
  • 讨论:jdbc连接oracle数据库
  • 请教高手: linux c如何远程访问windows下的oracle数据库?
  • oracle 数据库连接分析
  • Unix/Linux上启动oracle数据库
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • ORACLE日期相关操作
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 12c的九大最新技术特性介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3