我们有一个用于开发的数据库服务器,它有数百个用于我们应用程序的不同分支/构建的数据库实例。我们需要一个特殊的实例NLS_CALENDAR='Thai Buddha'
来测试一个特定的错误。
我们已经建立了一个数据库并将NLS_CALENDAR='Thai Buddha'
设置包含在init.ora
. 但是,我们仍然得到'GREGORIAN'
for NLS_CALENDAR
,因为环境变量会覆盖init.ora
.
NLS_CALENDAR
值设置如下:
NLS_SESSION_PARAMETERS: 'GREGORIAN'
NLS_INSTANCE_PARAMETERS: 'Thai Buddha'
NLS_DATABASE_PARAMETERS: 'GREGORIAN'
ALTER SESSION
不是一个选项,因为那时我们必须修改我们的应用程序代码以ALTER SESSION
在用户登录时发出(这是不可能的,因为我们已经在不同的机器上部署了多个客户端)。修改环境设置也不是一种选择,因为在同一主机上运行着其他数据库实例。
我试过ALTER SYSTEM
了,但它给出了以下oracle错误:
ORA-02096: 指定的初始化参数不能用此选项修改
我们如何使单个数据库实例忽略环境设置?或者有没有其他方法可以让我们的实例在设置'Thai Buddha'
时默认为默认值NLS_CALENDAR
?
该文档清楚地描述了 NLS 设置的优先级:http: //docs.oracle.com/cd/E11882_01/server.112/e10729/ch3globenv.htm#NLSPG188
您可以从这些中选择前两个。登录触发器也可以发出
ALTER SESSION
,您无需为此修改应用程序代码:检查 SCOTT 和其他用户的设置: