前言 本文主要给大家介绍了关于Oracle参数设置之set和reset的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 环境:Oracle 10.2.0.5 RAC 需求:节点1的aq_tm_processes要求恢复默认,节点2设置要求保持不变 背景介绍: 从10.2官档可以查到aq_tm_processes参数,看到该参数的默认值是0,我们姑且叫做它为默认0. 然后,在实际上发现,这个默认0和我们手工将其SET设置成0,效果是完全不一样的。 与同事交流此事,最终得知一个技术细节: Oracle中,使用SET设置参数值实际上是少做很多事情的,如果你想恢复 在Oracle数据库管理中,参数设置是一项关键任务,用于调整数据库的行为和性能。本文将深入探讨在Oracle 10.2.0.5 RAC环境中如何使用`SET`和`RESET`命令来管理参数,特别是针对`aq_tm_processes`参数的案例。 `aq_tm_processes`是一个Oracle数据库参数,它控制先进先出(AQ,Advanced Queuing)队列中的定时器管理进程的数量。默认情况下,这个参数的值为0,意味着没有定时器管理进程在运行。然而,当手动将`aq_tm_processes`设置为0时,其效果可能与默认值不同。这是因为`SET`命令仅更改参数值,而不会恢复Oracle的默认行为。若要真正恢复到默认状态,应该使用`RESET`命令,这会清除该参数的所有实例特定设置,使其重新遵循全局默认配置。 在RAC环境中,参数设置有全局和实例级别的区别。在本例中,我们有两个实例,`jy1`和未明确指定的另一个实例,假设为`jy2`。全局设置`*.aq_tm_processes=1`意味着所有实例的默认值为1,而实例`jy1`的特定设置`jy1.aq_tm_processes=0`覆盖了全局设置,使`aq_tm_processes`在`jy1`上为0。 为了模拟生产环境,我们首先将`aq_tm_processes`设置为1,然后针对`jy1`实例将其设为0。通过查看`show parameter aq_tm_processes`和`ps -ef | grep q00`命令的输出,我们可以观察到参数更改对进程的影响。当`aq_tm_processes`设为1时,队列管理进程(如`ora_q002_jy1`和`ora_q000_jy1`)会启动;而当设为0时,这些进程会停止,因为它们不再被需要。 这里的关键点是,使用`SET`命令将`aq_tm_processes`设为0会导致Oracle关闭相关进程,这与默认0有所不同。默认0允许Oracle在需要时启动这些进程,而手动设置为0则禁止了这种启动。因此,如果希望恢复到默认的、允许进程启动的状态,不应使用`SET aq_tm_processes = 0`,而应使用`RESET`命令。 例如,要恢复`aq_tm_processes`到默认值,对实例`jy1`执行以下操作: ```sql alter system reset aq_tm_processes scope=both sid='jy1'; ``` 这会清除实例级别的设置,让全局配置生效,使得`aq_tm_processes`可以根据需要启动或关闭q00小工进程。 总结来说,理解`SET`和`RESET`命令的区别对于有效管理Oracle数据库参数至关重要。`SET`用于临时或永久地更改参数值,而`RESET`则用于撤销所有实例级别的设置,恢复到全局默认值。在处理RAC环境时,尤其要注意实例级别的设置,因为它们可能覆盖全局设置,并可能导致预期之外的行为。正确理解和使用这些命令,可以确保数据库参数的管理和维护更加精确和高效。
- 粉丝: 4
- 资源: 942
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0