我想知道一个奇怪的死锁,在检查了所有其他组件后,我认为它是 Oracle 11.2 中的一个 INITRANS 问题。
现在出现了三个问题:
有什么方法可以分析块有多满?
我的数据库不久前达到了其最大表空间大小并开始拒绝插入,然后我添加了另一个数据文件,但只有在几乎所有空间都用完时才会增长。我的 PCT_USED 是 96%。我的假设是否正确,即所有数据块都将被完全塞满并且很可能出现 INITRANS 死锁?
有没有办法在死锁跟踪中看到 INITRANS 问题?
我也很高兴得到部分答案。
Initrans 对于表的相同块中的并发插入最为重要。当存在对块头的争用时,您通常会意识到这一点。只要块中有足够的空闲空间,列表就可以在块的空闲空间中增长。因此,如果您知道对于某些表,您有许多并发作业在表的同一端插入数据,那么将 INITRANS 设置为与并发作业数相似的值会有所帮助。
pct_used 意味着 - 在您的情况下 - 一旦块获得 4% 的可用空间,该块将进入空闲列表以接受新行。
pct_free 意味着一旦块中的可用空间低于 pct_free,该块就不再接受新行,以便为行可以增长的更新保留空间。
表统计显示了类似 AVG_SPACE、AVG_ROW_LEN 的统计信息。