Oracle闪回查询恢复delete删除数据

合集下载

oracle误删数据表还原的二种方法(oracle还原)

oracle误删数据表还原的二种方法(oracle还原)

oracle误删数据表还原的⼆种⽅法(oracle还原)⼀、如果是刚刚删除,那么有两⽅法:⾸先⽤show parameter undo;命令查看当时的数据库参数undo_retention设置。

显⽰如下:复制代码代码如下:undo_management string AUTOundo_retention integer 10800undo_suppress_errors boolean FALSEundo_tablespace string UNDOTBS1undo_retention(保持⼒),10800单位是秒。

即3个⼩时。

修改默认的undo_retention参数设置:复制代码代码如下:ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;⽅法1,通过oracle提供的回闪功能:复制代码代码如下:exec dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00','yyyy-mm-dd hh24:mi:ss'));set serveroutput onDECLARE r_temp hr.job_history%ROWTYPE;CURSOR c_temp IS SELECT * FROM hr.job_history;BEGINOPEN c_temp;dbms_flashback.disable;LOOPFETCH c_temp INTO r_temp;EXIT WHEN c_temp%NOTFOUND;insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values(r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);commit;END LOOP;CLOSE c_temp;END;⽅法2,insert into hr.job_history复制代码代码如下:select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');这种⽅法简单,容易掌握,功能和上⾯的⼀样时间为你误操作之前的时间,最好是离误操作⽐较近的,因为oracle保存在回滚保持段⾥的数据时间有⼀定的时间限制由undo_retention 这个参数值决定。

oracle中闪回语法

oracle中闪回语法

oracle中闪回语法全文共四篇示例,供读者参考第一篇示例:Oracle中的闪回功能是一种强大的特性,它可以让用户在数据库操作出现错误时快速恢复数据到之前的状态。

通过使用闪回功能,用户可以在不影响其他正在运行的事务的情况下,进行数据的回滚操作,使数据库恢复到之前一个确定的时间点。

在Oracle中,闪回功能主要通过闪回查询和闪回表来实现。

闪回查询可以让用户查看数据库在某个时间点的数据情况,而闪回表可以让用户将表恢复到之前的状态。

下面我们来详细介绍一下这两种闪回功能的具体语法和用法。

闪回查询的语法如下:```SELECT * FROM table_name AS OF TIMESTAMP timestamp;```这条SQL语句表示从指定的时间戳timestamp时刻查看table_name表的数据情况。

用户可以使用这种方式来查看数据库在某个具体时刻的数据,从而找出误操作的原因,或者进行数据对比和分析。

除了基本的闪回查询和闪回表功能之外,Oracle中还提供了其他一些灵活的闪回功能,比如闪回查询带条件、闪回表到某个SCN号、闪回事务等。

用户可以根据具体的需求和情况,选择合适的闪回方式进行操作。

需要注意的是,闪回功能在数据库恢复和数据修复方面有着非常重要的作用,但在使用时也需要谨慎操作,以避免对数据造成更大的影响。

在使用闪回功能之前,用户最好提前做好数据备份和日志记录,以防止操作出现意外情况。

Oracle中的闪回功能是一项非常实用和强大的特性,它可以帮助用户在数据库操作出现错误时快速恢复数据,有效避免数据丢失和影响。

通过灵活运用闪回功能,可以提高数据库的稳定性和安全性,保证数据的完整和可靠性。

希望本文的介绍能够对大家有所帮助,希望大家在使用Oracle数据库时,能够充分利用闪回功能,提升数据管理的效率和水平。

第二篇示例:Oracle中的闪回语法是一种非常强大的工具,它可以帮助用户轻松地还原数据库到之前的状态。

oracle数据库闪回

