`

oracle快照保留和误删恢复

阅读更多
1.AWR默认的采样间隔和历史快照保留时间
默认是保留七天,采集间隔是1小时,这个信息可以从DBA_HIST_WR_CONTROL视图中获得。
代码:
tacsoft_sql> col SNAP_INTERVAL for a20
tacsoft_sql> col RETENTION for a20
tacsoft_sql> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
3973098169 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT


SNAP_INTERVAL=+00000 01:00:00.0 表示采样间隔是1小时
RETENTION=+00007 00:00:00.0 表示采样数据保留期限是7天

关于DBA_HIST_WR_CONTROL视图的更多参考可参见Oracle官方文档
http://download.oracle.com/docs/cd/B193 ... REFRN23462

2.修改AWR默认的采样间隔和历史快照保留时间之GC方法
请按照如下的顺序操作即可。
1)点击Targets
2)点击Databases,选择需要调整的数据库并进入
3)搜索“Automatic Workload Repository”关键字(该内容属于Administration - Database Administration - Statistics Management)进入,此时可以看到系统当前的设置情况
4)点击Edit进行修改,注意这里System Snapshot Interval只有10 Minutes、15 Minutes、20 Minutes、30 Minutes、1Hour、2 Hours这几种选项,多少有些局限(命令行修改方法不受这个约束)。

3.修改AWR默认的采样间隔和历史快照保留时间之SQL方法
万变不离其宗,任何能从界面上进行修改的内容都可以通过SQL调整的方法来完成。
我们即将使用到的是DBMS_WORKLOAD_REPOSITORY包中的MODIFY_SNAPSHOT_SETTINGS存储过程。
该存储过程的简单描述信息如下。
代码:
tacsoft_sql> desc DBMS_WORKLOAD_REPOSITORY
…… ……
PROCEDURE MODIFY_SNAPSHOT_SETTINGS
Argument Name Type In/Out Default?
------------------------------ --------------- ------ --------
RETENTION NUMBER IN DEFAULT
INTERVAL NUMBER IN DEFAULT
TOPNSQL VARCHAR2 IN
DBID NUMBER IN DEFAULT


例如我们需要将采集间隔调整为15分钟,采样数据保留2天,可以做如下调整
代码:
tacsoft_sql> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 15,
4 retention => 2*24*60);
5 END;
6 /

PL/SQL procedure successfully completed.


验证修改结果
代码:
tacsoft_sql> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +00000 00:15:00.0 +00002 00:00:00.0 DEFAULT


更多关于该存储过程的说明请参考Oracle官方文档http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_wkrpos.htm#BACEHJJI。

值得注意的是:
RETENTION参数的取值范围要求是1天到100年,即快照至少需要保留1天,最长可以保留100年;
INTERVAL参数的取值范围要求是10分钟到100年,即快照采集间隔最少可以是10分钟,最长可以是100年(官方文档这里描述的有问题,不但用词不正确,而且给出的最长是1年也是不正确的,用词方面的错误在11gR1文档中得到修改)。

1)验证RETENTION参数的取值范围
当RETENTION参数被赋予少于1天或超过100年的时候都会给出提示性错误ORA-13510,从提示信息中也可以得到该参数的取值范围(1440, 52560000),1440分钟即1天, 52560000分钟即100年。
代码:
tacsoft_sql> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 60,
4 retention => 0.5*24*60);
5 END;
6 /

BEGIN
*
ERROR at line 1:
ORA-13510: invalid RETENTION 720, must be in the range (1440, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2

tacsoft_sql> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 60,
4 retention => 36501*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13510: invalid RETENTION 52561440, must be in the range (1440, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2


2)验证INTERVAL参数的取值范围
代码:
tacsoft_sql> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 9,
4 retention => 7*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13511: invalid INTERVAL 9, must be in the range (10, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2


可见此处INTERVAL参数的取值是10分钟到52560000分钟(即100年),当间隔取到整100年的时候是没有问题的。
代码:
tacsoft_sql> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 36500*24*60,
4 retention => 7*24*60);
5 END;
6 /

PL/SQL procedure successfully completed.

tacsoft_sql> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +36500 00:00:00.0 +00007 00:00:00.0 DEFAULT


4.停止AWR采样发生的迂回方法
我们可以将采样时间间隔调整为最长100年,同时把采样数据保留时间调整到最小1天的方式实现“禁用”AWR。
代码:
tacsoft_sql> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 36500*24*60,
4 retention => 1*24*60);
5 END;
6 /

PL/SQL procedure successfully completed.

tacsoft_sql> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +36500 00:00:00.0 +00001 00:00:00.0 DEFAULT



利用闪回查看Oracle表历史时刻数据

1.查看表历史时刻数据

select * from tab_test AS OF TIMESTAMP to_timestamp('20140917 10:00:00','yyyymmdd hh24:mi:ss');

2、利用flashback table恢复表到过去某一时刻

alter table tab_test enable row movement;

flashback table tab_test to timestamp ('20140917 10:00:00','yyyymmdd hh24:mi:ss');

alter table tab_test disable row movement;

3、查看过去某一段时间内对表的操作,以确认需要恢复到的时间点

select SQL_TEXT,LAST_ACTIVE_TIME from v$sqlarea where LAST_ACTIVE_TIME >to_date('20140917 10:00:00','yyyymmdd hh24:mi:ss') and SQL_TEXT like '%tab_test%';

4、确认是否开启闪回

select log_mode,flashback_on from v$database;

Oracle 11g Flashback Data Archive(闪回数据归档) http://www.linuxidc.com/Linux/2013-06/86696.htm

Oracle Flashback闪回机制 http://www.linuxidc.com/Linux/2013-05/84223.htm

Oracle Flashback database http://www.linuxidc.com/Linux/2013-05/84129.htm

Flashback table快速恢复误删除的数据 http://www.linuxidc.com/Linux/2012-09/70988.htm

Oracle 备份恢复:Flashback闪回 http://www.linuxidc.com/Linux/2012-09/69958.htm

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-09/106878.htm
分享到:
评论

相关推荐

    使用oracle快照恢复误删的数据

    oracle 数据恢复 误删恢复 111111111111111111111111111111111111111111111111111111111111111111111111

    oracle 通过快照进行数据恢复

    - 使用快照恢复数据时,应确保所选时间点的数据是有效的。 - 快照占用额外的存储空间,因此需要合理规划存储资源。 #### 五、总结 Oracle数据库的快照技术为数据恢复提供了一种高效便捷的方法。通过合理利用快照,...

    oracle误删数据恢复方法

    利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。

    Oracle数据库表数据误删还原的方法

    Oracle数据库表数据误删还原的方法,在一定时间内表数据误删除了恢复数据的方法

    Oracle Database 10g 误删表,闪电恢复

    Oracle Database 10g引入了这一特性,极大地增强了数据库的可恢复性和容错性。本篇文章将深入探讨Oracle 10g的闪回表特性及其在实际操作中的应用。 首先,我们需要理解什么是闪回表(Flashback Table)。闪回表是...

    oracle 误删恢复

    在没有启用闪回功能的情况下,恢复误删数据的传统方法是依赖于备份和归档日志。通过使用RMAN(Recovery Manager)工具,我们可以从最近的备份中恢复数据,或者通过分析归档日志来还原数据至删除前的状态。这种方法...

    Oracle误删的重要数据恢复指导

    本篇文章将详细探讨如何在Oracle中恢复误删的重要数据,以及如何采取预防措施以避免此类情况的发生。 首先,理解Oracle的数据恢复机制至关重要。Oracle数据库提供了一套完整的恢复策略,包括归档日志模式、闪回功能...

    oracle恢复误删数据

    在这种情况下,了解如何恢复误删数据变得极其关键。Oracle提供了多种机制来帮助用户在不同场景下恢复丢失的数据,包括闪回技术、归档日志恢复等。下面将详细介绍这些方法,以及如何在已提交的DELETE操作后恢复数据。...

    Oracle数据库误删除数据的不同恢复方法整理(超级实用)

    Oracle数据库提供了多种误删除数据的恢复方法,包括闪回恢复和回收站恢复。通过对这些方法的理解和应用,可以有效地避免因误操作而导致的数据丢失问题。同时,在日常维护中,合理地管理回收站和及时回收不再需要的...

    oracle误删数据恢复

    本文将详细介绍如何利用Oracle的回闪功能来恢复误删的数据。 ### 回闪功能简介 Oracle的回闪功能允许用户访问过去某一时刻的数据状态。这一特性主要基于两个方面:事务处理和时间戳。回闪查询可以用于查看历史数据...

    oracle使用logmnr找回误删数据.rar

    在这种情况下,Oracle的Log Miner(日志分析工具,简称logmnr)提供了一种有效的方法来恢复这些丢失的数据。本文将详细介绍如何利用logmnr找回误删数据。 首先,了解logmnr的基本概念。Log Miner是Oracle数据库内置...

    Oracle数据库误删除数据的不同恢复方法整理

    无论是单条记录的误删还是整张表的删除,Oracle都提供了多种恢复手段。合理利用这些工具和技术,不仅可以避免数据丢失的风险,还能最大限度地减少对业务的影响。当然,在实际操作过程中还需要根据具体情况选择最适合...

    Oracle误删数据恢复.txt

    因此,掌握如何有效地恢复误删的数据至关重要。本文将详细介绍几种常见的Oracle误删数据恢复方法及其操作步骤。 #### 二、基本概念 在开始介绍恢复方法之前,我们先了解几个重要的概念: - **UNDO_RETENTION**: 这...

    Oracle恢复误删除数据

    Oracle 恢复误删除数据 Oracle 数据库是企业级的关系数据库管理系统,广泛应用于各种行业。然而,在实际操作中,误删除数据是...Oracle 恢复误删除数据需要了解闪回方法的使用和限制,同时也需要注意空间占用的问题。

    Veeam 备份恢复oracle数据库详细配置文档

    在开始备份恢复 Oracle 数据库之前,需要在 Oracle 源机和 Oracle 恢复目标机上设置好 host 解析。为此,需要在 Oracle 源机和 Oracle 恢复目标机上编辑 hosts 文件,添加相应的 host 解析信息。 二、推送 Oracle ...

    解决误删了oracle的表空间

    运行在虚拟机的Linux下,解决误删了oracle的表空间,不用重装oracle

    oracle误删数据恢复方法小结

    本文将详细介绍一种在Oracle数据库中恢复误删数据的方法,主要涉及Oracle 9i及更高版本引入的闪回查询(Flashback Query)技术。 首先,当用户误删数据后,如果没有启用任何备份机制,传统的恢复方式通常需要DBA...

    oracle数据文件被误删除后的灾难处理

    #### 三、恢复误删的数据文件 1. **关闭监听器和服务**:为了安全起见,在尝试恢复数据文件之前,应先关闭 Oracle 的监听器服务。 - 命令示例:`lsnrctl stop` 2. **以 MOUNT 模式启动数据库**:确保数据库处于 ...

    Oracle11g通过DBF恢复数据

    通过阅读《oracle恢复过程.txt》文件,你将能获得更具体的指导和步骤,包括可能遇到的问题及解决方案。记住,每个恢复场景都有其独特性,因此理解并熟练掌握这些恢复技术对于保护和恢复宝贵的数据库数据至关重要。 ...

    Oracle11g备份恢复笔记文档

    - **归档模式**:允许将重做日志文件归档,为长期的数据保留提供了可能性,适合需要进行历史数据查询或灾难恢复的情况。 - **非归档模式**:重做日志文件会在填满后被循环覆盖,一旦数据文件丢失,则无法进行恢复。 ...

Global site tag (gtag.js) - Google Analytics