li
  当前位置:主页 > 配置管理 > 文章内容
li
oracle9i 的flashback 一些问题
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-06-06   阅读:4  
本文章共2753字,分2页,当前第1页,快速翻页:
 

在9i中,若使用undo tablespace则oracle自动管理回滚段,通过设置 undo_retention 可在undo tablespace中保留这么长时间的数据,这样可以避免 snapshot too old 错误,同时也可以通过 flashback 而得到某个时间点之前的数据,但这里要强调的几点是:

1: flashback 功能不支持DDL语句,如果已经truncate掉的数据是不能找回来的
2: 看起来是这样的
oracle 每隔5分钟会将产生的 SCN 对应一个 TIME 做记录
也就是说通常只记录了SCN,但是每5分钟会记录 SCN and TIME
当采用 time 来做flashback 的时候就有可能产生偏差

请关注实验4 !!!!




实验1: 使用flashback 功能

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
36501397

SQL> insert into tf values(3);

1 row created.

SQL> commit;

Commit complete.

SQL> exec dbms_flashback.enable_at_system_change_number(36501397);

PL/SQL procedure successfully completed.

SQL> select * from tf;

A
----------
1
2


实验2: flashback 不支持 DDL

接着上面的步骤
SQL> truncate table tf;

Table truncated.

SQL> exec dbms_flashback.enable_at_system_change_number(36501397);

PL/SQL procedure successfully completed.

SQL> select * from tf;
select * from tf
*
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed


SQL> exec dbms_flashback.disable;


实验3 : 我们创建一个表,立即看看效果,所有过程在5分钟以内,很段的时间内完成的,我们将无法查询数据!

SQL> drop table tf;

Table dropped.

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
36509390

SQL> create table tf( a number);

Table created.

SQL> insert into tf values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
36509490

SQL> insert into tf values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> exec dbms_flashback.enable_at_system_change_number(36509390);

PL/SQL procedure successfully completed.

SQL> select * from tf;
select * from tf
*
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed


SQL> exec dbms_flashback.disable;

PL/SQL procedure successfully completed.

SQL> exec dbms_flashback.enable_at_system_change_number(36509490);

PL/SQL procedure successfully completed.

SQL> select * from tf;
select * from tf
*
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed


SQL> exec dbms_flashback.disable;

PL/SQL procedure successfully completed.


实验四:通过时间来做,我们仔细看下面的时间和数据的关系!

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2003-04-26 17:09:04 创建表之前的时间 time1

SQL> create table test1 (a number);

Table created.

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
IXDBA.NET社区论坛

TO_CHAR(SYSDATE,'YY
-------------------
2003-04-26 17:09:20



阅读更多内容1 · 2 · 下一页>>


  上一篇: oracle如何查看已经打过的补丁   下一篇: oracle SMON_SCN_TIME
li
 §相关评论  
 热点文章

·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 编辑推荐
·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 相关篇章
·oracle如何查看已经打过的补丁
·怎么样计算REDO BLOCK的大小
·控制文件包含哪些基本内容
·如果发现表中有坏块,如何检索其...
·怎么知道那些表没有建立主键
·我创建了数据库的所有用户,我可...
·ORACLE的有那些数据类型
·installing Oracle10g-x86_64 on...
·Debian下安装Oracle10g数据库
·RHEL5下安装oracle 10g数据库
·oracle SMON_SCN_TIME
·Oracle9i中flashback闪回数据
·逻辑standby数据库的创建过程
·ORA-03113:end-of-file on comm...
·ORA-01688:unable to extend tab...
·如何查询一个表中某字段重复记录...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接