oracle数据库闪回
传统上,从人为错误中恢复数据唯一的办法就是采用用户管理的备份和恢复技术。先复原数据库文件然后利用所有重做日志文件前滚的过程需要长时间的停机。
而闪回技术提供了从逻辑错误中恢复的更有效和更快的方法,多数情况下,在用这种技术进行恢复时数据库仍然联机并对用户可用。此外,闪回技术允许选择性地复原某些对象。使用传统的技术,从某种意义上说某有选择,只能恢复整个数据库。
SQL> conn rocky/rocky
已连接。
SQL> select * from emp;
EID NAME SEX ID
---------- ---------- ----- ----------
aa bb B 11
闪回数据库
闪回数据库的条件
1、 数据库日志系统必须在归档模式下。
2、 如果丢失了一个数据文件,或者由于某种原因不能使用特定的数据文件,则不能使用闪回数据库进行恢复。
3、 如果已经在想闪回的时间范围内复原或重建了一个控制文件,则不能使用闪回数据库特性。
4、 不能闪回一个数据库到RESETLOGS操作之前。
def hykdddd
defgdbbea hykdddd
SQL>
注意:回收站中的对象只能进行查询,任何的DML操作将不起作用。
恢复被删除的表
只要回收站中列出被删除的表,就可以使用命令恢复它。
FLASHBACK TABLE table_name TO BEFORE DROP
还有:
清除整个回收站:purge recyclebin
除回收站中的单个表:purge table test_drop
上述命令将从USERS表空间中删除单一用户scott的所有对象(以及存在于其他表空间中的所有依赖对象)。

启动闪回(flashback),并恢复对表中数据的修改

启动闪回(flashback),并恢复对表中数据的修改

启动闪回(flashback),并对表修改数据的恢复备注:使用表名为:infos;数据库:sun01方远整理2015-01-21 准备事项:1.首先对表数据进行修改:查询:select*from infos;得到:修改:update infos set stuname='hai'where stuid='s150201'得到:记录更改时间:2015-01-21 15:00:00(在update动作之前时间均可以)2.查询:flash_recovery_area所在位置得到:位置为D:\oracle\product\10.2.0启动闪回:1.查询数据库是否开始flashback功能查询:select flashback_on from v$database得到:未开启,继续步骤已开启,直接跳使用闪回2.使用sql plus连接数据库输入:conn system/sun123@sun01 as sysdba得到:2.开始数据库为归档模式:输入:shutdown immediate得到:输入:startup mount得到:输入:alter database archivelog;得到:3.更改两个参数输入:alter system set db_recovery_file_dest='\oracle\product\10.2.0'; (上述查询得到位置)输入:alter system set db_recovery_file_dest_size=4g scope=spfile;得到:4.启动flashback输入:alter database flashback on;得到:输入:select flashback_on from v$database得到:使用闪回:1.启用行移动功能输入:alter table table_name enable row movement;得到:2.使用闪回输入:flashback table infos to timestamp to_timestamp('2015-01-21 15:00:00','YYYY-MM-DD HH24:MI:SS')得到:输入:select*from infos得到:。

oracle flashback table语法

oracle flashback table语法

oracle flashback table语法OracleFlashbackTable语法是一种用于恢复被修改或删除的表数据的技术。

它使您可以使用简单的SQL语句来回滚表数据,并且比使用恢复工具和备份更加方便和快速。

要使用Flashback Table,您需要在Oracle数据库中启用闪回功能。

一旦启用,您可以使用以下语法将表恢复到以前的状态:FLASHBACK TABLE table_name TO TIMESTAMP timestamp_value;其中,table_name是您要恢复的表的名称,timestamp_value是您要将表恢复到的时间戳值。

您可以使用SYSTIMESTAMP或TO_TIMESTAMP函数来指定时间戳值。

例如,以下语句将从my_table表中删除的所有行恢复到3月1日下午2点的状态:FLASHBACK TABLE my_table TO TIMESTAMP '2021-03-0114:00:00';除了使用时间戳值外,您还可以使用SCN(系统更改号码)来恢复表。

以下语法将表恢复到指定的SCN:FLASHBACK TABLE table_name TO SCN scn_value;在使用Flashback Table时,需要注意以下几点:1. 您需要具有FLASHBACK权限才能使用Flashback Table。

