- PR -

定数をselectしたときの文字サイズ

1
投稿者投稿内容
キラ
会議室デビュー日: 2004/02/26
投稿数: 7
お住まい・勤務地: 山奥
投稿日時: 2004-08-27 17:18

現在顧客向けの会員管理システムを作っているのですが
SQLで詰まっています。


定数項目を次のようにselectしたときに

SELECT '1' FROM test

resultSetに入る文字サイズが
あるoracleインスタンス(環境A)では1バイト、
別のインスタンス(環境B)では32バイトとなりました。
取れた項目を出してみると環境Bでは
1の後に半角スペースが31個ついています。

なぜこのような違いが出るのか分かりません。


ためしに環境Bの方でtrim関数をかけてみると
resultSetに入る文字サイズは1バイトとなりました。

SELECT trim('1') FROM test


SQLはJavaのJDBC経由で
同じサーバーの同じOracleに同じプログラムから
同じSQL文を別のoracleインスタンスに対して発行しています。
それらの設定に違いがあると思い、両環境でshow parameterして
それをdiffした結果は以下の通りです。


環境B> <環境A
< circuits integer 21
> circuits integer 27
< cursor_sharing string EXACT
< cursor_space_for_time boolean FALSE
> cursor_sharing string SIMILAR
> cursor_space_for_time boolean TRUE
< db_block_size integer 4096
> db_block_size integer 8192
< db_cache_size big integer 4194304
> db_cache_size big integer 16777216
< db_file_multiblock_read_count integer 8
> db_file_multiblock_read_count integer 10
< dispatchers string (PROTOCOL=TCP)(SER=MODOSE), (P
< distributed_transactions integer 5
< dml_locks integer 92
> dispatchers string (PROTOCOL=TCP)(SER=MODOSE)
> distributed_transactions integer 7
> dml_locks integer 116
< enqueue_resources integer 312
> enqueue_resources integer 336
< hash_area_size integer 1048576
> hash_area_size integer 131072
< large_pool_size string 1048576
> large_pool_size string 4194304
< log_buffer integer 524288
> log_buffer integer 1048576
< max_dispatchers integer 4
> max_dispatchers integer 3
< max_shared_servers integer 15
> max_shared_servers integer 1
< mts_circuits integer 21
< mts_dispatchers string (PROTOCOL=TCP)(SER=MODOSE), (P
> mts_circuits integer 27
> mts_dispatchers string (PROTOCOL=TCP)(SER=MODOSE)
< mts_max_dispatchers integer 4
> mts_max_dispatchers integer 3
< mts_max_servers integer 15
> mts_max_servers integer 1
< mts_sessions integer 16
> mts_sessions integer 22
< pga_aggregate_target big integer 0
> pga_aggregate_target big integer 16777216
< processes integer 15
> processes integer 20
< sessions integer 21
> sessions integer 27
< sga_max_size big integer 25985940
> sga_max_size big integer 43287524
< shared_pool_reserved_size big integer 209715
> shared_pool_size big integer 8388608
< shared_pool_size big integer 4194304
> shared_server_sessions integer 22
< shared_server_sessions integer 16
> shared_pool_reserved_size big integer 419430
< sort_area_size integer 524288
> sort_area_size integer 65536
< timed_statistics boolean TRUE
> timed_statistics boolean FALSE
< transactions integer 23
> transactions integer 29
< workarea_size_policy string MANUAL
> workarea_size_policy string AUTO


この現象について何かご存知の方、いらっしゃいましたら
ご意見よろしくお願いします。




キラ
会議室デビュー日: 2004/02/26
投稿数: 7
お住まい・勤務地: 山奥
投稿日時: 2004-08-30 13:56
自己レスです。

オラクルサポートセンター
http://support.oracle.co.jp/
に「cursor_sharing=forceまたはsimilarの場合、JDBC-Thinドライバでリテラルにスペース文字が付加される」という不具合が報告されていました
文章番号(76146)(ライセンス契約により内容の転載を取りやめます。)

とのことでした。
参照していただいた方、ありがとうございます。

[ メッセージ編集済み 編集者: キラ 編集日時 2004-08-30 15:48 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-30 15:24
上の投稿に、契約者のみ公開である情報が含まれていたため、編集をお願いしました。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-08-30 18:00 ]
1

スキルアップ/キャリアアップ(JOB@IT)