2011년 6월 27일 월요일

[Oracle.3]SQL (Structured Query Language) - 기본 문법

SQL ( Structured Query Language )
1. SELECT
테이블의 데이터를 조회하는 기본적인 SQL 문법
SELECT 칼럼 이름1, 칼럼 이름2
FROM 테이블 이름;
2. WHERE
전체 데이터 중 조건을 만족하는 값만 얻을 수 있도록 한다.
SELECT 칼럼 이름1, 칼럼 이름2
FROM 테이블 이름
WHERE 칼럼이름 조건 값;
1) 기본 문법
SELECT employee_id, hire_date
FROM employees
WHERE last_name = ‘king’;
2) 조건절 작성
AND : A AND B 의 경우 도 조건 모두를 만족 해야 한다.
OR : A OR B 의 경우 두 조건 중 하나를 만족 해야 한다.
BETWEEN AND : 주어진 범위의 값에 해당하면 그 값을 반환 한다.
IN : 하나 이상의 동일 조건을 만족해야 하는 경우
IS NULL/NOT : 할당되지 않은 값을 만족하는 경우
LIKE : 조건의 일부와 일치하는 경우에 적용.
3. ORDER BY
일정한 기준에 의해 정렬하여 표현 할 수 있다.
ORDER BY 칼럼이름 [ASC | DESC]
DESC(Descending) 은 키워드를 명시적으로 ORDER BY 적에서 나타내 주어야 한다.
4. GROUP BY
일반적으로 질의문으로부터 얻은 결과에 대해 GROUP BY 절에 명시한 칼럼의 값이 같을 때 그룹을 만들고, 이 그룹으로부터 SQL 표준 함수인 집합 함수를 통해 다양한 결과를 얻습니다.
GROUP BY 칼럼이름1, 칼럼이름2
5. HAVING
GROUP BY 절의 결과로부터 특정 조건을 만족하는 값을 얻고자 할 때.
GROUP BY 칼럼이름1, 칼럼이름2
HAVING 칼럼이름 조건 값
*** 참조 문헌 : 10g로 시작하는 오라클 SQL & PL/SQL - 2장 데이터 얻기 첫걸음 내딛다

2011년 6월 24일 금요일

[Oracle.2]Oracle Sever Architecture - Oracle Database


Oracle Server Architecture

