oracle 10g delete flashback,关于oracle10G的flashback(闪回)

(1):

在测试数据库上面玩telete 、flashback

首先要确定数据库是否  启用了闪回(flashback)功能

数据库的Flashback Database功能缺省是关闭的

[oracle@oracle10 ~]$ sqlplus  /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jul 7 15:56:11 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn /as sysdba;

Connected.

SQL> select  name,log_mode  from  v$database;

NAME      LOG_MODE

--------- ------------

TESTDB    ARCHIVELOG

SQL> select  name,current_scn,flashback_on from  v$database;

NAME      CURRENT_SCN   FLASHBACK_ON

--------- ----------- ------------------

TESTDB        1057096              NO

SQL> shutdown  immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup  mount;

ORACLE instance started.

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size              88082000 bytes

Database Buffers          192937984 bytes

Redo Buffers                2973696 bytes

Database mounted.

SQL> alter  database  flashback on;

Database altered.

SQL> alter database  open;

Database altered.

SQL> select  name,current_scn,flashback_on from  v$database;

NAME      CURRENT_SCN FLASHBACK_ON

--------- ----------- ------------------

TESTDB        1057096 YES

这样就说明数据库启用的了flashback功能。

然后执行测试操作:

SQL> select  * from   viewt;

ID NAME             ADDRESS

---------- ---------------- ----------------

1 jestoo          shanghai

2 yahoo            beijing

SQL> delete  from  viewt  where  id=001;

1 row deleted

SQL> commit;

Commit complete

SQL> select  * from   viewt;

ID NAME             ADDRESS

---------- ---------------- ----------------

2 yahoo            beijing

可以通过这条SQL 查询到:

SQL>  select * from viewt as of timestamp to_timestamp('2010-07-07 15:20:00', 'yyyy-mm-dd hh24:mi:ss');

ID NAME             ADDRESS

---------- ---------------- ----------------

1 jestoo           shanghai

2 yahoo            beijing

然后执行恢复:

SQL>  flashback  table viewt to TIMESTAMP   to_timestamp('2010-07-07 16:00:00','yyyy-mm-dd hh24:mi:ss');

Done

#说明Ok,也可以恢复到系统的多少分钟前,命令如下:

SQL> flashback  table  viewt  to timestamp  systimestamp   - interval  '30' minute;

SQL> flashback  table  viewt  to  TIMESTAMP  to_timestamp('2010-07-07 15:20:00','yyyy-mm-dd hh24:mi:ss');

flashback  table  viewt  to  TIMESTAMP  to_timestamp('2010-07-07 15:20:00','yyyy-mm-dd hh24:mi:ss')

#这里可能会提示下面问题:说明数据库没有启用 flashback 功能

ORA-08189: cannot flashback the table because row movement is not enabled

这里还说明一个问题:

基于 undo 的表恢复,被恢复的表必须启用 row movement ,不然会报 ORA-08189 错误。

要查看某表是否启用 row movement ,可以到 user_tables 中查询 ( 或 all_tables,dba_tables) ,例如:

select row_movement from user_tables where table_name=‘VIEWT’;

ROW_MOVE

--------

ENABLED

要启用或禁止某表 row movement ,可以通过下列语句:

-- 启用

ALTER TABLE VIEWT ENABLE ROW MOVEMENT;

表已更改。

-- 禁止

ALTER TABLE VIEWT DISABLE ROW MOVEMENT;

表已更改。

查询当前的scn­

SQL> SELECT CURRENT_SCN FROM V$DATABASE;

删除表这个好恢复:

SQL> drop  table  viewt;

Table dropped

SQL> commit;

Commit complete

SQL> flashback  table  viewt  to before  drop;

Done

SQL> select  * from  viewt;

ID NAME             ADDRESS

---------- ---------------- ----------------

3 sina             shenzhen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值