블로그 이미지
좋은느낌/원철
이것저것 필요한 것을 모아보렵니다.. 방문해 주셔서 감사합니다..

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

    2009. 2. 24. 15:22 개발/JavaScript

    JAVA와 Javascript간에 Ajax로 통신을 하다 보니 인코딩상에 문제가 발생하는것을 알게 되었다.

    물론 encodeURIComponent 같은것을 이용했지만 특수문자등이 정확히 인코딩/디코딩 되지 않는 문제가 있었다.

    다음의 유틸을 사용하니깐 잘 되었다.

    /*
     문자열을 인코딩 할때 사용한다. 다음과 같이 디코딩 하여 사용한다.
     JAVA : URLEncoder.decode(str, "UTF-8")
     JS : decodeURL(str)
    */
    function encodeURL(str){
        var s0, i, s, u;
        s0 = "";                // encoded str
        for (i = 0; i < str.length; i++){   // scan the source
            s = str.charAt(i);
            u = str.charCodeAt(i);          // get unicode of the char
            if (s == " "){s0 += "+";}       // SP should be converted to "+"
            else {
                if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){       // check for escape
                    s0 = s0 + s;            // don't escape
                }
                else {                  // escape
                    if ((u >= 0x0) && (u <= 0x7f)){     // single byte format
                        s = "0"+u.toString(16);
                        s0 += "%"+ s.substr(s.length-2);
                    }
                    else if (u > 0x1fffff){     // quaternary byte format (extended)
                        s0 += "%" + (0xf0 + ((u & 0x1c0000) >> 18)).toString(16);
                        s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
                        s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
                        s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                    }
                    else if (u > 0x7ff){        // triple byte format
                        s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
                        s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
                        s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                    }
                    else {                      // double byte format
                        s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
                        s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                    }
                }
            }
        }
    

        return s0;

    }

    /* 문자열을 디코딩 할때 사용한다. 다음과 같이 인코딩 하여 사용한다. JAVA : URLEncoder.encode(str, "UTF-8") JS : encodeURL(str) */ function decodeURL(str) {     var s0, i, j, s, ss, u, n, f;     s0 = "";                // decoded str     for (i = 0; i < str.length; i++){   // scan the source str         s = str.charAt(i);         if (s == "+"){s0 += " ";}       // "+" should be changed to SP         else {             if (s != "%"){s0 += s;}     // add an unescaped char             else{               // escape sequence decoding                 u = 0;          // unicode of the character                 f = 1;          // escape flag, zero means end of this sequence                 while (true) {                     ss = "";        // local str to parse as int                         for (j = 0; j < 2; j++ ) {  // get two maximum hex characters for parse                             sss = str.charAt(++i);                             if (((sss >= "0") && (sss <= "9")) || ((sss >= "a") && (sss <= "f"))  || ((sss >= "A") && (sss <= "F"))) {                                 ss += sss;      // if hex, add the hex character                             } else {--i; break;}    // not a hex char., exit the loop                         }                     n = parseInt(ss, 16);           // parse the hex str as byte                     if (n <= 0x7f){u = n; f = 1;}   // single byte format                     if ((n >= 0xc0) && (n <= 0xdf)){u = n & 0x1f; f = 2;}   // double byte format                     if ((n >= 0xe0) && (n <= 0xef)){u = n & 0x0f; f = 3;}   // triple byte format                     if ((n >= 0xf0) && (n <= 0xf7)){u = n & 0x07; f = 4;}   // quaternary byte format (extended)                     if ((n >= 0x80) && (n <= 0xbf)){u = (u << 6) + (n & 0x3f); --f;}         // not a first, shift and add 6 lower bits                     if (f <= 1){break;}         // end of the utf byte sequence                     if (str.charAt(i + 1) == "%"){ i++ ;}                   // test for the next shift byte                     else {break;}                   // abnormal, format error                 }             s0 += String.fromCharCode(u);           // add the escaped character             }         }     }     return s0;

    }

    posted by 좋은느낌/원철
    2008. 12. 15. 20:39 개발/DB2

    DB관련

    스크립트 화일로 일괄 작업을 하자.


    ## DB2 시작과 종료.
    db2start
    db2stop force
    db2 get instance 현재 세션에 지정된 인스턴스를 보여준다.


    ## 화일 생성 create.tab
    --------------------------------
    connect to sample;

    create table tab3
    (naem varchar(20) not null,
    phone char(40),
    salary dec(7,2));

    select * from tab3;
    commit work;
    connect reset;


    ## 실제 COMMAND화면에서 실행한 화면.
    ------------------------------------------------------
    C:\PROGRA~1\IBM\SQLLIB\BIN>
    db2 -svtf create.tab
    connect to sample

       데이터베이스 연결 정보

     데이터베이스 서버                        = DB2/NT 8.2.0
     SQL 권한 부여 ID                         = NERD
     로컬 데이터베이스 별명                   = SAMPLE


    create table tab3 (naem varchar(20) not null, phone char(40), salary dec(7,2))
    DB20000I  SQL 명령이 완료되었습니다.

    select * from tab3

    NAEM                 PHONE                                    SALARY
    -------------------- ---------------------------------------- ---------

      0 레코드가 선택됨.


    commit work
    DB20000I  SQL 명령이 완료되었습니다.

    connect reset
    DB20000I  SQL 명령이 완료되었습니다.



    ## DB2SET 명령어
    C:\PROGRA~1\IBM\SQLLIB\BIN>db2set -?

    DBI1300N db2set은 DB2 프로파일 변수를 표시, 설정 또는 제거합니다.


                db2set [[[variable=[value]]
                     [-g|-i instance[
                     node-number]]]
                       [-all] [-null]
                     [-r [instance[node-number]]]
                     [-n DAS node[
                     -u user[-p password]]]
                     [-l|-lr] [-v] [-ul|-ur]
                     [-?|-h]

    설명:

    명령 옵션은 다음과 같습니다.


     -g 전역 프로파일 변수에 액세스합니다.

     -i 현재 또는 디폴트 인스턴스 프로파일 대신 사용할 인스턴스
    프로파일을 지정합니다.

     -n 리모트 DB2 Administration Server 노드 이름을 지정합니다.

     -u Administration Server에 접속할 때 사용할 사용자 ID를
    지정합니다.

     -ul 사용자 프로파일 변수에 액세스합니다.

     -ur 사용자 프로파일 변수를 새로 고칩니다.

     -p Administration Server 접속에 사용할 암호를 지정합니다.

     -r 주어진 인스턴스의 프로파일 레지스트리를 재설정합니다.  없음이
    제공될 경우 디폴트/현재 인스턴스가 사용됩니다.

     -l 모든 인스턴스 프로파일을 나열합니다.

     -lr 지원되는 모든 레지스트리 변수를 나열합니다.

     -v 상세 출력 모드.

     -? 명령 도움말 메시지를 표시합니다.

     -h -? 옵션과 같습니다.

     -all 다음에 정의된 것처럼 로컬 환경 변수가 나오는 모든
    어커런스를 표시합니다.

    o   환경, [e]로 표시.

    o   사용자 레벨 레지스트리, [u]로 표시.

    o   노드 레벨 레지스트리, [n]으로 표시.

    o   인스턴스 레벨 레지스트리, [i]로 표시.

    o   전역 레벨 레지스트리, [g]로 표시.


     -null 변수 값 검색 순서에 정의된 대로 다음 레지스트리 레벨의
    값을 찾지 못하도록 지정된 레지스트리 레벨에서 변수 값을
    널(NULL)로 설정합니다.

     주의사항:

    o   변수 이름이 없는 db2set을 사용하면 정의된 모든 변수를
        표시합니다.

    o   db2set <variable> <variable>의 값을 표시합니다.

    o   db2set <variable>= (없음) <variable>을 삭제합니다.

    o   db2set <variable>=<value> <variable>의 값을 수정합니다.

    o   db2set <variable> -null <variable>의 값을 널(NULL)로
        설정합니다.

    o   db2set <variable> -all 정의된 모든 <variable>의 값을
        표시합니다.

    o   db2set -ur 현재 사용자 프로파일을 새로 고칩니다.

    o   db2set <variable> -ul 사용자 레벨에서 정의된 <variables>를
        표시합니다.

    o   db2set -all 모든 레지스트리 레벨에 정의된 모든 변수를
        표시합니다.



    ### inst01의 구성변수를 확인한다.


    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 get dbm cfg

              데이터베이스 관리 프로그램 구성

         노드 유형                                 = 로컬 및 리모트 클라이언트가 있는 Ente
    Edition

     데이터베이스 관리 프로그램 구성 릴리스 레벨            = 0x0a00

     전체 열린 최대 파일 수                   (MAXTOTFILOP) = 16000
     CPU 속도(밀리초/명령어)                     (CPUSPEED) = 3.424496e-007
     통신 대역폭(MB/초)                    (COMM_BANDWIDTH) = 1.000000e+002

     현재 사용 중인 최대 데이터베이스 수            (NUMDB) = 8
     데이터 링크 지원                           (DATALINKS) = NO
     페더레이티드 데이터베이스 시스템 지원      (FEDERATED) = YES
     트랜잭션 프로세서 모니터 이름            (TP_MON_NAME) =

     디폴트 접미부 어카운트               (DFT_ACCOUNT_STR) =

     Java Development Kit 설치 경로              (JDK_PATH) = C:\PROGRA~1\IBM\SQLLIB\java\

     진단 오류 캡처 레벨                        (DIAGLEVEL) = 3
     통지 레벨                                (NOTIFYLEVEL) = 3
     진단 데이터 디렉토리 경로                   (DIAGPATH) =

     디폴트 데이터베이스 모니터 스위치
       버퍼 풀                            (DFT_MON_BUFPOOL) = OFF
       잠금                                  (DFT_MON_LOCK) = OFF
       정렬                                  (DFT_MON_SORT) = OFF
       명령문                                (DFT_MON_STMT) = OFF
       테이블                               (DFT_MON_TABLE) = OFF
       시간소인                         (DFT_MON_TIMESTAMP) = ON
       작업 단위                              (DFT_MON_UOW) = OFF
     인스턴스 및 데이터베이스의 Health 모니터  (HEALTH_MON) = ON

     SYSADM 그룹 이름                        (SYSADM_GROUP) =
     SYSCTRL 그룹 이름                      (SYSCTRL_GROUP) =
     SYSMAINT 그룹 이름                    (SYSMAINT_GROUP) =
     SYSMON group name                        (SYSMON_GROUP) =

     클라이언트 Userid-Password 플러그인    (CLNT_PW_PLUGIN) =
     클라이언트 Kerberos 플러그인          (CLNT_KRB_PLUGIN) = IBMkrb5
     그룹 플러그인                            (GROUP_PLUGIN) =
     로컬 권한 부여를 위한 GSS 플러그인    (LOCAL_GSSPLUGIN) =
     서버 플러그인 모드                    (SRV_PLUGIN_MODE) = UNFENCED
     GSS 플러그인의 서버 목록        (SRVCON_GSSPLUGIN_LIST) =
     서버 Userid-Password 플러그인        (SRVCON_PW_PLUGIN) =
     서버 연결 인증                            (SRVCON_AUTH) = NOT_SPECIFIED
     데이터베이스 관리 프로그램 인증       (AUTHENTICATION) = SERVER
     권한 없이 허용되는 카탈로그           (CATALOG_NOAUTH) = NO
     모든 클라이언트 신뢰                  (TRUST_ALLCLNTS) = YES
     신뢰성 있는 클라이언트 인증           (TRUST_CLNTAUTH) = CLIENT
     페더레이티드 인증 생략                    (FED_NOAUTH) = NO

     디폴트 데이터베이스 경로                   (DFTDBPATH) = C:

     데이터베이스 모니터 힙 크기(4KB)         (MON_HEAP_SZ) = 66
     JVM 힙 크기(4KB)                        (JAVA_HEAP_SZ) = 512
     감사 버퍼 크기(4KB)                     (AUDIT_BUF_SZ) = 0
     인스턴스 공유 메모리 크기(4KB)       (INSTANCE_MEMORY) = AUTOMATIC
     백업 버퍼 디폴트 크기(4KB)                 (BACKBUFSZ) = 1024
     리스토어 버퍼의 디폴트 크기(4KB)           (RESTBUFSZ) = 1024

     에이전트 스택 크기                    (AGENT_STACK_SZ) = 16
     최소 커미트 개인용 메모리(4KB)          (MIN_PRIV_MEM) = 32
     개인용 메모리 임계값(4KB)            (PRIV_MEM_THRESH) = 20000

     정렬 힙 임계값(4KB)                       (SHEAPTHRES) = 10000

     디렉토리 캐시 지원                         (DIR_CACHE) = YES

     응용프로그램 지원 계층 힙 크기(4KB)        (ASLHEAPSZ) = 15
     리퀘스터 I/O 블록의 최대 크기(바이트)       (RQRIOBLK) = 32767
     DOS 리퀘스터 I/O 블록 크기(바이트)      (DOS_RQRIOBLK) = 4096
     쿼리 힙 크기(4KB)                      (QUERY_HEAP_SZ) = 1000

     조정 유틸리티의 영향을 받은 워크로드 (UTIL_IMPACT_LIM) = 10

     에이전트 우선순위                           (AGENTPRI) = SYSTEM
     최대 기존 에이전트 수                      (MAXAGENTS) = 400
     에이전트 풀 크기                      (NUM_POOLAGENTS) = 200(계산됨)
     풀에 있는 초기 에이전트 수            (NUM_INITAGENTS) = 0
     최대 코디네이팅 에이전트 수          (MAX_COORDAGENTS) = (MAXAGENTS - NUM_INITAGENTS)
     최대 동시 코디네이팅 에이전트 수          (MAXCAGENTS) = MAX_COORDAGENTS
     최대 클라이언트 연결 수              (MAX_CONNECTIONS) = MAX_COORDAGENTS

     분리 프로세스 보존                        (KEEPFENCED) = YES
     풀된 분리 프로세스 수                    (FENCED_POOL) = MAX_COORDAGENTS
     초기 분리 프로세스 수                 (NUM_INITFENCED) = 0

     인덱스 재작성 시간 및 인덱스 빌드 다시 실행  (INDEXREC) = RESTART

     트랜잭션 관리 프로그램 데이터베이스 이름 (TM_DATABASE) = 1ST_CONN
     트랜잭션 재동기화 간격(초)           (RESYNC_INTERVAL) = 180

     SPM 이름                                    (SPM_NAME) = HHKANG_2
     SPM 로그 크기                        (SPM_LOG_FILE_SZ) = 256
     SPM 재동기화 에이전트 한계            (SPM_MAX_RESYNC) = 20
     SPM 로그 경로                           (SPM_LOG_PATH) =

     NetBIOS 워크스테이션 이름                      (NNAME) =

     TCP/IP 서비스 이름                          (SVCENAME) = db2c_DB2
     발견 모드                                   (DISCOVER) = SEARCH
     발견 서버 인스턴스                     (DISCOVER_INST) = ENABLE

     병렬 처리 등급의 최대 쿼리           (MAX_QUERYDEGREE) = ANY
     파티션내 병렬 처리 사용               (INTRA_PARALLEL) = NO

     int. 통신 버퍼 수(4KB)               (FCM_NUM_BUFFERS) = 4096
     FCM 요청 블록 수                         (FCM_NUM_RQB) = AUTOMATIC
     FCM 연결 항목 수                     (FCM_NUM_CONNECT) = AUTOMATIC
     FCM 메시지 앵커 수                   (FCM_NUM_ANCHORS) = AUTOMATIC

     노드 연결 경과 시간(초)                  (CONN_ELAPSE) = 10
     최대 노드 연결 재시도 수             (MAX_CONNRETRIES) = 5
     노드간 최대 시간차(분)                 (MAX_TIME_DIFF) = 60

     db2start/db2stop 시간종료(분)        (START_STOP_TIME) = 10


    ### system catalog tables and views
    syscat
    sysstat


    ### db 생성.
    db2 create db mydb


    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 create db mydb
    DB20000I  CREATE DATABASE 명령이 완료되었습니다.


    ### 인스턴스 XXX에 있는 데이터베이스의 목록.
    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 list db directory

     시스템 데이터베이스 디렉토리

     디렉토리의 항목 수                       = 5

    데이터베이스 1 항목:

     데이터베이스 별명                         = TOOLSDB
     데이터베이스 이름                        = TOOLSDB
     데이터베이스 드라이브                     = C:\DB2
     데이터베이스 릴리스 레벨                  = a.00
     주석                                      =
     디렉토리 항목 유형                        = 간접
     카탈로그 데이터베이스 파티션 번호        = 0
     대체 서버 호스트 이름                     =
     대체 서버 포트 번호                       =

    데이터베이스 2 항목:

     데이터베이스 별명                         = NERD
     데이터베이스 이름                        = NERD
     데이터베이스 드라이브                     = C:\DB2
     데이터베이스 릴리스 레벨                  = a.00
     주석                                      = 내꺼
     디렉토리 항목 유형                        = 간접
     카탈로그 데이터베이스 파티션 번호        = 0
     대체 서버 호스트 이름                     =
     대체 서버 포트 번호                       =

    데이터베이스 3 항목:

     데이터베이스 별명                         = NERDER
     데이터베이스 이름                        = NERD
     데이터베이스 드라이브                     = C:\DB2
     데이터베이스 릴리스 레벨                  = a.00
     주석                                      = 내꺼
     디렉토리 항목 유형                        = 간접
     카탈로그 데이터베이스 파티션 번호        = 0
     대체 서버 호스트 이름                     =
     대체 서버 포트 번호                       =

    데이터베이스 4 항목:

     데이터베이스 별명                         = MYDB
     데이터베이스 이름                        = MYDB
     데이터베이스 드라이브                     = C:\DB2
     데이터베이스 릴리스 레벨                  = a.00
     주석                                      =
     디렉토리 항목 유형                        = 간접
     카탈로그 데이터베이스 파티션 번호        = 0
     대체 서버 호스트 이름                     =
     대체 서버 포트 번호                       =

    데이터베이스 5 항목:

     데이터베이스 별명                         = SAMPLE
     데이터베이스 이름                        = SAMPLE
     데이터베이스 드라이브                     = C:\DB2
     데이터베이스 릴리스 레벨                  = a.00
     주석                                      =
     디렉토리 항목 유형                        = 간접
     카탈로그 데이터베이스 파티션 번호        = 0
     대체 서버 호스트 이름                     =
     대체 서버 포트 번호                       =


    ### 데이터베이스 mydb를 활성화.
    C:\PROGRA~1\IBM\SQLLIB\BIN>
    db2 activate db mydb
    DB20000I  ACTIVATE DATABASE 명령이 완료되었습니다.


    ### 현재 활성화되어 있는 데이터베이스의 목록을 보여줍니다.
    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 list active databases

                               활동 중인 데이터베이스

    데이터베이스 이름                        = MYDB
    현재 연결된 응용프로그램 수               = 0
    데이터베이스 경로                         = C:\DB2\NODE0000\SQL00004\



    ### mydb라는 데이터베이스에 접속하기.
    db2 connect to mydb


    ### mydb에 있는 테이블의 목록을 확인.
    db2 list tables for all


    ### 현재 데이터베이스에 접속되어 있는지 여부 확인.
    db2 get connection state


    #### 현재 데이터베이스의 환경 내용.
    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 get db cfg

           데이터베이스 에 대한 데이터베이스 구성

     데이터베이스 구성 릴리스 레벨                          = 0x0a00
     데이터베이스 릴리스 레벨                               = 0x0a00

     데이터베이스 지역                                      = KR
     데이터베이스 코드 페이지                               = 1363
     데이터베이스 코드 세트                                 = 1363
     데이터베이스 국가/지역 코드                            = 82
     데이터베이스 조합 시퀀스                               = UNIQUE
     대체 조합 조합 시퀀스                   (ALT_COLLATE) =

     동적 SQL 쿼리 관리                    (DYN_QUERY_MGMT) = DISABLE

     이 데이터베이스에 대한 발견 지원         (DISCOVER_DB) = ENABLE

     디폴트 쿼리 최적화 클래스               (DFT_QUERYOPT) = 5
     병렬 처리 등급                            (DFT_DEGREE) = 1
     산술 예외시 계속                     (DFT_SQLMATHWARN) = NO
     디폴트 새로 고침 유효 기간           (DFT_REFRESH_AGE) = 0
     opt용 디폴트 유지보수 테이블 유형     (DFT_MTTB_TYPES) = SYSTEM
     유지되어 자주 사용되는 값의 수        (NUM_FREQVALUES) = 10
     유지된 Quantile 수                     (NUM_QUANTILES) = 20

     백업 보류                                              = NO

     데이터베이스가 일관성이 있음                           = YES
     롤 포워드 보류                                         = NO
     리스토어 보류                                          = NO

     다중 페이지 파일 할당 작동                             = YES

     복구를 위한 로그 유지 상태                             = NO
     로깅에 대한 User Exit 상태                             = NO

     데이터 링크 토큰 만기 간격(초)             (DL_EXPINT) = 60
     데이터 링크 쓰기 토큰 초기 만기 간격   (DL_WT_IEXPINT) = 60
     데이터 링크 사본 수                    (DL_NUM_COPIES) = 1
     제거 후 데이터 링크 시간(일)            (DL_TIME_DROP) = 1
     대문자로 된 데이터 링크 토큰                (DL_UPPER) = NO
     데이터 링크 토큰 알고리즘                   (DL_TOKEN) = MAC0

     데이터베이스 힙(4KB)                          (DBHEAP) = 600
     데이터베이스 공유 메모리 크기(4KB)   (DATABASE_MEMORY) = AUTOMATIC
     카탈로그 캐시 크기(4KB)              (CATALOGCACHE_SZ) = (MAXAPPLS*4)
     로그 버퍼 크기(4KB)                         (LOGBUFSZ) = 8
     유틸리티 힙 크기(4KB)                   (UTIL_HEAP_SZ) = 5000
     버퍼 풀 크기(페이지)                        (BUFFPAGE) = 250
     확장 스토리지 세그먼트 크기(4KB)       (ESTORE_SEG_SZ) = 16000
     확장 스토리지 세그먼트 수            (NUM_ESTORE_SEGS) = 0
     잠금 목록용 최대 스토리지(4KB)              (LOCKLIST) = 50

     응용프로그램 그룹 메모리 세트의 최대 크기(4KB) (APPGROUP_MEM_SZ) = 30000
     응용프로그램 그룹 힙의 메모리 백분율 (GROUPHEAP_RATIO) = 70
     최대 appl. 제어 힙 크기(4KB)         (APP_CTL_HEAP_SZ) = 128

     공유 정렬의 정렬 힙 임계값(4KB)       (SHEAPTHRES_SHR) = (SHEAPTHRES)
     정렬 목록 힙(4KB)                           (SORTHEAP) = 256
     SQL문 힙(4KB)                               (STMTHEAP) = 2048
     디폴트 응용프로그램 힙(4KB)               (APPLHEAPSZ) = 256
     패키지 캐시 크기(4KB)                     (PCKCACHESZ) = (MAXAPPLS*8)
     통계 힙 크기(4KB)                       (STAT_HEAP_SZ) = 4384

     교착 상태 점검 간격(밀리초)                (DLCHKTIME) = 10000
     응용프로그램당 잠금 목록의 백분율          (MAXLOCKS) = 22
     잠금 시간종료(초)                        (LOCKTIMEOUT) = -1

     변경된 페이지 임계값                  (CHNGPGS_THRESH) = 60
     비동기 페이지 클리너 수               (NUM_IOCLEANERS) = 1
     I/O 서버 수                            (NUM_IOSERVERS) = 3
     인덱스 정렬 플래그                         (INDEXSORT) = YES
     시퀀스 검출 플래그                         (SEQDETECT) = YES
     디폴트 프리페치 크기(페이지)         (DFT_PREFETCH_SZ) = AUTOMATIC

     트랙 수정 페이지                            (TRACKMOD) = OFF

     디폴트 컨테이너 수                                     = 1
     디폴트 테이블 스페이스 Extent 크기(페이지) (DFT_EXTENT_SZ) = 32

     실행 중인 최대 프로그램 수                  (MAXAPPLS) = AUTOMATIC
     실행 중인 응용프로그램의 평균 수           (AVG_APPLS) = 1
     응용프로그램당 열린 최대 DB 파일 수         (MAXFILOP) = 64

     로그 파일 크기(4KB)                        (LOGFILSIZ) = 1000
     1차 로그 파일 수                          (LOGPRIMARY) = 3
     2차 로그 파일 수                           (LOGSECOND) = 2
     로그 파일에 대한 변경된 경로              (NEWLOGPATH) =
     로그 파일에 대한 경로                                  = C:\DB2\NODE0000\SQL00004\SQLOGDIR\
     오버플로우 로그 경로                 (OVERFLOWLOGPATH) =
     미러 로그 경로                         (MIRRORLOGPATH) =
     처음에 사용되는 로그 파일                              =
     디스크가 가득 차면 로그 블록화       (BLK_LOG_DSK_FUL) = NO
     트랜잭션에서 사용 중인 최대 로그 스페이스 백분율   (MAX_LOG) = 0
     1개의 활성 UOW에 대해 사용 중인 로그 파일 수  (NUM_LOG_SPAN) = 0

     그룹 커미트 계수                           (MINCOMMIT) = 1
     소프트 체크포인트 전에 수정된 로그 파일의 백분율  (SOFTMAX) = 100
     복구를 위해 로그 유지 작동                 (LOGRETAIN) = OFF
     로깅에 대한 User Exit 작동                  (USEREXIT) = OFF

     HADR 데이터베이스 역할                                  = STANDARD
     HADR 로컬 호스트 이름                 (HADR_LOCAL_HOST) =
     HADR 로컬 서비스 이름                  (HADR_LOCAL_SVC) =
     HADR 리모트 호스트 이름              (HADR_REMOTE_HOST) =
     HADR 리모트 서비스 이름               (HADR_REMOTE_SVC) =
     리모트 서버의 HADR 인스턴스 이름     (HADR_REMOTE_INST) =
     HADR 시간종료 값                         (HADR_TIMEOUT) = 120
     HADR 로그 쓰기 동기화 모드             (HADR_SYNCMODE) = NEARSYNC

     첫 번째 로그 아카이브 메소드             (LOGARCHMETH1) = OFF
     logarchmeth1 옵션                         (LOGARCHOPT1) =
     두 번째 로그 아카이브 메소드             (LOGARCHMETH2) = OFF
     logarchmeth2 옵션                        (LOGARCHOPT2) =
     장애 복구 로그 아카이브 경로            (FAILARCHPATH) =
     오류 시 로그 아카이브 재시도 수         (NUMARCHRETRY) = 5
     로그 아카이브 재시도 대기 시간(초)    (ARCHRETRYDELAY) = 20
     벤더 옵션                                  (VENDOROPT) =

     자동 재시작 사용                         (AUTORESTART) = ON
     인덱스 재작성 시간 및 인덱스 빌드 다시 실행  (INDEXREC) = SYSTEM (RESTART)
     인덱스 빌드 중 로그 페이지 수          (LOGINDEXBUILD) = OFF
     디폴트 loadrec 세션 수               (DFT_LOADREC_SES) = 1
     유지할 데이터베이스 백업 수           (NUM_DB_BACKUPS) = 12
     복구 실행기록 보유(일)               (REC_HIS_RETENTN) = 366

     TSM 관리 클래스                        (TSM_MGMTCLASS) =
     TSM 노드 이름                           (TSM_NODENAME) =
     TSM 소유자                                 (TSM_OWNER) =
     TSM 암호                                (TSM_PASSWORD) =

     자동 유지보수                              (AUTO_MAINT) = OFF
       자동 데이터베이스 백업               (AUTO_DB_BACKUP) = OFF
       자동 테이블 유지보수                 (AUTO_TBL_MAINT) = OFF
         자동 runstats                       (AUTO_RUNSTATS) = OFF
         자동 통계 프로파일                (AUTO_STATS_PROF) = OFF
           자동 프로파일 갱신                (AUTO_PROF_UPD) = OFF
         자동 재구성                           (AUTO_REORG) = OFF


    ### mydb에 동시 접속수를 응용프로그램 개수를 50개로 지정.
    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 update db cfg for mydb using maxappls 50
    DB20000I  UPDATE DATABASE CONFIGURATION 명령이 완료되었습니다.


    ### mydb에 현재 접속하고 있는 응용프로그램의 목록 확인.
    C:\PROGRA~1\IBM\SQLLIB\BIN>db2 list applications for db mydb

    권한 ID  응용프로그램   Appl.      응용프로그램 ID               DB       에이전트
             이름           핸들                                      이름     수
    -------- -------------- ---------- ------------------------------ -------- -----
    NERD     db2bp.exe      16         *LOCAL.DB2.060426015645        MYDB     1


    ### DB 삭제하기.
    db2 drop db mydb


    ### mydb에 mybp8이라는 크기가 1000페이지이고, 각 페이지의 크기가 8K인 버퍼풀을 생성.
    C:\Program Files\IBM\SQLLIB\BIN>db2 create bufferpool mydp4 size 1000
    DB20000I  SQL 명령이 완료되었습니다.


    ### mydb 에 있는 버퍼풀의 목록 확인.
    C:\Program Files\IBM\SQLLIB\BIN>db2 "select bpname, pagesize, npages from syscat.bufferpools"
    BPNAME                             PAGESIZE    NPAGES
    ---------------------------- ----------- -----------
    IBMDEFAULTBP                        4096         250
    MYDP4                             4096        1000

    2 레코드가 선택됨.


    ### mybp4라는 버퍼풀 제거.
    db2 drop bufferpool mybp4

    [출처] DB2 관리자 1 - 베타|작성자 너덜

    [본문링크] [DB2] 관리자 1
    posted by 좋은느낌/원철
    2008. 12. 15. 14:26 개발/DB2

    개발자 친화적인 대안, DB2 Express-C (한글)

    developerWorks
    문서 옵션
    수평출력으로 설정

    이 페이지 출력

    이 페이지를 이메일로 보내기

    이 페이지를 이메일로 보내기

    토론

    
    제안 및 의견
    피드백

    난이도 : 초급

    Grant Hutchison, Senior Product and Release Manager, IBM

    2006 년 3 월 14 일

    요즘 무료 RDBMS (관계형 데이터베이스 관리 시스템) 옵션들이 많이 있다. 이 중 몇몇은 오픈 소스이고, 어떤 것은 상용이지만 무료로 사용할 수 있다. C/C++, Java™, .NET, PHP를 사용하여 애플리케이션을 개발하고 있고 혁신적인 기술과 탄탄한 개발자 커뮤니티 기반을 갖춘 믿을 수 있는 데이터 서버를 찾고 있다면, 새로운 DB2 Express-C를 주목하기 바란다. 이 글에서 DB2® Express-C를 사용하는 방법을 설명하고 애플리케이션 최적화를 위한 자동화 및 튜닝 시나리오를 제공한다.

    왜 DB2 Express-C 인가?

    DB2 Express-C는 DB2 Universal Database™ (UDB) Express Edition V8.2.2와 같은 핵심 기술에 기반하고 있다. DB2 Express-C는 리눅스와 Windows® 플랫폼 (32-bit와 64-bit)에서 사용 가능하며 IBM에서 무료 다운로드를 제공한다. IBM은 DB2 Universal Database Express Edition (DB2 Express) 버전인 DB2 Universal Database Express Edition (DB2 Express)을 2006년 1월 30일 발표했다. C/C++, 자바, .NET, PHP 등 모든 애플리케이션들을 구현하고 전개할 수 있는 강력한 기반을 제공한다.

    IBM Cloudscape™와 Express-C는 이제 IBM에서 무료 라이센스로 사용할 수 있으며 애플리케이션 개발과 전개에 사용될 수 있다. 이 두 개의 데이터베이스 서버 모두 SQL과 JDBC 같은 오픈 표준에 기반한 것이기 때문에 두 데이터 서버 간에 자바 애플리케이션과 데이터베이스를 마이그레이션 하기도 편하다. Cloudscape나 Apache Derby를 사용하고 있다면 무료 유틸리티인 Cloudscape Workbench를 사용하여 데이터베이스를 DB2로 마이그레이션 하고 새로운 DB2 Express-C를 실행시킬 수 있다. DB2 Express-C는 Cloudscape 보다 더 큰 다운로드와 디스크 풋프린트를 갖고 있지만 DB2 Express는 더 많은 툴들을 제공한다. 또한, .NET 애플리케이션도 완전히 지원하고 PHP 애플리케이션에는 이상적이다. DB2 Express-C는 최대 두 개의 CPU와 4GB 메모리 까지 활용할 수 있고 데이터베이스의 크기는 제한이 없다. DB2는 많은 디스크에 걸쳐 데이터베이스를 분산하여 확장성과 퍼포먼스를 높이고 있다.

    DB2 Express-C는 제품화 준비가 된 데이터베이스 서버로서 매 새로운 릴리스 마다 향상된 혁신적인 기술에 기반하고 있다. DB2는 1995년 이후 Windows에서, 1999년 부터는 리눅스에서 사용 가능하다. DB2의 역사를 알고싶다면 "The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database" (developerWorks, 2003년 1월)을 읽어보기 바란다.

    "만약 내 데이터베이스 서버가 4GB 메모리와 2 CPU 이상을 필요로 한다면?" 리눅스, Windows, UNIX®용 UDB Enterprise Server Edition (ESE)으로 바꾸면 된다. DB2 ESE는 테라바이트의 데이터를 지원할 수 있는 입증된 플랫폼이다. DB2 ESE는 Database Partitioning Feature (DPF)를 추가하여 데이터베이스 병렬 연산을 수행할 수 있다. DB2 Express-C에서 다른 DB2 에디션으로 전향하는 일은 간단하다. 핵심 데이터베이스 엔진이 같기 때문이다.

    DB2 Express-C의 등장과 함께 IBM DB2 전문가들로 구성된 새로운 포럼이 만들어졌다. 이 포럼은 이 새로운 무료의 데이터 서버에 대한 궁금증을 해소할 수 있는 좋은 장소이다. DB2 Express-C는 완벽한 매뉴얼도 갖추고 있고, PDF 포맷이나 DB2 Information Center에서 검색도 가능하다. DB2 Information Center는 온라인 상에서 지속적으로 업데이트 되며 최신 버전을 다운로드 할 수 있고 전용 서버에 설치할 수도 있다. DB2 UDB 제품 매뉴얼 모두 사용할 수 있다. DB2 Information Center는 리눅스, UNIX, Windows용 DB2 UDB의 모든 에디션 공통이기 때문에, Database Partitioning Feature (DPF) 같은 고급 기능들은 DB2 Express-C 환경에는 적용할 수 없다.

    리눅스에서 DB2 Express-C를 사용하려면 검증된 최신 리눅스 배포판을 점검해보는 것이 좋다. 리눅스용 DB2에 대한 좋은 참고자료로는 DB2 Universal Database Version 8.2 for 리눅스 HOWTO가 있다. (참고자료)




    위로


    설치와 실행

    DB2 Express-C 설치하기

    DB2 Express-C의 최소 메모리 조건은 그래픽 툴이 없는 256MB 또는 그래픽 툴을 가진 512MB이다. 이 글에서 설명하는 머신은 2GB 메모리에 적합하다. 나는 Windows(32-bit)용 DB2 Express-C를 다운로드 했다. 다운로드는 391MB였고 설치는 매우 간단했다. ZIP 파일의 압축이 풀리면(내 시스템 상에서 압축이 풀린 디렉토리는 그렇게 크지 않은 412MB에 불과하다.) setup 실행파일을 실행한다. 이렇게 되면DB2 Express Launchpad가 시작한다. (그림 1) 그래픽 설치자가 DB2 Express-C를 설치할 장소와 DB2 Administration Server의 사용자 아이디와 패스워드를 묻는다. 나는 전형적인 설치작업을 수행했다. 개발 툴과 라이브러리를 포함시켰다. 총 설치 시간은 4분 이내였다.


    그림 1. DB2 Express-C Launchpad
    DB2 Express Launchpad

    설치를 계속해 나가다 보면 새로운 윈도우(그림 2)가 디스플레이 된다. 계속 진행하여 첫 번째 DB2 데이터베이스를 만든다. SAMPLE이라고 하는 DB2 Express-C에서 제공하는 샘플 데이터베이스가 있다. DB2 Express-C에서 제공하는 툴을 사용하여 제품 환경에 SAMPLE 데이터베이스를 설정하고, 백만 개 이상의 열을 가진 데이터 테이블의 퍼포먼스 문제들도 다룰 것이다.


    그림 2. DB2 First Steps
    DB2 First Steps



    위로


    DB2 Express-C는 관리하기 수월한 데이터 베이스이다. 완벽한 그래픽 툴과 명령행 툴이 데이터베이스 관리자(DBA)를 돕는다. 가장 일반적으로 사용되는 그래픽 툴은 DB2 Control Center이고 가장 많이 사용되는 명령행 툴은 DB2 CLP(Command Line Processor)이다. 툴 이름을 보면 특징적인 것은 없지만 매력적인 기능을 갖고 있다.

    DB2 Express-C에서 제공하는 그래픽 툴은 다양한 범주로 나뉜다. (그림3) General Administration Tools 목록에 DB2 Control Center가 있다. 대부분의 다른 그래픽 툴들은 DB2 Control Center내에서 접근할 수 있다.


    그림 3. DB2 툴
    DB2 tools

    DB2 Control Center( 그림 4)는 DBA에게 데이터베이스의 운영 상황을 제공한다. 이 예제를 보면, SAMPLE 데이터베이스 크기는 25MB이고 아직 백업되지 않았다. 자동 관리 역시 설정되지 않았다.


    그림 4. DB2 Control Center – 자동화 되기 전 SAMPLE 데이터베이스
    DB2 tools

    DB2 그래픽 툴 위자드로는 DB2의 일반적인 관리 작업들을 수행하는 방법을 빠르게 배울 수 있다. DB2 Control Center의 각 객체는 객체 트리의 객체를 오른쪽 클릭하여 조작한다. 많은 위자드들은 새로운 DB2 DBA가 백업 데이터베이스 이미지를 만들고 이전 이미지들을 복구하는 등의 일반적인 태스크를 수행할 때 쓰인다. (그림 5)


    그림 5. DB2 툴 위자드
    DB2 tools wizards

    그림 6을 보면, SAMPLE 데이터베이스가 537MB로 늘어났다. 이 데이터베이스에는 백업 자동화와 관리가 설정되었다. DB2 Express-C가 규정한 alert 상황이 있다. ( 그림 6) 이제 이 상황을 파악하고 해결하는 방법을 알아보자.


    그림 6. DB2 Control Center – 자동화 후 SAMPLE 데이터베이스
    DB2 Control Center after automation

    DB2만의 유일한 기능은 환경을 실시간으로 모니터링하고 DBA에게 비정상적인 상황들을 공지하는 기능이다. 그림 7에서, DB2가 SAMPLE 데이터베이스에서 시간 당 많은 잠금(lock) 에스컬레이션을 탐지했다. DB2는 데이터베이스 객체에 대한 잠금을 사용하여 트랜잭션 일관성을 보장한다. 이 예제에서 DB2는 한 시간 내에 1150 잠금 에스컬레이션을 수행했다. DB2는 DB2 서버에 할당된 메모리를 가지고 그렇게 많은 잠금 열을 관리할 수 없었다. 이 상황은 잠금 관리용 DB2 서버 메모리를 늘려서 쉽게 해결될 수 있다. DBA가 직접 수정하거나 자동화 처리된다. DB2의 상태 모니터링 기능은 규모가 큰 DB2 Enterprise Server Edition (ESE)을 통해서 DB2 Express-C에도 적용된다. DB2 Express-C가 여러분의 애플리케이션의 트랜잭션 일관성을 보장할 것이다. 각 트랜잭션은 기록되어 데이터베이스 내의 데이터 무결성을 보장한다.


    그림 7. DB2 Health Center – 잠금 에스컬레이션
    DB2 Health Center

    분석 시나리오

    데이터베이스 애플리케이션 퍼포먼스는 고객의 솔루션 만족도에 직접적인 영향을 미친다. 최적의 퍼포먼스를 이룩하는 것은 거의 예술의 경지로 취급 받는다. DB2 Express-C는 완벽한 툴(그래픽과 비 그래픽)을 제공하여 고성능의 신뢰성 있는 애플리케이션을 만들 수 있도록 한다. 이 시나리오에서 우리는 우리 회사에서 가장 봉급을 많이 받는 부서를 결정할 것이다. 최적의 퍼포먼스를 이룩하기 위해 DB2 Express-C에서 제공하는 툴 조합을 사용할 것이다.

    이 시나리오에서 사용되는 툴은 다음과 같다.

    • db2batch
    • Visual Explain
    • Design Advisor
    • Activity Monitor

    db2batch 유틸리티는 쿼리의 런타임 퍼포먼스를 분석하는데 적합한 툴이다. 이 시나리오에서 다음과 같은 SQL 문장을 사용하여 분석을 수행한다.

    SELECT DECIMAL(AVG(salary),12,2) as average_sal, location, deptname 
    FROM staff a, org b 
    WHERE b.deptnumb=a.dept 
    GROUP BY dept,location, deptname 
    ORDER BY average_sal DESC
    

    STAFF 테이블은 백만 개 이상의 레코드로 늘어났고 쿼리에 드는 시간도 늘어났다. 그림 8에서, 이 쿼리의 경과 시간은 18초이다. (뉴욕 본사가 최고로 많이 걸렸다. 예상했던 결과이다.)


    그림 8. db2batch – 쿼리 실행
    db2batch - Query execution

    그림 9는 값비싼 테이블 스캔이 STAFF 테이블에 대해 수행되고 Hash Join 연산이 ORG와 STAFF 테이블의 데이터에 근거하여 수행되었다는 것을 보여주고 있다. 이 테이블에 대한 인덱스가 없기 때문에 DB2는 쿼리 실행 중에 사용할 것이다. 우리는 DB2 Design Advisor를 사용할 것이고 DB2에게 적절한 새로운 인덱스를 ORG와 STAFF 테이블에 붙여서 쿼리 퍼포먼스를 높일 것을 요청한다.


    그림 9. 쿼리 분석
    Visual explain - query analysis

    그림 10은 DB2 Design Advisor로부터 온 피드백이다. DEPT와 SALARY 칼럼을 사용하여 STAFF 테이블에 인덱스를 생성할 것을 권고하고 있다. Design Advisor용 쿼리 워크로드는 파일에 제공되거나 애플리케이션 실행 중에 캡쳐될 수 있다.


    그림 10. DB2 Design Advisor – 인덱스 권고
    DB2 Design Advisor - Index recommendation

    그림 11은 이 인덱스가 쿼리 실행에 도움이 되었다는 것을 보여주고 있다. 쿼리의 경과 시간이 현격하게 향상되었다. 이제는 7초 밖에 안 걸린다.


    그림 11. db2batch – 쿼리 실행 향상
    db2batch2 - Query execution improvement

    그림 12는 STAFF 테이블의 새로운 인덱스가 쿼리 액세스 계획에 사용되고 있다는 것을 확인하는 모습이다. 쿼리의 실행 비용 역시 줄어든다.


    그림 12. 쿼리 계획 변경
    Visual explain - Query plan change

    마지막으로, 이 쿼리의 실행 중에 사용될 전체 시스템 리소스를 결정하는 방법도 궁금할 것이다. DB2 UDB V8.2에 추가된 새로운 툴인 Activity Monitor는 다양한 SQL 함수와 프로시저를 사용하여 실행 시스템에 대한 퍼포먼스 데이터를 가져온다. 그림 13을 보면, 쿼리가 두 개의 소트를 수행하는데 걸리는 시간이 12초 미만이라는 것을 알 수 있다. Activity Monitor에는 DB2 Express-C 환경을 분석하는데 사용할 수 있는 리포트가 많이 있다.


    그림 13. Activity Monitor – 런타임 분석
    Activity Monitor - Runtime analysis



    위로


    개발자, 개발자, 개발자

    전형적인 DB2 Express-C는 C/C++, 자바, .NET 애플리케이션을 개발할 때 사용할 필수 드라이버와 인터페이스를 제공한다. PHP나 Perl 애플리케이션을 개발하는 것에 관심이 있다면 여기에 사용할 수 있는 드라이버가 있다. PHP와 Perl 인터페이스가 개발되어 DB2 팀 내 엔지니어들이 관리한다. DB2는 저장 프로시저, 트리거, 함수(테이블과 스칼라)를 포함하여 많은 서버측 프로그래밍 언어를 지원한다. DB2 저장 프로시저는 C/C++, COBOL, Java (JDBC 또는 SQLJ), .NET (CLR 호환 언어), SQL Procedure Language (SQL PL)를 사용하여 작성될 수 있다. 저장 프로시저 언어에 따라 선택은 다양하지만 가장 일반적으로 사용되는 언어는 자바와 SQL PL이다.

    SQL Procedure Language (SQL PL) 저장 프로시저는 원시 프로시저로 간주된다. 리눅스와 Windows 상의 DB2 데이터베이스 내의 객체로서 저장되기 때문이다. SQL PL은 유일한 ANSI SQL 표준 기반의 저장 객체 언어로서 진화해 왔다. SQL PL은 전체 DB2 데이터베이스 서버 제품군에서 지원된다. (리눅스, UNIX, Windows, iSeries, z/OS 용). DB2 Express-C는 매우 유용한 그래픽 툴인 Development Center를 제공하여 자바와 SQL PL 프로시저를 비롯하여 SQL 저장 프로시저의 개발, 테스트, 전개를 관리한다. 그림 14 는 SQL PL 프로시저의 구현, 테스트, 전개에 사용되는 DB2 Development Center의 모습이다. 이 그림에서 보이는 프로시저는 high_rollers이고 DB2 Express-C 내에서 저장 및 실행된다. 저장 프로시저 실행은 DB2 내에서 엄격히 제어되기 때문에 DB2 데이터로의 액세스를 보안화 하는 기술이라고 할 수 있다.


    그림 14. Development Center - SQL PL
    Development Center - SQL PL

    자바

    DB2에서 자바 애플리케이션을 개발하기는 쉽다. 모든 DB2 클라이언트와 서버가 JDBC 3 순응 (type-4) 드라이버를 제공하기 때문이다. 현재 DB2에 포함된 두 개의 다른 JDBC가 있다. 원래 드라이버(db2java.zip)는 Application (type 2)과 Network (type 3) 드라이버로 알려져 있다. 새롭고 보다 유연한 JDBC 드라이버(db2jcc.jar)는 type 2 또는 type 4 모드에서 사용될 수 있고, 최신 자바 클라이언트/서버 산업 벤치마크에서 사용되었다. (SPECjAppServer 2004 with DB2 and WebSphere® Application Server – 참고자료). JDBC (db2jcc.jar)용 DB2 드라이버는 DB2 런타임 클라이언트에 번들 된다. 애플리케이션이 순수 자바이면 CLASSPATH에 db2jcc_license_cu.jardb2jcc.jar를 삽입할 수 있다. 이 파일들은 <DB2 Installation location>\SQLLIB\java 디렉토리에 있다. IBM WebSphere Application Server와 DB2 데이터 서버 같은 Java 2 Platform Enterprise Edition (J2EE)서버는 확장성 있는 애플리케이션을 실행할 분산 애플리케이션 인프라를 제공한다.

    PHP

    PHP("PHP: Hypertext Preprocessor")는 광범위하게 사용되는 오픈 소스의 범용 스크립팅 언어로서 웹 개발에 이상적이고 HTML에 삽입될 수 있다. PHP는 확장성 있는 웹 애플리케이션을 위한 선택으로서 전 세계적으로 빠르게 채택되고 있다. PHP의 DB2 지원은 PHP용 IBM DB2 확장(참고자료")까지 이르렀다. PHP는 수 백만 개의 웹 애플리케이션을 움직일 수 있는 오픈 소스 스크립팅 언어이고 PHP는 1995년 도입된 이래 꾸준히 진화해 오고 있다. PHP용 DB2 확장은 소스 코드로 제공된다. 코드를 컴파일 하지 않고 Windows에서 이 확장을 사용하고 싶다면 Windows용 필수 라이브러리도 있다. (참고자료)

    DB2 환경을 설치 및 실행하는 가장 쉬운 방법 중 하나는 IBM과 Zend Technologies에서 개발한 무료 Zend Core™ for IBM을 다운로드 하는 것이다. Zend Core for IBM는 PHP 개발 및 제품 환경으로서 IBM Cloudscape 데이터베이스 서버와 긴밀히 통합되어 있다. 이것은 데이터베이스 기반 애플리케이션의 개발 및 전개 토대가 된다. PHP 지원 및 DB2 지원 등 전체적인 웹 스택 지원이 필요하면 지원 옵션도 사용할 수 있다. Zend Core for IBM은 Cloudscape 데이터베이스 서버와 무료 DB2 Express를 삽입하여 전개를 용이하게 한다. 나중에 전체 DB2 Express Edition 라이센스를 구매하면 DB2 Express 제품 번들에도 지원이 가능하다. 그림 15 는 DB2용 PHP 확장 모습을 보여주고 있는 Zend Core for IBM 관리 웹 콘솔 모습이다.


    그림 15. Zend Core for IBM
    Zend Core for IBM

    .NET

    DB2 Express-C는 DB2 .NET 1.1 Data Provider와 Microsoft Visual Studio .NET 2003용 애드인(add-in)을 제공한다. IBM 익스플로러와 통합 DB2 도움말이 Visual Studio내에 있다. ( 그림 16) DB2 Express-C가 설치되면 Visual Studio .NET 2003의 존재 여부를 검사하고, 존재할 경우에 DB2 기능을 Visual Studio에 추가한다. 이러한 애드인으로 .NET 애플리케이션의 개발 시간이 줄어든다. DB2 UDB v8.2의 릴리스로 인해, .NET(CLR - Common Language Runtime) 저장 프로시저 지원이 새로운 옵션으로서 추가되었다.


    그림 16. Visual Studio .NET 2003용 DB2 애드인(add-in)
    DB2 add-ins for Visual Studio .NET 2003

    DB2 add-ins for Visual Studio 2005 - Developer Release용 DB2 애드인을 무료로 다운로드 할 수 있다. Developer Release에는 DB2 .NET 2.0 Data Provider와 최근에 릴리스 된 Microsoft Visual Studio 2005 IDE용 애드인 세트가 포함되어 있다.

    C/C++ 및 기타

    DB2 Express-C는 데이터 액세스, DB2 CLI, Embedded SQL에 두 개의 기본적인 C API를 제공한다. 가장 일반적으로 사용되는 C/C++ API는 DB2 Call Level Interface (CLI)이고, 이것은 X/Open CLI 표준에 근거하고 있다. 이 API는 Windows 애플리케이션에 사용되는 Microsoft ODBC (Open Database Connectivity) API를 매우 닮아있다. DB2 데이터에 대한 Embedded SQL의 접근 방식은 애플리케이션 프로세서를 사용하여 모든 SQL 레퍼런스들을 DB2 서버에 대한 원시 액세스 인터페이스로 대체하는 것이다. Embedded SQL은 SQL 문이 잘 정의도어 있고 애플리케이션 개발 동안에 알려져 있다면 매우 큰 효력을 발휘할 수 있다. SQL은 타당성 검사를 할 수 있고 액세스 계획은 개발 동안에는 잠기기 때문에 애플리케이션 퍼포먼스가 높아진다. SQL 문은 기본적으로 역동적이고, DB2 CLI API 같은 역동적인 SQL 액세스 기술을 많이 선호하고 있다.

    COBOL, Perl, Python 같은 DB2 Express-C용 옵션들이 많이 있다. Perl 드라이버는 오픈 소스 Perl 커뮤니티에서 사용할 수 있고 IBM에서 전적으로 관리 및 지원한다. SourceForge.net ( 참고자료 )에서 DB2에 사용할 수 있는 Python 드라이버가 업데이트 되어 있다. Perl, PHP, Python 드라이버 모두 전개에는 DB2 Run-time이, 컴파일과 구현에는 DB2 Application Development Client (DB2 Express-C)가 필요하다.




    위로


    전개 가이드

    데이터베이스 애플리케이션을 전개하려면 고려해야 할 사항들이 있다.

    1. DB2 서버 설치하기
    2. DB2 클라이언트 설치하기
    3. 애플리케이션 전개하기
    4. 데이터베이스 전개하기

    DB2 서버 환경을 설치는 DB2 그래픽 인스톨러(db2setup (리눅스)/ setup (Windows))를 사용하거나 응답 파일(db2setup -R (리눅스) / setup /U <file-name> (Windows))을 사용하여 비교적 간소하게 설치할 수 있다.

    DB2 Run-Time Client는 모든 애플리케이션 프로그래밍 인터페이스(API)와 네트워크 클라이언트 드라이버를 제공하여 리눅스, 유닉스, Windows 상의 DB2에 직접 액세스 한다. Windows의 경우 보다 단순한 클라이언트가 있다. (DB2 Run-Time Client Lite) 풋프린트가 더 적다. DB2 Run-Time Client Lite는 Windows Installer 기반 설치에서 사용될 수 있는 Merge Module도 제공하여 Windows 애플리케이션에서 DB2에 연결을 쉽게 삽입할 수 있다.

    애플리케이션 전개 까지는 이 글에서는 설명하지 않겠다. 데이터베이스의 전개는 DB2 백업 이미지를 사용하거나 데이터베이스는 로드 파일로 추출된 데이터에서 구현될 수 있다. 저장 프로시저, 트리거, 뷰, 사용자 정의 함수 같은 애플리케이션 객체들이 알맞게 정의되고 액세스 가능한지를 확인하라.




    위로


    작동 가이드

    DB2 Express-C는 리눅스, 유닉스, Windows용 전체 DB2 서버와 같은 데이터베이스 서버 핵심 기술을 바탕으로 하고, DB2 UDB V8.1과 V8.2에 도입된 많은 기능들은 DBA의 관리 작업을 돕는다. DB2 DBA는 테라바이트의 DB2 시스템 또는 DB2 서버를 관리한다. DB2 Express-C에서는 자가 관리와 자가 튜닝 기능도 사용할 수 있기 때문에 최소한의 DB2 DBA의 기술로도 DB2 Express-C 데이터베이스 서버를 사용하는 애플리케이션의 가용성을 최대화 할 수 있다.




    위로


    Cloudscape

    Cloudscape는 순수 자바 데이터베이스 서버이고 자바 애플리케이션이나 중간 규모의 웹 애플리케이션용 임베디드 데이터베이스 엔진으로서 이상적이다. Cloudscape V10은 2004년 IBM에서 처음 릴리스 되었다. 당시에는 무료의 데이터베이스 서버 라이센스로 릴리스 되었다. 동시에 같은 코드 베이스를 가진 Apache Derby Project가 Apache Software Foundation의 인큐베이터 프로젝트로서 시작되었다. ( 참고자료 ) Cloudscape V10은 2005년 8월에 업데이트 되었다. Cloudscape V10.1 릴리스 이전에 Apache Software Foundation의 Derby Project가 인큐베이션 단계에서 벗어나서 Apache DB 프로젝트의 정식 멤버가 되었다. 매우 활동적인 커뮤니티가 있고 데이터베이스 서버는 많은 고객, 연구원, 비즈니스 파트너들이 사용하고 있다. Cloudscape V10.1은 Derby 10.1 코드 베이스에 인스톨러, 드라이버, 툴 등이 추가된 것이다. IBM은 Cloudscape V10.1 고객을 위해 지원 옵션을 제공한다.




    위로


    파트너를 위한 자료

    IBM Virtual Innovation Center( 그림 17)에서는 ISV(독립 소프트웨어 벤더)와 비즈니스 파트너를 위한 애플리케이션을 제공하고 있다. 솔루션에 DB2 Express Edition V8.2.2를 사용할 계획이 있다면 반드시 등록해야 한다.


    그림 17. IBM Virtual Innovation Center - DB2 Express
    IBM Virtual Innovation Center - DB2 Express



    위로


    요약

    DB2 Express-C는 독특한 기능을 가진 데이터 서버의 새로운 대안이다. DB2 Express-C를 다운로드 하여 사용하고 DB2 사용자 커뮤니티에도 참여하기 바란다.

    기사의 원문보기



    참고자료

    교육

    제품 및 기술 얻기

    토론
    posted by 좋은느낌/원철
    2008. 12. 11. 17:48 개발/Linux 계열

    (리눅스) 리눅스 쉘

    영어단어 Shell (쉘)은 조개 껍데기란 뜻이 있죠? 여기서 말하는 '쉘'은 그 내용물인 OS를 둘러싸고 있는 껍질과 같습니다. 즉, OS와 사용자가 의사소통을 하기 위한 대화형 환경입니다.
    여러분이 명령어를 입력하면, 그 명령을 쉘이 해석하여 운영체제에게 전달합니다.

    쉘이란

    컴퓨터는 0과 1만을 이해할 수 있습니다. 하지만, 사람이 컴퓨터가 이해할 수 있는 0과 1만을 사용하여 명령을 내리기는 쉽지 않은 일입니다. 그래서 쉘이라는 것이 명령어를 입력받아 이것을 컴퓨터가 이해할 수 있는 0과 1로 된 명령으로 바꾸어, 이 명령을 처리하는 커널에 전달하는 것입니다.

    사용자가 로그인 할 때 자동적으로 쉘이라는 프로그램이 실행됩니다.

    쉘에는 여러 종류가 있으나, 큰 갈래로는 Bourne Shell 과 C shell이 있습니다. 나머지들은 이들로부터 파생된 것들입니다.

    이중 리눅스에서 기본적으로 사용하고 있는 쉘은 bash 쉘로 Bourne Again Shell이란 뜻입이죠. 이것 역시 Bourne Shell로부터 파생된 것입니다. 사용자가 원한다면, 사용하고자 하는 쉘을 변경할 수도 있습니다.

    쉘이 프롬프트에 사용하는 기호는 쉘마다 다른데, 기본적으로 본 쉘과 콘쉘은 "$"을, C쉘은 "%"을 사용합니다.

    /etc/shells 파일을 열어 보면 사용할 수 있는 쉘들의 경로가 설정되어 있습니다.

    /etc/passwd 파일을 살펴보면, 다음과 같이 사용자가 등록되어 있습니다.

        test1:x:502:502:Test User:/home/test1:/bin/bash

    마지막 항목(/bin/bash)이 사용자가 사용하는 쉘입니다.
    이 사용자가 로그인 할 수 없도록 하려면, 이 부분을 /bin/false 로 변경합니다. 그러면, 명령어을 처리하는 쉘을 얻지 못하므로 어떤 명령도 수행할 수가 없습니다.

    사용자 쉘 바꾸기

    먼저, 현재 사용하고 있는 쉘을 확인해 봅시다.

    잠시 바꾸고 싶을 때는 사용하려는 쉘을 프롬프트에서 실행 시킵니다.
    그 쉘을 빠져나겨려면, 'exit' 명령을 사용합니다.
    기본 쉘을 변경하고 싶을 때는 chsh 명령을 사용하거나, /etc/passwd 파일의 쉘 부분을 변경 합니다.

     

    쉘 환경 설정

    설정 파일

    리눅스에서는 여러 가지 환경 설정 파일을 제공합니다. 이것은 리눅스의 사용자를 더욱 자유롭고 융통성 있게 만들어 줍니다. 이런 파일들은 보통 홈디렉토리 안에 위치하고 있으며,  '.'으로 시작 하는 파일들입니다. 'ls -a' 명령으로 파일의 존재를 확인할 수 있습니다. 파일의 이름은 "Resource Configuration"이라는 의미의 "rc"라는 스펠링으로 끝나는 경우가 많습니다.

    이런 파일들은 새로운 사용자를 등록하면, "/etc/skel " 디렉토리에 기본 값으로 저장되어 있는 파일들을 홈디렉토리에 복사하여 생겨나는 것입니다.

    물론, 그 중에는 쉘 구동 환경을 설정하는 파일들도 있습니다.
     

    [환경 설정 파일 설명 표]  

    파 일

    설  명

    .bashrc

    쉘을 위한 쉘 스크립트로 서브 쉘, 즉 비로그인 쉘이 실행될 때 명령과 프로그램 구조로 구성할 수 있다.
    새로운 쉘이 실행될 때마다 실행.
     

    .bash_profile

    로그인 할 때 읽어 들이는 설정 파일.
    주요 설정 내용은 일반적으로,
    검색 경로, 터미널 종류, 환경변수등을 설정하고, 그 외 로그인 시점에 실행 시키고 싶은 명령, 시스템에 대한 정보를 보여주는 명령등을 수행한다.

    .bash_logout

    로그인 쉘이 종료 되면서 읽어 들인다.

     

    환경 변수

    환경 변수는 쉘 환경을 입맛에 맞게, 혹은 필요에 맞게 설정하는데 사용되는 값들을 가지고 있습니다. 물론, 이 변수값을 수정함으로써 사용자마다 원하는 환경을 설정할 수 있습니다.

    [주요 환경 변수들]

    변수

    설 명

    DISPLAY

    현재 X 윈도우 Display 위치

    HOME

    사용자 홈 디렉토리

    HOSTNAME

    호스트 명

    PATH

    명령어 검색 경로

    PS1

    프롬프트 설정값

    PWD

    현재 작업 디렉토리

    SHELL

    사용하는 쉘

    TERM

    터미널 종류

    MANPATH

    man 페이지 경로

    LS_COLORS

    ls 명령에서 파일 종류별 색상 지정값

     

    환경 변수값 확인

        - 하나씩 확인

            # echo  $변수명   혹은    #printenv  변수명

        - 현재 설정된 변수값 모두 확인

            # printenv

     

    환경 변수값 설정/변경

        export  [환경 변수 명]=[변수 값]

        혹은

        ~/.bash_profile 내의 변수값 설정/변경
        --> 이 파일을 수정하면 쉘 실행시마다 변경할 필요가 없다.
            변수명=변수값  

    쉘  잘 사용하기

    쉘 프롬프트 상에서 명령을 수행하는데 알고 있으면 매우 편리한 몇가지 기능들이 있습니다.

    - 명령 완성 기능

          명령어가 길거나, 이름의 일부만 생각날 경우, 명령어의 일부만 입력하고 'Tab' 키를 입력하면, 가능한 명령어를 완성시켜 줍니다. 만일, 해당하는 명령어가 둘 이상인 경우, 해당하는 명령어의 리스트를 보여줍니다.

    - 화살표 키로 사용했던 명령어 찾아내기

          전에 사용했던 명령을 다시 사용하고 싶은 경우, 아래, 위 화살표를 사용하여, 사용했던 명령어를 아래,위로 검색해 낼 수 있고, 원하는 명령을 실행할 수 있습니다. 여기 나타나는 명령어들은 '~/.bash_history' 파일에 저장되어 있습니다. 저장되는 명령어의 갯수는 HISTSIZE 변수로 결정됩니다.

    - 마우스로 텍스트 복사하기

       X window를  사용하는 경우, 여러개의 터미널을 띄우고, 여러개의 작업을 동시에 수행할 수 있습니다.
       이 경우, 이쪽 터미널에서 저쪽 터미널로 어떤 텍스트를 복사하고자 한다면, 마우스로 원하는 부분을 드래그 하고, 복사되기 원하는 위치로 가서, 가운데 버튼, 2번튼인 경우 두 개 버튼을 동시에 누르면 복사 됩니다. 물론, 에디터에서 에디터로의 복사도 가능합니다.

    - 여러개의 콘솔화면 사용하기

      Remote로 떨어져 있는 터미널에서 telnet으로 접속한 경우가 아니고, 서버에 연결되어 있는 콘솔에서 여러개의 콘솔을 이동하며 사용할 수 있습니다. Alt+F1 ~ F6를 눌러 이동하면서 사용할 수 있습니다.
      X 서버도 여러개 띄우기

    - 명령에 메타문자 사용하기

          명령어에 파일을 인수로 사용할 경우, 하나가 아닌 여러개를 동시에 지정할 필요가 있을 때, 파일을 하나씩 처리한다면, 매우 불편할 것입니다. 이런 작업을 쉽게 하기 위해 와일들카드를 사용합니다.

          ? : 어떤 문자이던지 한문자

          * : 어떤 문자도 없거나, 그 이상인 경우

      지우고자 하는 파일 이름이  'test'로 시작하고 다섯글자인 파일이면,

          # rm test?

      지우고자 하는 파일 이름이 'test'로 시작하는 모든 파일이면,

          # rm test*

      와 같이 사용합니다.  

      그 외에 사용되는 특수 문자들은 다음과 같습니다. 이러한 문자를 메타문자라고 합니다.
      이 문자들을 명령어 사용시 함께 사용하면, 그 문자 나름대로의 기능을 수행하게 됩니다.

    문자

    의  미

    >

    표준출력을 파일에 기록하는 출력 리다이렉션

    >>

    표준 출력을 파일 끝에 덧붙이는 출력 리다이렉션

    <

    파일로부터 표준 입력을 읽는 입력 리다이렉션

    *

    0개의 이상의 문자와 일치하는 파일 치환 대표 문자

    ?

    단일 문자와 일치하는 파일 치환 대표 문자

    [...]

    대괄호 사이의 어떤 문자와도 일치하는 파일 치환 대표문자

    |

    어떤 프로세스의 출력을 다른 프로세스의 입력으로 보내는 파이프 기호

    ;

    명령 순서에 사용

    ||

    이전의 명령이 실패하면 실행하는 조건부 실행

    &&

    이전의 명령이 성공하면 실행하는 조건부 실행

    &

    명령어를 백그라운드로 실행

    #

    # 문자에 뒤따르는 모든 문자들을 주석 처리

    $

    변수 접근

     

    입출력을 다른쪽으로!

    리눅스에서 명령을 수행할 때, 표준 입력/출력 장치가 있습니다.
    보통 표준 입력은 키보드, 표준 출력은 모니터가 될 것입니다.
    필요에 따라서 이 입출력 대상을 변경할 수 있습니다.

    예를들어, 명령의 실행 결과를 화면에 뿌리지 않고, 파일로 저장하고 싶은 경우에 출력을 모니터가 아닌, 결과를 지정 할 파일을 지정하거나, 반복되는 입력이 필요한 경우, 입력해야할 데이터를 파일에 저장하여, 표준 입력을 키보드가 아닌, 이 파일로 저장하려는 경우 등에 사용됩니다.

    명령

    설 명

    명령 > 파일명

    명령 실행 결과를 파일로 출력

    명령 >> 파일명

    명령 실행 결과를 이 파일에 덧붙여 출력

    명령 >& 파일명

    명령 실행 결과와 에러를 파일로 출력

    명령 >>& 파일명

    명령 실행 결과와 에러를 이 파일에 덧붙여 출력

    명령 >! 파일명

    명령 실행 결과를 이 파일이 이미 존재하더라도 무시하고 출력

    명령 >&! 파일명

    명령 실행 결과와 에러를 이 파일이 이미 존재하더라도 무시하고 출력

    명령1 | 명령2

    명령1의 Output을 명령2의 Input으로 사용하여 실행

    [사용예]

    # find  /home  -name  *.conf  >  ../find_results.txt  

    찾은 결과를  부모 디렉토리에 find_results.txt 라는 이름의 파일로 저장한다.

    # ls -al  | grep  conf

    'ls -al' 명령의 Output을  'grep  conf' 명령의 Input으로 사용하는 명령입니다.

    Background 와  Foregound 작업

    리눅스에서는 명령을 '백그라운드'로 수행하는 것이 가능합니다. 터미널 상의 명령 프롬프트 상에서 명령어를 수행할 때, 이것을 '백그라운드'로  처리하려면, 수행하려는 명령 뒤에 ' &'를 붙여 수행합니다. 이것은 명령 수행으로부터 발생하는 Output 조차도 보이지 않는 것을 의미하는 것은 아닙니다. 다만, 백그라운드로 실행되고 있는 명령과 상관없이 명령 프롬프트 상에서 다른 작업을 수행할 수 있는 것입니다. 그러므로, 화면으로 Output을 나타내고 싶지 않다면, 출력을 재지정하여, 명령을 수행하는 것이 유용합니다.

    [백그라운드 작업을 위한 명령어]

    명령

    설 명

    jobs

    현재 백그라운드로 수행되고 있는 작업이 어떤 것이 있는지 list를 보여 줍니다.

    # find / -name  *.conf  &
    # jobs
    [1]+  Running        find / -name  *.conf  &

    작업번호  상태       수행 명령
    의 순으로 보여줍니다.

    fg

    백그라운드로 수행되고 있는 작업을 Foreground로 실행 시키려 할 때 사용하며, 백그라운드로 수행중인 작업이 여러개인 경우, 작업의 번호, 혹은 같은 명령이 수행되고 있는 경우가 아니라면, 그 명령어를 적어줍니다.

    # fg

    혹은 수행해야할 작업이 여러개라면 작업 번호를 인수로 준다.

    # fg 1
    find / -name  *.conf
     

    Ctrl+Z

    전면에 수행되고 있는 명령을 잠시 멈추는 명령으로, 끝내는 것이 아니고, 잠시 멈추는 것입니다.

    # Ctrl+Z
    [1]+  Stopped        find / -name  *.conf  
     

    bg

    현재 멈춰진 명령을 다시 수행 시키되 백그라운드로 수행시키려 할 때 사용합니다.

    # bg  

    혹은 수행해야할 작업이 여러개라면 작업 번호를 인수로 준다.

    # bg 1
    [1]+  find / -name  *.conf  &
     

    Ctrl+C

    Foreground로 수행중인 명령을 중지, 끝내고 싶은 경우 사용합니다. 작업이 바로 종료됩니다.

     

    쉘 스크립트

    쉘에서는 명령이 입력되자마자 실행되는 인터프리터 환경을 제공합니다. 즉, 컴파일 같은 작업이 필요 없이 텍스트 파일 안에 명령 프롬프트에서 실행이 가능한 명령들을 적고, 이 파일에 실행권한을 주고, 명령어 라인에서 명령어 처럼 실행 시키면, 마치 프로그램 처럼 실행이 됩니다. 이런 것을 '쉘 스크립트'라고 합니다. 이 쉘 스크립트에서는 여러개 명령어들을 연속적으로 실행시킬 수 있으며, 제어문과 변수 선언 등이 가능한 프로그래밍 언어와 유사합니다.

    쉘 스크립트를 사용하는 이유는,
        - 어떤 작업을 자동으로 수행하도록 하여 시스템 관리를 쉽고 효율적으로 만들기 위해서

    라는 것이 가장 큰 이유일 것입니다.
    실제로 처음 리눅스를 설치했을 때도, 이미 시스템 관리를 쉽도록 하기 위한 많은 쉘 스크립드들이 존재 합니다.

    사실 명령을 실행시키는데 있어서는 쉘 종류에 따른 차이점을 크게 느낄 수 없지만, 쉘 프로그래밍을 하게 되면 그 차이점을 더 많이 느낄 수 있습니다. 사용하는 함수나, 문법등에 차이가 있습니다. 여기서는 리눅스의 기본 쉘인 bash를 기준으로 설명하며, 자세한 프로그래밍 방법을 설명하려는 것이 아니라, 쉘 프로그래밍의 능력과 필요성을 아는 것이 목적입니다.

    [bash 쉘 스크립트 예제]

    #!/bin/bash
    # 기능 : 검색대상파일에서 검색할 단어가 들어 있는 라인만 따로 파일에 저장하기.

    if [ $# -lt 2 ]   # 넘겨 받은 인수가 2개 미만이면 조건이 참
    then
        echo Usage: $0 검색대상파일 검색할단어
       exit
    fi

    if [ ! -f $1 ]    
    # 첫 번째 인수가 파일이 아니면 조건이 참
    then
       echo "$1 : 그런 파일은 존재하지 않습니다!"
    else
        grep $2 $1 > $1_$2    
    # 두 번째 인수를 첫 번째 인수 이름의 파일에서 찾아서
                                            '첫 번째 인수_두 번째 인수'라는 이름의 파일에 저장.
    fi

    이 스크립트는 두 개의 파라미터를 넘겨 받아,
    첫 번째 인수와 일치하는 이름의 파일에서
    두 번째 인수와 일치하는 라인을 찾아
    '파일 이름_찾은단어'라는 이름의 파일에 저장하는 스크립트입니다.

    스크립트 실행 이후에 'custom_test'라는 파일이 생성된 것을 볼 수 있습니다.

    원하는 내용만 들어있습니다.

     

    위의 예와 같이 bash 쉘 스크립트는  

      #!/bin/bash

    와 같이 시작합니다.(실제, bash 의 디렉토리를 적어 줍니다. )

      $# : 스크립트에 넘겨진 인수의 개수
      $0 : 실행된 쉘 스크립트 이름
      $1~$nnn : 넘겨진 인수들을 순서대로 나타냄

    이 외에도 변수를 지정하고, 조건문, 반복문, case문등의 문법을 이용하여, 원하는 작업을 수행하는 쉘을 만들 수 있습니다.

    다음은 쉘 프로그래밍을 위한 잘 정리된 문서입니다. 참고 하세요.

    posted by 좋은느낌/원철
    2008. 12. 8. 15:54 개발/Linux 계열
    1. java.sun.com에서 아래 파일을 다운 받습니다.

    jdk-1_5_0_16-linux-i586-rpm.bin : Redhat RPM Shell script

    jdk-1_5_0_16-linux-i586.bin : GNUZIP Tar Shell script


    2. jdk-1_5_0_16-linux-i586.bin 을 이용한 JDK 설치를 설명합니다.

    해당 파일을 설치할 디렉토리로 copy 또는 move 시킵니다.

    실습에서는 /usr/local 디렉토리에 JDK를 설치하는 단계를 설명합니다.

    [root@localhost local]# cp /home/prowoni/download/jdk-1_5_0_16-linux-i586.bin ./.[root@localhost local]# ll
    -rw-r--r-- 1 root root 49654522 2008-07-11 23:24 jdk-1_5_0_16-linux-i586.bin


    3. 해당 파일을 실행가능한 파일로 바꿉니다.

    [root@localhost local]# chmod +x jdk-1_5_0_16-linux-i586.bin

    [root@localhost local]# ll
    -rwxr-xr-x 1 root root 49654522 2008-07-11 23:24 jdk-1_5_0_16-linux-i586.bin


    4. /usr/local 디렉토리에서 bin 파일을 실행시킵니다.

    [root@localhost local]#./jdk-1_5_0_16-linux-i586.bin


    5. bin 파일을 실행 후 /usr/local 디렉토리에 jdk1.5.0_16 디렉토리가 생성되었고 jdk1.5.0_16 안에는 bin 등 JDK가 설치되어 있습니다.

    [root@localhost local]# ll
    -rwxr-xr-x 1 root root 49654522 2008-07-11 23:24 jdk-1_5_0_16-linux-i586.bin
    drwxr-xr-x 9 root root     4096 2008-05-28 18:46 jdk1.5.0_16


    6. /usr/local/jdk1.5.0_16/bin 에 보면 다음과 같은 실행파일들이 있습니다.

    [root@localhost bin]# ll
    합계 2860
    -rwxr-xr-x 1 root root   4153 2008-05-28 18:31 ControlPanel
    -rwxr-xr-x 1 root root   1080 2008-05-28 18:31 HtmlConverter
    -rwxr-xr-x 1 root root  62564 2008-05-28 18:14 appletviewer
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:02 apt
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:20 extcheck
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:05 idlj
    -rwxr-xr-x 1 root root  62364 2008-05-28 18:06 jar
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:06 jarsigner
    -rwxr-xr-x 1 root root  65116 2008-05-28 18:00 java
    -r-xr-xr-x 1 root root   1789 2008-05-28 18:15 java-rmi.cgi
    -rwxr-xr-x 1 root root  62428 2008-05-28 18:00 javac
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:01 javadoc
    -rwxr-xr-x 1 root root  62332 2008-05-28 18:02 javah
    -rwxr-xr-x 1 root root  62364 2008-05-28 18:16 javap
    -rwxr-xr-x 1 root root 176072 2008-05-28 18:31 javaws
    -rwxr-xr-x 1 root root  62364 2008-05-28 18:17 jconsole
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:20 jdb
    -rwxr-xr-x 1 root root  62460 2008-05-28 18:16 jinfo
    -rwxr-xr-x 1 root root  62460 2008-05-28 18:16 jmap
    -rwxr-xr-x 1 root root  62364 2008-05-28 18:16 jps
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:16 jsadebugd
    -rwxr-xr-x 1 root root  62460 2008-05-28 18:16 jstack
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:16 jstat
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:16 jstatd
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:06 keytool
    -rwxr-xr-x 1 root root  62428 2008-05-28 18:06 kinit
    -rwxr-xr-x 1 root root  62428 2008-05-28 18:06 klist
    -rwxr-xr-x 1 root root  62428 2008-05-28 18:06 ktab
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:16 native2ascii
    -rwxr-xr-x 1 root root  62620 2008-05-28 18:17 orbd
    -rwxr-xr-x 1 root root  62428 2008-05-28 18:18 pack200
    -rwxr-xr-x 1 root root  62628 2008-05-28 18:06 policytool
    -rwxr-xr-x 1 root root  62364 2008-05-28 18:15 rmic
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:15 rmid
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:15 rmiregistry
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:16 serialver
    -rwxr-xr-x 1 root root  62396 2008-05-28 18:17 servertool
    -rwxr-xr-x 1 root root  62620 2008-05-28 18:17 tnameserv
    -rwxr-xr-x 1 root root 357381 2008-05-28 18:18 unpack200


    7. java -version 을 실행하여 정상적인 실행과 버전을 확인합니다.

    [root@localhost bin]# ./java -version
    java version "1.5.0_16"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
    Java HotSpot(TM) Client VM (build 1.5.0_16-b02, mixed mode, sharing)


    8. 사용자의  쉡 환결파일에 JAVA_HOME을 SET 해주고, bin 디렉토리를 path에 추가하여 사용자가 실행가능하도록 합니다.

    # .bashrc
    # prowoni util path
    # set java home
    export JAVA_HOME=/usr/local/jdk1.5.0_16
    # set ant home
    export ANT_HOME=/usr/local/ant-1.7.1
    # set path
    export PATH=${JAVA_HOME}/bin:${PATH}:${ANT_HOME}/bin

    posted by 좋은느낌/원철
    2008. 12. 8. 13:17 개발/WebSphere

    WebSpere Application Server 6.x 에서는 web.xml을 두곳(ND 의 경우는 세곳) 에서 관리합니다.  --> ibm-web-bnd.xmi, ibm-web-ext.xmi 도 마찬가지...

    그래서 두곳 전부 고쳐주셔야 제대로 반영이 된답니다.


    BASE
    1. <어플리케이션 설치 디렉토리>/WEB-INF/web.xml
    --> 어플리케이션을 디폴트로 설치 했다면 <was_home>/profiles/<profile_name>/installedApps/<cell_name>/<applicatioin ear>/<application war>/WEB-INF/web.xml

    2. <was_home>/profiles/<profile_name>/config/cells/<cell_name>/applications/<application ear>/deployments/<application_name>/<application war>/WEB-INF/web.xml

    ==> 프로파일을 다른 곳에 설치 하셨다면 그 아래로 부터 경로를 따라 가시면 됩니다.


    위 두개를 고친 후 응용어플리케이션 만 내렸다 올리시면 됩니다.


    Network Deployment
    1.번과 2번은 BASE 와 동일
    3. <was_home>/profiles/<dmgr_profile_name>/config/cells/<cell_name>/applications/<application ear>/deployments/<application_name>/<application war>/WEB-INF/web.xml

    ==> dmgr 프로파일 아래를 고쳐야 합니다. ND 에서는 dmgr아래에서 master config 를 관리하죠.




    이래서 너무 복잡하기 때문에 저는 웹 어드민 콘솔의 응용어플리케이션 갱신을 이용하라고 권합니다.

    web.xml을 수정할때 갱신 방법의 세번째인 '단일 파일 대체 및 추가'를 이용하세요

    응용프로그램 갱신 방법 : http://cafe.naver.com/devmaster/130





    또 다른 방법은 ND에서 master(위 내용중 3번)을 수정 한 후에

    웹 어드민 콘솔에서 시스템 관리 --> 노드 에 가셔서 노드를 선택한 후 '전체 재 동기화' 버튼을 클릭하면 나머지 노드에도 수정한 내용이 전파 됩니다.

     
    posted by 좋은느낌/원철
    2008. 12. 3. 19:30 개발/WebSphere

     

    AIX, HP-UX, Linux, Linux on PowerPC, Solaris 또는 Windows 운영 체제에 WebSphere Application Server - Express를 설치하십시오. AIX 5L, HP-UX, Linux, Linux on zSeries, Solaris 또는 Windows 운영 체제에 WebSphere Application Server를 설치하십시오. AIX 5L, HP-UX, Linux, Linux on zSeries, Solaris 또는 Windows 운영 체제에 WebSphere Application Server Network Deployment를 설치하십시오. 버전 6.1 WebSphere Application Server 기본, Express 또는 Network Deployment 제품에 기능팩을 설치할 수 있습니다.

    시작하기 전에

    설치 도구를 사용하기 전에 이 주제를 읽고 설치를 준비하거나 설치 옵션에 대한 정보를 확인하십시오. 지원되는 하드웨어 및 소프트웨어 웹 사이트에서 하드웨어 및 소프트웨어 요구사항도 읽으십시오.

    버전 6.1 WebSphere Application Server 제품 설치 위에 기능팩을 설치할 수 있습니다. 버전 6.1 설치에 필요한 운영 제체가 준비되었으면 기능팩을 설치하는 데 필요한 추가 요구사항은 없습니다.

    버전 6.1 제품을 아직 설치하지 않았으면 WebSphere Application Server 기본, Express 또는 Network Deployment 제품을 설치하십시오. 설치 지시사항은 해당 제품의 문서를 참조하십시오.

    [이 정보는 Microsoft Windows Vista 운영 체제에서 버전 6.1.0.9 이상에만 적용됩니다.] WebSphere Application Server를 Microsoft® Windows Vista™ 운영 체제에 설치하는 가이드라인:
    • Windows Vista 운영 체제에서 WebSphere Application Server 버전 6.1에 대한 지원은 WebSphere Application Server 버전 6.1.0.9로 시작되었습니다.

      Windows Vista 운영 체제는 WebSphere Application Server 개발 및 테스트를 위한 32비트 플랫폼으로 지원되지만, Application Server 프로덕션 용도로는 지원되지 않습니다. 개발, 테스트 및 프로덕션 용도의 응용프로그램 클라이언트가 지원됩니다.

      자세한 정보는 WebSphere Application Server 세부사항 시스템 요구사항Microsoft Windows Vista용 WebSphere Application Server 지원 운영 체제를 참조하십시오.

    • Microsoft Windows Vista 운영 체제와 이전 운영 체제 간의 차이(특히 UAC(User Account Control) 영역에서) 때문에, Windows Vista 운영 체제를 포함하는 시스템에 Websphere Application Server를 설치할 경우 다음 프로시저를 따라야 합니다.
      1. 먼저 Websphere Application Server 버전 6.1을 설치하십시오.
        Windows Vista 운영 체제와 이전 Microsoft Windows 운영 체제 간의 차이를 이해하고 설치를 수행하십시오. Websphere Application Server 설치 및 조작 관점에서 보면 Windows Vista 운영 체제의 가장 중요한 변경사항 중 하나는 UAC의 도입입니다. UAC는 Windows Vista 운영 체제에서 기본적으로 사용 가능합니다.
        • 설치 실행

          런치패드 GUI를 사용한 Websphere Application Server 버전 6.1 컴포넌트 설치 시작은 Windows Vista 운영 체제를 포함하는 시스템에서 Websphere Application Server를 실행 중인 경우 지원되지 않습니다. Windows Vista 운영 체제를 실행 중인 시스템에 설치 매체를 삽입할 때 런치패드가 자동으로 시작되는 경우, 런치패드를 취소하십시오.

          Windows Vista 운영 체제를 실행 중인 시스템에 Websphere Application Server 컴포넌트를 설치하려면 다음 조치를 수행해야 합니다.
          1. 개별 컴포넌트 디렉토리로 찾아가십시오.
          2. Windows Vista 운영 체제 설치 시 작성한 관리자 계정을 사용하여 해당 디렉토리에 있는 install.exe 프로그램을 실행하십시오.
            • Windows Vista 운영 체제에서 install.exe가 설치 프로그램인 것을 감지하여, 관리자 특권에 대한 상승 프롬프트를 표시합니다. 계속하려면 허용을 클릭하십시오.
            • Windows Vista 운영 체제가 높여진 (관리자) 특권이 필요한 프로그램을 실행하도록 요청될 경우, 먼저 사용자에게 프로그램 공개자 인식 여부를 알립니다. 특정 Websphere Application Server 프로그램(install.exe)의 경우, 예를 들면 운영 체제 대화 상자가 "식별할 수 없는 프로그램이 사용자 컴퓨터에 액세스하려고 합니다"를 나타낼 수 있습니다. 실행하려는 Websphere Application Server 프로그램인지 프로그램 세부사항을 검사하고 계속하려면 허용을 클릭하십시오.

          Windows Vista 운영 체제를 실행 중인 시스템에 설치 매체를 삽입할 때 런치패드가 자동으로 시작되는 경우, 런치패드를 취소하십시오.

        • 사용자 계정 선택

          Windows Vista 운영 체제 설치 시 작성한 관리자 계정을 사용하여 WebSphere Application Server를 설치하십시오. 이 계정은 관리자 그룹의 구성원입니다.

        • 설치 위치 선택
          Windows Vista 운영 체제 이외의 Windows 운영 체제인 경우, 다음 기본 설치 디렉토리가 대개 사용됩니다.
          C:\Program Files\IBM\WebSphere\AppServer
          
          그러나 WebSphere Application Server는 설치 디렉토리에서 다양한 로그 파일과 구성 파일을 찾고, Windows Vista 운영 체제에서 Program Files 디렉토리에 있는 파일은 관리자 특권으로 실행하는 응용프로그램에 의해서만 작성되거나 수정될 수 있습니다. 그러므로 Windows Vista 운영 체제를 실행하는 시스템에서는 관리자 계정의 사용자 디렉토리에 Websphere Application Server를 설치해야 합니다. 일반적으로 다음 디렉토리와 같습니다.
          C:\Users\administrator_account_name\IBM\Websphere\AppServer 
          권장 위치에 설치하도록 수동으로 기본 선택을 대체해야 할 수도 있습니다. 사용자에게 적합한 우수 사례는 다음 디렉토리에 모든 WebSphere Application Server 컴포넌트를 설치하는 것입니다.
          C:\Users\administrator_account_name\IBM
          주: Program Files 디렉토리(모든 경우에 권장되지는 않음)에 설치하면 관리자 이외의 사용자인 경우 Websphere Application Server 아이콘 및 바로 가기가 Windows 시작 메뉴에 작성되지 않습니다. Websphere Application Server 아이콘 및 바로 가기를 표준 특권을 갖는 사용자의 시작 메뉴에 작성하려면 Program Files 이외의 디렉토리에 설치해야 합니다.
        • 자동 설치
          Windows Vista 운영 체제를 실행 중인 시스템에 6.1 버전의 자동 설치를 수행하려면 관리자 특권이 필요합니다.
          • 표준 사용자 특권을 사용하여 자동 설치를 실행하는 경우, 계속할 수 있기 전에 관리자 특권으로 높이는 프롬프트가 표시됩니다.
            다음 조치를 수행하여 열리는 명령 프롬프트 창에서 자동 설치를 실행하면 이 프롬프트가 표시되지 않습니다.
            • 명령 프롬프트 바로 가기를 오른쪽 마우스 단추로 클릭하십시오.
            • 관리자로 실행을 클릭하십시오.
          • 명령 프롬프트 창을 관리자로 열면 계속할 것인지 묻는 운영 체제 대화 상자가 나타납니다. 계속하려면 계속을 클릭하십시오.

          권장 설치 디렉토리를 가리키도록 응답 파일의 installLocation 스펙을 수동으로 변경해야 할 수도 있습니다.

        • 비관리자로 설치
          • 비관리가 버전 6.1 원본 매체를 사용하여 Windows Vista 운영 체제를 실행 중인 시스템에 버전 6.1을 설치하려는 경우, 운영 체제에서 비관리자 계정을 사용하여 응용프로그램을 설치하지 않습니다. 운영 체제에서 비관리자를 높은 (관리자) 특권이 있는 계정으로 변경하도록 요구합니다.
          • Windows Vista 운영 체제를 실행 중인 시스템에서 비관리자가 WebSphere Application Server를 설치할 수 있게 하려면 적절한 Manifest가 install.exe 파일에 있어야 합니다. Manifest는 관리자 특권이 필요하지 않음을 운영 체제에 알립니다. 이 Manifest는 버전 6.1의 원본 매체에 있는 install.exe 파일에는 존재하지 않습니다.

            install.exe 파일을 적절한 Manifest를 포함하는 파일로 바꾸고 비관리자로 설치를 실행하려면 A non-Administrator might not be able to install WebSphere Application Server on a Microsoft Windows Vista operating system의 프로시저를 완료하십시오.

          • 비관리자는 Program Files 디렉토리(모든 경우에 권장되지는 않음)에 버전 6.1을 설치하려고 하지 않아야 합니다. 왜냐하면 이 디렉토리에 설치하려면 관리자 특권이 필요합니다.
        • 설치 이후 런타임 조작 수행
          버전 6.1 설치 후 바로 다음과 같은 런타임 조작을 수행하지 마십시오.
          • Websphere Application Server 런타임 실행
          • 설치 확인
          • 프로파일 관리 도구 또는 manageprofiles 명령을 사용하여 프로파일 작성
          이 프로시저에서 나중에 설명된 대로 버전 6.1.0.9 이상을 포함하는 서비스 팩을 설치한 후에 다음 조작을 수행할 수 있습니다.
      2. 제품 지원 웹 사이트에서 WebSphere Software 버전 6.1.0.9 이상을 위한 설치 갱신 프로그램을 다운로드 및 설치하십시오.

        해당 설치 갱신 프로그램 다운로드 페이지에 대한 링크와 설치 지시사항은 WebSphere Application Server의 권장 수정사항을 참조하십시오.

      3. WebSphere Application Server용 IBM Installation Factory의 최신 코드를 다운로드 및 설치하십시오.

        해당 설치 팩토리 다운로드 페이지에 대한 링크는 WebSphere Application Server의 권장 수정사항을 참조하십시오.

      4. IBM JDK(Java™ 2 Platform Standard Edition Development Kit) 1.5 Service Release 5 이상을 사용 중인지 확인하십시오.
      5. WebSphere Software 버전 6.1.0.9 이상을 위한 설치 갱신 프로그램을 사용하여 Websphere Application Server 버전 6.1.0.9 이상을 포함하는 서비스 팩을 설치하십시오.

        버전 6.1 설치에 사용했던 것과 동일한 관리자 계정을 사용하는지 확인하십시오.

      6. 이제 다음 조치를 수행할 수 있습니다.
        • Websphere Application Server 런타임을 실행합니다.
        • 설치를 확인합니다.
        • 프로파일 관리 도구 또는 manageprofiles 명령을 사용하여 프로파일을 작성하십시오.

    Microsoft Windows Vista 운영 체제의 경우를 제외하고, 런치패드는 설치를 시작하기 위해 선호되는 방법입니다. 런치패드를 사용하여 제품 개요, 설치 안내서 및 readme 파일에 액세스하십시오. 각 설치 프로시저를 실행하려면 런치패드를 사용하십시오. 자세한 정보는 LaunchPad를 사용하여 설치 시작 의 내용을 참조하십시오.

    런치패드는 설치 시작을 위한 선호하는 방법입니다. 런치패드를 사용하여 제품 개요, 설치 안내서 및 readme 파일에 액세스하십시오. 각 설치 프로시저를 실행하려면 런치패드를 사용하십시오. 자세한 정보는 LaunchPad를 사용하여 설치 시작 의 내용을 참조하십시오.

    AIX 또는 Linux 같은 플랫폼에서 루트 사용자로 설치하거나 또는 Windows 플랫폼의 관리자 그룹에 속하는 사용자 ID로 설치하십시오.

    [Windows] 관리자 그룹의 구성원으로 로그온하여 제품을 설치하십시오. 관리자 그룹에 속하지 않은 사용자 ID에서는 제품을 올바르게 설치할 수 없습니다.

    [Windows] 설치 프로시저는 설치 프로그램 ID에 Windows 서비스를 설치하기 위해 다음 고급 사용자 권한인 운영 체제의 일부로서 역할 수행서비스로 로그온이 있어야 합니다.

    [AIX] [HP-UX] [Linux] [Solaris] 설치 프로그램 ID는 비루트 사용자 ID가 될 수 있습니다. 그러나, 일부 설치 프로시저에서는 설치자 ID가 루트 사용자여야 합니다. 이러한 프로시저의 예로는 IBM HTTP Server에서 SSL을 사용할 때 필요한 GSKit이 있습니다. 비루트 사용자로 IBM HTTP Server 또는 웹 서버 플러그인을 설치한 후 루트 사용자로 로그온하고 GSKit을 설치하십시오. 비루트 제한사항에 대한 자세한 정보는 비루트 설치 프로그램 제한사항 의 내용을 참조하십시오.

    이 타스크 정보

    이 주제의 정보를 사용하여 사용 가능한 설치 유형에 대해 배우십시오. 이 주제에는 더 자세한 설치 주제에 대한 링크가 있습니다.

    설치 마법사 GUI 또는 자동 모드를 사용하여 제품을 설치할 수 있습니다. 설치 마법사는 다음 조치를 수행합니다.
    • 자동으로 전제조건 확인
    • 이전 WebSphere Application Server 버전 6.0.x 설치를 찾아서 제품 2진에 기능을 추가할 수 있는지 또는 새 제품 2진 세트를 설치할 수 있는지 여부를 판별하십시오.
    • 이전 버전 6.0.x 설치를 찾아서 평가판 설치에서 실제 제품으로 업그레이드할 수 있는지 판별하십시오.
    • 이전 WebSphere Application Server 버전 6.1 설치를 찾아서 제품 2진에 기능을 추가할 수 있는지 또는 새 제품 2진 세트를 설치할 수 있는지 여부를 판별하십시오.
    • 이전 버전 6.1 설치를 찾아서 평가판 설치에서 실제 제품으로 업그레이드할 수 있는지 판별하십시오.
    • 필수 제품 2진 코드 설치
    • 독립형 Application Server 노드 작성
    • Deployment Manager 프로파일, Application Server 프로파일 또는 사용자 정의 프로파일을 작성할 수 있는 프로파일 작성 마법사를 시작하도록 프롬프트합니다.
    • 셀 프로파일, Deployment Manager 프로파일, 독립형 Application Server 프로파일 또는 사용자 정의 프로파일을 작성하도록 프롬프트하거나 프로파일 관리 도구를 시작하여 프로파일을 작성하도록 프롬프트
    • 프로파일 관리 도구를 사용하여 프로파일을 확장하거나 작성하도록 프롬프트

    프로시저

    1. 설치 계획 에서 설명한 대로 설치를 계획하십시오.
    2. 제품 설치에 맞게 운영 체제 준비 에서 설명한 대로 설치할 운영 플랫폼을 준비하십시오.
    3. 길잡이: Express 제품 설치 에서 설명한 대로 Express 제품 설치를 위한 길잡이를 검토하십시오.
    4. Express 제품을 설치하십시오.

      어떠한 이유로 운영 체제에서 그래픽 사용자 인터페이스를 사용할 수 없으면 자동 모드에서 마법사를 사용하십시오.

      설치 시나리오를 선택하십시오.
      • 그래픽 사용자 인터페이스: tins_typicale.html에서 설명한 대로 마법사를 사용하여 일반 설치를 수행하십시오.

        Express 제품의 일반 설치는 기능을 모두 설치합니다.

      • 그래픽 사용자 인터페이스: Express 설치 에서 설명한 대로 마법사를 사용하여 설치하십시오.

        Express 설치 시 런치패드를 사용하여 마법사를 시작하는 방법을 권장합니다. 예제: 런치패드를 사용하여 Express 설치 의 내용을 참조하십시오.

      • 그래픽 사용자 인터페이스: tins_custome.html에서 설명한 대로 마법사를 사용하여 사용자 정의 설치를 수행하십시오.

        사용자 설치를 사용하여 설치할 기능을 선택할 수 있습니다.

      • 그래픽 사용자 인터페이스: 기존의 Express 제품에 추가 기능 설치 에서 설명한 대로 기존 설치에 추가 기능을 설치하십시오.

        Express를 설치한 후, 이전에 설치 제거한 기능을 설치하여 시스템 파일을 업그레이드하기 위해 다시 설치할 수 있습니다.

      • 그래픽 사용자 인터페이스: Express 평가판을 Express 제품으로 업그레이드 에서 설명한 대로 평가판을 제품 버전으로 업그레이드하십시오.
      • 명령행 인터페이스: 자동 설치 에서 설명한 대로 자동 설치를 수행하십시오.

        자동 설치를 하려면 모든 설치 선택사항을 포함하는 응답 파일을 편집해야 합니다. 유효한 응답 파일을 작성한 후 명령 창에서 -silent 매개변수 및 -options 매개변수와 함께 install 명령을 발행하십시오.

      설치 프로그램은 ISMP 콘솔 설치 메소드를 현재 지원하지 않습니다.

      추가 디스크 공간 또는 임시 공간이 필요하거나 시스템에 전제조건 패키지가 누락되는 등의 문제점이 있는 경우, 설치를 취소하고 필수 변경을 수행한 후 설치를 재시작하십시오.

    5. rins_baseroadmap.html에서 설명한 대로 기본 제품 설치를 위한 길잡이를 검토하십시오.
    6. 기본 제품을 설치하십시오.

      어떠한 이유로 운영 체제에서 그래픽 사용자 인터페이스를 사용할 수 없으면 자동 모드에서 마법사를 사용하십시오.

      설치 시나리오를 선택하십시오.
      • 그래픽 사용자 인터페이스: tins_typicalb.html에서 설명한 대로 마법사를 사용하여 일반 설치를 수행하십시오.

        기본 제품의 일반 설치는 기능을 모두 설치합니다.

      • 그래픽 사용자 인터페이스: tins_customb.html.tins_customb_61.html에서 설명한 대로 마법사를 사용하여 사용자 설치를 수행하십시오.

        사용자 설치를 사용하여 설치할 기능을 선택할 수 있습니다.

      • 그래픽 사용자 인터페이스: tins_featuresb.html에서 설명한 대로 기존 설치에 추가 기능을 설치하십시오.

        제품을 설치한 후, 이전에 설치 제거한 기능을 설치하여 시스템 파일을 업그레이드하기 위해 다시 설치할 수 있습니다.

      • 그래픽 사용자 인터페이스: tins_upgradeeb.htmltins_upgradeb.html에서 설명한 대로 평가판을 제품 버전으로 업그레이드하십시오.
      • 명령행 인터페이스: 자동 설치 에서 설명한 대로 자동 설치를 수행하십시오.

        자동 설치를 하려면 모든 설치 선택사항을 포함하는 응답 파일을 편집해야 합니다. 유효한 응답 파일을 작성한 후 명령 창에서 -silent 매개변수 및 -options 매개변수와 함께 install 명령을 발행하십시오.

      설치 프로그램은 ISMP 콘솔 설치 메소드를 현재 지원하지 않습니다.

      추가 디스크 공간 또는 임시 공간이 필요하거나 시스템에 전제조건 패키지가 누락되는 등의 문제점이 있는 경우, 설치를 취소하고 필수 변경을 수행한 후 설치를 재시작하십시오.

    7. rins_ndroadmap.html에서 설명한 대로 Network Deployment 제품 설치를 위한 길잡이를 검토하십시오.
    8. 기존 버전 6.1 WebSphere Application Server 설치에 기능팩을 설치하십시오.

      어떠한 이유로 운영 체제에서 그래픽 사용자 인터페이스를 사용할 수 없으면 자동 모드에서 마법사를 사용하십시오.

      설치 시나리오를 선택하십시오.
      • 그래픽 사용자 인터페이스: 설치 마법사를 사용하여 버전 6.1 설치에 웹 서비스 기능팩을 설치하십시오.

        tins_install_wbs.html의 내용을 참조하십시오.

        SOA 베타 사용자: SOA 기능팩을 설치하려면 먼저 웹 서비스 기능팩을 설치해야 합니다.

      • 그래픽 사용자 인터페이스: 설치 마법사를 사용하여 버전 6.1에 서비스 지향 아키텍처(SOA) 기능팩을 설치하십시오.

        tins_install_soa.html의 내용을 참조하십시오.

      • 명령행 인터페이스: 자동 설치를 수행하십시오.

        자동 설치를 하려면 모든 설치 선택사항을 포함하는 응답 파일을 편집해야 합니다. 유효한 응답 파일을 작성한 후 명령 창에서 -silent 매개변수 및 -options 매개변수와 함께 install 명령을 발행하십시오.

        tins_runSilent_wbs.html의 내용을 참조하십시오.

        tins_runSilent_soa.html의 내용을 참조하십시오.

      설치 프로그램은 ISMP 콘솔 설치 메소드를 현재 지원하지 않습니다.

      또한 웹 서비스 및 SOA 기능팩을 동시에 설치할 수 없습니다. 두 개의 별개 프로세스는 동일한 설치 코드의 두 인스턴스를 동시에 실행할 수 없습니다.

      추가 디스크 공간 또는 임시 공간이 필요하거나 시스템에 전제조건 패키지가 누락되는 등의 문제점이 있는 경우, 설치를 취소하고 필수 변경을 수행한 후 설치를 재시작하십시오.

    9. Network Deployment 제품을 설치하십시오.

      어떠한 이유로 운영 체제에서 그래픽 사용자 인터페이스를 사용할 수 없으면 자동 모드에서 마법사를 사용하십시오.

      설치 시나리오를 선택하십시오.
      • 그래픽 사용자 인터페이스: tins_customn.html에서 설명한 대로 마법사를 사용하여 설치를 수행하십시오.

        설치를 사용하여 설치할 기능을 선택할 수 있습니다.

      • 그래픽 사용자 인터페이스: tins_featuresn.html에서 설명한 대로 기존 설치에 추가 기능을 설치하십시오.

        제품을 설치한 후, 이전에 설치 제거한 기능을 설치하여 시스템 파일을 업그레이드하기 위해 다시 설치할 수 있습니다.

      • 명령행 인터페이스: 자동 설치 에서 설명한 대로 자동 설치를 수행하십시오.

        자동 설치를 하려면 모든 설치 선택사항을 포함하는 응답 파일을 편집해야 합니다. 유효한 응답 파일을 작성한 후 명령 창에서 -silent 매개변수 및 -options 매개변수와 함께 install 명령을 발행하십시오.

      설치 프로그램은 ISMP 콘솔 설치 메소드를 현재 지원하지 않습니다.

      추가 디스크 공간 또는 임시 공간이 필요하거나 시스템에 전제조건 패키지가 누락되는 등의 문제점이 있는 경우, 설치를 취소하고 필수 변경을 수행한 후 설치를 재시작하십시오.

    10. 옵션: IBM HTTP Server를 설치하십시오.

      WebSphere Application Server 제품을 설치한 후 Application Server를 사용하여 인터넷에서 응용프로그램을 제공할 수 있습니다. 다른 웹 서버에 IBM HTTP Server를 설치할 필요가 없습니다.

      설치 계획 의 설치 솔루션 다이어그램은 다른 유형의 환경에 있는 컴포넌트를 보여줍니다.

      IBM HTTP Server 설치에 대한 자세한 정보는 IBM HTTP Server 설치 의 내용을 참조하십시오.

    11. 옵션: IBM HTTP Server용 웹 서버 플러그인 또는 지원 웹 서버를 설치하십시오.

      IBM HTTP Server 또는 다른 웹 서버를 설치하는 경우 웹 서버가 WebSphere Application Server 제품과 통신할 수 있도록 2진 모듈을 설치해야 합니다.

      웹 서버 플러그인을 설치한 후 플러그인 설치 마법사는 Application Server 구성에 웹 서버 정의라는 새 요소를 구성합니다. 그런 다음, 관리 콘솔을 사용하여 웹 서버에 대한 응용프로그램을 관리할 수 있습니다.

      자세한 정보는 웹 서버 플러그인 설치 의 내용을 참조하십시오.

    12. 옵션: 응용프로그램 클라이언트를 설치하십시오.

      전개 중인 응용프로그램이 클라이언트 응용프로그램으로 실행되도록 설계되지 않았으면 응용프로그램 클라이언트를 설치할 필요가 없습니다.

      자세한 정보는 WebSphere Application Server용 응용프로그램 클라이언트 설치 의 내용을 참조하십시오.

    13. 옵션: Application Server Toolkit을 설치하십시오.

      Application Server Toolkit 개발 환경을 설치할 필요는 없습니다. Application Server Toolkit을 사용하여 WebSphere Application Server에 J2EE 응용프로그램을 개발, 어셈블 및 전개할 수 있습니다.

      자세한 정보는 길잡이: Application Server Toolkit 설치 의 내용을 참조하십시오.

    14. 옵션: Rational Web Developer를 설치하십시오.

      통합 개발 환경을 설치할 필요가 없습니다. 개발 환경은 웹 응용프로그램 개발자를 위한 것입니다.

      자세한 정보는 rins_rwdroadmap.html의 내용을 참조하십시오.

    15. 옵션: WebSphere 소프트웨어용 설치 갱신 프로그램을 설치하십시오.

      제품 패키지에 있는 설치 가능한 WebSphere 소프트웨어 컴포넌트용 유지보수 패키지를 설치하려면 설치 갱신 프로그램을 사용하십시오. 자세한 정보는 WebSphere 소프트웨어용 설치 갱신 프로그램 설치 의 내용을 참조하십시오.

    16. 옵션: 설치 갱신 프로그램, 이주 도구, IBM Support Assistant 및 World Type 글꼴에 액세스하려면 설치 및 이주 도구 디스크를 사용하십시오.

      자세한 정보는 WebSphere Application Server 보완 기능 디스크 의 내용을 참조하십시오.

    결과

    이 프로시저에 따라 IBM WebSphere Application Server - Express 버전 6.x를 설치할 수 있습니다.

    이 프로시저에 따라 IBM WebSphere Application Server 버전 6.x를 설치할 수 있습니다.

    이 프로시저에 따라 WebSphere Application Server Network Deployment 버전 6.x를 설치할 수 있습니다.

    기능팩은 기존 제품에 설치됩니다.

    또한 IBM HTTP Server, WebSphere Application Server용 웹 서버 플러그인 및 WebSphere Application Server용 응용프로그램 클라이언트를 설치할 수도 있습니다.

    다음에 수행할 내용

    이전 버전의 WebSphere Application Server로부터 이주에 대한 정보는 이주, 공존 및 상호운영성 개요 의 내용을 참조하십시오.

    응용프로그램 전개 시작하기에 대한 정보는 WebSphere Application Server에 대한 빠른 경로 의 내용을 참조하십시오.



    posted by 좋은느낌/원철
    2008. 12. 3. 19:21 개발/WebSphere

    이 주제에서는 일반적인 설치 시나리오와 각 시나리오에 해당되는 컴포넌트 설치 프로시저로의 링크에 대해 설명합니다.

    시작하기 전에

    IBM WebSphere Application Server는 Application Server, 웹 개발 도구 세트, 웹 서버 및 추가 지원 소프트웨어와 문서를 포함하는 통합 플랫폼입니다.

    이 타스크 정보

    각 시나리오에는 다이어그램과 자세한 설치 단계 목록이 있습니다.

    프로시저

    • 시나리오 1: WebSphere Application Server의 단일 시스템 설치

      WebSphere Application Server만을 단일 시스템에 설치하면 자동으로 server1이라 이름 지정된 독립형 Application Server가 작성됩니다. 기본 제품을 설치하면 코어 제품 파일 및 Application Server에 대한 프로파일이 작성됩니다. 프로파일은 Application Server 환경을 정의하는 별도의 파일 세트입니다.

      이 시나리오에서 Application Server는 상대적으로 낮은 요청 워크로드로 응용프로그램을 핸들하는 데 적합한 내부 HTTP 전송 체인을 사용하여 통신합니다. 예를 들면, 이 유형의 설치는 간단한 테스트 환경이나 부분적인 인트라넷 환경을 지원할 수 있습니다.


      독립형 프로파일을 작성하면 server1 프로세스가 작성됨

      1. WebSphere Application Server를 설치하십시오.
    • 시나리오 2: WebSphere Application Server 및 웹 서버의 단일 시스템 설치

      IBM HTTP Server와 같은 웹 서버를 Application Server와 동일한 시스템에 설치하면 추가 구성 옵션이 제공됩니다. 웹 서버 플러그인을 설치하면 웹 서버가 Application Server와 통신할 수 있습니다. 이 설치 시나리오는 방화벽이 필요하지 않은 엄격한 테스트 환경 또는 프로덕션 환경을 지원합니다. 그러나, 이것이 일반 프로덕션 환경은 아닙니다.

      선택적 웹 서버와 Application Server가 한 시스템에 있음

      1. WebSphere Application Server를 설치하십시오.
      2. IBM HTTP Server 또는 다른 지원 웹 서버를 설치하십시오.

        IBM HTTP Server를 설치하는 동안 설치 마법사를 사용하여 웹 서버 플러그인을 설치하십시오. IBM HTTP Server를 설치한 후 4단계로 진행하십시오.

      3. IBM HTTP Server의 기존 설치 또는 다른 지원 웹 서버를 사용하는 경우, 플러그인 설치 마법사를 사용하여 웹 서버 플러그인을 설치하고 웹 서버를 구성하십시오. 웹 서버와 Application Server가 동일한 시스템에 있기 때문에 플러그인 설치 마법사가 웹 서버 정의를 작성하며, 사용자는 4단계를 건너뛸 수 있습니다.
      4. 관리 콘솔을 사용하여 웹 서버 정의를 작성하십시오. 서버 > 웹 서버 > 새로 작성을 클릭하십시오.
      5. WebSphere Application Server를 설치하십시오.
      6. IBM HTTP Server 또는 다른 지원 웹 서버를 설치하십시오.
      7. 웹 서버 플러그인을 설치하고 플러그인 설치 마법사를 사용하여 웹 서버를 구성하십시오.
    • 시나리오 3: WebSphere Application Server 및 웹 서버의 두 시스템 설치

      일반 생산 환경에서는 한 시스템의 Application Server가 웹 서버 플러그인을 통해 별도의(원격) 시스템에 있는 웹 서버와 통신합니다. 선택적 방화벽은 Application Server 시스템에 추가적인 보안을 제공할 수 있습니다.

      DMZ 시나리오

      1. 시스템 A에 WebSphere Application Server를 설치하십시오.
      2. 시스템 B에 IBM HTTP Server 또는 다른 지원 웹 서버를 설치하십시오. IBM HTTP Server를 설치하는 동안 설치 마법사를 사용하여 웹 서버 플러그인을 설치하십시오.
      3. 다른 지원 웹 서버 또는 IBM HTTP Server의 기존 설치를 사용하는 경우 플러그인 설치 마법사를 사용하여 시스템 B에서 웹 서버 플러그인을 설치하고 웹 서버를 구성하십시오. 플러그인 설치 마법사는 시스템 B의 plugins_root/bin 디렉토리에 configureWeb_server_name 스크립트를 작성합니다.
      4. 시스템 B의 configureWeb_server_name 스크립트를 시스템 A의 app_server_root/profile_name/bin 디렉토리로 복사하십시오.
      5. 시스템 A에서 configureWeb_server_name 스크립트를 실행하여 관리 콘솔에서 웹 서버 정의를 작성하십시오. 그런 다음, 관리 콘솔을 사용하여 웹 서버를 관리할 수 있습니다.
      6. 시스템 A에서 관리 콘솔을 사용하여 plugin-cfg.xml 파일을 Application Server에서 웹 서버로 전달하십시오. 서버 > 웹 서버 > Web_server_name > 플러그인 전달을 클릭하십시오. IBM HTTP Server 이외의 웹 서버는 수동으로 전달해야 합니다.
      7. 시스템 A에 WebSphere Application Server를 설치하십시오.
      8. 시스템 B에 IBM HTTP Server 또는 지원 웹 서버를 설치하십시오.
      9. 웹 서버 플러그인을 설치하고 시스템 B의 플러그인 설치 마법사를 사용하여 웹 서버를 구성하십시오.
      10. 플러그인 설치 마법사는 시스템 B의 plugins_root/bin 디렉토리에 configureweb_server_name 스크립트를 작성합니다. 스크립트를 시스템 A의 app_server_root/bin 디렉토리로 복사하십시오.
      11. configureweb_server_name 스크립트를 실행하여 관리 콘솔에서 웹 서버 정의를 작성하십시오. 그런 다음, 관리 콘솔을 사용하여 웹 서버를 관리할 수 있습니다.
      12. 관리 콘솔을 사용하여 plugin-cfg.xml 파일을 Application Server에서 웹 서버로 전달하십시오. 서버 > 웹 서버 > 플러그인 전달을 클릭하십시오. (IBM HTTP Server 이외의 웹 서버는 수동으로 전달해야 합니다.)
    • 시나리오 4: WebSphere Application Server의 하나의 설치를 사용하는 여러 프로파일 작성

      프로파일은 Application Server에 대한 런타임 환경을 정의하는 파일을 포함하는 개별 데이터 파티션입니다. 기본 프로파일은 기본 제품을 설치하는 동안에 작성됩니다. 프로파일 관리 도구를 사용하여 추가 프로파일을 작성하십시오. 각 프로파일은 자체 관리 인터페이스가 있는 별도의 독립형 Application Server를 정의합니다.

      프로파일을 작성하고 전용 웹 서버를 설치한 후 플러그인 설치 마법사를 사용하여 웹 서버 플러그인을 설치하고 웹 서버 구성 파일을 갱신하십시오. 그런 다음, 웹 서버는 Application Server와 통신할 수 있습니다.

      이 토폴로지를 통해 각 프로파일은 동일한 코어 제품 파일 세트를 공유하면서 고유 응용프로그램, 구성 설정 값, 데이터 및 로그 파일을 가질 수 있습니다. 여러 프로파일을 작성하면 다른 용도로 사용할 수 있는 여러 Application Server 환경이 작성됩니다.

      예를 들면, 웹 사이트의 각 Application Server가 다른 응용프로그램을 제공할 수 있습니다. 다른 예에서는 각 Application Server가 프로그래머나 개발 팀에 지정하는 별도의 테스트 환경일 수 있습니다.

      복수 프로파일의 다른 이점은 서비스 가능성이 개선된다는 점입니다. 예를 들면, 픽스팩이 파일 시스템을 갱신하면 모든 Application Server가 갱신된 코어 제품 파일을 사용하게 됩니다.

      코어 제품 파일 갱신

      복수 프로파일의 다른 이점은 서비스 가능성이 개선된다는 점입니다. 새로 고치기 팩이나 픽스팩이 시스템에서 코어 제품 파일을 갱신할 때 코어 제품 파일에서 작성된 모든 Application Server 프로파일은 갱신된 파일을 사용하기 시작합니다. 그러나 유지보수 패키지에 기존 프로파일에 필요한 유지보수가 포함되어 있지 않으면 프로파일 자체가 갱신되지 않습니다. 설치 갱신 프로그램은 유지보수 패키지를 설치할 때 기존 프로파일로 필수 갱신에 대한 메시지를 발행합니다.

      일부 경우 시스템의 Application Server를 일부만 갱신하려 할 수 있습니다. 그러한 경우에는 단순히 제품을 두 번 설치하고 새 유지보수를 설치하십시오. 두 설치 모두에서 Application Server 프로파일을 작성하여 제품 갱신을 점진적으로 관리하십시오.

      각 Application Server에 대한 전용 웹 서버

      1. 시스템 A에 WebSphere Application Server를 설치하십시오.
      2. 시스템 B에 IBM HTTP Server 또는 다른 지원 웹 서버를 설치하십시오. IBM HTTP Server를 설치하는 동안 설치 마법사를 사용하여 웹 서버 플러그인을 설치하십시오.
      3. 다른 지원 웹 서버 또는 IBM HTTP Server의 기존 설치를 사용하는 경우 플러그인 설치 마법사를 사용하여 시스템 B에서 웹 서버 플러그인을 설치하고 웹 서버를 구성하십시오. 플러그인 설치 마법사는 시스템 B의 plugins_root/bin 디렉토리에 configureWeb_server_name 스크립트를 작성합니다.
      4. 시스템 B의 configureWeb_server_name 스크립트를 시스템 A의 app_server_root/profile_name/bin 디렉토리로 복사하십시오.
      5. 시스템 A에서 configureWeb_server_name 스크립트를 실행하여 관리 콘솔에서 웹 서버 정의를 작성하십시오. 그런 다음, 관리 콘솔을 사용하여 웹 서버를 관리할 수 있습니다.
      6. 시스템 A에서 관리 콘솔을 사용하여 plugin-cfg.xml 파일을 Application Server에서 웹 서버로 전달하십시오. 서버 > 웹 서버 > Web_server_name > 플러그인 전달을 클릭하십시오. IBM HTTP Server 이외의 웹 서버는 수동으로 전달해야 합니다.
      7. 시스템 A에서 프로파일 관리 도구를 사용하여 후속 Application Server 프로파일을 작성하십시오.
      8. 시스템 B에 후속 IBM HTTP Server 또는 다른 지원 웹 서버를 설치하십시오. IBM HTTP Server를 설치하는 동안 설치 마법사를 사용하여 웹 서버 플러그인을 설치하십시오.
      9. IBM HTTP Server의 기존 설치 또는 다른 지원 웹 서버를 사용하는 경우, 플러그인 설치 마법사를 사용하여 시스템 B에 각각의 추가 웹 서버를 구성하십시오. 웹 서버 플러그인을 설치하면 시스템 B의 plugins_root/bin 디렉토리에서 configureWeb_server_name 스크립트가 작성됩니다.
      10. 시스템 B의 configureWeb_server_name 스크립트를 시스템 A의 app_server_root/profile_name/bin 디렉토리로 복사하십시오.
      11. 시스템 A에서 configureweb_server_name 스크립트를 실행하여 관리 콘솔에서 웹 서버 정의를 작성하십시오. 그런 다음, 관리 콘솔을 사용하여 웹 서버를 관리할 수 있습니다.
      12. 시스템 A에서 관리 콘솔을 사용하여 plugin-cfg.xml 파일을 두 번째 Application Server에서 웹 서버로 전달하십시오. 서버 > 웹 서버 > Web_server_name > 플러그인 전달을 클릭하십시오. IBM HTTP Server 이외의 웹 서버는 수동으로 전달해야 합니다.
      13. 시스템 A에 WebSphere Application Server를 설치하십시오.
      14. 시스템 B에 IBM HTTP Server 또는 지원 웹 서버를 설치하십시오.
      15. 웹 서버 플러그인을 설치하고 시스템 B의 플러그인 설치 마법사를 사용하여 웹 서버를 구성하십시오.
      16. 플러그인 설치 마법사는 시스템 B의 plugins_root/bin 디렉토리에 configureweb_server_name 스크립트를 작성합니다. 스크립트를 시스템 A의 app_server_root/bin 디렉토리로 복사하십시오.
      17. configureweb_server_name 스크립트를 실행하여 관리 콘솔에서 웹 서버 정의를 작성하십시오. 그런 다음, 관리 콘솔을 사용하여 웹 서버를 관리할 수 있습니다.
      18. 관리 콘솔을 사용하여 plugin-cfg.xml 파일을 Application Server에서 웹 서버로 전달하십시오. 서버 > 웹 서버 > 플러그인 전달을 클릭하십시오. (IBM HTTP Server 이외의 웹 서버는 수동으로 전달해야 합니다.)
      19. 시스템 A에서 프로파일 관리 도구를 사용하여 두 번째 Application Server 프로파일을 작성하십시오. 해당 패널에서 선택란을 선택하여 프로파일 작성 중에 기본 프로파일을 작성하십시오.

        플러그인 설치 마법사가 작성하는 스크립트는 기본 프로파일에서만 작동합니다. 따라서 이 스크립트는 스크립트가 실행하는 시점에 기본 프로파일인 프로파일에서만 웹 서버 정의를 작성합니다.

      20. 시스템 B에 두 번째 IBM HTTP Server 또는 다른 지원 웹 서버를 설치하십시오.
      21. 시스템 B에서, 플러그인 설치 마법사를 사용하여 웹 서버 플러그인을 설치해서 두 번째 웹 서버를 구성하십시오. 두 웹 서버 모두 플러그인 2진의 단일 설치를 공유하지만 개별적으로 구성해야 합니다.
      22. 플러그인 설치 마법사는 두 번째 웹 서버에 configureweb_server_name 스크립트를 작성합니다. 스크립트는 시스템 B의 plugins_root/bin 디렉토리에 있습니다. 스크립트를 시스템 A의 app_server_root/bin 디렉토리로 복사하십시오.
      23. configureweb_server_name 스크립트를 실행하여 관리 콘솔에서 웹 서버 정의를 작성하십시오. 그런 다음, 관리 콘솔을 사용하여 웹 서버를 관리할 수 있습니다.
      24. 관리 콘솔을 사용하여 plugin-cfg.xml 파일을 두 번째 Application Server에서 웹 서버로 전달하십시오. 서버 > 웹 서버 > 플러그인 전달을 클릭하십시오. (IBM HTTP Server 이외의 웹 서버는 수동으로 전달해야 합니다.)

    결과

    이 프로시저에 따라 일반 설치 시나리오를 검토하여 설치하려는 토폴로지에 대한 가능한 일치점을 찾으십시오. 각 상위 레벨 프로시저는 토폴로지를 구성하는 컴포넌트의 설치 순서를 보여줍니다.
    posted by 좋은느낌/원철
    2008. 12. 3. 18:47 개발/WebSphere

    한 PC/서버에서 돌아가는 WebSphere의 설정/응용프로그램(EAR)/웹모듈(WAR) 등을 다른 PC/서버로 옮기려면

    1. 백업 : config, EAR, WAR
    2. 복원 : config, EAR, WAR

    의 방법으로 옮길 수 있다.

    config의 백업/복원만으로도 EAR과 웹모듈이 옮겨지긴 하는데, 처음 EAR 및 WAR 설치 후의 수정사항이 반영되지 않은 상태로

    옮겨질 가능성이 있으므로 이는 완전하지 않다.


    백업 및 복원은 다음과 같은 식으로 수행한다.



    [ WebSphere config 백업하기 ]

    1. 잘 돌아가는 WebSphere 에서 응용프로그램 (EarContent) 은 설치 제거한다.

    * 또는, 응용프로그램까지 포함한 채로 백업한 다음, 복원하는 쪽에서 EarContent를 제거해도 된다.

      이 경우 EarContent.ear 압축파일의 크기가 커지지만, 백업하는 쪽에서 EarContent를 제거하지 않아도 되므로

      실제로는 이렇게 쓰는 것이 나을 것임.
    2. 환경 변수, JDBC, JMS, BUS, 공유라이브러리, 한글관련 JVM 옵션 등의 설정이 제대로 되어 있는지 확인한다.
    3. IBM의 해당 프로파일의 bin 디렉토리에서 다음과 같은 형식으로 실행하여 config를 백업한다.
    backupConfig.bat WebSphereConfig_PCNAME_YYYYMMDD_AppSrv01.zip





    [ WebSphere config 복원하기 ]

    1. 대상 PC/서버의 WebSphere에서 응용프로그램을 먼저 설치 제거한다.
      (복원 후 수동으로 응용프로그램의 폴더를 지우는 것보다 웹스피어 내부 파일도 깨끗이 지워 놓기 위해 먼저 제거함)
    2. IBM의 해당 프로파일의 bin 디렉토리에서 다음과 같이 config를 복원한다.
       restoreConfig.bat XXXXXX.zip

       이때, 복원을 시도하는 컴퓨터에 현재 프로파일이 2개 이상이 존재하는 상태에서 컨피그 복원을 하는 경우,

       복원 대상 프로파일이 디폴트 프로파일이 아니라면 restoreConfig.bat 명령에 옵션으로 프로파일명을 지정해 주어야 한다.

       (프로파일명을 지정하지 않으면, 백업할 때의 프로파일명과 상관없이 디폴트 프로파일로 리스토어를 시도하므로 문제 발생함.)

    3. WebSphere를 구동시켜 정상적으로 서버가 구동되는지 확인한다.





    [ EarContent.ear 및 웹모듈 백업하기 ]

    1. 잘 돌아가는 (웹모듈까지 전부 들어 있는) EarContent.ear 디렉토리 자체를 다른 곳으로 복사한다. 예를 들어 _EarContent.ear 디렉토리로 복사한다고 하자.

    2. 각 웹모듈마다 별도의 war로 묶는다.
    예를 들어 _EarContent.ear/webapp 아래에 다음과 같이 nexcore, nexcore_new 디렉토리가 있다고 하면
      _EarContent.ear/webapp/nexcore
      _EarContent.ear/webapp/nexcore_new

    _EarConetnt.ear/webapp/nexcore 아래에서 다음을 실행하여 war로 묶는다.
    jar cvf nexcore.war ./*
    _EarContent.ear/webapp/nexcore_new 아래에서 다음을 실행하여 war로 묶는다.
    jar cvf nexcore_new.war ./*

    위에서 묶은 war 파일들을 안전한 곳으로 복사해 놓는다.

    3. _EarContent.ear/webapp 아래의 모든 디렉토리와 파일을 삭제하고, dummy.txt 파일 하나만 남겨 놓는다.
       아무 파일도 없는 빈 디렉토리가 있는 채로 EarContent.ear를 만들고 이를 다른 곳에서 응용프로그램으로 등록한 경우
       해당 디렉토리는 디렉토리가 아닌 일반 파일로 생성되게 된다.

    4. _EarContent.ear/META-INF/application.xml 파일 내용 중 웹모듈 관련 부분을 모두 삭제한다.

    5. _EarContent.ear 디렉토리 아래에서 다음을 실행한다.
    jar cvf EarContent.ear ./*
    생성된 ear 파일은 역시 안전한 곳으로 옮긴다.

    6. 위 2번 및 5번 과정에서 만들어진 ear 및 war파일들을 설치할 서버 또는 PC로 복사한다.




    [ EarContent.ear 및 웹모듈 복원하기 ]


    1. 기존 EarContent 응용프로그램이 설치되어 있는 상태라면 먼저 WebSphere 웹콘솔에서 제거한다.

    2. WebSphere 웹콘솔에서 EarContent를 등록한다.
       등록시 '2진 구성 파일 사용'에 체크하지 않는다.
       등록 후 EarContent 응용프로그램의 공유라이브러리 참조를 설정한다.
     
    3. 서버를 재시작시켜서 EarContent 응용프로그램이 잘 시작되는지 (IoC startup/end) 확인한다.

    4. WebSphere 웹콘솔에서 EarContent 응용프로그램 갱신을 이용하여 war 파일들을 모두 등록한다.
        war 등록 완료 후 다시 EarContent 응용프로그램의 공유라이브러리 참조를 설정한다.

    5. 서버를 재시작시켜서 EarContent 응용프로그램 시작을 확인하고, 실제 서비스를 테스트해 본다.

    posted by 좋은느낌/원철
    2008. 11. 26. 11:50 개발/DB2

    난이도 : 초급

    Roman Melnyk, DB2 Information Development, IBM Canada Ltd.

    2004 년 1 월 01 일

    DB2 UDB에서 사용되는 제약조건은 데이터에 대해 비즈니스 규칙을 시행하고 데이터베이스 무결성을 유지하는데 도움이 된다. 이 글에서는 DB2 UDB에서 지원하는 다양한 제약조건 유형들을 설명한다. 각 제약조건 유형들을 예제를 통해 설명한다. 또한 기본적인 제약조건 관리(명령행 또는 DB2 Control Center 사용)를 설명한다.

    DB2 UDB에서 사용되는 제약조건은 데이터에 대해 비즈니스 규칙을 시행한다. 이 글에서는 다음과 같은 유형의 제약조건을 설명한다.

    • NOT NULL
    • 유일(unique)
    • 기본 키
    • 외래 키
    • 테이블 체크
    정보형 제약조건(informational constraint)으로 알려진 제약조건도 있다. 위에 열거한 다섯 개의 제약조건과는 달리 정보형 제약조건은 데이터베이스 관리자가 다룰 수 있는 것이 아니다. 쿼리 퍼포먼스를 높이기 위해 SQL 컴파일러에 의해 사용된다. 이 글에서는 위에 열거한 제약조건 유형들에 초점을 맞춰 설명할 것이다. 정보형 제약조건은 다음 기회에 다루기로 한다.

    새로운 테이블을 만들 때 한 개 이상의 DB2 UDB 제약조건을 정의하거나, 테이블을 나중에 변경하여 몇 가지 제약조건을 정의할 수 있다. CREATE TABLE 문은 매우 복잡하다. 사실 너무 복잡해서 이 옵션들 중 일부가 제약조건 정의에 사용되더라도 신택스 다이어그램에서 볼 때에는 옵션들 자체로도 매우 복잡해보인다. (그림 1, 그림 2) 제약조건 관리는 DB2 Control Center를 통해 수행될 때 보다 편리하고 단순해질 수 있다.


    그림 1. CREATE TABLE 문의 신택스 일부– 제약조건을 정의하는데 사용되는 구문을 보여주고 있다.
    Figure 1

    제약조건 정의는 이 정의가 적용될 데이터베이스와 제휴되고 데이터베이스 카탈로그에 저장된다.(표 1) 데이터베이스 카탈로그를 쿼리하여 정보들을 가져와서 검사한다. 명령행에서 직접 수행할 수 있고(물론, 데이터베이스에 먼저 연결해야 한다.), 또는 Control Center를 통해서 보다 편리하게 정보에 액세스 한다.

    여러분이 만든 제약조건은 데이터베이스 객체들 처럼 다루어진다. 이름이 붙여지며, 제휴 스키마(생성자 ID)를 갖게 되며, 어떤 경우에는 제거(삭제)될 수도 있다.


    그림 2. CREATE TABLE 문의 신택스 일부 – 제약조건을 정의하는데 사용되는 구문을 보여주고 있다. (계속)
    Figure 2

    표 1. 데이터베이스 카탈로그에 있는 제약조건 정보. 성공적으로 실행하려면 그 카탈로그에 대한 쿼리에는 데이터베이스 연결이 필요하다.

    Catalog View View Column 설명 쿼리 예제
    SYSCAT.CHECKS 각 테이블 체크 제약조건에 대한 열이 포함된다. db2 select constname, tabname, text from syscat.checks
    SYSCAT.COLCHECKS 테이블 체크 제약조건에 의해 참조되는 각 칼럼에 대한 열을 포함하고 있다. db2 select constname, tabname, colname, usage from syscat.colchecks
    SYSCAT.COLUMNS NULLS 칼럼이 무효인지(Y), 무효가 아닌지(N)를 나타낸다. db2 select tabname, colname, nulls from syscat.columns where tabschema = 'MELNYK' and nulls = 'N'
    SYSCAT.CONSTDEP 몇 가지 다른 객체에 해당하는 제약조건의 종속성에 대한 열을 포함하고 있다. db2 select constname, tabname, btype, bname from syscat.constdep
    SYSCAT.INDEXES 각 인덱스에 대한 열을 포함하고 있다. db2 select tabname, uniquerule, made_unique, system_required from syscat.indexes where tabschema = 'MELNYK'
    SYSCAT.KEYCOLUSE 유일 키, 기본 키, 외래 키 제약조건으로 정의된 키에 참여한 각 칼럼에 대한 열을 포함하고 있다. db2 select constname, tabname, colname, colseq from syscat.keycoluse
    SYSCAT.REFERENCES 각각의 참조 제약조건에 대한 열을 포함하고 있다. db2 select constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule from syscat.references
    SYSCAT.TABCONST 유일 키(U), 기본 키 (P), 외래 키 (F), 테이블 체크 (K) 제약조건에 대한 열을 포함하고 있다. db2 select constname, tabname, type from syscat.tabconst
    SYSCAT.TABLES PARENTS 이 테이블의 부모 테이블의 수(이 테이블이 종속되어 있는 참조 제약조건의 수). db2 "select tabname, parents from syscat.tables where parents > 0"
    SYSCAT.TABLES CHILDREN 이 테이블의 종속 테이블의 수(이 테이블이 부모가 되는 참조 제약조건의 수). db2 "select tabname, children from syscat.tables where children > 0"
    SYSCAT.TABLES SELFREFS 이 테이블에 대한 자가 참조 제약조간의 수(이 테이블이 부모이기도 하고 종속 테이블인 참조 제약조건의 수). db2 "select tabname, selfrefs from syscat.tables where selfrefs > 0"
    SYSCAT.TABLES KEYUNIQUE 이 테이블에 정의된 (기본 키 외의) 유일 제약조건의 수. db2 "select tabname, keyunique from syscat.tables where keyunique > 0"
    SYSCAT.TABLES CHECKCOUNT 이 테이블에 정의된 체크 제약조건의 수. db2 "select tabname, checkcount from syscat.tables where checkcount > 0"

    NOT NULL 제약조건

    NOT NULL 제약조건으로 인해 무효(null) 값이 칼럼에 추가될 수 없다. 이것 때문에 칼럼은 테이블의 각 열에 값을 갖게 된다. 예를 들어, SAMPLE 데이터베이스에 있는 EMPLOYEE 테이블의 정의에는 LASTNAME VARCHAR(15) NOT NULL이 포함된다. 이로 인해 각 열에는 사원(EMPLOYEE)의 성(last name)이 포함된다.

    칼럼의 무효성 여부를 결정하기 위해서 그 테이블에 대한 데이터 정의 언어(DDL)를 참조할 수 있다. (db2look 유틸리티를 호출하여 생성한다.) DB2 Control Center(그림 34)를 사용해도 된다. 또는 데이터베이스 카탈로그를 쿼리 할 수도 있다. (Listing 1)


    그림 3. 특정 데이터베이스와 연결된 테이블은 DB2 Control Center의 컨텐츠 패인에 객체 트리에서 선택된 테이블과 함께 나타난다. 이 리스트는 melnyk 스키마에서 걸려졌다.
    Figure 3

    DB2 Control Center에서는 테이블 같은 데이터베이스 객체에 편리하게 액세스 할 수 있다. 그림 3은 SAMPLE 데이터베이스의 사용자 테이블 모습이다. Table이 객체 트리에서 선택될 때 컨텐츠 패인에 나타난다. EMPLOYEE 테이블을 선택하면 Alter Table 창을 열어 칼럼 애트리뷰트 등 테이블 정보를 볼 수 있다. (그림 4)


    그림 4. Alter Table 윈도우에서는 테이블의 애트리뷰트를 편리하게 볼 수 있다.
    Figure 4

    Listing 1. 데이터베이스 카탈로그를 쿼리하여 어떤 데이터베이스 칼럼이 무효인지를 파악하기
    db2 select tabname, colname, nulls from syscat.columns where tabschema = 'MELNYK' and nulls = 'N'




    위로


    유일 제약조건

    유일 제약조건(unique constraint)은 테이블의 특정 칼럼에 값이 한번 이상 나타나지 않도록 한다. 또한 특정 칼럼 세트 내에 값 세트가 한 번 이상 나타나지 않도록 한다. 유일 제약조건에서 참조되는 칼럼들은 NOT NULL로 정의되어야 한다. 유일 제약조건은 CREATE TABLE 문에서 UNIQUE 구문을 사용하여 정의되거나(그림 12), ALTER TABLE 문으로 정의될 수 있다.


    Listing 2. 유일 제약조건 만들기. SAMPLE 데이터베이스에서 ORG_TEMP 테이블은 ORG 테이블과 동일하다. 단, ORG_TEMP의 LOCATION 칼럼은 무효가 될 수 없고 유일 제약조건이 정의된다.
    db2 create table org_temp ( deptnumb smallint not null, deptname varchar(14), manager smallint, division varchar(10), location varchar(13) not null) db2 alter table org_temp add unique (location) db2 insert into org_temp values (10, 'Head Office', 160, 'Corporate', 'New York') DB20000I The SQL command completed successfully. db2 insert into org_temp values (15, 'New England', 50, 'Eastern', 'New York') SQL0803N One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "1" constrains table "MELNYK.ORG_TEMP" from having duplicate rows for those columns. SQLSTATE=23505

    유일 제약조건은 의도하지 않은 중복을 방지하여 데이터 무결성을 유지시킨다. 우리 예제에서, New York을 그 회사의 지사로 지정하는 두 번째 기록이 삽입되는 것을 방지한다. 유일 제약조건은 유일 인덱스(unique index)를 통해 실행된다.

    제약조건 이름

    제약조건을 만들 때 이름을 정하지 않았다면 DB2에서 생성시간을 기준으로 이름을 만든다. 예) SQL031229211328410




    위로


    기본 키(primary key) 제약조건

    기본 키 제약조건은 테이블에 대한 기본 키를 구성하고 있는 칼럼이나 칼럼 세트의 모든 값들이 유일(unique)한 값이라는 것을 보장한다. 기본 키는 테이블의 특정 열을 구분하는데 사용된다. 테이블은 한 개 이상의 기본 키를 가질 수 없지만 여러 유일 키를 가질 수는 있다. 기본 키 제약조건은 유일 제약조건의 특별한 경우이며 기본 인덱스(primary index)를 통해 실행된다.

    기본 키 제약조건에 참조된 칼럼들은 NOT NULL로 정의되어야 한다. 기본 키 제약조건은 PRIMARY KEY 구문을 사용하여 CREATE TABLE 문으로 정의되거나(그림 12), ALTER TABLE 문으로 정의된다.


    Listing 3. 기본 키 제약조건 만들기. EMPLOYEE 테이블에 있는 EMPNO 칼럼은 무효가 될 수 없고, 여기에 기본 키 제약조건이 정의되어야 한다.
    db2 alter table employee add primary key (empno)

    대안으로는, DB2 Control Center를 사용하여 테이블에 기본 키 제약조건을 정의하는 방법이 있다. (그림 5)


    그림 5. Alter Table 윈도우에서는 테이블에 기본 키 제약조건을 편리하게 정의할 수 있다. 칼럼 리스트에서 한 개 이상의 칼럼을 선택한 다음 push 버튼을 누르고, 그렇게 선택된 칼럼 이름을 기본 키 칼럼 리스트로 이동시킨다. 선택된 칼럼은 무효가 될 수 없다.
    Figure 5



    위로


    외래 키 제약조건

    외래 키 제약조건은 참조 제약조건이라고도 불린다. 참조 무결성(Referential integrity)은 "데이터베이스에서 모든 외래 키들의 값이 유효한 상태”로 정의된다. 그렇다면 외래 키는 무엇인가? 외래 키(foreign key)는 테이블에 있는 칼럼이나 칼럼 세트의 값이 부모 테이블의 열에 있는 적어도 한 개의 기본 키나 유일 키 값과 매치하는 것을 의미한다. 더 정확히 말한다면? 테이블(T2)에 있는 칼럼(C2)이 또 다른 테이블(T1)에 있는 칼럼(C1)의 값들과 매치하는 값을 갖고 있고, C1은 T1에 대한 기본 키 칼럼이 되고, C2는 T2의 외래 키 칼럼이 된다는 것을 의미한다. 기본 키(기본 키 또는 유일 키)를 포함하고 있는 테이블을 부모 테이블(parent table)이라 하고, 외래 키를 포함하고 있는 테이블을 종속 테이블(dependent table)이라고 한다.

    SAMPLE 데이터베이스에 있는 PROJECT 테이블은 RESPEMP라는 칼럼을 갖고 있다. 이 칼럼에 있는 값은 이 테이블에 수록되어 있는 각 프로젝트를 담당하는 사원들의 수를 나타낸다. RESPEMP는 무효가 될 수 없다. 이 칼럼은 EMPLOYEE 테이블의 EMPNO 칼럼에 상응하고, 우리는 EMPNO가 이제는 EMPLOYEE 테이블에 대한 기본 키라는 것을 알고, RESPEMP는 PROJECT 테이블에서 외래 키로 정의될 수 있기 때문이다.(Listing 4) 따라서 EMPLOYEE 테이블에서 삭제가 실행되면 프로젝트 담당 사원이 없는 PROJECT 테이블은 존재하지 않는다.

    외래 키 제약조건은 FOREIGN KEY 구문(그림 12)을 사용하는 CREATE TABLE 문으로 정의되거나, ALTER TABLE 문으로 정의된다.


    Listing 4. 외래 키 제약조건 만들기
    db2 alter table project add foreign key (respemp) references employee on delete cascade

    REFERENCES 구문은 이 참조 제약조건에 대한 부모 테이블을 가리킨다. 외래 키 제약조건을 정의하는 신택스에는 rule-clause가 포함되는데, 바로 여기에서 무결성의 관점에서 업데이트나 삭제 방식을 DB2에 명령할 수 있다.(그림 1)

    삽입 작동은 표준 방식으로 다루어진다. 여러분은 이에 대한 제어권이 없다. 참조 제약조건의 삽입 규칙(insert rule)은 외래 키의 삽입 값이 부모 테이블의 부모 키의 값 일부와 매치해야 한다는 것을 지정하고 있다. 새로운 기록이 PROJECT 테이블에 삽입되면 그 기록에는 EMPLOYEE 테이블의 기존 기록에 대한 (부모-외래 키 관계를 통해) 참조를 포함하고 있어야 한다.

    참조 제약조건의 업데이트 규칙(update rule)외래 키의 업데이트 값이 부모 테이블의 부모 키의 일부 값과 매치해야 하고, 부모 키에 대한 업데이트 작동이 완료할 때 모든 외래 키 값은 매칭하는 부모 키 값을 갖고 있어야 한다는 것을 지정하고 있다. 다시 말하면, 어떤 "고아"도 없어야 한다. 모든 종속들은 부모가 있어야 한다.

    참조 제약조건의 삭제 규칙(delete rule)은 부모 테이블에서 열이 삭제될 때 적용되고, 참조 제약조건이 정의될 때 지정되었던 옵션에 의존한다. RESTRICT나 NO ACTION 구문이 지정되면 어떤 열도 삭제되지 않는다. SET NULL 구문이 지정되면 외래 키의 무효가 가능한 칼럼들이 무효로 설정된다. 하지만 참조 제약조건을 만들 때 CASCADE 옵션을 지정했다면 삭제 작동은 부모 테이블의 자식들에게로 퍼진다.

    다음 예제는 위에 설명한 것들을 나타낸 것이다.


    Listing 5. 외래 키 제약조건에서의 업데이트 규칙과 삭제 규칙
    db2 update employee set empno = '350' where empno = '000190' DB20000I The SQL command completed successfully. db2 update employee set empno = '360' where empno = '000150' SQL0531N The parent key in a parent row of relationship "MELNYK.PROJECT.SQL040103212526610" cannot be updated. SQLSTATE=23504 db2 "select respemp from project where respemp < '000050' order by respemp" RESPEMP ------- 000010 000010 000020 000030 000030 db2 delete from employee where empno = '000010' DB20000I The SQL command completed successfully. db2 "select respemp from project where respemp < '000050' order by respemp" RESPEMP ------- 000020 000030 000030

    부모 테이블(EMPLOYEE)에 있는 EMPNO 값 '000190'은 변경될 수 있다. 종속 테이블(PROJECT)에 '000190' RESPEMP 값이 없기 때문이다. 하지만 EMPNO 값 '000150'는 경우가 다르다. 이것은 PROJECT 테이블에 매칭하는 외래 키 값을 갖고 있고 따라서 업데이트 될 수 없다. CASCADE 옵션을 지정한 삭제 규칙으로 인해 기본 키 값 '000010'이 EMPLOYEE 테이블에서 삭제되면 삭제 연결된(delete-connected) PROJECT 테이블은 매칭하는 외래 키 값을 포함하고 있는 모든 열을 잃게 된다.




    위로


    테이블 체크 제약조건

    테이블 체크 제약조건(table check constraint)은 데이터에 정의된 제한들이 테이블에 추가될 수 있도록 한다. 예를 들어, 테이블 체크 제약조건은 EMPLOYEE 테이블에 내선 번호가 추가 및 업데이트 될 때 정확히 4자리 수가 되도록 한다. 테이블 체크 제약조건은 CHECK 구문을 사용하여 CREATE TABLE 문으로 정의되거나(그림 12), ALTER TABLE 문으로 정의된다.


    Listing 6. 테이블 체크 제약조건 만들기. PHONENO_LENGTH 제약조건은 EMPLOYEE 테이블에 추가되는 내선번호를 4자리 숫자로 지정한다.
    db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)

    대안으로는 DB2 Control Center를 사용하여 테이블 체크 제약조건을 정의할 수 있다. (그림 6)


    그림 6. Alter Table 윈도우에서 테이블 체크 제약조건을 편리하게 정의할 수 있다.
    Figure 6

    Add 버튼을 클릭하여 새로운 제약조건(Add Check Constraint 옵션)을 정의하거나, Change 버튼을 눌러 기존 제약조건을 변경한다.(그림 7)


    그림 7. Change Check Constraint 창에서 기본 체크 조건을 변경할 수 있다.
    Figure 7

    이 테이블의 기존 열의 값이 새로운 제약조건을 위반한다면 테이블 체크 제약조건을 만들 수 없다.(그림 8) 이렇게 비 호환되는 값이 적절히 업데이트 된 후에 제약조건을 추가하거나 수정할 수 있다.


    그림 8. 새로운 테이블 체크 제약조건이 테이블의 기본 값과 호환되지 않는다면 에러가 리턴된다.
    Figure 8
    데이터 체크 연기하기

    SET INTEGRITY 문은 테이블을 체크 보류 상태로 만드는데 사용된다. 새로운 체크 제약조건을 정의한 ALTER TABLE 문은 이 테이블의 기존 값을 체크하지 않고 처리된다.

    테이블 체크 제약조건은 SET INTEGRITY 문을 사용하여 실행되거나 실행되지 않는다. 테이블에 대해 대규모의 데이터 부하가 걸려있는 동안 퍼포먼스를 최적화 할 때 매우 유용하다. Listing 7은 SET INTEGRITY 문을 사용하는 시나리오이다. 이 예제에서 EMPLOYEE 테이블의 무결성 체크가 비활성 된 후에, 사원 '000100 '의 내선 번호는 123 값으로 업데이트 된다. 4자리 숫자의 내선 번호 값이 필요한 체크 제약조건은 EMPLOYEE 테이블에서 정의된다. EMPL_EXCEPT 라고 하는 예외 테이블이 만들어 진다. 이 새로운 테이블의 정의는 EMPLOYEE 테이블의 정의를 모방한 것이다. 무결성 체크가 활성화 되면, 이러한 테이블에 대한 쿼리는 해당 열이 예외 테이블에만 존재하는지를 확인한다.


    Listing 7. SET INTEGRITY 문을 사용하여 제약조건 체크 연기하기
    db2 update employee set phoneno = '123' where empno = '000100' db2 set integrity for employee off db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4) db2 create table empl_except like employee db2 set integrity for employee immediate checked for exception in employee use empl_except SQL3602W Check data processing found constraint violations and moved them to exception tables. SQLSTATE=01603 db2 select empno, lastname, workdept, phoneno from empl_except EMPNO LASTNAME WORKDEPT PHONENO ------ --------------- -------- ------- 000100 SPENSER E21 123 1 record(s) selected.




    위로


    요약

    지금까지 DB2 Universal Database에서 지원하는 여러 가지 제약조건 유형들을 살펴보았다. 이러한 제약조건들이 DB2 UDB에 사용되어 데이터에 대해 비즈니스 규칙을 실행하고 데이터 무결성을 유지하는 방법도 알았다. 또한, 제약조건을 효과적으로 관리하는 방법으로 명령행과 DB2 Control Center의 사용법에 대해서도 배웠다.




    위로


    참고자료




    위로


    필자소개

    Roman Melnyk, DB2 Information Development, IBM


    posted by 좋은느낌/원철
    prev 1 2 3 4 5 6 7 8 ··· 10 next