1. FLASHBACK TABLE table_name TO BEFORE DROP
这个时间限制是多久?如果希望时间久一点,该怎么设置?
2. select * FROM BIOLIFE as of timestamp(to_timestamp('2009-11-28 21:09:09','yyyy-mm-dd hh24:mi:ss')) 这个时间限制是多久?如果希望时间久一点,该怎么设置?
这个时间限制是多久?如果希望时间久一点,该怎么设置?
2. select * FROM BIOLIFE as of timestamp(to_timestamp('2009-11-28 21:09:09','yyyy-mm-dd hh24:mi:ss')) 这个时间限制是多久?如果希望时间久一点,该怎么设置?
解决方案 »
- 10g RAC系统用lvm分区会影响crs、ocs等服务的启动吗?
- 请问在oracle中如何批量更新一列记录?在线等待,各位大虾帮帮忙吧……
- 请一个sql语句
- 急急急!!!到底为什么???
- 关于VC连接oracle的问题,急,急,急,急,急,急,急
- 求SQL语句请高手解决如何将同一个ID号对应表B中两行记录转化成表A中一行记录
- 冰天雪地,裸体跪求职IBM起直追P630下ORACLE 8。1。6 FOR AIX 5L 的安装文档??急急
- 并非挑战: 怎么样才能让自己的程序像IMP.EXE那样快速地往ORACLE中插入记录
- oracle的回滚段或是撤销表空间怎么调整?寻求方案
- mysql 弱鸡求大佬
- 装了Oracle10g以后,我的Oracle9i的OracleOraHome92HttpServer服务无法启动了!急啊!
- oracle性能如何调整,经常报TNS-12560错
如果相关的前镜像被覆盖了 那么操作就会失败了
一定要注意,undo_retention 只是指定undo 数据的过期时间,并不是说,undo 中的数据一定会在undo表空间中保存15 分钟,比如说刚一个新事务开始的时候,如果undo 表空间已经被写满,则新事务的数据会自动覆盖已提交事务的数据,而不管这些数据是否已过期,因此呢,这就又关联回了第一点,当你创建
一个自动管理的undo 表空间时,还要注意其空间大小,要尽可能保证undo 表空间有足够的存储空间。
同时还要注意,也并不是说,undo_retention 中指定的时间一过,已经提交事务中的数据就立刻无法访问,它只是失效,只要不被别的事务覆盖,它会仍然存在,并可随时被flashback 特性引用。如果你的undo表空间足够大,而数据库又不是那么繁忙,那么其实undo_retention 参数的值并不会影响到你,哪怕你设置成1,只要没有事务去覆盖undo 数据,它就会持续有效。因此呢,这里还是那句话,要注意undo 表空间的大小,保证其有足够的存储空间。
只有在一种情况下,undo 表空间能够确保undo 中的数据在undo_retention 指定时间过期前一定有效,就是为undo 表空间指定Retention Guarantee,指定之后,oracle 对于undo 表空间中未过期的undo 数据不会覆盖,例如:
SQL> Alter tablespace undotbs1 retention guarantee;
如果想禁止undo 表空间retention guarantee,例如:
SQL> Alter tablespace undotbs1 retention noguarantee;Oracle Flashback 技术 总结http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4677378.aspx------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
--三个系统参数关系到flashback时间
[SYS@ora10gr1#2009-11-29/10:35:35] SQL>show parameter undo_NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
1、undo_management 为 AUTO 说明你可以使用flashback 功能
2、undo_retention 为900 是默认的可恢复的时间
3、undo_tablespace 是你正在使用的undo tablespace名但是如果你的undo空间是下面这个样子的话,不会完全的保证900秒的时间,而会出现时间不固定的情况。
当undo信息被覆盖的时候flashback就不可以了。
[SYS@ora10gr1#2009-11-29/10:38:49] SQL>select TABLESPACE_NAME,RETENTION from dba_tablespaces where TABLESPACE_NAME='UNDOTBS1';TABLESPACE_NAME RETENTION
------------------------------ -----------
UNDOTBS1 NOGUARANTEE
如果想完全保证这个时间,需要把 undo表空间改成 GUARANTEE的,同时增大你的undo表空间的大小。
--把 undo表空间改成guarantee
alter tablespace UNDOTBS1 retention guarantee;
--增大 undo表空间大小
alter tablespace UNDOTBS1 add datafile 'XXXXX' size 100M;
--或者把undo表空间改成自动扩展的
[SYS@ora10gr1#2009-11-29/10:39:21] SQL>select name from v$datafile;NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\USERS01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\EXAMPLE01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\TEST01.DBFalter system datafile 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORA10GR1\UNDOTBS01.DBF' autoextend on;
这样就可以尽可能长时间的保留 flashback信息了。
修改方法:--注意这个参数是以秒为单位的。
alter system set undo_retention = 3600 scope = both;
CREATE ROLLBACK SEGMENT SYSTEM
TABLESPACE SYSTEM
STORAGE (
INITIAL 112K
MINEXTENTS 1
MAXEXTENTS 32765
);
ALTER ROLLBACK SEGMENT SYSTEM ONLINE;
会提示:
ORA-01555:快照过旧:回退段号9(名称为“_SYSSMU9¥”)过小
---------- ------------------------------
0 SYSTEM
1 _SYSSMU1$
2 _SYSSMU2$
3 _SYSSMU3$
4 _SYSSMU4$
5 _SYSSMU5$
6 _SYSSMU6$
7 _SYSSMU7$
8 _SYSSMU8$
9 _SYSSMU9$
10 _SYSSMU10$11 rows selected.
SQL> select segment_name,tablespace_name from dba_segments where segment_name='S
YSTEM';
SEGMENT_NAME TABLESPACE_NAME
-------------------- --------------------
SYSTEM SYSTEM
SQL> select segment_name,tablespace_name from dba_segments where tablespace_name
='UNDOTBS1';SEGMENT_NAME TABLESPACE_NAME
-------------------- --------------------
_SYSSMU1$ UNDOTBS1
_SYSSMU2$ UNDOTBS1
_SYSSMU3$ UNDOTBS1
_SYSSMU4$ UNDOTBS1
_SYSSMU5$ UNDOTBS1
_SYSSMU6$ UNDOTBS1
_SYSSMU7$ UNDOTBS1
_SYSSMU8$ UNDOTBS1
_SYSSMU9$ UNDOTBS1
_SYSSMU10$ UNDOTBS110 rows selected.
你可以选择增大回滚表空间
或者按照上面的朋友说的使用RETENTION GUARANTEE来解决这个问题
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF' SIZE 140M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
ONLINE
RETENTION NOGUARANTEE
BLOCKSIZE 8K
FLASHBACK ON;UNDO 表空间还有100M的空间,而且设成了AUTOEXTEND on, 为什么还会提示 回滚空间太小?
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_tablespace=UNDOTBS1
这句话该怎么理解?
是不是说我删除了某个表A的数据,然后只要再对表A进行操作,就会覆盖undo数据,这样表A中被删除的数据就不可恢复?
那么这个时候T1表中被更改数据的前镜像就会被存到回滚段中
那么这个时候你可以用闪回去查询这些数据被更改前的内容不过如果在USERA进行了操作以后 又有大量的事务操作 从而产生大量的UNDO
那么T1表中被更改数据的前镜像在回滚段中可能会被这些新事务产生的UNDO覆盖(当然 如果你USER1更改T1表的这个事务没有COMMIT 那么这些前镜像会一直保存)
因为UNDO表空间是循环使用的