오라버니와 맞춰서 부산에 가서 놀았는데.. ㅋㅋ
거가대교에 안가봤다고.. 낭군과 날 끌고.. 거기 갔는데..
사진이 하나도 없음.
날은 좋았는데... 귀찮고... ㅋㅋ
지하터널이라고 해도.. 바다속이 보이지 않으니.. 그냥 땅속 터널과 다를바가 없고.. ㅋㅋㅋ
통행료는 비싸고.. ;;
꿈틀이가 나오면 어디 다니기 힘드니.. 최대한 다닐려고는 하는데.. 만사가 귀찮아지는.. ㅠㅠ
그렇게해서 건너간 거제도에 축제를 한다고 해서... 가봤는데..
그냥 시골 축제인듯한... 주차공간도 없고.. 사람 무지 많고..
땅은 질퍽거리고... 머.. 크게 볼껀 없던.. ㅋㅋ
그래도 입장료 다 받았던.. 축제.. ㅋㅋ

이제 연세든게 확 표시 나는 울 아빠.. ;;
그래도 장난끼는 여전.. ;; 울 아빠.. 장남이신데.. ㅋㅋ

박이 주렁주렁... 희안하게 생긴거도 있고.. ㅋㅋ
그렇게 한바퀴 돌면서 놀다가 집으로 돌아갔던 여행 아닌 산책길.. ㅋㅋ

'Story > Trip' 카테고리의 다른 글

휴가라고 해야할까나?  (0) 2013.08.11
통일전망대  (0) 2012.08.20
경기 물향기수목원  (0) 2011.10.29
지하철로 남이섬 여행  (0) 2011.03.05
휴식이 필요해~  (0) 2010.08.07


오라버니 차도 뺐었겠다.. ㅋㅋ
새차 같은 중고차가 생긴 관계로..
주말에 못가 본 마실을 가고 싶은데.. 그렇게 찾아봐도 딱히 갈만한 곳이..
현재 꿈틀도 있고.. ;; 멀리 가긴 부담스럽고..

찾아간 곳이 근처 수목원..
입장료 완전 쌈.. 천넌이였던가? ㅋㅋ


낭군은 여기서 같이 찍어 볼꺼라고.. 카메라 세워두고.. 열나 뛰어서 왔음
한.. 4번 뛰었나? ㅋㅋㅋ 더는 못하겠다고.. 대충하자며.. 크크


결국 더 가까운 각도 바로 앞을 찾아서 한큐에 해결.. ㅋㅋ
몇번 더 시켰어야 했는데.. 크크


점심 때쯤 갔는데.. 여긴 먹을 곳이 근처에 없어서 이마트에서 김밥이며, 비빔밥등 먹을꺼 사와서..
차안에서 허겁지겁 먹고 돌기 시작했음.. ㅋㅋ


크게 볼꺼라고 할껀 없는데..
그냥 산책삼아서 천천히 돌면.. 두어시간 여기저기 돌아다니면 됨


날씨가 좀 쌀쌀해서 춥긴했는데.. 바람만 쐬고 들어옴 ㅋㅋ

'Story > Trip' 카테고리의 다른 글

통일전망대  (0) 2012.08.20
거제섬꽃축제  (0) 2011.11.05
지하철로 남이섬 여행  (0) 2011.03.05
휴식이 필요해~  (0) 2010.08.07
[부산-태종대] 여기는 태종대~  (0) 2010.05.22

가끔... 꿈틀이가 생기고도 그다지 먹고 싶은건 없는데..
아주 가끔 집에서 먹는 밥 말고.. 먹고싶은게 한가지씩 있는데..
오늘은 김치찜.. 어케.. 매운거만 땡기는지.. ㅋㅋ

결국 퇴근하고 사당가서 김치찜 먹음.. ;;
식당은 지하의 고기집 같은데.. 맛은 괜찮았음. ㅋㅋㅋ

'Story > Diary' 카테고리의 다른 글

[홍대 카페] 피오니 (Peony) - 수제 딸기 케익 홍대 카페 피오니 (Peony)  (0) 2011.11.30
입사 기념 선물?  (0) 2011.11.21
결혼 1주년  (0) 2011.10.24
엔코아 DA# 툴 사용자 교육  (0) 2011.10.24
파이 만들기~  (0) 2011.10.22

1) WRAP 유틸리티
데이터베이스 조작 언어 중에 하나인 PL-SQL은 SQL언어가 가지지 못한 많은 장점들을 가지고 있습니다.
그럼에도 불구하고 가장 큰 단점은 소스 프로그램의 비효율적 관리 방법과 디스크에 남아 있는 소스 내용의 노출로 인해 보안에 지대한 문제점을 가지고 있다는 점입니다.
이와 같은 문제점을 보완하기 위해 오라클 사에서는 운영체계 상에서 작성된 PL-SQL의 소스 프로그램의 노출 방지를 위해 WRAP 유틸리티를 제공합니다.
먼저, 테스트할 프로시저를 생성하기 위한 스크립트를 작성하십시오.

