Title |
[ORACLE] longraw 타입의 컬럼(비암호화 컬럼)의 데이터가 null인 현상 발생 | Product |
Plug-In |
---|---|---|---|
Phenomenon |
테이블 암호화 후, longraw 타입의 컬럼(비암호화 컬럼)의 데이터가 null인 현상 발생.
(Oracle 8.1.7.4.1) |
||
Cause |
암호화 적용 시, 사용자의 요청으로 longraw 컬럼타입을 blob으로 변경하지 않고,
insert into select 구문을 이용하여 수행. 이 과정에서 longraw 타입의 컬럼에 to_lob 함수를 사용. (to_lob 함수 미 사용 시 에러 발생.) 작업 과정 중에는 에러가 발생 하지 않지만, 암호화 결과 해당 컬럼의 데이터는 null. |
||
Solution |
insert into select 구문을 사용 하지 않고, procedure를 작성하여 insert into 를 이용하여 암호화 수행.
Sample Procedure : CREATE OR REPLACE procedure cubeone_enc is cursor cur_TEST006 is select * from test.TEST006; val_TEST006 test.TEST006%rowtype; begin open cur_TEST006; loop fetch cur_TEST006 into val_TEST006; exit when cur_TEST006%notfound; begin insert into test.TEST006# (CUST_NO, CUST_NAME, JUMIN_NO, ACCOUNT_NO, LONG_RAW_COL, /* long RAW type column */ PASSWD, REG_DATE, BONUS, COMM, GRADE_NO) VALUES (val_TEST006.CUST_NO, val_TEST006.CUST_NAME, xx1.enc_char_ins(val_TEST006.JUMIN_NO, 19,'AES','TEST006','JUMIN_NO'), val_TEST006.ACCOUNT_NO, val_TEST006.LONG_RAW_COL, val_TEST006.PASSWD, val_TEST006.REG_DATE, val_TEST006.BONUS, val_TEST006.COMM, val_TEST006.GRADE_NO); end; end loop; close cur_TEST006; commit; end; / |