回退表空间的大小设置不当,应用中会产生大家都遇到过的问题。如何正确修改回退表空间的大小呢?
如果数据库的回退表空间的大小设定的不合适的话,就会产生回退段过旧或无法分配新的回退表空间。下面是设定正确的回退表空间的步骤
第一步:查询V$UNDOSTATS
select TO_CHAR(MIN(Begin_Time),'YYYY-MM-DD HH24:MI:SS') ,
TO_CHAR(MAX(End_Time),'YYYY-MM-DD HH24:MI:SS'),
SUM(Undoblks) ,
SUM(Txncount) ,
MAX(Maxquerylen) ,
MAX(Maxconcurrency) ,
SUM(Ssolderrcnt),
SUM(Nospaceerrcnt)
from V$UNDOSTAT;
从上面可以查看出使用最多数据块的事务。
第二步:查看UNDO_RETENTION,DB_BLOCK_SIZE 的值
SQL>show parameter undo_retention
SQL>show parameter db_block_size
第三步:使用公式算出回退表空间的大小
回退表空间大小=db_block_size*undo_retention*max(undoblks)/600
第四步:根据上一步算出的值,修改回退表空间数据文件的大小
SQL>alter database datafile '/u01/app/database/undotbs01.dbf' resize xxxM;
还有第二种算法,
select
(select max(undoblks)/600*max(maxquerylen) from v$undostat)
*
(select value from v$parameter where name=’db_block_size’) from dual;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/526592/viewspace-236741/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/526592/viewspace-236741/