uba:
0x00c02e17.0258.28
先把这个十六进制数转换成十进制数,oracle提供的十进制包可以获取文件号及块号:
SQL> select to_number(‘00c02e17‘,‘XXXXXXXXXXXXXXXXXX‘) from dual;
TO_NUMBER(‘00C02E17‘,‘XXXXXXXXXXXXXXXXXX‘)
------------------------------------------
12594711
上面列出的出现ORA-01555的三种情况,这三者之间有关系,比如增加了undo_rentention,从而需要的undo表空间要更多。
oracle里提供了undo advisor(顾问),我们可以根据这个,来平衡这几者关系,进入到OEM:
[oracle@localhost ~]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
https://diy_os:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control .......
进入em后,在自动管理界面,提供了这一张图:
根据undo_rentention的大小,来确定所需的undo表空间的大小,可以更改分析时段,会提供建议图形界面。
图形是如何作出的呢?
有一个公式:
UndoSpace = [UR * (UPS * DBS)] + (DBS*24)
UR:undo_rentention in seconds
UPS:number of undo data blocks generated per second
DBS:overhead varies based on extent and file size(db_block_size)实际就是块大小:show parameter db_block;
我们可以根据oracle的一个视图:v$undostat;
每十分钟计算undo的数量。可以根据这个视图可以画出上述图形。