일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- oracle
- mariaDB
- 오라클
- Linux
- 연산자
- php5
- RHEL4
- sqlplus
- perl + 정규표현식
- PERL
- perl string
- Unix
- MySQL
- rac
- perl one-liner
- command & perl
- patch
- Network
- oracle install
- SQL
- prompt
- dba
- fdisk
- solaris network
- Oracle RAC
- memory
- bash
- grid
- solaris
- cygwin
- Today
- Total
목록전체 글 보기 (154)
DATA 전문가로 가는 길
오라클에서 Merge 문법을 이용해서 입력, 수정, 삭제를 한 번에 해보려고 합니다. 오라클 공식 문서를 보면 merge_update_clause UPDATE에 매칭되는 데이터는 삭제할 수 있다고 나와 있습니다. 풀어서 말씀드리면, WHEN MATCHED THEN에서 UPDATE 진행 후 DELETE를 할 수 있다는 말입니다. 보통은 DELETE 문법을 이용해서 삭제 후 INSERT 문법을 활용하는데 이렇게 하면 인덱스가 점점 안 좋아 질 수 있고, 서비스 테이블에서 조회하려는 시점에 아무 정보도 못 얻어서 비지니스 적인 오류가 발생합니다. 이러한 부분을 해결하기 위해서는 한 번에 DML할 수 있다면 여러가지 장점을 가질 수 있습니다. HR 서버에서 회원 정보를 일자별로 반영해야 되는 업무를 토대로 진행..
쉘 스크립트를 만들 때 로그 파일에서 정상 가동 되는 로그를 보고 다음 스탭으로 넘어가야 할 경우가 많습니다. 그럴 때 해당 로그를 실시간으로 보고 있다가 특정 문자열이 발생되면 종료하는 방법 입니다. tail -f [log file] 위와 같은 명령어를 이용해서 실시간으로 로그를 볼 수 있지만, 안타까운 점은 종료 시점이 없이 계속 보기 때문에 사용자가 Ctrl+C를 누르기 전까지는 로그 내용이 올라올 것입니다. ./mariadb_db.sh start; tail /usr/local/log/mariadb.log -n0 -F | while read line; do if [[ $line =~ 'DB Started Completely' ]]; then pkill -9 -P $$ tail fi done; 수행하..
네이버에서 성능 측정 목적으로 개발 된 오픈소스 프로젝트이며, 2011년에 공개 되었습니다. 성능 측정이라는 것은 실제 서비스에 투입 되기 앞서서 실제와 같은 환경을 만들어 놓고, 서버가 사용자를 얼마나 받아 줄 수 있는지 확인 하는 단계라고 보시면 됩니다. 서비스를 오픈 하는 시점에서 얼마나 많은 사용자가 접속할지 예측하기 어렵기 때문에 nGrinder 성능 측정 도구를 이용해서 최대 가용을 확인 해볼 수 있습니다. CentOS7에서 설치 했으며, wget, Java, Tomcat7 3가지 필요합니다. 1. nGrinder Architecture - Controller - 성능 테스트를 위한 웹 인터페이스 - Agent - Controller의 명령을 받아서 실행 - Target(moniter) - 실..
1. 새로운 DB 생성 및 테이블 생성 -- ESTDB 데이터베이스 생성 MariaDB [(none)]> CREATE DATABASE ESTDB default character set utf8mb4; Query OK, 1 row affected (0.00 sec) -- ESTDB 데이터베이스로 변경 MariaDB [(none)]> USE ESTDB; Database changed -- 사용자 테이블 생성 --#1 IF NOT EXISTS를 활용해서 현재 데이터베이스에 해당 테이블이 존재하는 지 체크 후 생성 MariaDB [ESTDB]> CREATE TABLE IF NOT EXISTS ESTDB.USER_INFO ( -> USER_NO BIGINT NOT NULL, -- 사용자번호 -> USER_ID V..
데이터베이스를 운영하는 회사는 보통 데이터 모델링 툴을 이용해서 논리 모델링, 물리 모델링을 작업해서 상호 관리할 수 있도록 합니다. 그렇게 하면 자동으로 테이블 정의서(테이블 레이아웃)와 같은 형태의 산출물을 쉽게 뽑을 수 있는데요. 오늘은 그러한 툴을 이용하지 않고, 데이터베이스 서버에서 직접 산출물을 만드는 방법을 해보려고 합니다. SI 프로젝트를 오래 하시는 분들은 리버스 엔지니어링으로 테이블을 업로딩 하지만, 메타 시스템이 없으면, 큰 도움을 주지 못할 때가 많습니다. 그래서 아래와 같은 방법은 테이블과 컬럼 코멘트만 변경하고도 테이블 정의서(테이블 레이아웃)를 만들 수 있습니다. 아무래도 사람이 직접 검증하는 게 더 정확하다고 생각 합니다. 아래 테이블 레이아웃 PL/SQL과 HTML 작업은 ..
보통 타 시스템과 연계해서 데이터를 받으면 파이프 라인(|), 콤마(,) 등등 특수 문자를 활용해서 받게 되는 경우가 많을 것입니다. 그럴 때 각 항목을 파싱 하고, 적절한 패턴으로 조회하는 방법을 해보겠습니다. 구분자는 파이프 라인(|)을 기준으로 설명 할 예정이며, 아래 쿼리에서 적절하게 변경하면 다른 특수 문자도 충분히 가능합니다. 1. 데이터 정보 IN_DATA - TYPE : VARCHAR2 - VALUE : '|A||C| DEF | G|||' 2. 파이프 라인으로 구분된 문자열 행(Column) 처리 /* - REPLACE 함수를 이용해서 '|' 부분자가 겹쳐 있는 항목을 띄워 놓기 위해서 '| ' 명시적으로 한 칸 띄웠습니다. - REGEXP_SUBSTR 정규 표현식 함수를 활용하면 행(Co..
결재와 결재자(승인자) 정보가 담겨져 있는 데이터 이며, 최종 결재자(승인자)를 뽑으려고 하는 규칙은 NULL 값이 아니고, APV_APPNUM 숫자가 높은 데이터를 뽑으면 됩니다.즉, 최종 결재자는 결재 승인에 대한 코멘트를 반드시 남긴다는 규칙을 만들고, 조회 쿼리를 작성해야 합니다. 그리고 최종 결과에 APV_APPROVER 컬럼의 결재자 리스트는 결재 별로 APV_APPNUM 컬럼을 기준으로 오름차순으로 표현 합니다. (예 : estenpark, evanlee, kidonghong) 1. 테이블 생성 CREATE TABLE EST_APV ( APV_ID VARCHAR2(60 BYTE), APV_CNT NUMBER(2), APV_APPNUM NUMBER(2), APV_APPROVER VARCHAR2..
선분 이력 테이블을 작업하다 보면 겹치는 부분에 대해서 병합하고, 겹치지 않는 구간에 대해서는 그대로 남겨두는 방식을 많이 하게 됩니다. 사실 선분 이력 테이블을 제대로 관리하려면 종료 시점과 시작 시점이 끊어지지 않게 상호 관리하는 것이 바람직하지만, 보편적으로 관리의 어려움이 있다 보니 여러 데이터를 쌓아 놓고 비지니스 로직(SQL)로 해결 하는 경우가 많을 것입니다. 1. 선분이력 데이터 보기 아래는 사용자 별로 이벤트 시작 일시와 이벤트 종료 일시에 대해서 표로 작성했습니다. 파란색 부분은 병합이 되지 않는 구간이고, 노란색 부분은 병합이 되는 부분입니다. 병합 그룹 번호를 부여한 이유는 이벤트 시작 일시과 이벤트 종료 일시를 연결하고자 하는 것입니다. 즉, 2013/08/12 오후 4:45:00..