2. 恢复表数据将覆盖当前表数据。

如果您在恢复之前未备份表数据,则无法撤消。

3. Flashback Table仅适用于表级别的恢复,无法恢复单个行或单个列。

4. 如果表已被TRUNCATE或DROP,则无法使用Flashback Table 来恢复数据。

总之,Flashback Table是一种快速和方便的恢复表数据的方法,但在使用它之前,请确保您了解其工作原理和限制。

oracle 数据库闪回查询语句

oracle 数据库闪回查询语句

Oracle数据库提供了闪回查询(Flashback Query)的功能,它允许你查询表在过去某个时间点的数据。

这个功能对于回溯历史数据或者查找误操作引起的数据变更非常有用。

以下是一些 Oracle 数据库中的闪回查询语句的示例:
1. 查询过去某个时间点的数据:
上述语句中,your_table是表的名称,TIMESTAMP后面的字符串表示你希望查询的具体时间点。

2. 查询过去某个 SCN(系统更改号)的数据:
这里的1234567是你希望查询的 SCN 号。

3. 查询在过去一定时间段内的数据变化:
上述语句中,VERSIONS BETWEEN后面的两个时间戳表示你希望查询的时间段内的数据版本。

4. 使用 AS OF SCN 语法查看历史数据:
这个语句允许你在历史版本中进行条件过滤。

请注意,使用闪回查询功能需要相应的权限,而且 Oracle 数据库的
UNDO_RETENTION参数设置也可能对你能够查询的历史时间范围产生影响。

确保在使用这些功能时了解相关的安全和配置考虑。

oracle回退delete语句

oracle回退delete语句

一、介绍在数据库管理系统中,delete语句用于删除表中的数据记录。

然而,有时候用户可能会错误地执行delete语句,导致删除了重要的数据。

在这种情况下,需要进行回退操作来恢复被误删除的数据记录。

二、oracle回退delete语句的方法1. 使用flashback技术Oracle数据库提供了flashback技术,可以通过回退操作来恢复被删除的数据记录。

使用flashback技术需要先确定数据库中是否启用了flashback功能,如果启用了,则可以使用flashback查询被删除的数据记录,然后通过flashback操作将数据记录回退至删除前的状态。

2. 使用备份和恢复如果数据库中没有启用flashback功能,可以通过数据库备份和恢复来回退delete语句。

首先需要找到数据库中删除数据之前的备份,然后进行数据恢复操作,将备份中的数据恢复至数据库中,从而实现回退操作。

3. 使用日志文件Oracle数据库中的日志文件记录了数据库中的所有操作,包括delete 语句的执行情况。

通过查询日志文件,可以找到被删除的数据记录,然后使用日志文件中的信息进行数据恢复操作,将数据记录回退至删除前的状态。

三、注意事项在进行回退delete语句的操作时,需要注意以下几点:1. 数据库备份的重要性及时做好数据库的备份工作非常重要,可以在意外删除数据时提供及时的恢复操作。

2. 谨慎执行delete语句在执行delete语句时,务必要谨慎操作,确保不会误删除重要数据记录。

3. 使用flashback技术需谨慎虽然flashback技术可以实现数据回退操作,但也需要谨慎操作,以免对数据库产生不必要的影响。

四、结论在数据库管理中,回退delete语句是一项非常重要的操作,可以帮助恢复误删除的数据记录,保证数据库的完整性和稳定性。

在日常的数据库管理工作中,需要时刻关注数据库的备份情况,谨慎执行delete 语句,并掌握回退delete语句的操作方法,以保障数据库的安全性和稳定性。

Oracle闪回truncate删除的表中数据

Oracle闪回truncate删除的表中数据

