web-dev-qa-db-ja.com

nls_instance_parametersでnls_languageを変更する方法

Oracle 12c(12.1.0.2.0)データベース

問題:NLS_LANGUAGENLS_TERRITORYNLS_INSTANCE_PARAMETERSを変更したい。セッション用に変更する方法は知っていますが、インスタンス用に変更する必要がありました。理由は、タイムスタンプが原因でストアドプロシージャスクリプトが正しく実行されなかったためです。私はこのエラーを受け取りました:

start_date=>TO_TIMESTAMP_TZ('12-MAY-2015 02.00.00.000000000 AM +05:30','DD-MON-RRRR HH.MI.SSXFF AM TZR','NLS_DATE_LANGUAGE=english'), repeat_interval=>
ORA-01855: E necessario AM/A.M. ou PM/P.M. 

理由:NLS_DATE_FORMATNLS_TIMESTAMP_FORMATは同じでした。 unset LANGunset NLS_LANGも試しました。これらすべてにもかかわらず、日付変換エラーがまだ発生しているため、すべてのビューでNLS関連のすべてのパラメーターを同じ値に更新することにしました。データベース(nls_database_parameters)とセッション(nls_session_parameters)は同じNLS_LANGUAGEを示していましたが、インスタンス(nls_instance_parameters)はそうではありませんでした。

解決策:これを修正するには、init<db>.oraspfiles<db>.oraを更新する必要がありました。バーレソンコンサルティングの website を除いて、これが明示的に指定されているのを実際には確認できなかったため、私の発見をここに置いて、同じ問題を持つ他の人を助けるために。

NLS_LANGUAGENLS_TERRITORYNLS_INSTANCE_PARAMETERSを更新してデータベースを再起動すると、問題が解決しました。

何らかの理由で正常に再起動できなかったため、強制的に再起動する必要がありました。

1
user1747935

これを更新する方法の例:

[Oracle@mydbserver dbs]$ unset LANG
[Oracle@mydbserver dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 27 13:18:26 2017
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> SELECT sys_context('userenv','language') from dual;

SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
BRAZILIAN PORTUGUESE_BRAZIL.AL32UTF8

SQL> quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

[Oracle@mydbserver dbs]$ unset NLS_LANG
[Oracle@mydbserver dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 27 13:18:51 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> SELECT sys_context('userenv','language') from dual;

SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
BRAZILIAN PORTUGUESE_BRAZIL.AL32UTF8

SQL> quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

ここで、initとspfileを編集しました。

[Oracle@mydbserver dbs]$ ls
hc_scpp.dat  init.ora  initscpp.ora  lkSCPP  orapwmydb  spfilemydb.ora  teste.ora

initscpp.oraとspfilemydb.oraをNLSパラメータに必要な値で編集してから、再起動に進みました

[Oracle@mydbserver dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 27 13:25:30 2017
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> shutdown
^CORA-01013: o usuario solicitou o cancelamento da operac?o atual

シャットダウンが遅いので[ctrl+c]強制的に再起動してから、通常どおり再起動しようとしました!!

SQL> startup force
Oracle instance started.

Total System Global Area 2,0724E+10 bytes
Fixed Size                  3158000 bytes
Variable Size            3070230544 bytes
Database Buffers         1,7645E+10 bytes
Redo Buffers                5230592 bytes
Database mounted.
Database opened.
SQL> shutdown
Database closed.
Database dismounted.
Oracle instance shut down.
SQL> startup
Oracle instance started.

Total System Global Area 2.0724E+10 bytes
Fixed Size                  3158000 bytes
Variable Size            3070230544 bytes
Database Buffers         1.7645E+10 bytes
Redo Buffers                5230592 bytes
Database mounted.
Database opened.
SQL> quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[Oracle@mydbserver dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 27 13:31:17 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>  SELECT sys_context('userenv','language') from dual;

SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

SQL> quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
0
user1747935