表结构修改后的flashback

本文通过一个实际的SQL操作过程,展示了在修改表结构后尝试使用闪回查询会遇到的问题。首先创建并填充了一个临时表,接着进行了删除和更新操作,然后改变了表的列名。在尝试闪回至修改前的状态时,由于表结构的变化,导致闪回查询失败,从而证实了表结构改变后无法进行闪回的事实。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

昨天,听见一个网友说update一张表数据,没有加条件,表结构也改变并且已经提交,问如何闪回。我的回答的表结构改变之后就不能闪回。而有人对此存在疑问,在此做个测试。

1.   创建临时表,对表插入数据

---------------------------创建一张临时表  tmp_liuhc_1----------------------------------

SQL> CREATE TABLE TMP_LIUHC_1 (ID NUMBER,NAME VARCHAR2(10)) ;
 
Table created

---------------------------对 tmp_liuhc_1插入两条数据----------------------------------

SQL> INSERT INTO  TMP_LIUHC_1 VALUES(1,'SDK');
 
1 row inserted
SQL> INSERT INTO  TMP_LIUHC_1 VALUES (1,'SDK2');
 
1 row inserted

---------------------------查看当前时间---------------------------------------------------------
SQL> select to_char(sysdate,'YYYYMMDD HH24:MI:SS') "sysdate" from DUAL;
 
sysdate
-----------------
20111026 11:01:09

2.  一段时间之后,对表进行修改,并查看当前时间

SQL> DELETE FROM TMP_LIUHC_1 WHERE NAME='SDK';
 
1 row deleted
SQL> UPDATE TMP_LIUHC_1 SET NAME='SDK3' WHERE NAME='SDK2';
 
1 row updated
SQL> ALTER TABLE TMP_LIUHC_1 RENAME COLUMN NAME TO MY_NAME;
 
Table altered
 
SQL> select to_char(sysdate,'YYYYMMDD HH24:MI:SS') "sysdate" from DUAL;
 
sysdate
-----------------
20111026 11:07:42

3.  此时,对表tmp_lhc_1进行闪回查询时就会报错。

SQL> SELECT * FROM TMP_LIUHC_1 AS OF TIMESTAMP TO_TIMESTAMP('2011-10-26 11:01:09','YYYY-MM-DD HH24:MI:SS') ;
 
SELECT * FROM TMP_LIUHC_1 AS OF TIMESTAMP TO_TIMESTAMP('2011-10-26 11:01:09','YYYY-MM-DD HH24:MI:SS')
 
ORA-01466: 无法读取数据 - 表定义已更改

提示表结构已经更改,无法读取数据。

 

结论:表结构改变之后的数据是无法被闪回的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值