암호화function 을 사용하여 insert해야 합니다
컬럼을 읽지못하고 오로지 데이터만 읽어서
Fn.get(컬럼) --> 안됨
Fn.ger('1234567891234') --> 됨
커서로 SELECT 'INSERT INTO 를 만들어서 르로시져로 돌렸는데
속도가 너무 느리네요
BULK로도 해봤지만
FOR CURSOR_C IN(SELECT .......)
LOOP
BEGIN
SQLI := 'INSERT '|| CURSOR_C.TT
COMMIT;
.
.
.
이거랑 속도 차이가 없는데 제가 코딩을 잘 못한건지
전체 건수는 5백만건정도인데 분당 900건정도 들어갑니다
방법이 없을까요....
데이터를 넣는 계정(select 하는 테이블을 소유한 계정)과 암호화 함수(fn)의 소유계정이 서로 다른계정인가요?
만약 그렇다면 암호화 함수 소유 계정에 데이터를 select하는 계정의 테이블(fn.get(컬럼)을 하는 테이블)을 select할 수 있도록 권한을 부여해 보십시오.
fn.get(컬럼명)이 가능해질 것으로 보입니다.
질문자님처럼 데이터를 넣을 때 다이나믹 sql을 사용하게 되면, 500만개의 insert 문이 생기므로 성능이 나빠지게 됩니다.
우선 앞서 설명처럼 컬럼을 조회할 수 있도록 권한을 부여하고
insert into 입력테이블(컬럼명) select fn.get(컬럼명) from 조회테이블;
이렇게 입력해 보시기 바랍니다.
가능하다면 해당 테이블의 인덱스를 제거하고, 테이블을 nologging 모드로 바꾼 뒤에 넣으면 더 효율적입니다.