대량의 데이터 암호화 시 빠르고 안전한 방법 추천 부탁 드립니다. 0 3 2,563

by NExT맨 [2012.12.31 17:28:50]


안녕하세요. 
우선 새해 복 많이 받으세요.

다름 아니라 한 테이블에 약 1000만건의 데이터가 있는데 이 중 주민번호가 있는 컬럼의 데이터를 UPDATE 문으로 모두 암호화 하려고 합니다.

문제는 일부(약 50000개) 데이터만 개발 DB로 가져와서 테스트를 수행하였는데 약 30분 가량 소요되었습니다.

그냥 UPDATE 쿼리문으로요. 

산술적으로 이 정도면 100시간이 소요된다는건데 이를 적어도 12시간 미만으로 단축하여 해결할 수 있는 방안이 있는지 정말로
궁급합니다.


by 손님 [2013.01.02 08:29:50]
그정도 알걸릴것 같은데..
정말 그러면 미리 암호화를 해놓으세요. 그리고 조인후 업데이트 하면 좀더 단축할 수 있지 않을까요?

by 손님 [2013.01.02 09:32:32]
DECLARE
  CURSOR CS IS
    SELECT JUNO
       ,ROWID RID
     FROM TABL;
  TYPE CS_TAB  IS TABLE OF CS%ROWTYPE INDEX BY PLS_INTEGER;
  TYPE JUNO_TAB IS TABLE OF TABL.JUNO%TYPE INDEX BY PLS_INTEGER;
  TYPE RID_TAB IS TABLE OF ROWID INDEX BY PLS_INTEGER;
  CS_T  CS_TAB;
  JUNO  JUNO_TAB;
  RID   RID_TAB;
BEGIN
  OPEN CS;
  LOOP
    FETCH CS BULK COLLECT INTO CS_T LIMIT 10000; -- 한번에처리할 ROW수
    EXIT WHEN CS_T.COUNT = 0;
    JUNO.DELETE;
    RID.DELETE;
    FOR I IN 1..CS_T.COUNT
    LOOP
      -- CS_T(I).JUNO를이용 암호화 처리
      JUNO(I) := 암호결과;
      RID(I) := CS_T(I).RID;
    END LOOP;
    FORALL I IN 1..JUNO.COUNT
      UPDATE TABL SET JUNO = JUNO(I) WHERE ROWID = RID(I);
    COMMIT;
  END LOOP;
  CLOSE CS;
END;

by NExT맨 [2013.01.02 17:05:03]
답변 감사 드립니다.
올려주신 쿼리문 참조해 보겠습니다.

좋은 하루 되세요*^^*
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입