zhuan:http://space.itpub.net/16128/viewspace-426863
数据库:
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
实验过程:
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 289409924 bytes
Database Buffers 314572800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database flashback on;
alter database flashback on
*
第 1 行出现错误:
ORA-38706: 无法启用 FLASHBACK DATABASE 事件记录。
ORA-38707: 尚未启用介质恢复。
****通过实验获知使用FLASHBACK 需要开启 archive log
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 30
当前日志序列 32
SQL> alter database archivelog;
alter database archivelog
*
第 1 行出现错误:
ORA-00265: 要求实例恢复, 无法设置 ARCHIVELOG 模式
SQL> alter system switch logfile;
alter system switch logfile
*
第 1 行出现错误:
ORA-01109: 数据库未打开
SQL> recover database;
完成介质恢复。
***无法打开归档时,在MOUNT后使用介质恢复
SQL> alter database open;
数据库已更改。
SQL>
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 293604228 bytes
Database Buffers 310378496 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database archivelog
2 ;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 297798532 bytes
Database Buffers 306184192 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database flashback on
2 ;
数据库已更改。
SQL> alter database open;
数据库已更改。
18:06:13 SQL> connect flash/flash
已连接。
18:07:02 SQL> flashback table t to timestamp to_timestamp('2008-08-13 17:00:00',
'yyyy-mm-dd hh24:mi:ss');
flashback table t to timestamp to_timestamp('2008-08-13 17:00:00','yyyy-mm-dd hh
24:mi:ss')
*
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表
18:08:32 SQL> alter table t enable row movement;
表已更改。
18:09:35 SQL> flashback table t to timestamp to_timestamp('2008-08-13 17:00:00',
'yyyy-mm-dd hh24:mi:ss');
flashback table t to timestamp to_timestamp('2008-08-13 17:00:00','yyyy-mm-dd hh
24:mi:ss')
*
第 1 行出现错误:
ORA-01466: 无法读取数据 - 表定义已更改
18:10:03 SQL> select * from t;
A
----------
www.ncn.cn
18:10:15 SQL> delete t;
已删除 1 行。
18:12:10 SQL> commit;
提交完成。
18:12:14 SQL> select * from t;
未选定行
18:12:21 SQL> flashback table t to timestamp to_timestamp('2008-08-13 18:12:00'
,'yyyy-mm-dd hh24:mi:ss');
闪回完成。
18:13:06 SQL> select * from t;
A
----------
www.ncn.cn
总结:1.flashback 是利用UNDO 实现闪回
2.需开启数据库归档模式
3.如果归档无法实现,执行介质恢复
4.需开启行移动功能