Oracle은 사용자의 요구를 DBMS에 전달하는 기능을 하는 Instance와 데이터를 저장하고 데이터에 접근하는 대상인 Database로 구성되어 있다.
2. Database
데이터를 저장하는 저장 영역을 말한다. Oracle은 저장 영역인 데이터베이스를 효율적으로 사용하기 위해 논리적 데이터베이스와 물리적 데이터베이스로 구분한다.
1) Logical Database Structure
저장공간을 효율적으로 사용하기 위해 세밀한 설정을 가능하게 한다.
1-1) Data Block
데이터를 저장하는 가장 작은 논리적 단위 이다. Oracle의 데이터 블록은 데이터베이스를 생성할 때 결정된다. 데이터 블록의 크기는 DB_BLOCK_SIZE의 값에 의해 결정되고 데이터베이스가 생성된 이후에는 다시 변경할 수 없다.
1-2) Extent
데이터를 저장하기 위한 연속적인 데이터 블록의 집합이다. 데이터가 할당되는 최소 단위.
사용자가 테이블을 생성하면 이를 저장하기 위해 데이터블록이 할당되고 이때 저장 공간을 연속된 블록들로 할당하게 되는데 처음 할당되는 연속되는 블록들을 Initial Extent라고 한다. 계속된 추가 작업으로 저장 공간이 부족하게 되면 새로운 데이터 블록이 필요하게 되어 다시 연속적인 블록을 할당하게 된다.
1-3) Segment
테이블스페이스를 구성하는 논리적인 저장 단위 이다. 또한 Extent의 집합이다.
Oracle은 데이터를 효율적으로 저장하기 위해 다양한 유형의 Segment를 가진다.
1-3-1) Data Segments
테이블의 데이터를 저장하는 Segment 이다. 가장 빈번하게 I/O가 발생.
1-3-2) Index Segments
테이블 데이터의 Index를 저장하는 Segment 이다.
1-3-3) Rollback Segments
한 개 이상의 Rollback Segment 를 가지고 있다. Rollback Segment 는 변경 이전의 값을 저장하여, 사용자들에게 Read Consistency 를 제공한다. 또한, Transaction ROLLBACK되면 저장하고 있는 이전의 데이터를 제공한다. 자동 언두 관리 (Automatic Undo Management) 변경되기 이전의 언두 데이터를 언두 테이블스페이스에서 관리함으로써, 사용자가 COMMIT하여 이미 데이터베이스에 반영한 데이터도 원래의 값으로 되돌릴 수 있는 Flashback Query 기능이 가능하다.
1-3-4) Temporary Segments
SORT_AREA_SIZE에 할당된 메모리의 크기보다 큰 대용량의 데이터를 정렬할 때 사용하는 작업 공간 이다.
1-4) Tablespace
데이터를 저장하는 가장 큰 개념. 데이터베이스 객체를 생성하거나 생성된 테이블에 데이터를 추가하고 정상적으로 Transaction을 종료하면 테이블 스페이스에 저장된다.
하나의 데이터베이스는 반드시 한 개의 SYSTEM SYSAUX 테이블스페이스를 가지며, SMALLFILE TABLESPACE를 생성한다.
요약)
하나의 테이터베이스는 하나 이상의 테이블스페이스를 가진다. SYSTEM, SYSAUX 테이블스페이스는 데이터베이스가 생성될 때 반드시 존재한다. 데이터베이스 운영에 필수적인 정보들을 가지고 있기 때문이다. 하나의 테이블스페이스는 여러 세그먼트들로 구성된다. 112Kbytes 크기의 세그먼트 내에는 28Kbytes 84Kbytes 크기의 Extent가 존재한다. 그리고 이들 Extent에는2Kbytes 크기의 여러 블록이 존재한다. Block은 데이터를 저장하는 최소단위이며,  BlockOracle은 데이터베이스 객체와 데이터를 저장한다.
2) Physical Database Structure
데이터 베이스 생성시 미리 일정한 크기만큼의 파일을 생성해 두고 이 파일의 크기만큼 데이터를 저장한다.
데이터의 용도에 따라 여러 종류의 파일로 구분된다. 지금부터 하나하나 살펴 보자.
2-1) Data File
테이블, 인덱스 등의 데이터베이스 객체를 물리적으로 저장하는 파일을 말한다. 데이터 파일은 테이블 스페이스 생성시 하나 또는 그 이상 생성되어진다.
2-2) Control File
데이터베이스의 물리적인 구조를 저장해 두는 파일이다. Oracle Instance Data File, Online Redo Log File을 연결하는 역할을 한다.
데이터베이스의 물리적인 구조 정보를 가지고 있어 데이터베이스가 시작될 때나 데이터베이스 복구할 때 항상 참조되는 파일입니다.
2-3) Redo Log File
데이터베이스의 모든 변경 정보를 물리적인 파일 형태로 가지고 있는 파일이다.
리두 로그 파일은 데이터베이스를 복구할 때 꼭 필요한 파일이므로 디스크와 그룹형태로Mirroring  Multiplexed Online Redo Log 형태로 구성하여 운영해야 한다.
2-4) Archive Log File
온라인 리두 로그 파일이 로그 시퀀스 번호대로 저장되어 있는 것을 말한다. , 온라인 리두 로그 파일의 저장 내용을 모두 가지고 있는 파일이라고 생각하면 된다.
아카이브 모드일 때 생성되는 파일로 온라인 리두 로그 파일 중 덮어 쓰게 될 로그 시퀀스를 가진 파일의 이미지를 복사하여, 로그 시퀀스 번호대로 리두 로그 파일을 저장하게 된다.
2-5) Parameter File
Oracle Instance SGA 크기 등 해당 Oracle Instance의 기능과 성격을 기록해 놓은 파일이다. Oracle Instance를 시작할 때 Parameter File을 읽어 Oracle이 필요로 하는 자원을 얻게 된다.
2-6) Alert Trace File
운영중에 백그라운드 프로세스와 데이터베이스 서버가 시스템 내부적인 에러나 시스템 변경 상황, 그리고 사용자가 데이터베이스를 운용할 때의 에러 등을 감지하여 Trace File을 생성하며, Alert File에 기록하게 된다.
어제와 오늘 설명한 Oracle Server Architecture의 전체 구성 모습니다. Instance Database간의 연결 및 사용자가 요구한 SQL문을 메모리 영역과 프로세스, 파일 간 어떻게 상호 처리하는 것에 대해 나와 있다.

