データベースの文字セット(内)とクライアントの文字セット(クライアント環境設定)がどのように相互作用するかを知っています。NLS_CHARACTERSET
select * from v$nls_parameters;
NLS_LANG
しかし、私が見つけることができないのは、確立されたセッションについて、現在のクライアントの文字セットがOracleでどのように考えられているかをどのようにして判断できるかです。
これはまったく可能ですか?
注:(10g2の)文字セットは含まれSELECT * FROM NLS_SESSION_PARAMETERS;
ません。
私が達成したいことを完全に明確にするために:
- NLS_LANGはクライアント環境で任意の値に設定されます(たとえば
GERMAN_GERMANY.WE8MSWIN1252
) - データベースアプリケーション[*]が起動し、Oracleデータベースへの接続/セッションを確立します。
- データベースアプリケーション[*]は、クライアントの文字セットがOracleが想定するものを(OS環境ではなく)Oracleに「質問」します。
[*]:dbアプリケーションがsqlplusの場合、例は次のようになります。
...
sqlplus /nolog
connect user/pass@example
*magic command*;
CLIENT CHARACTERSET = ...
ジャックの彼の答えのメモは、2つの重要なポイントを提起します。
- Oracleでは、誰が文字セットの変換を行いますか。それはクライアントライブラリコードですか、それともサーバー側で行われますか?
- それがクライアントであるように見えるので、クライアントはこの設定を公開する必要があります-クライアントlib / toolがこの設定を想定しているもの。この設定の内容を照会できるOracleクライアントlibs / tools(sqlplus、OCI / OCCI、Pro * Cなど)はありますか?