监听日志过大处理指南



随着Oracle数据库的运行,监听日志如果不处理会越来越大,当日志过大会影响监听进程的稳定,特别是windows平台,当日志大小达到4G,可能出现连接不正常。因此,建议定期对日志进行转储,由于监听进程会持有监听日志文件的句柄,因此,不建议直接清空或删除,需要采用临时关闭监听日志记录功能,然后转储,然后再打开的方式进行处理。以下将分别就windows和类Unix平台进行介绍。

1        Windows环境

  1. 确认监听名称

打开计算机管理->服务,然后找到监听对应的服务,示例如下:


这里为了示例,特意建立了两个监听,服务名分别为:OracleOraDb11g_home1TNSListenerOracleOraDb11g_home1TNSListenerLISTENER1。默认的监听名称是LISTENER,当使用默认监听时,服务名在TNSListener后面为空,如果非默认监听名称,那么服务名后面会添加监听名称。这里就可以看到包含两个监听:LISTENERLISTENER1.除此之外,也可以通过%ORACLE_HOME%\network\admin\listener.ora文件确认监听名称。示例如下:



2.确认监听日志位置


确认了监听的名称,接下来就是确认监听日志的位置。通过安装ORACLE软件的用户在cmd中执行lsnrctl status 监听名称来获取位置



Oracle监听日志有两种格式,一种是xml格式,一种是文本文件格式。xml格式的日志是10M一个,所以不存在单个文件过大的问题。因此我们需要关注的是文本文件格式的监听日志文件。监听状态输出中显示的是xml格式的文件位置,文本文件格式的日志文件所在的目录位于xml格式日志所在位置上层目录下的trace目录下,比如这里xml文件位于:C:\app\Administrator\diag\tnslsnr\WIN2008\listener\alert目录下,那么文本文件格式的日志就位于C:\app\Administrator\diag\tnslsnr\WIN2008\listener\trace下。我们这里对应的文件是:C:\app\Administrator\diag\tnslsnr\WIN2008\listener\trace\listener.log.如果该目录存在多个文件,只需要通过更新时间基本上就可以确定当前在使用的文件。

3.停止监听日志记录功能


停止记录监听日志,需要通过lsnrctl来进行设置,命令如下:


lsnrctl

set current_listener监听名称

set log_status off

exit


以下是示例截图:



4.转储文件


转储文件可以切换到监听日志文件位置,直接重命名(如果确认不需要保留历史日志记录,可以删除)。



5.重新打开监听日志记录功能


重新打开日志记录功能,文件会自动生成。


lsnrctl

set current_listener监听名称

set log_status on

exit


以下是示例截图:



6.确认监听日志记录功能正常


确认文件已生成。




2  Unix环境


  1. 确认监听名称


Unix环境包括AIXHP-UnixLinux等,该文档描述操作原则上适用这些平台。


确认监听名称,可以通过进程进行确认,命令如下:


ps -ef|grep lsnr|grep -v grep


示例如下:




这里可以看到该系统已grid用户启动了两个监听,名称分别是:LISTENERLISTENER_SCAN1.

2.确认监听日志位置


确认了监听的名称,接下来就是切换到启动监听的用户,确认监听日志的位置。通过启动监听的用户执行lsnrctlstatus监听名称来获取位置


su - grid

lsnrctl status LISTENER


示例截图如下:


Oracle监听日志有两种格式,一种是xml格式,一种是文本文件格式。xml格式的日志是10M一个,所以不存在单个文件过大的问题。因此我们需要关注的是文本文件格式的监听日志文件。监听状态输出中显示的是xml格式的文件位置,文本文件格式的日志文件所在的目录位于xml格式日志所在位置上层目录下的trace目录下,比如这里xml文件位于:/u01/app/grid_base/diag/tnslsnr/rac1/listener/alert目录下,那么文本文件格式的日志就位于/u01/app/grid_base/diag/tnslsnr/rac1/listener/trace下。我们这里对应的文件是:C:\app\Administrator\diag\tnslsnr\WIN2008\listener\trace\listener.log.如果该目录存在多个文件,只需要通过更新时间基本上就可以确定当前在使用的文件。

 

3.停止监听日志记录功能


停止记录监听日志,需要通过lsnrctl来进行设置,命令如下:


lsnrctl

set current_listener监听名称

set log_status off

exit


以下是示例截图:



4.转储文件


转储文件可以切换到监听日志文件位置,直接重命名(如果确认不需要保留历史日志记录,可以删除)。



5.重新打开监听日志记录功能


重新打开日志记录功能,文件会自动生成。


lsnrctl

set current_listener监听名称

set log_status on

exit


以下是示例截图:



6.确认监听日志记录功能正常