1-1. Oracle Server Architecture의 전체 구성 모습

*** 참조 문헌 : 10g로 시작하는 오라클 SQL & PL/SQL

2011년 4월 27일 수요일

[Oracle] 숫자타입이 아닌 문자가 존재하는 컬럼 필터

데이터베이스를 개발하거나 유지보수를 하다 보면 데이터의 품질에 대한 고려를
전혀 하지 않는 프로그램들을 많이 볼수가 있습니다.

이럴때 정말 데이터베이스 전문가가 절실하구나 하는 생각이 들죠.
개발자가 만들어 놓은 데이터베이스의 관계도나 제약조건등은 전무하고 단순하게
개발을 위해서만 정하는 컬럼명이나 속성을 보다 보면 답답하기 그지 없습니다.

말도 안되는 컬럼으로 20분 동안 삽질하다가 우리 같은 사람이 있겠거니 해서
공유합니다.

* 상황은 이렇습니다.
  실제 저장되는 데이터는 숫자형 이나 데이터 컬럼은 VARCHAR2 로 정의 되어 있음
  이렇다 보니 INPUT에서 걸러야 하나 이것도 안되어 있어 문자/숫자 섞여 있음  

  해당 데이터를 조회하여 숫자식으로 환산하는 결과를 얻으려고 할때
  문자가 아닌 양의수의 값만을 걸러 낼때 아래와 같이 하면 도움이 됩니다.

* 해결방안
   오라클 함수중에 REGEXP_INSTR(...)이 있는데 정규식을 이용해서 해당 컬럼의
   원하는 정규식 pattern의 자리수를 얻어 옵니다. 

SELECT COL FROM (
    SELECT '12.0' AS COL FROM DUAL
    UNION ALL SELECT '52/0' FROM DUAL
    UNION ALL SELECT '52U0' FROM DUAL
    UNION ALL SELECT '%2U0' FROM DUAL
) T
WHERE  REGEXP_INSTR(T.COL , '[^{.1234567890}]') <= 0

2011년 4월 21일 목요일

[술 이야기] 천오백년 역사의 전통명주 - 한산소곡주(18%)


아래의 본문 내용은 한국가양주 연구소의 내용중 일부 발췌한 내용입니다.
( http://www.suldoc.com )

전통주 관련 내용을 다시 정리 하면서

한산 소곡주는 1300년전 백제왕실에서 즐겨 음용하던 술로 가장 오래된 술로 알려져 있고 삼국사기 백제본기를 살펴보면 다안왕(多晏王)11년(318년)에 추곡이 흉작 되자 민가에서 제조하는 가양주를 전면 금지하였고 무왕37년(635년) 3월에는 조정신하들과 현 백마강 고란사부근 기암괴석이 어우러진 경관과 함께 소곡주를 마시어 그 흥이 극치에 달했다 하고, 의자왕16년(656)3월에 왕이 음주 탐락 하였다고 전해져 내려오고 있다.

백제가 멸망하여 한을 달래기 위하여 한산 건지산 주류성에서 백제 유민들이 소곡주를 빚어 마시고 그 한을 달랬다고 한다.

1800년경 주류성의 아래 동네인 호암리 에서 시어머니(김영신)는 선조들로부터 전수를 받아 명맥을 이어오다가 1979년 7월 3일 충남무형문화재 제3호로 지정을 받으셨고 저는 시집을 호암리로 와서 소곡주 빚기를 30여년 같이 하다가 시어머니의 별세로 1997년 12월 23일에 충남 무형문화재 제3호로 승계 받아 소곡주의 명맥을 아들(나장연)과 함께 이어가고 있다

소곡주는 청혈해독의 약리작용이 있으며 말초혈관을 확장하고 혈관운동 중추를 억제하는 혈압강화작용이 있어 고혈압 방지에 좋습니다.

▣ 제품의 특성

가) 일반적인 주질

