要使数据库系统有足够的日志信息存放空间,以保证长事务的顺利完成,我们首先要了解和长事务有关的配置参数。
LTXHWM:设定单个事务能够使用的逻辑日志文件数,占总数目的百分比。一旦达到这个比例,系统就开始回退事务。
LTXEHWM:设定单个事务能够使用的逻辑日志文件数,占总数目的百分比。一旦达到这个比例,该事务就独享剩余的逻辑日志文件空间,其它事务被挂起。
DYNAMIC_LOGS:设定是否允许系统自动增加逻辑日志文件。这些逻辑日志文件在事务完成后被系统删除。
当一个事务所使用的逻辑日志文件达到配置参数LTXHWM的值后,系统就认定此事务为一个长事务。为防止事务占用所有的日志文件空间而引起系统挂起,系统就开始回滚该事务。由于回滚事务仍旧要产生日志、要写入逻辑日志文件,当事务所使用的逻辑日志文件达到配置参数LTXEHWM的值后,系统就暂停其他事务的执行,所有剩余日志文件空间全部用作该事务的回退。
一个逻辑日志文件被写满之后,系统就自动切换到下一个逻辑日志文件,这个日志文件就成为当前日志文件。除此之外,在切换时系统还要检查新的当前日志文件的下一个日志文件。如果它处于活动状态并且配置参数DYNAMIC_LOGS被设置,系统就自动在新的当前日志文件之后增加一个新的逻辑日志文件。
DYNAMIC_LOGS 参数配置:
如果DYNAMIC_LOGS 的缺省值 2 时,如果下一个活动日志文件包含最旧打开事务的开头,那么数据库服务器将动态添加新的日志文件并将警报设置为关闭。
如果 DYNAMIC_LOGS 参数设置为 1 并且下一个活动日志文件包含来自打开事务的记录,那么数据库服务器将提示您手动添加日志文件并将警报设置为关闭。
如果 DYNAMIC_LOGS 参数设置为 0 并且在长事务回滚过程中逻辑日志文件耗尽了空间,那么该数据库服务器可能挂起。(长事务将防止第一个逻辑日志文件变为空闲并防止其可用于重新使用。)要修复该问题并完成长事务,请将 DYNAMIC_LOGS 设置为 2 并且重新启动数据库服务器。