Oracle 闪回truncate 删除的表中数据 说明:数据库默认闪回时间为一天说明:数据库默认闪回时间为一天【1】查询恢复设置时间】查询恢复设置时间 SQL> show parameter flashback  flashback 功能默认为功能默认为1440分钟,也就一天时间分钟,也就一天时间【2】查看数据库闪回状态是否可用】查看数据库闪回状态是否可用 SQL> select flashback_on from v$database;  FLASHBACK_ON -----------  NO flashback_on 为NO,也就是没有开flashback 功能,当truncate 删除数据时,无法使用flashback 【3】设置flashback_on 为开启状态,要求数据库必须在mount 状态下打开状态下打开 SQL> shutdown immediate;  数据库已经关闭。

数据库已经关闭。

已经卸载数据库。

已经卸载数据库。

ORACLE 例程已经关闭。

例程已经关闭。

SQL> startup mount  ORACLE 例程已经启动。

例程已经启动。

Total System Global Area 272629760 bytes  Fixed Size 1248476 bytes  Variable Size 109052708 bytes  Database Buffers 155189248 bytes  Redo Buffers 7139328 bytes  数据库装载完毕。

数据库装载完毕。

SQL> alter database flashback on;  数据库已更改。

数据库已更改。

说明:如果数据库为非归档模块,会提示“必须启用介质恢复功能” 解决方法:1)SQL> shutdown immediate;  2)SQL> startup mount;  3)SQL> alter database archivelog; 【4】truncate 删除表中数据删除表中数据 SQL> truncate table jg_rk;  表被截断。

oracle中闪回语法

oracle中闪回语法

在Oracle数据库中,闪回(Flashback)是一种用于恢复数据库到特定时间点的功能。

它允许您撤销数据库更改,并返回到过去的状态。

通过使用闪回语法,您可以轻松地恢复丢失的数据或解决数据不一致问题。

闪回语法的基本格式如下:```scssFLASHBACK table_name TO TIMESTAMP;```其中,`table_name`是要执行闪回操作的表名,`TIMESTAMP`是要返回到的时间戳。

时间戳可以是日期时间值,也可以是系统保留的关键字,如`SYSDATE-1`表示返回到一分钟前的时间状态。

以下是使用闪回语法的一些常见场景和用法:1. 恢复丢失的数据:如果您不小心删除了某个表中的数据,可以使用闪回语法将其恢复到删除之前的状态。

例如:```sqlFLASHBACK table_name TO SYSDATE;```这将返回到表被删除之前的时间状态。

2. 解决数据不一致问题:如果您发现某个表中的数据不一致,可以使用闪回语法将其恢复到一致的状态。

例如,如果您发现某个事务导致数据发生了错误更改,可以使用闪回语法将表返回到事务开始之前的状态。

3. 历史数据查询:如果您需要查询历史数据,可以使用闪回表(Flashback Table)功能。

通过将表设置为闪回表,您可以查询过去的时间戳数据,而无需创建额外的历史表。

4. 数据备份恢复:如果您需要备份数据库并恢复到过去的时间点,可以使用闪回数据库(Flashback Database)功能。

这将整个数据库视为一个单独的逻辑对象,并提供对过去时间和数据点的访问权限。

需要注意的是,使用闪回语法需要满足一些前提条件,例如表必须具有可回滚的物化视图或物化视图刷新日志(MMMF)的约束。

此外,某些表类型(如分区表)可能需要额外的设置才能使用闪回语法。

总之,闪回语法是Oracle数据库中一个非常有用的功能,它可以帮助您轻松地恢复丢失的数据、解决数据不一致问题以及进行历史数据查询。

oracle数据库执行闪回恢复数据

oracle数据库执行闪回恢复数据
启动flashback database选项。 SQL>shutdown immediate; SQL>startup mount; SQL>alter database flashback on; --可以看到,flashback还必须要归档的保证 • 应该先执行
• archive log list; alter database archivelog;
shutdown immediate • startup mount;
alter database open; alter database open resetlogs; • desc sjh0
闪回数据库: 节省恢复时间
Incomplete Recovery Generate logs
Restore files
• purge table t_user; --从回收站清除。
• show recyclebin; • drop table t_user purge; --彻底删除一个
表,不让进入回收站。 • show recyclebin; --没有对象。
闪回Drop: 注意事项
– 闪回Drop表在以下情形下失效:
Repaired database
Backup
User error
Flashback Database User error
Flashback logs
Apply logs forward
Repaired database
Backup
Apply Flashback logs backward
闪回数据库: 注意事项
闪回表
– 使用闪回表操作, 可以将表恢复到某个时间而不 需要备份资料.