술의 일반적인 외관(색, 향, 맛)
술은 감미, 산미, 신미, 고미, 지미, 청량미 등과 색택, 향취, 침강도 및 비탁도의 균형이 잘 어울려야 한다. 이들 상호간의 균형 유지가 바로 양조비법이며 기술의 척도가 되는 것이다. 이러한 모든 맛을 발효학적으로 자연 생성한 것이어야 한다. 본술의 색은 연한 미색이 나고 단맛이 돌면서 점성이 있고 향취는 들국화에서 비롯된 그윽하고 독특한 향을 간직하고 있다. 들국화의 일반잡균에 대한 강한 항균력으로 잡미, 산미와 곡자 냄새가 전혀 없고 부드러운 맛이 나는 주도 높은 최고급 술이다.
 
알코올의 도수
한산 소곡주는 18度정도로 적당한 주도를 갖고 있으며, 장기간 숙성과정을 거치기 때문에 마신 후의 숙취 등의 문제가 없어 일반 大衆酒 로서도 적당한 주도를 갖고 있다.

나) 특수한 주질

영양성분
술 속의 에탄올은 소화과정을 거치지 않고 체내에 바로 흡수되어 열량의 급원이 되고 적당히 마시면 식욕이 촉진되고 소화액의 분비 및 혈액순환을 촉진시킨다. 또한 피로회복에도 유효하다. 영양성분으로 에탄올과 미량의 Ex분, 유기산, 아미노산, Voletile acid, 당, 비타민, 미네랄 등의 영양소 함량에 따라 술의 향기, 빛깔, 맛 또한 미생물번식 정도 등이 다를 수 있다.한산소곡주의 주 유기산은 Lactate 161mg%, acetate 15mg%, Propionate 9.4mg%, Malate 38mg이며 아미노산은 Pro., Ala., Arg., Leu. 순으로 함유되어 있다.
 
약용성분
동의보감 및 약용관련 문헌에 의한 들국화(산국)의 성분은 조단백 7%, 조지방 4.6%, 환원당 4.1% 등의 일반성분 뿐만 아니라 정유(0.2%), 테트라코잔, 테르펜케톤, 헥사코잔 등의 특수성분 등이 함유되어 있어 청혈해독의 약리작용 효과가 있으며, 말초혈관을 확장하고 혈관운동 중추를 억제하는 혈압강하 작용이 있어 고혈압 방지에도 효과가 있는 것으로 되어있다.
 
알코올 성분 이외의 특수성분
앞의 영양성분 및 약용성분에서 밝힌 것과 유사하다.
 
기타특징
그 외에 소곡주의 주요 향기성분은 butyl alcohol, propyl alcohol, propanoic acid등 이 있으며 花香첨가의 香釀酒 혹은 藥用酒로서 감미, 지미의 미각, 풍미가 있고 특히 부드로운 맛이 나는 것이 특징이다.
※음용은 하루 2∼3잔정도 식전·후, 취침전에 마신다.

2010년 10월 15일 금요일

[Oracle] 오라클 10g 버전 패치 방법

* 패치를 하게 된 이유 
오라클 10g 설치 후 파워빌더에서의 특정 쿼리 부분에 오류가 있었다. 
이 오류는 정확하게 해결하지 못했으나 다음과 같이 오라클의 패치 이후에 해결이 되었으며 
파워빌더 상에서는 데이터의 형변환에 대한 처리부분이 오류문제인것으로 판단됨 

1. 오라클 패치 Download
   -  http://metalink.oracle.com 에 접속하셔서 계정을 생성 
      계정 생성할때 반드시 계약서 상의 CSI 코드 번호를입력
      계정을 생성 완료 후 메인 화면에서 위에 상단의 메뉴중에 patches & updates  
      파일의 압축을 풀면 read.me 가 생성됨. 참조하여 patch.

2. 리스너 내리고 오라클도 내리고
   - 리스너 종료
   - 오라클 내리기
      sql> conn /as sysdba
      sql> shutdown immediate

3. 기존 oracle binary file 백업받기
4. 압축파일 해제 후 Install 진행 
 
5. 정상적으로 실행 종료되면 오라클과 리스너 올리기.
   : 6번에서 catpatch.sql을 실행하려면 오라클을 올릴때 upgrade 을 써줘야 합니다.
   - 리스너 살리기
   - 오라클 올리기
