null第14章 闪回技术第14章 闪回技术本章
本章内容闪回技术概述
闪回查询技术
闪回查询
闪回版本查询
闪回事务查询
闪回错误操作技术
闪回
闪回删除
闪回数据库
本章要求本章要求了解闪回技术
掌握闪回查询操作
掌握闪回版本查询操作
掌握闪回事务查询操作
掌握闪回表操作
掌握闪回删除操作
掌握闪回数据库操作
14.1 闪回技术概述14.1 闪回技术概述闪回基本概念
闪回技术分类
14.1.1 基本概念14.1.1 基本概念Oracle 9i实现了基于回滚段的闪回查询(Flashback Query)技术,即从回滚段中读取一定时间内对表进行操作的数据,恢复错误的DML操作。
在Oracle 10g中,除提高了闪回查询功能,实现了闪回版本查询、闪回事务查询外,还实现了闪回表、闪回删除和闪回数据库的功能。
闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。
采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。 14.1.2 闪回技术分类14.1.2 闪回技术分类闪回查询(Flashback Query):查询过去某个时间点或某个SCN值时表中的数据信息;
闪回版本查询(Flashback Version Query):查询过去某个时间段或某个SCN段内表中数据的变化情况;
闪回事务查询(Flashback Transaction Query):查看某个事务或所有事务在过去一段时间对数据进行的修改;
闪回表(Flashback Table):将表恢复到过去的某个时间点或某个SCN值时的状态;
闪回删除(Flashback Drop):将已经删除的表及其关联对象恢复到删除前的状态;
闪回数据库(Flashback Database):将数据库恢复到过去某个时间点或某个SCN值时的状态。null注意
闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的;
闪回删除、闪回数据库是基于Oracle 10g中的回收站(Recycle Bin)和闪回恢复区(Flash Recovery Area)特性实现的。
为了使用数据库的闪回技术,必须启用撤销表空间自动管理回滚信息。
如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。14.2 闪回查询技术14.2 闪回查询技术概述
闪回查询
闪回版本查询
闪回事务查询
null闪回查询的机制
闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。
为了使用闪回查询功能,需要启动数据库撤销表空间来管理回滚信息。
与撤销表空间相关的参数包括 :
UNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO,则采用撤销表空间自动管理回滚信息;
UNDO_TABLESPACE:指定用于回滚信息自动管理的撤销表空间名;
UNDO_RETENTIOIN:指定回滚信息的最长保留时间。 14.2.1 闪回查询14.2.1 闪回查询闪回查询可以返回过去某个时间点已经提交事务操作的结果。
基本语法:
SELECT column_name[,…]
FROM table_name
[AS OF SCN|TIMESTAMP expression]
[WHERE condition]
基于AS OF TIMESTAMP的闪回查询
基于AS OF SCN的闪回查询
(1)基于AS OF TIMESTAMP的闪回查询
(1)基于AS OF TIMESTAMP的闪回查询SQL>ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-
DD HH24:MI:SS';
SQL>SET TIME ON
09:12:50 SQL>SELECT empno,sal FROM scott.emp WHERE
empno=7844;
EMPNO SAL
--------------
7844 1500
09:13:00 SQL>UPDATE scott.emp SET sal=2000 WHERE
empno=7844;
09:13:07 SQL>COMMIT;
09:13:12 SQL>UPDATE scott.emp SET sal=2500 WHERE
empno=7844;null09:14:28 SQL>UPDATE scott.emp SET sal=3000 WHERE
empno=7844;
09:14:41 SQL>COMMIT;
09:14:50 SQL>UPDATE scott.emp SET sal=3500 WHERE
empno=7844;
09:15:43 SQL>COMMIT;
查询7844号员工的当前工资值。
09:15:48 SQL>SELECT empno,sal FROM scott.emp
WHERE empno=7844;
EMPNO SAL
-----------------
7844 3500 null查询7844号员工前一个小时的工资值。
09:16:00 SQL>SELECT empno,sal FROM scott.emp AS
OF TIMESTAMP SYSDATE-1/24 WHERE empno=7844;
EMPNO SAL
----------------
7844 1500
查询第一个事务提交,第二个事务还没有提交时7844号员工的工资。
09:16:22 SQL>SELECT empno,sal FROM scott.emp
AS OF TIMESTAMP TO_TIMESTAMP('2009-3-23
09:14:41','YYYY-MM-DD HH24:MI:SS')
WHERE empno=7844;
EMPNO SAL
-----------------
7844 2000 null查询第二个事务提交,第三个事务还没有提交时7844号员工的工资
09:17:47 SQL>SELECT empno,sal FROM scott.emp AS
OF TIMESTAMP TO_TIMESTAMP('2009-3-23
09:15:43','YYYY-MM-DD HH24:MI:SS')
WHERE empno=7844;
EMPNO SAL
-----------------
7844 3000 null如果需要,可以将数据恢复到过去某个时刻的状态。
09:25:23 SQL>UPDATE scott.emp SET sal= (
SELECT sal FROM scott.emp AS OF TIMESTAMP
TO_TIMESTAMP('2009-3-23 9:15:43','YYYY-MM-DD
HH24:MI:SS') WHERE empno=7844
)WHERE empno=7844;
09:25:55 SQL>COMMIT;
09:26:13 SQL>SELECT empno,sal FROM scott.emp
WHERE empno=7844;
EMPNO SAL
----------------
7844 300014.2.2 闪回版本查询14.2.2 闪回版本查询09:27:58 SQL>SELECT current_scn FROM v$database;
CURRENT_SCN
-----------
617244
09:27:58 SQL>SELECT empno,sal FROM scott.emp WHERE
empno=7844;
EMPNO SAL
----------------
7844 3000
09:28:21 SQL>UPDATE scott.emp SET sal=5000 WHERE
empno=7844;
09:29:23 SQL>COMMIT;
09:29:31 SQL>UPDATE scott.emp SET sal=5500 WHERE
empno=7844; null09:29:55 SQL>COMMIT;
09:30:14 SQL>SELECT current_scn FROM v$database;
CURRENT_SCN
-----------
617317
09:30:37 SQL>SELECT empno,sal FROM scott.emp AS OF
SCN 617244 WHERE empno=7844;
EMPNO SAL
---------------
7844 3000 null注意
事实上,Oracle 在内部都是使用SCN的,即使指定的是AS OF TIMESTAMP,Oracle 也会将其转换成SCN。系统时间与SCN之间的对应关系可以通过查询SYS模式下的SMON_SCN_TIME表获得。
SELECT scn,
TO_CHAR(time_dp,'YYYY-MM-
DD HH24:MI:SS') time_dp
FROM sys.smon_scn_time;null利用闪回版本查询,可以查看一行
在一段时间内的变化情况,即一行记录的多个提交的版本信息,从而可以实现数据的行级恢复。
基本语法
SELECT column_name[,…] FROM table_name
[VERSIONS BETWEEN SCN|TIMESTAMP
MINVALUE|expression AND MAXVALUE|expression]
[AS OF SCN|TIMESTAMP expression]
WHERE condition
参数说明
VERSIONS BETWEEN:用于指定闪回版本查询时查询的时间段或SCN段;
AS OF:用于指定闪回查询时查询的时间点或SCN。null在闪回版本查询的目标列中,可以使用下列几个伪列返回版本信息。
VERSIONS_STARTTIME:基于时间的版本有效范围的下界;
VERSIONS_STARTSCN:基于SCN的版本有效范围的下界;
VERSIONS_ENDTIME:基于时间的版本有效范围的上界;
VERSIONS_ENDSCN:基于SCN的版本有效范围的上界;
VERSIONS_XID:操作的事务ID;
VERSIONS_OPERATION:执行操作的类型,I 表示INSERT,D 表示DELETE,U 表示UPDATE。nullSQL>UPDATE scott.emp SET sal=6000 WHERE empno=7844;
SQL>UPDATE scott.emp SET sal=6500 WHERE empno=7844;
SQL>UPDATE scott.emp SET sal=7000 WHERE empno=7844;
SQL>COMMIT;
SQL>UPDATE scott.emp SET sal=7500 WHERE empno=7844;
SQL>COMMIT;
SQL>SET LINESIZE 600
SQL>COL STARTTIME FORMAT A30
SQL>COL ENDTIME FORMAT A30
SQL>COL OPERATION FORMAT A10 null基于VERSIONS BETWEEN TIMESTAMP的闪回版本查询。
SQL>SELECT versions_xid XID,
versions_starttime
STARTTIME,versions_endtime ENDTIME,
versions_operation OPERATION, sal
FROM scott.emp
VERSIONS BETWEEN TIMESTAMP MINVALUE
AND MAXVALUE
WHERE empno=7844
ORDER BY STARTTIME; null基于VERSIONS BETWEEN SCN的闪回版本查询。
SQL>SELECT versions_xid XID,
versions_startscn STARTSCN,
versions_endscn ENDSCN,
versions_operation OPERATION, sal
FROM scott.emp
VERSIONS BETWEEN SCN MINVALUE AND
MAXVALUE
WHERE empno=7844
ORDER BY STARTSCN;null查询当前7844号员工的工资。
SQL>SELECT empno,sal FROM scott.emp WHERE
empno=7844;
EMPNO SAL
----------------
7844 7500 null如果需要,可以将数据恢复到过去某个时刻的状态。
SQL>UPDATE scott.emp SET sal=(
SELECT sal FROM scott.emp AS OF TIMESTAMP
TO_TIMESTAMP('2009-3-23 10:25:03','YYYY-
MM-DD HH24:MI:SS') WHERE empno=7844
) WHERE empno=7844;
SQL>COMMIT;
SQL>SELECT empno,sal FROM scott.emp WHERE
empno=7844;
EMPNO SAL
-----------------
7844 6000 null注意
在进行闪回版本查询时,可以同时使用VERSIONS 短语和AS OF 短语。AS OF短语决定了进行查询的时间点或SCN,VERSIONS 短语决定了可见的行的版本信息。对于在VERSIONS BETWEEN下界之前开始的事务,或在AS OF指定的时间或SCN之后完成的事务,系统返回的版本信息为NULL。null将VERSIONS BWTWEEN TIMESTAMP与AS OF TIMESTAMP配合使用。
SQL>SELECT versions_xid XID,
versions_starttime STARTTIME,
versions_endtime ENDTIME,
versions_operation OPERATION, sal
FROM scott.emp
VERSIONS BETWEEN TIMESTAMP MINVALUE
AND MAXVALUE
AS OF TIMESTAMP TO_TIMESTAMP('2009-3-
23 10:24:40','YYYY-MM-DD HH24:MI:SS')
WHERE empno=7844
ORDER BY STARTTIME; null将VERSIONS BWTWEEN SCN与AS OF SCN配合使用
SQL>SELECT versions_xid XID,
versions_startscn STARTSCN,
versions_endscn ENDSCN,
versions_operation OPERATION, sal
FROM scott.emp
VERSIONS BETWEEN SCN MINVALUE AND
MAXVALUE
AS OF SCN 620045
WHERE empno=7844
ORDER BY STARTSCN;14.2.3 闪回事务查询14.2.3 闪回事务查询闪回事务查询提供了一种查看事务级数据库变化的方法。
可以从FLASHBACK_TRANSATION_QUERY中查看回滚段中存储的事务信息。
例如:
SQL>SELECT operation,undo_sql,table_name
FROM FLASHBACK_TRANSACTION_QUERY;
SQL>SELECT operation,undo_sql,table_name
FROM FLASHBACK_TRANSACTION_QUERY
WHERE xid=HEXTORAW('04001E002E010000'); null通常,将闪回事务查询与闪回版本查询相结合,先利用闪回版本查询获取事务ID及事务操作结果,然后利用事务ID查询事务的详细操作信息。
SQL>SELECT versions_xid,sal
FROM scott.emp
VERSIONS BETWEEN SCN MINVALUE AND
MAXVALUE
WHERE empno=7844;
SQL>SELECT operation,undo_sql
FROM FLASHBACK_TRANSACTION_QUERY
WHERE xid=HEXTORAW('04001E002E010000');14.3 闪回错误操作技术14.3 闪回错误操作技术闪回表
闪回删除
闪回数据库
14.3.1 闪回表14.3.1 闪回表概述
闪回表是将表恢复到过去的某个时间点的状态,为DBA提供了一种在线、快速、便捷地恢复对表进行的修改、删除、插入等错误的操作。
与闪回查询不同,闪回查询只是得到表在过去某个时间点上的快照,并不改变表的当前状态,而闪回表则是将表及附属对象一起恢复到以前的某个时间点。
利用闪回表技术恢复表中数据的过程,实际上是对表进行DML操作的过程。Oracle自动维护与表相关联的索引、触发器、约束等,不需要DBA参与。null为了使用数据库闪回表功能,必须满足下列条件:
用户具有FLASHBACK ANY TABLE系统权限,或者具有所操作表的FLASHBACK对象权限;
用户具有所操作表的SELECT,INSERT,DELETE,ALTER对象权限;
数据库采用撤销表空间进行回滚信息的自动管理,合理设置UNDO_RETENTIOIN参数值,保证指定的时间点或SCN对应信息保留在撤销表空间中;
启动被操作表的ROW MOVEMENT特性,可以采用下列方式进行:
ALTER TABLE table ENABLE ROW MOVEMENT;null闪回表操作的基本语法为
FLASHBACK TABLE [schema.]table TO
SCN|TIMESTAMP expression
[ENABLE|DISABLE TRIGGERS]
参数说明
SCN:将表恢复到指定的SCN时状态;
TIMESTAMP:将表恢复到指定的时间点;
ENABLE|DIABLE TRIGGER:在恢复表中数据的过程中,表上的触发器是激活还是禁用(默认为禁用)。
注意
SYS用户或以AS SYSDBA身份登录的用户不能执行闪回表操作。nullSQL>CONN scott/tiger
SQL>SET TIME ON
09:14:01 SQL>CREATE TABLE test(
ID NUMBER PRIMARY KEY , name CHAR(20));
09:14:12 SQL>INSERT INTO test VALUES(1,'ZHANG');
09:14:24 SQL>COMMIT;
09:14:32 SQL>INSERT INTO test VALUES(2,'ZHAO');
09:14:39 SQL>COMMIT;
09:14:43 SQL>INSERT INTO test VALUES(3,'WANG');
09:14:49 SQL>COMMIT;
null09:16:31 SQL>SELECT current_scn FROM v$database;
CURRENT_SCN
-----------
675371
09:16:50 SQL>UPDATE test SET name='LIU' WHERE id=1;
09:17:02 SQL>COMMIT;
09:17:05 SQL>SELECT * FROM test;
ID NAME
-----------
1 LIU
2 ZHAO
3 WANG null09:17:13 SQL>DELETE FROM test WHERE id=3;
09:17:51 SQL>COMMIT;
09:18:02 SQL>SELECT * FROM test;
ID NAME
-----------
1 LIU
2 ZHAO null启动test表的ROW MOVEMENT特性
09:19:33 SQL>ALTER TABLE test ENABLE ROW
MOVEMENT;
将test表恢复到2009-3-24 09:17:51时刻的状态
09:20:06 SQL>FLASHBACK TABLE test TO TIMESTAMP
TO_TIMESTAMP('2009-3-24 09:17:51',
'YYYY-MM-DD HH24:MI:SS');
09:20:18 SQL>SELECT * FROM test;
ID NAME
-----------
1 LIU
2 ZHAO
3 WANG null将test表恢复到SCN为675371的状态
09:20:25 SQL>FLASHBACK TABLE test TO SCN
675371;
09:20:50 SQL>SELECT * FROM test;
ID NAME
-----------
1 ZHANG
2 ZHAO
3 WANG 14.3.2 闪回删除14.3.2 闪回删除闪回删除概述
回收站管理
闪回删除操作 (1)闪回删除概述 (1)闪回删除概述 闪回删除可恢复使用DROP TABLE语句删除的表,是一种对意外删除的表的恢复机制。
闪回删除功能的实现主要是通过Oracle 10g数据库中的“回收站”(Recycle Bin)技术实现的。
在Oracle 10g数据库中,当执行DROP TABLE操作时,并不立即回收表及其关联对象的空间,而是将它们重命名后放入一个称为“回收站”的逻辑容器中保存,直到用户决定永久删除它们或存储该表的表空间存储空间不足时,表才真正被删除。
为了使用闪回删除技术,必须开启数据库的“回收站”。 (2)回收站管理 (2)回收站管理 启动“回收站”
要使用闪回删除功能,需要启动数据库的“回收站”,即将参数RECYCLEBIN设置为ON。在默认情况下“回收站”已启动。
SQL>SHOW PARAMETER RECYCLEBIN
SQL>ALTER SYSTEM SET RECYCLEBIN=ON;null查看“回收站”
当执行DROP TABLE操作时,表及其关联对象被命名后保存在“回收站”中,可以通过查询USER_RECYCLEBIN,DBA_RECYCLEBIN视图获得被删除的表及其关联对象信息。
SQL>DROP TABLE test;
SQL>SELECT BJECT_NAME,ORIGINAL_NAME,TYPE
FROM USER_RECYCLEBIN;
null如果在删除表时使用了PURGE短语,则表及其关联对象被直接释放,空间被回收,相关信息不会进入“回收站”中。
SQL>CREATE TABLE test_purge(
ID NUMBER PRIMARY KEY ,
name CHAR(20)
);
SQL>DROP TABLE test_purge PURGE;
SQL>SELECT BJECT_NAME,ORIGINAL_NAME,TYPE
FROM USER_RECYCLEBIN;null清除回收站
由于被删除表及其关联对象的信息保存在“回收站”中,其存储空间并没有释放,因此需要定期清空“回收站”,或清除“回收站”中没用的对象(表、索引、表空间),释放其所占的磁盘空间。
清除回收站语法为:
PURGE [TABLE table | INDEX index]|
[RECYCLEBIN | DBA_RECYCLEBIN]|
[TABLESPACE tablespace [USER user]] null参数说明
TABLE:从“回收站”中清除指定的表,并回收其磁盘空间;
INDEX:从“回收站”中清除指定的索引,并回收其磁盘空间;
RECYCLEBIN:清空用户“回收站”,并回收所有对象的磁盘空间;
DBA_RECYCLEBIN:清空整个数据库系统的“回收站”,只有具有SYSDBA权限的用户才可以使用;
TABLESPACE:清除“回收站”中指定的表空间,并回收磁盘空间;
USER:清除“回收站”中指定表空间中特定用户的对象,并回收磁盘空间。null例如:
SQL>PURGE INDEX "BIN$i+nXRT6iTp6Gb3zoP/R5Fw==$0";
SQL>PURSE TABLE TEST;
SQL>PURGE RECYCLEBIN;(3)闪回删除操作(3)闪回删除操作闪回删除的基本语法为
FLASHBACK TABLE [schema.]table TO BEFORE DROP [RENAME TO table]
注意
只有采用本地管理的、非系统表空间中的表可以使用闪回删除操作。 null示例
SQL>CREATE TABLE example(
ID NUMBER PRIMARY KEY,
NAME CHAR(20));
SQL>INSERT INTO example
VALUES(1,'BEFORE DROP');
SQL>COMMIT;
SQL>DROP TABLE example;
SQL>FLASHBACK TABLE example TO BEFORE DROP
RENAME TO new_example;
SQL>SELECT * FROM new_example;
ID NAME
--------------
1 BEFORE DROP
14.3.3 闪回数据库14.3.3 闪回数据库闪回数据库概述
闪回数据库的限制
启动闪回数据库的条件
闪回数据库操作 (1)闪回数据库概述(1)闪回数据库概述闪回数据库技术是将数据库快速恢复到过去的某个时间点或SCN值时的状态,以解决由于用户错误操作或逻辑数据损坏引起的问题。
闪回数据库操作不需要使用备份重建数据文件,而只需要应用闪回日志文件和归档日志文件。
为了使用数据库闪回技术,需要预先设置数据库的闪回恢复区和闪回日志保留时间。闪回恢复区用于保存数据库运行过程中产生的闪回日志文件,而闪回日志保留时间是指闪回恢复区中的闪回日志文件保留的时间,即数据库可以恢复到过去的最大时间。(2)闪回数据库的限制(2)闪回数据库的限制闪回数据库操作的限制:
数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复。闪回数据库只能基于当前正常运行的数据文件;
闪回数据库功能启动后,如果发生数据库控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库;
不能使用闪回数据库进行数据文件收缩操作;
不能使用闪回数据库将数据库恢复到在闪回日志中可获得最早的SCN之前的SCN,因为闪回日志文件在一定条件下被删除,而不是始终保存在闪回恢复区中。(3)启动闪回数据库的条件(3)启动闪回数据库的条件闪回数据库功能需要满足的条件:
数据库必须处于归档模式(ARCHIVELOG);
数据库设置了闪回恢复区;
数据库启用了FLASHBACK DATABASE特性。null设置数据库的归档模式
SQL> CONN SYS/TIGER AS SYSDBA
SQL> ARCHIVE LOG LIST;
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER SYSTEM ARCHIVE LOG START;
SQL> ARCHIVE LOG LIST; null设置数据库的闪回恢复区
在Oracle 10g数据库安装过程中,默认情况下已设置了数据库的闪回恢复区。
可以通过参数查询数据闪回恢复区及其空间大小。
SQL> SHOW PARAMETER DB_RECOVERY_FILEnull启动数据库FLASHBACK特性
为了使用闪回数据库,还需要启动数据库的FLASHBACK特性,生成闪回日志文件。在默认情况下,数据库的FLASHBACK特性是关闭的。
在数据库处于MOUNT状态时执行ALTER DATABAE FLASHBACK ON命令,启动数据库的FLASHBACK特性;
可以在数据库处于MOUNT状态时执行ALTER DATABAE FLASHBACK OFF命令,关闭数据库的FLASHBACK特性。
需要通过参数DB_FLASHBACK_RETENTION_TARGET设置闪回日志保留时间,该参数默认值为1 440分钟,即一天。 null示例
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT
SQL>ALTER DATABASE FLASHBACK ON;
SQL>ALTER DATABASE OPEN;
SQL>ALTER SYSTEM SET
DB_FLASHBACK_RETENTION_TARGET=2880;(4)闪回数据库操作(4)闪回数据库操作闪回数据库基本语法为
FLASHBACK [STANDBY] DATABASE [database] TO
[SCN|TIMESTAMP expression]|
[BEFORE SCN|TIMESTAMPexpression]
参数说明
STANDBY:指定执行闪回的数据库为备用数据库;
TO SCN:将数据库恢复到指定SCN的状态;
TO TIMESTAMP:将数据库恢复到指定的时间点;
TO BEFORE SCN:将数据库恢复到指定SCN的前一个SCN状态
TO BEFORE TIMESTAMP:将数据库恢复到指定时间点前一秒的状态。null查询数据库系统当前时间和当前SCN。
SQL>SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2009-03-25 12:36:19
SQL>SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-----------
735884 null查询数据库中当前最早的闪回SCN和时间。
SQL>SELECT OLDEST_FLASHBACK_SCN,
OLDEST_FLASHBACK_TIME
FROM V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN LDEST_FLASHBACK_TI
------------------------------ ---------------------------
730955 2009-03-25 10:26:50
null改变数据库的当前状态。
SQL>SET TIME ON
12:37:38 SQL>CREATE TABLE test_flashback(
ID NUMBER,NAME CHAR(20));
12:37:45 SQL>INSERT INTO test_flashback
VALUES(1,'DATABASE');
12:37:52 SQL>COMMIT; null进行闪回数据库恢复,将数据库恢复到创建表之前的状态。
12:37:56 SQL>SHUTDOWN IMMEDIATE
12:38:49 SQL>STARTUP MOUNT EXCLUSIVE
12:43:42 SQL>FLASHBACK DATABASE TO
TIMESTAMP(TO_TIMESTAMP('2009-3-25
11:00:00','YYYY-MM-DD HH24:MI:SS'));
12:44:38 SQL>ALTER DATABASE OPEN RESETLOGS; null验证数据库的状态(test_flashback表应该不存在)。
12:44:58 SQL>SELECT * FROM test_flashback;
SELECT * FROM test_flashback
*
第 1 行出现错误:
ORA-00942: 表或视图不存在 总结总结了解闪回技术
掌握闪回查询操作
掌握闪回版本查询操作
掌握闪回事务查询操作
掌握闪回表操作
掌握闪回删除操作
掌握闪回数据库操作