oracle 闪回实验

oracle 闪回实验

Oracle 闪回探秘----数据闪回实验文档falshback----------------------------------------A 闪回查询可到行级create table t (id number, name varchar2(30));insert into t values (1, 'yangtingkun');DELETE FROM t;COMMIT;--功能:取得误操作DML(Delete、Update、Insert)前某一时间点数据库的映像视图,恢复表至指定历史时间的数据。

--原理:直接利用回滚段中的旧数据构造某一刻的一致性数据版本(历史快照)。

完全依赖于自动回滚段管理(AUM),使用闪回的一个前提是表不能进行DDL 操作。

--不但不能对DDL 操作进行回闪,而且,也无法闪回到DDL 操作以前的数据了。

--时间限制:可以闪回的最大时间和回滚空间有关。

如果使用了自动管理回滚表空间,那么UNDO_RETENTION 给出了闪回支持的最小时间。

--系统默认为最小时间设置为900s(show parameter undo_retention;)也就是说,FLASHBACK 最少可以支持UNDO_RETENTION(AUM 自动撤销管理)--给出的时间,如果系统比较闲,则可以闪回更长的时间。

--闪回的方法select sysdate 时间, timestamp_to_scn(sysdate) SCN from dual; ---获取当前时间和系统的SCN号:2012-3-10 21:17:12 3773777 --367 1291 2012-3-10 21:23:19 3773906 --127 451 2012-3-10 21:25:26 3773951 ---134 571 2012-3-10 21:27:40 3774008insert into t select * from t AS OF timestampto_timestamp ('2012-02-29 20:02:22','yyyy-mm-dd hh24:mi:ss') ;--闪回查询历史快照数据并恢复历史数据。

oracle闪回原理

oracle闪回原理

oracle闪回原理Oracle数据库的闪回技术是一种用于快速恢复数据库到某个特定的时间点的技术。

它可以在意外的数据修改、误删除或其他用户错误操作后,快速恢复数据库到以前的状态。

Oracle的闪回技术主要基于redo log和数据文件的架构。

当数据库执行修改操作时,相关的信息会被写入redo log中,而实际的数据则会被写入数据文件。

闪回技术利用了这些日志信息来进行恢复。

具体而言,Oracle 闪回技术通过以下几个步骤实现数据恢复:1. 闪回查询(Flashback Query):利用数据库中的undo表空间和闪回日志文件,可以通过语句查询数据库中某个时间点的数据。

用户可以使用SELECT命令,指定某个时间点进行查询,而不需要进行真正的数据恢复操作。

2. 闪回版本查询(Flashback Version Query):除了对整个数据库进行闪回查询外,还可以对指定表或视图的特定行或列进行查询。

通过查询某个时间点的历史版本,可以找回误删除或修改的数据。

3. 闪回表(Flashback Table):如果需要将整个表恢复到某个时间点,可以使用闪回表功能。

这个功能会对整个表进行快速恢复,而不需要使用传统的恢复方法。

4. 闪回数据库(Flashback Database):对于更大范围的数据恢复,可以使用闪回数据库功能。

这个功能会将整个数据库恢复到某个时间点,并且会自动处理所有相关的数据文件和日志文件。

需要注意的是,闪回技术对于一些操作是有限制的,比如数据文件的删除、表空间的重命名等。

同时,使用闪回技术恢复的数据必须还在系统中,不能超过undo表空间的保留时间。

因此,在实际使用闪回技术前,需要做好相关的配置和规划。

Oracle的闪回特性

Oracle的闪回特性

