Toad나 GOLDEN32를 사용하기 위해서는 오라클 클라이언트를 설치해야하는데 이걸 설치하고 GOLDEN32로 접속해서 쿼리를 날려서 검색하면 한글이 나와야 하는 부분이 ???로 나오게 됩니다.

사용자 삽입 이미지

원래 2008년 7월 12일 이라고 나와야하는데-_-; 안 나옵니다.
이게 서버쪽 케릭터셋이랑 클라이언트 케릭터셋이 안맞아서 그런데요. 서버는 한글이 된다면 KOREAN_KOREA.KO16KSC5601이걸로 되어있을껍니다-_-; 저도 오라클은 잘 모르지만 이게 맞는 것 같습니다.
그래서 클라이언트쪽에도 맞춰줘야합니다.

윈도우에 설치하셨다면 NLS_LANG을 추가하면 됩니다. 어디다가 하냐면 레지스트리에다가 합니다.
시작 -> 실행 -> regedit 실행

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
여기로 찾아가서 ORACLE에 오른쪽 버튼 누르고, 새로만들기 -> 문자열값 하고
NLS_LANG이라고 씁시다.
더블클릭해서 값을 KOREAN_KOREA.KO16KSC5601이라고 합시다.

시도는 안해봤는데 환경변수로 지정해도 될 듯 합니다.
NLS_LANG=KOREAN_KOREA.KO16KSC5601



사용자 삽입 이미지
오....한글이 나와요!!!!


 
Posted by 머드초보
,
 
오라클 10G R2부터 TDE라는 기능을 제공합니다.
(참고로 Enterprise 이상의 버전에서만 됩니다. Oracle XE를 설치했는데 안되서 삽질했었습니다-_-)

말그대로 Transparent(투명한) Database Encryption(데이터베이스 암호화) 입니다-_-;
투명하다는 얘기는 암호화가 투명하게 되었다는 얘기인데요.
암호화가 되어서 DATABASE에 저장이 되지만, 암호화가 됐는지 확인 하는 방법은 며느리도 모릅니다.
해당 계정의 사용자는 데이터를 다 볼 수 있어야하니깐요 ^^
데이터베이스를 도난당했을 때 해당계정의 비밀번호를 모르는 이상 데이터베이스를 확인 할 수 없는 것 같습니다.
즉, SQL Injection같이 Application 단에서 발생하는 해킹은....소용없다는 얘기죠.

장점이 있다면 어플리케이션을 변경하지 않아도, 데이터베이스를 암호화 할 수 있습니다.

어쨌든 암호화가 필요해서 체험해봤습니다.
우선 ORACLE 10g이 필요하죠.

전자지갑을 생성해야합니다.
cd $ORACLE_HOME/network/admin
sqlnet.ora파일을 편집해서 아래와 같은 내용을 넣습니다.
ENCRYPTION_WALLET_LOCATION=
  (SOURCE=(METHOD=FILE)(METHOD_DATA=
   (DIRECTORY=/export/home/oracle/oracle/product/10.2.0/db_2/)))

전자지갑 저장소를 설정하는 듯하네요.

이제 오라클에 접속해봅시다.
-bash-3.00$ sqlplus /nolog

SQL*Plus: Release 10.2.0.2.0 - Production on Wed Jul 16 16:57:08 2008

Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.

SQL> connect / as sysdba
Connected.
SQL> alter system set key identified by "welcome1";

System altered.

SQL>

이게 마스터키를 생성하는 부분인데요. 마스터키는 단 한번만 생성되어야 한다고 합니다. 다시 생성하게 되면 기존에 암호화 되어있던 데이터를 다시 암호화 해야한다는군요. 무슨 얘기지-_-;

저거대로 따라할라니까 힘들어서-_-; 그냥 insert해서 로그에 안찍히는 것만 보여주도록 해봅시다-_-;
Oracle LogMiner라는 놈을 이용해서 로그를 볼 수 있는데 이놈은 암호화된 데이터를 지원하지 않습니다. 그래서 암호화된 데이터는 보여지지가 않습니다.

테이블을 생성해봅시다.

connect oe/oe
create table cust_payment_info 
(first_name varchar2(11),
last_name varchar2(10),
order_number number(5),
credit_card_number varchar2(16) ENCRYPT NO SALT,
active_card varchar2(3));

Table created.
자세히 보면 credit_card_number 부분에만 ENCRYPT NO SALT라는 것을 적용했네요.
이렇게 해버리면 테이블 구조만 바꾸면서 암호화를 할 수 있습니다. 이미 만들어진 어플리케이션은 손대지 않아도 됩니다. 8i에서 제공하는 방법이 찾아보니까 있었는데 그건 키테이블을 따로 만들어서 데이터를 암호화시킨 상태에서 저장해버립니다. 나중에 데이터를 가져올 때 복호화 하고 그런식으로 하더라구요. 그거나 이거나 암호화해서 저장되는 법은 똑같습니다.