确认文件已生成。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
欢迎学习 Koishi 插件开发指南! Koishi 是一个基于 Node.js 的 QQ 机器人框架,它提供了丰富的插件系统,允许开发者快速构建自己的机器人应用。下面是一个简单的插件示例: ```javascript module.exports = (ctx) => { ctx.command('hello', '打招呼').action(({ session }) => { return session.send('Hello World!') }) } ``` 这是一个最基本的插件,它注册了一个 `hello` 命令,当用户输入 `hello` 时,机器人会回复 `Hello World!`。 接下来,我们来详细了解如何开发 Koishi 插件。 ### 安装 Koishi 首先,我们需要安装 Koishi。可以通过 npm 来安装,执行以下命令: ``` npm install koishi ``` ### 创建插件 创建一个新的 Koishi 插件非常简单,只需要创建一个 JavaScript 文件,比如 `my-plugin.js`,然后将上述示例代码复制到文件中即可。在 Koishi 启动时,Koishi 会自动加载所有的插件并注册它们。 ### 插件基础结构 插件基本结构如下: ```javascript module.exports = (ctx) => { // 插件代码 } ``` 插件是一个函数,它接受一个参数 `ctx`,该参数包含了许多有用的信息,比如命令注册、消息发送等等。 ### 注册命令 Koishi 提供了一个 `ctx.command()` 方法来注册命令。该方法接受两个参数:命令名和命令描述,例如: ```javascript ctx.command('hello', '打招呼') ``` 该方法返回一个 `Command` 实例,你可以调用其 `.action()` 方法来设置命令执行时的操作,例如: ```javascript ctx.command('hello', '打招呼').action(({ session }) => { return session.send('Hello World!') }) ``` 在上述代码中,我们设置了 `hello` 命令的执行操作为发送 `Hello World!` 消息。 ### 处理消息 Koishi 提供了一个 `ctx.middleware()` 方法来注册消息处理函数。该方法接受一个函数作为参数,该函数需要返回一个布尔值或 Promise,代表是否继续执行下游的处理函数。 例如,以下代码可以回复用户发送的消息: ```javascript ctx.middleware(async (session, next) => { if (session.content === 'hello') { await session.send('Hi there!') // 中止后续处理函数 return false } // 继续执行下游的处理函数 return next() }) ``` 在上述代码中,我们判断用户发送的消息是否为 `hello`,如果是,我们发送一条回复消息 `Hi there!`,并中止后续处理函数。如果不是,我们调用 `next()` 函数,继续执行下游的处理函数。 ### 发送消息 Koishi 提供了一个 `session.send()` 方法来发送消息。该方法接受一个字符串作为参数,代表要发送的消息内容。 以下是一个发送消息的示例代码: ```javascript ctx.middleware(async (session, next) => { // 回复消息 await session.send('Hello World!') // 继续执行下游的处理函数 return next() }) ``` ### 接收消息 Koishi 提供了一个 `ctx.receiver` 对象来接收消息。该对象包含多个事件,你可以监听这些事件来处理用户发送的消息。 例如,以下代码可以监听用户发送的私聊消息,并回复一条消息: ```javascript ctx.receiver.on('message.private', async (session) => { await session.send('Hello World!') }) ``` 在上述代码中,我们使用 `ctx.receiver.on()` 方法来监听 `message.private` 事件,该事件代表用户发送的私聊消息。当事件发生时,我们回复一条消息 `Hello World!`。 ### 插件配置 Koishi 插件支持配置项。你可以通过 `ctx.plugin.config` 属性来访问插件的配置项,例如: ```javascript module.exports = (ctx) => { const config = ctx.plugin.config ctx.command(config.command, '打招呼').action(({ session }) => { return session.send(config.message) }) } module.exports.defaultConfig = { command: 'hello', message: 'Hello World!', } ``` 在上述代码中,我们通过 `ctx.plugin.config` 属性来获取插件的配置项。我们设置了两个配置项:`command` 和 `message`。 ### 插件生命周期 Koishi 插件的生命周期包含以下三个阶段: - `created`:插件被创建时。 - `attached`:插件被附加到机器人实例时。 - `detached`:插件从机器人实例中分离时。 你可以通过监听 `created`、`attached` 和 `detached` 事件来执行相应的操作。例如,以下代码可以在插件被创建时输出一条日志: ```javascript module.exports = (ctx) => { console.log('My plugin created.') } module.exports.lifecycle = { created: () => { console.log('My plugin created lifecycle.') }, attached: () => { console.log('My plugin attached lifecycle.') }, detached: () => { console.log('My plugin detached lifecycle.') }, } ``` 在上述代码中,我们通过 `console.log()` 方法输出了一些日志。我们还设置了一个 `lifecycle` 对象来监听插件生命周期事件。当插件被创建时,我们输出了一条日志 `My plugin created lifecycle.`。 ### 总结 本文介绍了如何开发 Koishi 插件,包括命令注册、消息处理、消息发送、插件配置、插件生命周期等内容。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值