### html
[C:\] EDIT  wrap_test.sql
 CREATE PROCEDURE wraptest
IS  TYPE emp_tab IS TABLE OF employees%ROWTYPE  INDEX BY PLS_INTEGER;
all_emps emp_tab;
BEGIN
        SELECT * BULK COLLECT INTO all_emps FROM employees;
        FOR i IN 1..10 LOOP
           DBMS_OUTPUT.PUT_LINE('Emp Id: ' || all_emps(i).employee_id); END
LOOP;
END;
 /
C:\> WRAP iname=wrap_test.sql  oname=wrap_test.plb

Input file에는 방금 생성한 스토어드 프로시저의 이름을 정의하시고 Output file에는 암호화하고자 하는 파일 이름을 정의해 주시면 됩니다.

다음은 HR 사용자 계정으로 접속하여 암호화된 파일을 이용하여 프로시저를 생성하고 실행하십시오.

### html
C:\> SQLPLUS  HR/HR
SQL> @wrap_test.plb 암호화된 파일을 실행하면 프로시저가 생성됩니다.
프로시저가 생성되었습니다.
SQL> SET SERVEROUTPUT ON
SQL> CALL WRAPTEST();생성된 프로시저를 실행합니다.
Emp Id: 198
……………..
Emp Id: 100 출력된 결과 호출이 완료되었습니다.

2) DBMS_DDL 패키지
앞서 소개 드린 WRAP 유틸리티는 디스크에 저장되어 있는 PL-SQL의 소소 프로그램을 암호화할 수 있다면 DBMS_DDL.CREATE_WRAPPED는 데이터베이스 내에서 생성되는 PL-SQL의 소스 프로그램을 암호화시킬 수 있는 방법입니다.

### html

SQL> CONNECT  SYSTEM/MANAGER
SQL> DECLARE
package_text VARCHAR2(32767);
FUNCTION generate_spec (pkgname VARCHAR2)
RETURN VARCHAR2 AS
BEGIN
        RETURN
'CREATE PACKAGE ' || pkgname || '
AS PROCEDURE raise_salary (emp_id NUMBER, amount
NUMBER); PROCEDURE fire_employee (emp_id NUMBER); END ' || pkgname || ';';
END generate_spec;
BEGIN  package_text := generate_spec('emp_actions');    
SYS.DBMS_DDL.CREATE_WRAPPED(package_text);
END;

? EMP_ACTIONS 패키지를 생성하면서 소스 프로그램을 DBMS_DDL.CREATE_WRAPPED로 암호화하는 방법입니다.

### html
(SQL) SELECT text FROM USER_SOURCE WHERE name = 'EMP_ACTIONS';
TEXT
---------------------------------------------------------------
PACKAGE emp_actions wrapped
a000000
1f


3) DBMS_CRYPTO 패키지
최근 사회적 이슈가 되고 있는 내용 중에 개인 정보의 유출로 인해 심각한 사회 문제가 되고 있는 것이 현실입니다.
이러한 문제를 해소하기 위해 오라클 사에서는 컬럼 단위와 블록 단위의 암호화 기능을 제공하고 있습니다.
다음 예제는 DBMS_CRYPTO 패키지를 이용하여 컬럼 단위의 암호화를 적용하는 예제입니다.

### html
SQL> CONNECT  /as sysdba           
SQL> DECLARE
       input_string VARCHAR2 (200) := 'Secret Message';
       output_string VARCHAR2 (200);
       encrypted_raw RAW (2000);           -- stores encrypted binary text
       decrypted_raw RAW (2000);           -- stores decrypted binary text
       num_key_bytes NUMBER := 256/8;      -- key length 256 bits (32 bytes)
       key_bytes_raw RAW (32);             -- stores 256-bit encryption key
       encryption_type PLS_INTEGER :=      -- total encryption type
DBMS_CRYPTO.ENCRYPT_AES256+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO
.PAD_PKCS5;
BEGIN
      DBMS_OUTPUT.PUT_LINE ( 'Original string: ' || input_string);
      key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);
      encrypted_raw := DBMS_CRYPTO.ENCRYPT (
            src => UTL_I18N.STRING_TO_RAW (input_string, 'AL32UTF8'),
                      typ => encryption_type, key => key_bytes_raw );
      decrypted_raw := DBMS_CRYPTO.DECRYPT (
 src => encrypted_raw, typ => encryption_type,
                       key => key_bytes_raw );
      output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');
      DBMS_OUTPUT.PUT_LINE ('Decrypted string: ' || output_string);
END;
/

+ Recent posts