undo表空间大小设定
1.undo_retention值越大,需要的undo表空间越大 undo_retention值表示一个undo数据块最久能在undo表空间中停留的时间,单位是秒,缺省值为900。(问:如果已经超过了这个时间,而事务还么有提交,此时该undo数据块可以被覆盖吗?) undo表空间资源是循环使用的,在undo_retention时间内,undo数据块的内容是不会被释放掉,也即不会被新的undo数据覆盖。所以设置停留时间越久,undo表空间就越大。 2.工作量很大,业务量大,事务很多时,每秒钟所产生undo数据块的个数越多,需要的undo表空间越大。 3.和db_block_size的大小有关 select begin_time,end_time,undoblks from v$undostat; BEGIN_TIME END_TEME UNDOBLKS ------------------ ------------------- ---------- 28-SEP-O8 13:43:02 28-SEP-O8 13:44:18 19 28-SEP-O8 13:33:02 28-SEP-O8 13:43:18 1474 28-SEP-O8 13:23:02 28-SEP-O8 13:33:18 1347 28-SEP-O8 13:13:02 28-SEP-O8 13:23:18 16 28 此语句记录了undo数据块的历史使用情况,每隔10分钟刷一次。此结果表示记录前40分钟分别用到undo数据块19个、1474个、1347个、1628个; select addr,used_ublk from v$transaction; ADDR USED_UBLK --------- -------------- 5932F4A0 863 此语句可以查看当前事务所需要数据块的个数,此结果表示,当前用户只有一个事务正在执行,此事务需要863个undo数据块。 事务越多,操作影响数据越多,需要的undo数据块也越多。 4.Oracle提供如下为新数据库设置撤销保留时间间隔的指导: 1、OLTP系统:15分钟 2、混合: 1小时 3、DSS系统:3小时 4、闪回查询:24小时 * 如何计算所需undo表空间的大小: 1.计算业务高峰期每秒产生undo数据块的个数: SQL> select max(undoblks / ((end_time - begin_time)*24*3600)) SQL> from v$undostat; 2.得到undo数据块在undo表空间中可以保留的最长时间 show parameter undo_retention 3.得到数据块大小 show parameter db_block; 4.将以上三者的数据相乘就是所需undo表空间的大小数。 发现undo表空间不够的时候,赶紧增加undo表空间的大小,执行语句如下: alter tablespace undotbs add datafile '/u01/oradata/undotbs2.dbf' size 700M autoextend on; ORA-01555 查询失败,其他事务产生的undo数据覆盖了undo表空间中查询需要的old数据块。 --------------------------------------------------------------------------------------------------------------------- 删除undo tablespace实验: SQL> create undo tablespace undotbs2 2 datafile '/opt/oradata/oradata/orcl/undotbs02.dbf' SIZE 100m 3 autoextend off; Tablespace created. SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 10800 undo_suppress_errors boolean FALSE undo_tablespace string UNDOTBS1 SQL> alter system set undo_tablespace=UNDOTBS2 scope=both; System altered. SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 10800 undo_suppress_errors boolean FALSE undo_tablespace string UNDOTBS2 SQL> select segment_name,tablespace_name,segment_id from dba_rollback_segs; SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID ------------------------------ ------------------------------ ---------- SYSTEM SYSTEM 0 _SYSSMU1$ UNDOTBS1 1 _SYSSMU2$ UNDOTBS1 2 _SYSSMU3$ UNDOTBS1 3 _SYSSMU4$ UNDOTBS1 4 _SYSSMU5$ UNDOTBS1 5 _SYSSMU6$ UNDOTBS1 6 _SYSSMU7$ UNDOTBS1 7 _SYSSMU8$ UNDOTBS1 8 _SYSSMU9$ UNDOTBS1 9 _SYSSMU10$ UNDOTBS1 10 SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID ------------------------------ ------------------------------ ---------- _SYSSMU11$ UNDOTBS2 11 _SYSSMU12$ UNDOTBS2 12 _SYSSMU13$ UNDOTBS2 13 _SYSSMU14$ UNDOTBS2 14 _SYSSMU15$ UNDOTBS2 15 _SYSSMU16$ UNDOTBS2 16 _SYSSMU17$ UNDOTBS2 17 _SYSSMU18$ UNDOTBS2 18 _SYSSMU19$ UNDOTBS2 19 _SYSSMU20$ UNDOTBS2 20 21 rows selected. SQL> select usn,status,xacts from v$rollstat; USN STATUS XACTS ------------- --------------- ------------- 0 ONLINE 0 10 PENDING OFFLINE 1 11 ONLINE 0 12 ONLINE 0 13 ONLINE 0 14 ONLINE 0 15 ONLINE 0 16 ONLINE 0 17 ONLINE 0 18 ONLINE 0 19 ONLINE 1 USN STATUS XACTS ------------- --------------- ------------- 20 ONLINE 0 12 rows selected. 发现原UNDOTBS1的回滚段处于PENDING OFFLINE状态,并有一个事物存在,需要等到事务完成后,才能drop UNDOTBS1 SQL> select usn,xacts from v$rollstat; USN STATUS XACTS ------------- --------------- ------------- 0 ONLINE 0 10 PENDING OFFLINE 0 11 ONLINE 0 12 ONLINE 0 13 ONLINE 0 14 ONLINE 0 15 ONLINE 0 16 ONLINE 0 17 ONLINE 0 18 ONLINE 0 19 ONLINE 1 USN STATUS XACTS ------------- --------------- ------------- 20 ONLINE 0 12 rows selected. SQL> select usn,xacts from v$rollstat; USN STATUS XACTS ------------- --------------- ------------- 0 ONLINE 0 11 ONLINE 0 12 ONLINE 0 13 ONLINE 0 14 ONLINE 0 15 ONLINE 0 16 ONLINE 0 17 ONLINE 0 18 ONLINE 0 19 ONLINE 1 20 ONLINE 0 11 rows selected. SQL> drop tablespace undotbs1 including contents and datafiles; Tablespace dropped. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |