1

特定のコードに問題があり、根本的な原因はセッション レベルでの NLS_NUMERIC_CHARACTERS 設定であることが判明しました。

データベースで直接クエリを実行すると:

SQL> select 'nls_database_parameters' , p.* from nls_database_parameters p where PARAMETER = 'NLS_NUMERIC_CHARACTERS'
  2  union all
  3  select 'nls_session_parameters', p.* from nls_session_parameters p where PARAMETER = 'NLS_NUMERIC_CHARACTERS'
  4  union all
  5  select 'nls_instance_parameters', p.* from nls_instance_parameters p where PARAMETER = 'NLS_NUMERIC_CHARACTERS';
'NLS_DATABASE_PARAMETERS' PARAMETER                VALUE
------------------------- ------------------------ -----
nls_database_parameters   NLS_NUMERIC_CHARACTERS   .,
nls_session_parameters    NLS_NUMERIC_CHARACTERS   .,
nls_instance_parameters   NLS_NUMERIC_CHARACTERS   .,

しかし、weblogic データソースからこの同じクエリを実行すると

select 'nls_database_parameters' , p.* from nls_database_parameters p where PARAMETER = 'NLS_NUMERIC_CHARACTERS'
union all
select 'nls_session_parameters', p.* from nls_session_parameters p where PARAMETER = 'NLS_NUMERIC_CHARACTERS'
union all
select 'nls_instance_parameters', p.* from nls_instance_parameters p where PARAMETER = 'NLS_NUMERIC_CHARACTERS';

--  'NLS_DATABASE_PARAMETERS',  PARAMETER,  VALUE
1   nls_database_parameters NLS_NUMERIC_CHARACTERS  .,
2   nls_session_parameters  NLS_NUMERIC_CHARACTERS  , 
3   nls_instance_parameters NLS_NUMERIC_CHARACTERS  .,

セッション値が間違っていて、weblogic データソース経由でアクセスしたときに何らかのトリガー/スクリプトによってリセットされています。weblogic スタートアップ スクリプトなどをチェックして、どこかでリセットするかどうかを確認しましたが、助けはありませんでした。

誰かが同様の問題に直面した場合、この方向の指針/アイデアは大歓迎です。

4

2 に答える 2

3

これが明示的に設定されている可能性は低いです。JVM の初期化に使用されるuser.languageとの値の結果として、暗黙的に設定されていることに賭けたいと思います。user.countryWebLogic がデフォルトでこれらをどのように取得するかは正確にはわかりませんが、サーバーのロケールはコンマが小数点記号であるロケールに設定されていると思います。

startWebLogic スクリプトで言語と国を設定することにより、デフォルトの WebLogic 設定をオーバーライドできるはずです。

set JAVA_OPTIONS=%JAVA_OPTIONS% -Duser.language=en -Duser.country=US

もちろん、それは他のものにも影響を与える可能性があります (たとえば、エラー メッセージの言語)。

于 2016-01-26T23:43:40.040 に答える