데이터를 insert해봅시다.
예제에는 조낸 많이 삽입하는데 조낸 귀찮으니까 1개만 삽입해봅시다-_-;
SQL> insert into cust_payment_info values
  2    ('Jon', 'Oldfield', 10001, '5446959708812985','YES');

1 row created.

SQL>

또 예제에서는 뭔가 삽질을 하는데 귀찮으니까 바로 로그확인에 들어갑시다-_-;
oradata에 있는 redo01~3으로 설정해주어야합니다.
SQL> connect / as sysdba;
Connected.
SQL> alter database add supplemental log data;

Database altered.

SQL> REM select member as LOG_FILE_LOCATION from v$logfile;
SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE ('/export/home/oracle/oradata/orcl/redo03.log', DBMS_LOGMNR.NEW);

PL/SQL procedure successfully completed.

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE ('/export/home/oracle/oradata/orcl/redo02.log', DBMS_LOGMNR.ADDFILE);

PL/SQL procedure successfully completed.

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE ('/export/home/oracle/oradata/orcl/redo01.log', DBMS_LOGMNR.ADDFILE);

PL/SQL procedure successfully completed.

SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR (options => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.COMMITTED_DATA_ONLY);

PL/SQL procedure successfully completed.

SQL> select sql_redo from v$logmnr_contents where
  2  table_name = 'CUST_PAYMENT_INFO' and operation='INSERT';

SQL_REDO
--------------------------------------------------------------------------------
insert into "OE"."CUST_PAYMENT_INFO"("FIRST_NAME","LAST_NAME","ORDER_NUMBER","CR
EDIT_CARD_NUMBER","ACTIVE_CARD") values ('Jon','Oldfield','10001',Unsupported Ty
pe,'YES');


SQL>

결과에 암호화된 칼럼은 Unsupported Type이라고 뜨는군요.
잘은 모르지만 암호화가 된 듯 합니다.

암튼 손쉽게 암호화 할 수 있게 해놨군요.
어플리케이션에 손대지 않는 방법을 찾다가 이짓까지 삽질해보는군요.
 
Posted by 머드초보
,
 
오라클의 TDE기능을 체험하기 위해-_-; 마땅한 테스트 서버도 없고 해서 솔라리스를 설치해서 오라클을 설치해봤습니다.
2번만에 성공했습니다.

http://www.solanara.net/
여기는 윈디하나의 솔라나라인데, 여기에 너무 정리를 잘 해놔서 설치하는데 무리가 없었습니다.

저는 1번 실패하게 된 것이 SWAP공간이 없어서 실패를 했습니다.
swap공간은 이 분 블로그를 보고 참조했습니다.
http://akmamb.tistory.com/108

그 설치할 때 패키지가 있는지, 공간이 있는지 검사하는 부분이 있는데 저는 swap공간 부족과 SUNWi1cs랑 SUNWi15cs패키지가 없어서 경고를 먹었는데 두개 패키지는 설치하고 swap공간은 그냥 생까고 진행했더니 아놔 안되려면 처음부터 안되던가-_-; 설치하다가 데이터베이스를 생성하는 도중에 메모리가 딸리다면서 안됩니다-_-;

swap공간 늘리고 설치하면 완전 잘돼요 ^^

그리고, 또 걸렸던 것이!
서버 시작과 동시에 자동으로 실행되게 하려고 했는데 $ORACLE_HOME/bin/dbstart 스크립트가 안먹히는 겁니다-_-; 그래서 또 검색해보니-_-;
/var/opt/oracle/oratab 파일이 있는데, 이 놈의 맨 끝이 N으로 되어있습니다.
orcl:/export/home/oracle/oracle/product/10.2.0/db_2:Y

이걸 Y로 바꿔주니 rc3.d에 등록하니 잘 되더라구요.

실행스크립트는 그냥 이렇게-_-;
#!/bin/sh

case "$1" in
        start)
                echo -n "Starting oracle: "
                su - oracle dbstart /export/home/oracle/oracle/product/10.2.0/db_2
                echo
                ;;
        stop)
                echo -n "Shutting down oracle: "
                su - oracle dbshut /export/home/oracle/oracle/product/10.2.0/db_2
                echo
                ;;
esac
exit 0 

참고로 ORACLE_HOME이 oracle계정에 선언이 되어야겠죠? ORACLE_SID 등도 설정 되어야할 겁니다.
그건 윈디하나의 솔라나라에서 보고 따라하시면 돼요 ^^


PS. 윈디하나의 솔라나라에 좋은 자료가 많군요! 앞으로 자주 애용해야겠습니다 ^^

 
Posted by 머드초보
,
 