Oracle的闪回特性在Oracle 9i之前的版本中,如果用户因为误操作delete或update了数据并最终提交,为了恢复这些用户错误,我们必须通过逻辑备份或者物理备份进行恢复来纠正这些错误,这种方法是极其复杂和低效的。

为了提高数据库的可用性,简化用户的数据恢复,从Oracle 9i开始,Oracle将闪回flashback引入到数据库中,闪回功能类似播放机中的回退功能,通过回退,我们可以找会正确的数据,纠正犯下的错误。

从Oracle 9i到Oracle 10g以及Oracle 11g,Oracle在不停地增加和强化闪回功能,在这一章中,我们将全面介绍Oracle的闪回特性。

1.Oracle 9i的闪回查询特性从Oracle 9i开始Oracle 引入了闪回查询(Flashback Query)的特性,通过闪回查询我们可以按照时间戳或SCN来向前查询,获取修改之前的数据镜像,再通过insert等操作就可以恢复数据。

闪回查询依赖于回滚段中存储的数据前镜像,在Oracle 9i以前的版本中,通常只要事务提交后,前镜像数据就可以被覆盖,空间可以重用;在Oracle 9i中Oracle引入了自动回滚段管理(Automatic Undo Management,简称AUM)的新特性,在AUM模式下,我们可以通过调整undo_retention参数来设置数据库UNDO信息的保留时间,只要前镜像没有被覆盖,那么闪回就是可能的,但是需要注意的是,UNDO信息的保留还同UNDO表空间中的空间有关,如果空间紧张,为了满足事务的需要,非会动的前镜像信息是可以被覆盖的。

可以使用select 语句的as of子句来进行闪回查询,具体语法如下:As of scn/timestamp expr通过关键词as of 可以对表、视图、物化视图进行Flashback Query,可以指定SCN或者timestamp,其中timestamp是9i中引入的新的数据类型,精确到毫秒的时间单位。

Oracle闪回查询

Oracle闪回查询

Oracle闪回查询闪回查询(Flashback Query)包括闪回版本查询(Flashback Versions Query)、闪回事务查询(Flashback Transaction Query)和闪回表(Flashback Table)。

回版本查询(Flashback Versions Query)可以查询某条记录在某段时间内的所有版本,并且能够显示一个历史记录,这个历史记录包括对指定记录的操作、进行操作的时间、执行操作的用户以及发生变化的事务标识。

闪回事务查询(Flashback Transaction Query)能够自动化修复过程,一旦使用闪回版本查询(Flashback Versions Query)标识出导致问题的事务,Oracle就可以构造倒退这些变化的SQL。

与Flashback Database不同,Flashback Transaction不好丢失数据,没有出错的工作仍然有效,并且数据库停留在当前的状态。

闪回表(Flashback Table)是针对某个表的出错工作已被提交后,我们可以指定ORACLE倒退从指定的某个时间点以来该表的所进行的所有变化,同时其他表停留在当前的状态。

闪回查询(Flashback Query)操作中,数据库保持打开状态,并且所有对象(包括闪回所涉及的对象)都可用。

事务的完整性与约束会被实施。

闪回查询(Flashback Query)操作中能闪回到哪个时间点依赖于撤销数据。

在 Oracle9i Database 中,我们看到它推出了以闪回查询形式表示的“时间机器”。

该特性允许 DBA 看到特定时间的列值,只要在还原段中提供该数据块此前镜像的拷贝即可。

但是,闪回查询只提供某时刻数据的固定快照,而不是在两个时间点之间被更改数据的运行状态表示。

某些应用程序,如涉及到外币管理的应用程序,可能需要了解一段时期内数值数据的变化,而不仅仅是两个时间点的数值。

由于闪回版本查询特性,Oracle database 10g 能够更方便高效地执行该任务。

oracle 数据库闪回查询语句

oracle 数据库闪回查询语句

