글

not in, not exists 사용시 쿼리속도가 느릴때

not in, not exists 사용시 쿼리 속도가 느릴때. 특정 항목을 제외 시키기 위해 not in, not exists를 이용합니다. 단건 몇개의 경우 not in으로 처리하고 다건일 경우에는 not exists를 사용합니다. 속도가 너무 느릴경우엔. left join을 이용하여 붙이고 null인 항목을 가져오면 제외된 항목을 가져옵니다. 예) -- not exists 로 조회 explain extended select count ( a . user_id ) as cnt , c . chnl_id , c . use_intt_id from user_ldgr a left join use_intt_per_user c on a . user_id = c . user_id where a . ATHZ_DT < '20160101' and not exists ( select b . user_id from lgn_prhs b where b . lgn_dt between '20150101' and '20151231' and b . user_id = a . user_id group by b . user_id ) group by chnl_id ; -- left join 로 조회 explain select count ( a . user_id ) as cnt , c . chnl_id , c . use_intt_id from user_ldgr a left join use_intt_per_user c on a . user_id = c . user_id left join ( select b . user_id from lgn_prhs b where b . lgn_dt between '20150101' and ...

ls 명령어의 파일 사이즈 쉽게 확인하기

ls 명령어의 파일 사이즈 쉽게 확인하기 ls 의 스위치 옵션 -h (--human-readable) 를 이용하면 KB/MB/GB 단위로 쉽게 파일 사이즈 확인이 가능하다. [HOSTWAY] /home > # ls -al h total 312G drwxr-xr-x.  6 root      root      4.0K Oct 22 23:16 . drwxrwxrwt  25 root      root      4.0K Oct 22 09:36 .. -rw-r--r--   1 root      root       98G Oct 23 13:07 100GB_LUN01 -rw-r--r--   1 root      root       200G Oct 23 13:07 200GB_LUN01 drwx------.  2 root      root       16K Oct 13  2011 lost+found drwxr-xr-x   3 root      root       4.0K Feb 28  2012 svn -rw-r--r--   1 root      root      9.8G Nov 11  2011 SWAP_FILE 또한, -S 스위치 옵션을 사용하면, 사이즈로 descending 정렬이 가능하다. [HOSTWAY] /home > # ls -al S h total 312G -rw-r--r--   1 root     ...

반복 ping 테스트와 테스트 시간을 함께 나타내기

리눅스 OS에서 ping 아이피주소 | while read pong; do echo "$(date): $pong"; done

부모창 닫을때 자식창 함께 닫기

function closeChild() { if(gWin!= null) gWin.close(); if(win!= null) win.close(); } <body  onUnload="closeChild();">

부모창에서 자식창으로 값넘기기

부모창 function sendToChild() { var sv1 = gItemCd; var sv2 = gItemKnd; var sv3 = gNatCd; gWin.document.getElementById('srchItemCd').value = sv1; gWin.document.getElementById('srchItemKnd').value = sv2; gWin.document.getElementById('srchNatCd').value = sv3; } 자식창 <input type="text" id="srchItemCd" name="srchItemCd"  /> <input type="text" id="srchItemKnd" name="srchItemKnd"  "/> <input type="text" id="srchNatCd" name="srchNatCd"  />

선택된 Row의 특정컬럼값 수정

$ ( "#my-jqgrid-table" ). jqGrid ( 'setCell' , rowId , '컬럼명' , '수정데이터' );

jqgrid get selected row 선택된 줄의 정보 가져오기

jqgrid를 사용하다보면 선택된 줄의 정보를 사용해서 처리해야 하는 경우가 많이 생긴다     선택된 줄에 설정된 아이디 값을 가져오거나 선택된 줄의 rowdata 에서 특정 값을가져오기 위해서는     getGridRowData, getGridParam 등을 사용하면된다.     $( "{gridtableid}" ).getGridParam( "selrow" );     $( "{gridtableid}" ).jqGrid('getGridParam', "selrow" );       위의 스크립트를 실행하면 현재 선택되어있는 줄의 아이디 값을 반환한다     만약 선택된줄이 없다면 null을 반환하며     jqGrid를 만들때 multiselect옵션을 true로 주엇다면 선택된줄들중 마지막에 선택된 줄의 id 값을 반환한다     만약  multiselect옵션이 true  이고 여러 줄을 선택해 이줄들의 아이디 값을 배열로 받고 싶다면     $( "{gridtableid}" ).jqGrid('getGridParam', 'selarrrow');     $( "{gridtableid}" ).getGridParam('selarrrow');    위 스크립트를 사용하면 된다     선택된항목의 rowdata를 가져오고 싶다면 아래 스트립트를 사용하면 된다     $( "{gridtableid}" ).jqGrid('getRowData', rowid)...

jQgrid의 지정한 칼럼, 지정한 열을 다른색으로 지정하기

사용자에게 해당칼럼이나 열의 정보를 강조하기 위해서 테이블의 배경색을 바꾸고 싶을 때는 다음처럼 처리한다. // 배경색상 css 선언 var   cssGreen = { 'background-color' : '#6DFF6D' };       // 그리드 데이터의 ID 가져오기 var   ids = $( '#requestList' ).jqGrid( 'getDataIDs' );       // 그리드 데이터 가져오기 var   gridData = $( "#requestList" ).jqGrid( 'getRowData' );   // 데이터 확인후 색상 변경 for   ( var   i = 0; i < gridData.length; i++) {            // 데이터의 is_test 확인      if   (gridData[i].is_test ==  'Y' ) {                    // 열의 색상을 변경하고 싶을 때(css는 미리 선언)          $( '#requestList tr[id='   + ids[i] +  ']' ).addClass( 'grid-test' );                    // 칼럼의 색생을 변경하고 싶을 때 ...

db2 테이블스페이스 확인 및 확장

DB 시작 # su - db2inst1 $ db2start $ db2 connect to DB_NAME DB 종료 # su - db2inst1 $ db2 terminate $ db2 force application all $ db2stop * 참고 db2 activate db 명령어는 DB global memory를 미리 메모리에 상주시켜, 처음 connect 시간을 단축 DB를 중지 시 db2 deactivate db 명령어를 이용하여 메모리를 release 시켜야 함 $ db2 activate db 테이블스페이스 확인 $ db2 list tablespaces show detail | more 테이블스페이스 확인 $ db2 list tablespace containers for 3 (3 : Tablespace ID) 로그 확인 $ db2diag >> db2diag.log_1 * The DMS table space "TABLE_NAME" (ID "3") is full. "DMS Container space full" Error 메세지 확인. (3은 Tablespace ID) * DMS(Database Managed Space) 테이블 공간은 데이터베이스 관리 프로그램이 저장 공간을 제어한다. SMS(System Managed Space)에 비해 지속적인 관리가 필요하지만, long 데이터, index등을 따로 저장할 수 있고 하나의 데이블을 여러 테이블 공간에 저장할 수 있는 등 성능면에서 이점. * Tablesapce에 할당되는 페이지 개수는 4, 8, 16, 31k 단위이며, Logical Volumn 생성시 부여한 lv size 보다 크게 지정할 경우 Error가 발생하고, 작게 지정할 경우 남은 size 만큼 사용이 불가능하므로 정확하게 계산하여 지정. 테이블스페이스 생성 $ create tablespace TABLESPACE_NAME ma...

db2 Linux 설치

DB2 설치 및 삭제 설치 OS . CentOS 5.7 . Gnome 다운로드 . http://www.ibm.com/db2/express/download.html . db2exc_975_LNX_x86.tar.gz # cd /usr/local # tar xvfz db2exc_975_LNX_x86.tar.gz 커널 수정 # ipcs -l # sysctl -w kernel.msgmni=128 설치1 - GUI # ./db2setup . 제품 설치 . 새로 설치 . 소프트웨어 사용권 계약 : 승인 . 일반 설치 . 내 설정값 저장 . 설치 디렉토리 : /opt/ibm/db2/v9.7 . DAS 사용자 - dasusr1 / dasadm1 . 인스턴스 설정 . 인스턴스 사용자 - db2inst1 / db2iadm1 . 분리 사용자 - db2fenc1 / db2fadm1 설치2 # mkdir /db2home # groupadd -g 999 db2iadm1 # groupadd -g 998 db2fadm1 # groupadd -g 997 dasadm1 # useradd -u 1004 -g db2iadm1 -m -d /db2home/db2inst1 db2inst1 # useradd -u 1003 -g db2fadm1 -m -d /db2home/db2fenc1 db2fenc1 # useradd -u 1002 -g dasadm1 -m -d /home/dasusr1 dasusr1 # passwd db2inst1 # mkdir /db2data # mkdir /db2data/db2inst1 # chown -R db2inst1:db2iadm1 /db2data/db2inst1 # chmod 0775 /db2data/db2inst1 # ./db2_install ; DB2.EXP # cd /opt/ibm/db2/v9.7/instance # ./db2icrt -u db2fenc1 db2inst1 # ./dascrt d...

db2 command

실행 . 대화식 모드 # su - db2inst1 $ db2 db2 => select * from table . 비대화식 모드 $ db2 "select * from table" $ ls -al 세션 종료 db2 => quit ; 데이터베이스 접속은 유지 db2 => terminate ; 데이터베이스 접속 및 백그라운드 프로세스 종료 스크립트 실행 $ db2 -tvf file_name 예제 $ db2 connect to sample $ db2 list tables $ db2 ! ls $ db2 ? list tables $ db2 ? list 참고 db2 => ? db2 => help <명령문> db2 => !<OS 명령어> db2 => HISTORY

db2 인스턴스

인스턴스 생성 . db2icrt -u <Fenced ID> <InstName> . Fenced User ID를 반드시 지정 (설치 유저 생성 참조) # cd /opt/ibm/db2/v9.7/instance # ./db2icrt -u db2fenc1 db2inst1 # ./dascrt dasusr1 인스턴스 제거 . 데이터베이스 확인 $ db2 list db directory . 데이터베이스 삭제 $ db2 drop db sample . 인스턴스를 모두 중지 $ db2stop force $ exit $ ./db2idrop db2inst1 . 데이터베이스를 다른 인스턴스에 사용할 경우 - 데이터베이스를 drop 하지 않고 인스턴스를 중지 $ ./db2idrop db2inst1 $ db2 catalog db sample on /home 인스턴스 시작 # su - db2inst1 $ db2start 인스턴스 중지 # su - db2inst1 $ db2 force applications all $ db2stop $ db2stop force 인스턴스 구성 파일 확인 $ db2 attach to db2inst1 $ db2 get dbm cfg show detail | more $ db2 detach 인스턴스 구성 변수 초기화 $ db2 reset dbm cfg $ db2stop force $ db2start db2 관리 서버 . 제어 센터 등의 GUI 도구를 이용하여 db2 udb를 운영할 경우 필요 # su - dasusr1 $ db2admin start $ db2admin stop . DAS 확인 $ db2set db2adminserver

db2 데이터베이스

개요 . 하나의 인스턴스에 한 개 이상의 데이터베이스 생성 . 데이터베이스 구성 파일을 이요하여 개별적인 환경 구성 . 3개의 기본 테이블 스페이스 : SYSCATSPACE, TEMPSPACE1, USERSPACE1 . SYSCATSPACE 테이블 스페이스에는 데이터베이스의 모든 오브젝트에 대한 정보를 저장하고 있는 메타 테이블인 시스템 카탈로그 테이블이 생성 . 데이터에 대한 변경 사항은 데이터베이스 트랜잭션 로그 파일에 기록 초기 3개의 기본 로그 파일과 2개의 보조 로그 파일이 생성 데이터베이스 구성 파일을 이용하여 로그 파일의 개수와 크기를 조절 데이터베이스 생성 및 제거 ; 생성 # su - db2inst1 $ db2 "create db NEW_DB" $ ls -al ~/$DB2INSTANCE/NODE* $ db2 "create db NEW_DB on /database/db2data" $ ls -al /database/db2data/$DB2INSTANCE/NODE* ;예제 $ db2 "create db NEW_DB automatic storage yes on /db2data" ; 확인 $ db2 list db directory ; CODESET, TERRITORY 지정 $ db2 "create db NEW_DB using codeset <CODESET> TERRITORY <국가코드> $ db2 get db cfg for NEW_DB | grep <국가코드> ; 제거 $ db2stop $ db2 drop db NEW_DB 접속 및 해제 ; 접속 $ db2 connect to NEW_DB $ db2 "select * from syscat.tables" $ db2 "select current date from syscat.tables" ; 접속 해제 $ db2 connec...

db2 테이블스페이스

테이블스페이스 관리 . 테이블 스페이스는 테이블을 저장하는 논리적 개념 . 테이블 스페이스를 구성하는 물리적인 개념은 Container ; 디폴트 테이블스페이스 SYSCATSPACE : catalog table 및 데이터베이스를 관리하기 위한 관리 테이블들이 저장 TEMPSAPCE1 : temporary 테이블 스페이스 USERSAPCE1 : 사용자가 생성한 오브젝트 및 데이터를 저장하는 테이블스페이스 테이블 생성시 테이블스페이스를 지정하지 않을 경우 디폴트로 이 테이블스페이스를 사용 ; 테이블스페이스 관리 방식 . System Managed Space(SMS) - 운영체제가 테이블스페이스를 관리 - 컨테이너로 디렉토리가 사용되며 운영체제의 파일시스템이 스토리지 할당 및 관리를 제어 . Database Managed Space(DMS) - 데이터베이스가 테이블스페이스를 관리 - 컨테이너로 file과 raw device가 이용 . Automatic Storag table space - DB2가 자동으로 스토리지를 관리 - 테이블스페이스 타입에 따라 SMS, DMS로 자동 생성하며 컨테이너를 지정할 필요 없음 ; 테이블스페이스 타입 . Regular - 오브젝트 및 인덱스의 모든 데이터를 저장하는 공간 . Temporary - System Temporary : 정렬 및 SQL문 및 기타 작업 실행 시 데이터베이스 Manager가 사용하는 영역 - User Temporary : 세션의 전역 임시 테이블의 데이터를 임시로 저장하는 영역 . Large - regular 처럼 모든 데이터를 저장하나 관리 유형이 DMS일 경우에만 생성이 가능 테이블스페이스 생성/확장/삭제 ; 생성 $ db2 connect to NEW_DB $ db2 "create tablespace NEW_TS managed by database using (file '/data/db2inst1/db2data/NEW_TS_FILE...

db2 명령어

db2licm -v $ db2licm -l $ db2level 데이터베이스 접속 여부 확인 $ db2 get connection state 접속한 데이터베이스 확인 $ db2 "values (current server)" 데이터베이스 코드 페이지 확인 $ db2 get db cfg for DB_NAME | grep code 데이터베이스 로그 파일 정보 확인 $ db2 get db cfg for DB_NAME | grep LOG 시스템 로그 확인 $ taif -f systemout.log 데이터베이스 목록 확인 $ db2 list db directory $ db2 list db directory show detail |grep -B6 -i indirect | grep "Database name" 데이터베이스 용량 확인 $ db2 "call GET_DBSIZE_INFO(?,?,?,0)" 활성화되어 있는 데이터베이스 확인 $ db2 list active databases DB에 있는 Table 확인 $ db2 list tables $ db2 list tables for all | more TABLE의 column 정보 확인 $ db2 connect to DB_NAME $ db2 "select tabschema, tabname, colname, taypename, length, scale, default, nulls from syscat.columns" Application 확인 $ db2 list application show detail $ db2 get snapshot for application agentid 111(Appl. Handle) $ db2 update monitor switches usnig statement on lock on uow on $ db2 update monitor switches using uow on $ d...

DB2 백업 및 복구 백업

백업 . online backup - full backup, tablespace backup 가능 - 복구 시 반드시 restore, rollforward 복구를 수행 . offline backup - restore 복구만 수행 . DB2가 살아있어야 하고, normal, backup-pending 상태 . connect 상태 Online full backup . online full backup $ db2 connect to TESTDB $ db2 list applications $ db2 force application all $ db2 terminate $ db2stop force $ db2start $ db2 backup db TESTDB online to /dbbackup . online tablespace backup $ db2 backup database TESTDB tablespace table1 online 복구 . crash recovery - 전원 off나 비정상적인 종료 시 - 데이터베이스가 자동으로 복구 - restart 명령어로 수동 복구 . restore recovery - 백업이미지로 백업 시점까지 복구 . rollforward recovery - 로그이미지로 복구 - 최근이나 특정 시점까지 복구 . 버전 복구 $ db2 force applications all $ db2 restore db TESTDB from /dbbackup taken at 201112182005 - 백업파일이 여러개 있는 경우 taken at 옵션으로 백업이미지 시간을 지정 . rollforward 복구 - 백업이미지 시점 이전의 로그파일을 /db2/db2inst1/log_dir/NODE0000 에 복사 - 소유권 변경 $ db2 rollforward db TESTDB to end of logs and complete - 확인 $ rollforward db TESTDB query s...

db2 user 생성 및 권한 설정

1. user 생성 . OS에서 유저 생성 . mkuser testuser 2. 권한 설정 . connect 권한 > db2 grant connect on database to user testuser . connect 확인 > db2 connect to test_db user testuser using testpassword . select 권한 > db2 grant select on test_db.test_table to user testuser 3. toad 접속 . node 확인 > db2 list node directory ; node name, Hostname, Service name * connect 권한만 준 경우 select 할 수 없음. * table 별로 select 권한 설정.

db2 table 복사

1. ddl 확인 및 수정 > db2look -d DB_NAME -e -t TABLE_NAME -nofed -x > TABLE_NAME_look.out > vi TABLE_NAME_look.out . TABLE_NAME -> TABLE_NAME_TEST 변경 2. table 생성 및 insert > db2 -stvf TABLE_NAME_look.out > db2 "insert into SCHEMA.TABLE_NAME_TEST select * from SCHEMA.TABLE_NAME; * 추가 1. DDL 확인 및 수정 > db2look -d DB_NAME -e -t TABLE_NAME -nofed -x > TABLE_NAME_look.out > vi TABLE_NAME_look.out . TABLE_NAME -> TABLE_NAME_TEST1 변경 2. table 생성 및 insert > db2 -stvf TABLE_NAME_look.out > db2 "insert into SCHEMA.TABLE_NAME_TEST1 select * from SCHEMA.TABLE_NAME; 3. TABLE_NAME_TEST2 생성 및 데이터 입력(PK_COLUMN) > db2look -d DB_NAME -e -t TABLE_NAME -nofed -x > TABLE_NAME_look.out > vi TABLE_NAME_look.out . TABLE_NAME -> TABLE_NAME_TEST2 변경 . PK column 만 생성 > db2 -stvf TABLE_NAME_look.out > db2 "insert into SCHEMA.TABLE_NAME_TEST2 ( select PK_COLUMN from SCHEMA.TABLE_NAME except select PK_COLUMN from into SCHEMA.TABLE_N...

db2 table 확인

db2 describe table syscat.tables db2 "select count(*) from syscat.tables where type='T' db2 "select count(*) from syscat.tables where type='T' and tabschema not like 'SYS%'"

DB2 table export/import

del 형식 - csv 형태의 텍스트 파일로 export ixf 형식 - oracle exp와 유사, 테이블 생성과 insert 작업을 동시에 지정 del 형식 db2=> select * from test_table db2=> export to test_table_del.dmp of del select * from test_table db2=> !type test_table.dmp db2=> delete from test_table db2=> select * from test_table db2=> import from test_table.dmp of del insert into emp db2=> select * from test_table ixf 형식 db2=> select * from test_table db2=> export to test_table_ixf.dmp of ixf select * from test_table db2=> drop table test_table db2=> import from test_table_ixf.dmp of ixf create into test_table db2=> select * from test_table *** 추가 데이터 삭제 및 insert db2=> select * from test_table db2=> export to test_table_ixf.dmp of ixf select * from test_table db2=> delect * from test_table db2=> import from test_table_ixf.dmp of ixf insert into test_table 테이블 삭제 db2=> export to test_table_ixf.dmp of ixf select * from test_table # db2look -d kbp -e -t "tes...