LGnn 进程介绍(oracle 19c)

来源:这里教程网 时间:2026-03-03 18:29:31 作者:

 

一、说明

在 Oracle 数据库中,LGWR通常会影响一个数据库的性能,在12C之前,不支持重做日志的并发写,12C之后,引入了LGnn 进程,支持了并发写,用于实际写入REDO数据。

 

二、详细介绍

2.1什么是LGnn 进程

在Oracle数据库中,LGnn(Log Writer Null)进程是由LGWR(Log Writer)进程动态创建的辅助进程。这些进程帮助LGWR进程完成它的任务,当LGWR进程需要等待某些操作完成时,如等待检查点完成或等待I/O操作完成,LGnn进程会接管LGWR进程的任务,以避免LGWR进程因为等待时间过长而影响系统性能。LGnn进程的命名规则是由两个部分组成的。第一个部分是“LG”,代表“Log Writer”的缩写,因为这些进程与Log Writer进程密切相关。第二个部分是一个由两个字母组成的代码,例如“LGWR”、“LGER”等等,这些代码通常是随机生成的,可以根据需要创建多个LGnn进程。

 

2.2 LGnn进程的任务

LGnn 进程的主要任务是将内存中的重做日志缓冲区中的数据写入在线重做日志文件中。它负责将来自其他进程的重做日志缓冲区中的数据写入磁盘,以确保数据持久性。此外,LGnn进程还定期从在线重做日志文件中读取重做日志记录,并将它们写入磁盘中的归档重做日志文件中,以便进行备份和恢复操作。

 

2.3 LGWR进程和LG nn 进程的关系

在Oracle数据库中,LGWR进程主要负责写日志文件,而LGnn进程则是LGWR进程的辅助进程。当一个脏块需要被写入磁盘的日志文件时,LGWR进程会通知其中一个空闲的LGnn进程来完成这个操作。因此,LGnn进程可以看作是LGWR进程的代理人,它们之间通过共享内存来进行通信。

 

2.4 LGnn进程的数量

在Oracle数据库中,可以配置LGWR进程使用的LGnn进程的数量,一般情况下,建议将LGnn进程的数量配置为CPU核心数的一半左右。在实际的应用中,如果LGnn进程的数量太少,可能会导致LGWR进程的性能瓶颈,从而影响整个系统的性能;如果LGnn进程的数量太多,可能会导致系统的内存资源被消耗殆尽,从而引起系统的崩溃。因此,需要根据实际情况来合理配置LGnn进程的数量。

 

2.5 LGnn的配置和监视

查询当前LGnn进程的数量:

SELECT COUNT(*) FROM v$bgprocess WHERE name LIKE 'LG%';

 

使用以下查询来监视当前LGnn进程的活动情况:

SELECT name, active FROM v$bgprocess WHERE name LIKE 'LG%';

 

调整以下参数来调整LGnn进程的行为:

LOG_CHECKPOINT_INTERVAL :指定LGnn进程执行检查点操作的时间间隔(以秒为单位)。检查点是指LGnn进程将所有未写入磁盘的脏缓冲区刷写到磁盘的操作。默认值为60秒。

 

LOG_CHECKPOINT_TIMEOUT :指定LGnn进程执行检查点操作的超时时间(以秒为单位)。如果LGnn进程无法在超时时间内完成检查点操作,则会产生警告。默认值为30秒。

 

LOG_BUFFER :指定LGnn进程用于缓存日志记录的内存大小(以字节为单位)。默认值为1MB。

具体调整方式:

ALTER SYSTEM SET LOG_CHECKPOINT_INTERVAL = <value>; 
ALTER SYSTEM SET LOG_CHECKPOINT_TIMEOUT = <value>; 
ALTER SYSTEM SET LOG_BUFFER = <value>;

LGnn 进程是Oracle数据库的重要组件之一,它负责确保数据的持久性和一致性。了解LGnn进程的工作原理和如何配置和监视它,有助于提高系统的性能和可靠性。

 

2.6 LGnn进程的并发写

是指多个LGnn进程同时将重做日志记录写入磁盘上的在线重做日志文件。在Oracle数据库中,可以通过配置多个LGnn进程来提高并发性能,从而实现更高的写入吞吐量。

多个LGnn进程可以同时访问同一个在线重做日志文件,这种并发写可以提高写入性能,特别是在高负载情况下。例如,当一个LGnn进程正在写入重做日志记录时,另一个LGnn进程可以同时开始写入新的重做日志记录,从而避免了单个进程的瓶颈问题。

为了实现LGnn进程的并发写,需要在数据库参数中设置LOG_PARALLELISM参数的值,以指定LGnn进程的数量。通常建议将LOG_PARALLELISM设置为CPU核心数的一半或更少,以避免过多的LGnn进程导致性能下降。

另外,在实现LGnn进程的并发写时,还需要考虑一些重要的因素。例如,必须确保在线重做日志文件的大小和数量足够大,以避免LGnn进程之间的竞争。此外,还需要考虑磁盘和I/O性能,以确保多个LGnn进程可以同时高效地写入重做日志文件。

总之,LGnn进程的并发写是一种优化数据库性能的有效方法,可以通过配置多个LGnn进程来提高写入吞吐量和并发性能。但是,在实现并发写时,需要注意一些重要的因素,以确保系统稳定和可靠。

 

 

 

三、总结

LGnn  进程是 Oracle 数据库中非常重要的一个进程,主要负责将缓存中的数据写入磁盘,确保数据持久化。在Oracle 19C 中,可以通过一系列参数来设置 LGnn 进程的行为和性能。合理地设置这些参数可以提高系统的性能和稳定性。

相关推荐