oracle 数据库闪回查询语句摘要:1.闪回查询概述2.闪回查询的类型3.闪回查询的语法与示例4.闪回查询的应用场景5.总结正文:1.闪回查询概述Oracle数据库闪回查询语句是Oracle数据库提供的一种非易失性内存(NVM)技术,它允许用户在不影响现有事务的情况下,查询过去的数据状态。

这种技术可以用来查询在某个时间点之前的表数据,或者查询在某个时间点之前已经删除的记录。

闪回查询能够提高数据恢复的速度和准确性,同时减少数据恢复过程中的风险。

2.闪回查询的类型Oracle数据库闪回查询语句主要有以下两种类型:a.闪回查询(Flashback Query)闪回查询用于查询过去的数据状态,可以查询某个时间点之前的表数据,或者查询在某个时间点之前已经删除的记录。

b.闪回事务查询(Flashback Transaction Query)闪回事务查询用于查询在某个事务开始之前或结束之后的表数据。

这种查询可以用来查看事务对表数据的影响,以及回滚事务。

3.闪回查询的语法与示例以下是闪回查询的语法:```SELECT column1, column2, ...FROM table_name AS OF TIMESTAMP TO_TIMESTAMP("2022-01-01 12:00:00", "YYYY-MM-DD HH24:MI:SS")WHERE condition;```示例:```SELECT * FROM employees AS OF TIMESTAMPTO_TIMESTAMP("2021-12-31 11:00:00", "YYYY-MM-DD HH24:MI:SS") WHERE department_id = 100;```该查询将返回在2021年12月31日11:00:00之前的员工记录,且部门ID为100的员工信息。

9i、10g使用闪回恢复数据方式及命令

9i、10g使用闪回恢复数据方式及命令

用Oracle闪回功能恢复偶然丢失的数据(1)引言人为的错误是数据库系统失败的重要原因之一,根据调查约40%的系统问题是操作失误或者用户错误引起的,这些人为的错误又特别难以避免。

传统上当发生数据丢失、数据错误问题时,解决的主要方法就是数据的导入/导出、备份/恢复技术。

这些方法都需要发生数据错误之前有一个正确的备份,才能进行恢复。

恢复时不取决于错误程度,而只取决于备份/恢复策略。

这种方法既耗时又使数据库系统不能提供服务,对于一些用户偶然地删除数据这类小错误来说显得有些"大材小用"。

那么如何来恢复这种偶然的错误操作造成的数据丢失呢?从Oracle 9i开始提供了基于回滚段的闪回查询(Flashback Query)功能,可用于恢复错误的DML操作。

在Oracle 10g中对闪回查询做了较大改进,不再局限于闪回查询,还可用于恢复错误的DDL(Drop)操作、闪回表、闪回数据库等。

Oracle 9i的闪回查询概述1、Oracle 9i的闪回查询功能在Oracle 9i之前,如果用户错误操作数据后,除了不完全恢复外,没有好的解决办法。

Oracle 9i中提供闪回查询,由一个新的包DBMS_FLASH来实现。

用户使用闪回查询可以及时取得误操作DML(Delete、Update、Insert)前某一时间点数据库的映像视图,用户可以利用系统时间或系统改变号(SCN:System Change Number)来指定这个只读视图,并可以针对错误进行相应的恢复措施。

闪回查询功能完全依赖于自动回滚段管理(AUM),对于Drop等误操作不能恢复。

闪回特性可应用在以下方面:(1)自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复。

(2)恢复Email和声音Email:当用户意外删除了Email或者声音信息时,可以通过移回到固定时间点来恢复删除。

oracle数据丢失恢复数据方法

oracle数据丢失恢复数据方法

oracle数据丢失恢复数据方法在使用Oracle数据库过程中,数据丢失是一种常见的问题。

当数据库中的数据丢失时,我们需要及时采取措施来进行数据恢复,以避免数据的长期丢失。

本文将介绍一些常用的Oracle数据丢失恢复方法,帮助我们有效地处理这个问题。

1. 数据库备份与恢复数据库备份是一种常见的防范措施,它可以帮助我们在数据丢失后快速恢复数据库。

