Temos um servidor de banco de dados usado para desenvolvimento que possui centenas de instâncias de banco de dados para diferentes ramificações/compilações de nosso aplicativo. E precisávamos de uma instância especial NLS_CALENDAR='Thai Buddha'
para testar um bug específico.
Criamos um banco de dados e incluímos NLS_CALENDAR='Thai Buddha'
a configuração em init.ora
. No entanto, ainda obtemos 'GREGORIAN'
for NLS_CALENDAR
, pois as variáveis de ambiente substituem a configuração em init.ora
.
NLS_CALENDAR
valor é definido da seguinte forma:
NLS_SESSION_PARAMETERS: 'GREGORIAN'
NLS_INSTANCE_PARAMETERS: 'Thai Buddha'
NLS_DATABASE_PARAMETERS: 'GREGORIAN'
ALTER SESSION
não é uma opção porque então temos que modificar nosso código de aplicativo para emitir um ALTER SESSION
sempre que um usuário fizer login (isso não é possível porque temos vários clientes já implantados em várias máquinas). Modificar a configuração do ambiente também não é uma opção porque há outras instâncias de banco de dados em execução no mesmo host.
Eu tentei ALTER SYSTEM
, mas dá o seguinte erro oracle:
ORA-02096: o parâmetro de inicialização especificado não é modificável com esta opção
Como podemos fazer uma única instância de banco de dados ignorar a configuração do ambiente? Ou existe alguma outra maneira de tornar nossa instância padrão 'Thai Buddha'
quando se trata de NLS_CALENDAR
configuração?
A documentação descreve claramente a precedência para configurações NLS: http://docs.oracle.com/cd/E11882_01/server.112/e10729/ch3globenv.htm#NLSPG188
Você pode escolher os dois primeiros destes. Um gatilho de logon também pode emitir o
ALTER SESSION
, e você não precisa modificar o código do aplicativo para isso:Verifique a configuração para SCOTT e outro usuário: