- - PR -
暗号化したデータの存在するテーブルのインポート、エクスポート
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2007-06-06 16:49
>×複合化
>○復号化 あらら…、お恥ずかしい。 未記人さん、ご指摘ありがとうございます。 |
|
投稿日時: 2007-06-07 16:01
SJISのシングルバイト文字としてありえない領域[0x81..0x9F]|[0xE0..0xFF]が
切捨てられるようです。 SQL> create table a (a varchar2(10)); 表が作成されました。 SQL> insert into a values (chr(147)); 1行が作成されました。 SQL> select * from a; ERROR: ORA-29275: 不完全なマルチバイト文字です 上の例で簡単に不適切か判断できますが expの段階ではちゃんと格納されています。 CTASしても問題なくコピーされます。 imp側で切り捨てしているので、あとはサポートに行きかな? |
|
投稿日時: 2007-06-07 16:30
9.2 くらいから、マルチバイト文字の片割れのようなデータを切り捨てるように
仕様が変わってます。 で、詳しくは書けませんが不具合ではないという扱いのようです(切り捨ての 仕様のからみで)。 暗号化したデータを一旦 RAW とかのバイナリ型データとしてデータベースに 持たせてから exp で抜き出すか、そのデータだけ別途持ってくる、みたいな 方法で回避するしか無さそうです。 _________________ もしもし@RMAN 友の会 [ メッセージ編集済み 編集者: もしもし 編集日時 2007-06-07 16:31 ] |
|
投稿日時: 2007-06-08 10:42
返信が遅くなってしまいすいません。
Tetraさん、もしもしさん、ありがとうございます。 >9.2 くらいから、マルチバイト文字の片割れのようなデータを切り捨てるように >仕様が変わってます。 Oracleクライアントのバージョンによって動作が異なったのは、こういう事だった のですね。納得です。 >暗号化したデータを一旦 RAW とかのバイナリ型データとしてデータベースに >持たせてから exp で抜き出すか、そのデータだけ別途持ってくる、みたいな >方法で回避するしか無さそうです。 UTL_RAW.CAST_TO_RAWでバイナリ型データとして保存しなおし、exp/impしたところ オラクル9iクライアント環境下でも正常に処理できました。 >3DES の結果は通常バイナリ これからは、最初からRAWやBLOB型で保存するような設計にします。 Tetraさん、色々と検証して下さりありがとうございました。 知恵を貸してくださった皆様、本当にありがとうございました。 |