在Oracle中,我们可以使用RMAN(Recovery Manager)工具来实现数据库备份和恢复。

RMAN可以备份整个数据库或者特定的表空间、数据文件等,同时也支持增量备份,大大减少了备份所需的时间和空间。

当数据库发生数据丢失时,我们可以使用RMAN来恢复备份的数据库文件,确保数据的完整性。

2. 闪回技术Oracle提供了闪回技术,可以帮助我们恢复数据库到某个历史时间点的状态。

通过闪回技术,我们可以将数据库中的数据、表结构等回滚到特定的时间点,从而实现数据的恢复。

闪回技术相比于传统的数据恢复方法,具有更高的效率和更少的风险。

我们可以使用闪回查询(FLASHBACK QUERY)来查看历史数据,使用闪回表(FLASHBACK TABLE)来恢复特定表的状态,使用闪回数据库(FLASHBACK DATABASE)来恢复整个数据库。

3. 日志文件恢复Oracle数据库在运行过程中会生成大量的日志文件,这些日志文件记录了数据库的操作、变更等信息。

当数据库发生数据丢失时,我们可以通过日志文件的恢复来还原数据。

在Oracle数据库中,我们可以使用归档日志文件(Archive Log)或在线重做日志文件(Online Redo Log)来进行数据恢复。

归档日志文件可以将数据库中的所有变更操作记录下来,当数据丢失时,我们可以将归档日志文件应用到数据库中,恢复数据的完整性。

同时,我们也可以使用在线重做日志文件来进行数据恢复,将重做日志文件中的操作应用到数据库中。

4. 数据库导入导出数据库导入导出是一种常见的数据恢复方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.获取数据删除前的一个时间点或scn
SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;
TIME SCN
1. 不能Falshback到5天以前的数据。
2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。
3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。
4. 对drop,truncate等不记录回滚的操作,不能恢复。
注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。
Falshback query查询的局限:
SQL> select * from t as of scn 1060174;
3. 将查询到的数据,新增到表中。也可用更直接的方法,如:
SQL>create table tab_test as select * from t of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
Commit complete
4.在查看t表,此时t表中数据以删除
SQL> select * from t;
ID
----------
5.查看t表中scn为1061279(或时间点为2010-06-29 23:23:33)时的数据
SQL> select * from t as of scn 1061279;
insert into t values(4);
insert into t values(5);
1.查看t表中的原始数据
SQL> select * from t;
ID
---------
1
2
3
4
5
5 rows inserted
SQL> commit;
Commit complete
7.确认t表数据的还原情况
SQL> select * from t;
ID
----------
1
2
3
4
5
Oracle闪回查询恢复delete删除数据
Flashback query(闪回查询)原理
Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。
Flashback query(闪回查询)前提:
SQL> show parameter undo;
5. 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:
SQL>grant execute on dbms_flashback to scott;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retentispace string UNDOTBS1
其中undo_management = auto,设置自动undo管理(AUM),该参数默认设置为:auto;
ID
----------
1
2
3
4
5
6.确认要恢复后,将t表中的数据还原到scn为1061279(或时间点为2010-06-29 23:23:33)时的数据,并提交事物
SQL> insert into t select * from t as of scn 1061279;
1. 获取数据删除前的一个时间点或scn,如下:
SQL>select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;
Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:
SQL> alter system set undo_retention = 3600;
System altered
闪回实现方式
------------------- ----------------------------------------
2010-06-29 23:23:33 1061279
3.删除t表中的数据,并提交事物
SQL> delete from t;
5 rows deleted
SQL> commit;
TIME SCN
------------------- ----------------------------------------
2010-06-29 23:03:14 1060499
2. 查询该时间点(或scn)的数据,如下:
SQL> select * from t as of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
SQL>insert into tab_test select * from1060174;
示例:
Create table t(id number);
insertinto t values(1);
insert into t values(2);
insert into t values(3);
相关文档
最新文档