我是一名开发人员,在一个应用程序团队中工作,该团队支持一个具有一个生产数据库和4个测试数据库的系统(2个Dev,一个SIT和UAT环境)。
prod数据库存在于它自己的Unix服务器上,4个测试数据库都位于不同的Unix服务器上。由于各种原因,这些年来,这6个数据库在初始化参数方面变得非常不同步。对V$Parameter表的快速比较可以发现一些关键设置差异,这些差异导致了我们的应用程序团队问题,需要加以纠正。
我现在正与我们的DBA团队合作,试图纠正它们,但这是一个大型企业,过程是痛苦的。我希望找到一种方法,使这些参数更好地与共享同一服务器的数据库保持一致。
有办法让多个数据库共享一个参数文件吗?我查看了一些文档,并看到了用于RAC设置的一些引用,但是这些数据库不是集群的,而是彼此的副本。我知道某些参数(比如SID和db_name )需要是唯一的,但是我想知道像global_names和resource_limit这样的公共设置是否可以被集中化?
注意,我目前正在使用11G,但我们计划在一个月内升级到12。
发布于 2016-05-25 18:14:44
不,您必须为每个数据库使用单独的参数文件/spfiles。正如您已经指出的,您需要一些不同的设置(文件位置、数据库名称等)。在许多环境中,您可能希望以不同的方式调整内存和其他性能设置,因为开发环境通常没有生产环境那么多RAM。
但是,即使您可以共享一个参数文件,您也不希望共享参数文件。更改参数应该涉及一些开发和测试,就像更改代码一样。因此,您可能希望在dev中进行更改,验证它,并像代码更改一样将其提升。如果您共享一个参数文件,则必须同时在所有环境中进行更改,这在某种程度上违背了拥有多个环境的目的。如果您在dev中做了一个不起作用的更改,那么您就需要备份它,就像您会退出代码更改一样。
当然,您可以对生产参数文件进行备份,并将其复制到底层环境所需的任何更改中。您可以使用您今天使用的任何机制来管理代码部署(我假设有某种源代码控制系统和构建过程)来对这些参数文件进行版本化和部署,以便您知道这些参数文件的区别和原因(也就是说,开发人员通常使用较低的memory_target,因为开发人员已经将global_names设置为true,因为您正在为项目X测试这些文件,但还没有推广到生产)。
发布于 2016-05-25 17:58:02
通常,我们对每个数据库都使用不同的spfile。即使spfile是二进制文件,也可以使用字符串命令提取spfile中的设置。您还可以比较从一个数据库到另一个数据库的文件以寻找差异。在我看来,根本的问题是变革管理问题。您应该有一个可以工作的配置,并使每个数据库使用相同的配置。
https://dba.stackexchange.com/questions/139527
复制相似问题