6. Oracle dictionary update
    - startup upgrade를 했다면 catpatch.sql을 실행시킨다. (권고사항)
      /rdbms/admin/catpatch.sql
6-1. Run the utlrp.sql script to recompile all invalid PL/SQL packages now 
     instead of when the packages are accessed for the first time. 
     This step is optional but recommended.
       /rdbms/admin/utlrp.sql
 
7. 버젼이 제대로 되었는지 확인하고 문제 없다면 패치 끝~!
    select * from v$version;

2010년 9월 4일 토요일

[봉사 이야기] 2010년 해외 봉사 - 네팔의 기록

2010 8 31 ~ 9 3 ( 4 5 )  
네팔 봉사활동에 관한 내용을 하루 하루 기준으로 정리하여 사진과 함께 올려 드립니다.
동영상 촬영 부분도 있으나 추가작업들이 필요 한것 같아 일단 사진들과 간단한 스마트폰으로 찍은 영상들을 공유하고자 합니다.실제 직접 있는 것처럼 생생하게 전달을 못하더라도 저희가 여러분들의 열정을 네팔에 전하고 일정을 함께 따라가 보고자 합니다

첫째날 - 2010 8 31()
출발하기 전날 밤은 잠을 이루지 못했습니다.아마도 함께 떠나는 해외봉사단 모든 분들이 그러지 않았을까 생각을 해봅니다.  아침 6시에 집결을 하기로 약속을 한지라 스탭으로써 미리 가야 겠단 생각에 집에서 4 30분에 출발 준비를 마쳤습니다아침 집결 복장은 하의는 자유, 상의는 공통 제작한 티셔츠와 모자와 조끼를 입기로 약속을 했지요. 날씨가 더워서 조끼는 사실 공항에서 한번 밖에 입어 보지는 못했습니다우리나라 기상청 말고 카투만두의 세계날씨를 보여주는 것도 믿을게 못된다는 것을 처음 알게 되었습니다. ^^


2010 8 31() - 둘째날
네팔 에서의 첫날을 보내고 아침 7 기상을 하여 아침을 먹고 오전에 오늘 하루 진행될 내용에 대해서 공유하고 의견을 나누기 위해 로비로 모였습니다항상 사람은 처음을 기억속에 많이 갖게 된다고 합니다.네팔에 처음 도착한 카투만두의 풍경에서 느낀것 그리고 봉사를 시작한 반케의 아이들, 눈망울, 그리고 반케의 열악했던 아이들의 상황 모여 들었던 아이들은 많은데 우리가 준비 해온것은 너무 적어서 입고 있던 옷이라도 벗어 주고 싶은 심정 이라며 떠날때 까지도 안타까워 하셨던 단장님이신 고 부사장님, 공항으로 돌아 오는 길에 우리들은 모두 몇가지 실질적인 아이디어 들도 얘기 하게 되었습니다." 우리 직원들 집에서 안입는 하나씩만 모아서 여기 보내줘도 1000벌은 되겠다 ", " 다음에 ECCD 지원할 때는 정해져 있는 돈으로 하는 것보다 지원해서 확실하게 해주자 ", " 아이들이 모두 신발을 신고 있지 않던데 선물은 신발이 좋겠다아마도 눈으로 보고 어떤 필요를 원하고 있었는지 느낄 있던 좋은 시간 이었던것 같습니다. 돌아 오는 길이 아쉬움과 미안함으로 가득 했지만 우리가 보고 느낀 지금의 이곳 상황을 돌아가서 함께 공유 하면서 좋은 아이디어와 계획으로 보답하면 되겠구나 싶습니다이제 가장 진행 프로그램이 많은 내일을 위해서 모두들 충전 하러 갑니다... ^^ .. 덥다.. 오로지 시원한 것은 맥주밖에 없네요..






2010년 9월 1일(수요일) - 셋째날
카투만두에서의 두번째 숙박은 아주 편안(?)하게 보냈습니다. 아침 일찍 호텔에서 체크아웃을 한다음 바로 카투만두 국내선 공항으로 다시 이동했습니다. 이번 경비행기는 지난번 것 보다 더 작다는 이야기만 듣고 드디어 공항으로 출발..~~





언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...