VirtualBox에 솔라리스를 설치해봤습니다.
한 3번만에 성공한 것 같습니다-_-;
우선 처음에 Open Solaris(오픈 솔라리스)를 설치를 했었습니다.
왠지 더 깔끔해지고, 더욱 진화한 놈인 듯 했습니다.
여기다가 오라클을 설치하려고 시도를 했습니다.
아놔...오라클설치하는 runInstaller라는 쉐이가 버전이 안맞아 라면서 설치 시도도 안해보고 뱉어냅니다.
Open Solaris는 SunOS 11로 인식합니다. 근데 오라클에서는 10을 요구합니다.

그래서 시도한 버전은 Solaris10 u5입니다. sol-10-u5-ga-x86-dvd.iso
우선 처음에 안됐던 것이....
제 컴이 꼬진 건지 아님 솔라리스가 미친 건지 잘 모르겠지만, 하드디스크를 잡을 때 동적으로 잡았더니 시스템 분석하다가 다운이 되버리더군요. 그래서 하드디스크를 정적으로 잡았더니 잘 되더라구요.

그렇게 3번 시도했더니 설치가 되더군요.
그리고, tomcat을 설치하고 제가 사용하는 웹애플리케이션을 설치하고 또 포트포워딩 하려니까 이건뭐 산너머 산이더라구요. 이건 여기 포스트에 정리를....-_-;
http://mudchobo.tomeii.com/tt/289

그리고 부팅할 때 등록하려고 했는데 init.d에다가 스크립트를 넣고, rc3.d에다가 스크립트를 하드링크 해야 하더라구요. 우분투는 자동으로 다 해주는데 이 솔라리스는 그런게 없는 듯 합니다.
그래서 스크립트를 왠지 만들기 귀찮아서-_-; README를 읽어보니 실행스크립트 start/stop 이렇게만 만들면 되는 듯해서 톰캣에 있는 catalina.sh를 그냥 바꿔서 썼더니 안되더라구요.
/var/svc/log/milestone-multi-user-server:default.log 이 로그 파일을 보라고 해서 보니까
뭔가 에러가 있는 것 같아서 직접 스크립트를 만드니까 되더라구요-_-

전 이렇게 만들었어요-_-;
JAVA_HOME=/usr/jdk/instances/jdk1.6.0;export JAVA_HOME
CATALINA_HOME=/usr/apache-tomcat-6.0.16;export CATALINA_HOME
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin;export PATH

case "$1" in
        start)
                echo -n "Starting tomcat: "
                $CATALINA_HOME/bin/catalina.sh start &
                echo
                ;;
        stop)
                echo -n "Shutting down tomcat: "
                $CATALINA_HOME/bin/catalina.sh stop &
                echo
                ;;
esac
exit 0 

뭐 어쨌든 저렇게 넣으면 잘 됩니다.
끌 때에는 rc0.d에다가 스크립트를 넣어주면 됩니다.
파일명 규칙이 있는데 시작할 때는 S or K이고 숫자 2자리넣고 init.d에 있는 스크립트 이름 그대로 사용하면 오케이! 이건 검색 고고싱-_-;
예를 들어 tomcat이면!
init.d/tomcat 스크립트파일 생성.
rc3.d/S99tomcat 시작 시 실행! rc0.d/K99tomcat 종료 시 실행! 이런 식으로!
사용자 삽입 이미지

스샷!


테스트 서버로 쓸만하군요. 같이 띄워도 그렇게 느린 건 모르겠군요 ^^
 
Posted by 머드초보
,
 
음....아저씨인지 잘 모르겠지만-_-;
공짜를 강조하기 위해서 대머리아저씨가 마들(모델)로 나선 것 같네요. 머리가 반짝반짝 빛나요!

우선 아까 undefined같은 문구가 나온 것 같은데-_-; 지금은 고쳐진 듯 하네요 ^^
SMS를 공짜로 보내주다니 정말 멋진 서비스입니다!

위자드웍스는 참 신기한 것을 많이 만드는 것 같네요.
위자드웍스 사장이 나이가 어리다던데 사실인가요? ^^
암튼 독특한 회사입니다 ^^

리뷰를 할 것이 뭐 별로 없네요. 그냥 사용법도 간단해요!
사용자 삽입 이미지
요 대머리아저씨가 랜덤으로 뭐라고 물어보는데 생까고 그냥 클릭하면 문자를 쓸 수 있는 공간이 나옵니다. 아...이공간에 랜덤으로 메세지가 나와요. 팥빙수가 나와서 그대로 보냈더니 팥빙수 사달라고 하는데 어쩌지-_-;

뭐 암튼 그냥 쓰고, 보낸 사람 받는 사람 쓰고, 보내면 됩니다.
이거 누구나 하는 생각이겠지만, 자주보내는 번호를 등록할 수 있었으면 좋겠네요.
그냥 번호를 치면 Suggest처럼? ^^
 
Posted by 머드초보
,