ITPub博客

首页 > 应用开发 > IT综合 > 影响flashback table的操作!

影响flashback table的操作!

原创 IT综合 作者:warehouse 时间:2009-05-31 15:15:37 0 删除 编辑
rt[@more@]

14:32:24 SQL> create table tt(id int) rowdependencies tablespace users;

表已创建。

14:32:57 SQL> insert into tt values(1);

已创建 1 行。

14:33:12 SQL> insert into tt values(2);

已创建 1 行。

14:33:14 SQL> insert into tt values(3);

已创建 1 行。

14:33:16 SQL> commit;

提交完成。

14:33:18 SQL> select id ,ora_rowscn from tt;

ID ORA_ROWSCN
---------- ----------
1 1739405
2 1739405
3 1739405

14:33:32 SQL> update tt set id=100;

已更新3行。
14:33:40 SQL> commit;

提交完成。

14:33:42 SQL> select id ,ora_rowscn from tt;

ID ORA_ROWSCN
---------- ----------
100 1739414
100 1739414
100 1739414

14:33:44 SQL> flashback table tt to scn 1739405;
flashback table tt to scn 1739405
*
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表


14:34:12 SQL> select id ,ora_rowscn,rowid from tt;

ID ORA_ROWSCN ROWID
---------- ---------- ------------------
100 1739414 AAACi2AAEAAAAAcAAA
100 1739414 AAACi2AAEAAAAAcAAB
100 1739414 AAACi2AAEAAAAAcAAC

14:34:24 SQL> select row_movement,table_name from user_tables;

ROW_MOVE TABLE_NAME
-------- ------------------------------
DISABLED TT

14:34:43 SQL> alter table tt enable row movement;

表已更改。

14:35:38 SQL> select row_movement,table_name from user_tables;

ROW_MOVE TABLE_NAME
-------- ------------------------------
ENABLED TT

14:35:41 SQL> flashback table tt to scn 1739405;

闪回完成。

14:35:46 SQL> select id ,ora_rowscn,rowid from tt;

ID ORA_ROWSCN ROWID
---------- ---------- ------------------
1 1739478 AAACi2AAEAAAAAcAAD
2 1739478 AAACi2AAEAAAAAcAAE
3 1739478 AAACi2AAEAAAAAcAAF

14:35:58 SQL> flashback table tt to scn 1739405;

闪回完成。

14:41:01 SQL> select id ,ora_rowscn,rowid from tt;

ID ORA_ROWSCN ROWID
---------- ---------- ------------------
1 1739596 AAACi2AAEAAAAAcAAA
2 1739596 AAACi2AAEAAAAAcAAB
3 1739596 AAACi2AAEAAAAAcAAC
--flashback table之后rowid发生了变化
14:41:02 SQL> alter table tt add name varchar2(10) default 'a';

表已更改。

14:41:29 SQL> desc tt
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

ID NUMBER(38)
NAME VARCHAR2(10)

14:41:32 SQL> select * from tt;

ID NAME
---------- ----------
1 a
2 a
3 a
--给表增加字段不影响flashback
14:41:35 SQL> flashback table tt to scn 1739405;

闪回完成。

14:41:46 SQL> select id ,ora_rowscn,rowid from tt;

ID ORA_ROWSCN ROWID
---------- ---------- ------------------
1 1739629 AAACi2AAEAAAAAcAAD
2 1739629 AAACi2AAEAAAAAcAAE
3 1739629 AAACi2AAEAAAAAcAAF

14:41:47 SQL> alter table tt drop column name;

表已更改。

14:42:13 SQL> select id ,ora_rowscn,rowid from tt;

ID ORA_ROWSCN ROWID
---------- ---------- ------------------
1 1739629 AAACi2AAEAAAAAcAAD
2 1739629 AAACi2AAEAAAAAcAAE
3 1739629 AAACi2AAEAAAAAcAAF

14:42:16 SQL> flashback table tt to scn 1739405;
flashback table tt to scn 1739405
*
第 1 行出现错误:
ORA-01466: 无法读取数据 - 表定义已更改
--增加columns不影响flashback,再次drop column之后影响flashback
14:42:18 SQL> desc tt
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

ID NUMBER(38)
14:48:20 SQL> desc tt
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

ID NUMBER

14:50:36 SQL> select * from tt;

ID
----------
1
2
3
14:50:55 SQL> alter table tt add name varchar2(10) default 'a';

表已更改。

14:51:06 SQL> select *from tt;

ID NAME
---------- ----------
1 a
2 a
3 a

14:51:09 SQL> select id,name ora_rowscn from tt;

ID ORA_ROWSCN
---------- ----------
1 a
2 a
3 a

14:51:17 SQL> select id,name ,ora_rowscn from tt;

ID NAME ORA_ROWSCN
---------- ---------- ----------
1 a 1739837
2 a 1739837
3 a 1739837
14:51:56 SQL> insert into tt values(4,'b');

已创建 1 行。

14:52:01 SQL> commit;

提交完成。

14:52:02 SQL> select id,name ,ora_rowscn from tt;

ID NAME ORA_ROWSCN
---------- ---------- ----------
4 b 1739915
1 a 1739837
2 a 1739837
3 a 1739837

14:52:04 SQL> flashback table tt to scn 1739837;

闪回完成。

14:52:26 SQL> select id,name ,ora_rowscn from tt;

ID NAME ORA_ROWSCN
---------- ---------- ----------
1 a 1739936
2 a 1739936
3 a 1739936

14:52:29 SQL> insert into tt values(4,'b');

已创建 1 行。

14:52:37 SQL> commit;

提交完成。

14:52:38 SQL> select id,name ,ora_rowscn from tt;

ID NAME ORA_ROWSCN
---------- ---------- ----------
1 a 1739936
2 a 1739936
3 a 1739936
4 b 1739941

14:52:40 SQL> alter table tt modify name varchar2(20);

表已更改。

14:52:55 SQL> select id,name ,ora_rowscn from tt;

ID NAME ORA_ROWSCN
---------- -------------------- ----------
1 a 1739936
2 a 1739936
3 a 1739936
4 b 1739941

14:53:00 SQL> flashback table tt to scn 1739837;
flashback table tt to scn 1739837
*
第 1 行出现错误:
ORA-01466: 无法读取数据 - 表定义已更改


14:53:10 SQL>
--修改column宽度影响flashback table操作

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-1022631/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-07

  • 博文量
    717
  • 访问量
    5366340