ORA-21780: Maximum number of object durations exceeded.
Cause: This typically happens if there is infinite recursion in the PL/SQL function that is being executed.
Action: User should alter the recursion condition in order to prevent infinite recursion.
ORA-21780:表示超出了一个对象的最大持续时间限制。
ORA-21780 是一种被称为无后备控制文件(NCF)的错误。NCF 代表无状态并且可以由 Multi-threaded Server (MTS) 使用的本地持久性存储。由于该 NCF 的内存大小有限,总的持久性存储持续时间也是受限的。因此,ORA-21780 错误表明已超出了对象存储在 NCF 中的最大持续时间。
ORA-21780 错误常常出现在系统正在处理长时间的查询的情况下,或者当使用了类似于 DBMS_MONITOR 的数据库调优包时。
1. 首先,确保为 NCF 分配了足够的内存以符合系统的使用率,以及占用的对象的量。
2. 然后,应该尝试在系统中增加 NCF 缓存的大小。可以使用 sql_trace 进行调优,并尝试运行长时间查询。一旦确定了想要执行长时间查询的内存大小,可以根据该信息来调整 NCF 的缓存大小。
3. 当系统出现问题或者长时间没有查询时,需要将 NCF 重置为其初始状态。这将有助于避免 ORA-21780 错误,因为在系统中将更大的空间留给 NCF 缓存。
4. 特别是在使用了数据库调优工具时,应该记住 ORA-21780 错误的存在,并作出相应的调整以避免系统出现问题。此外,可以定期查看 NCF 缓存的大小,以便有效地捕获该错误。