메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

DB2 9.7에서의 SQL 호환성

트리거에서 기능이 향상된 오브젝트로: 새로운 Oracle 호환성 기능의 데모

Anil Mahadev, 전문기고작가, IT Market Strategy
Anil Mahadev는 IBM Data Champion으로 선정된 바 있으며, IDUG India Forum의 이사회 구성원이다. 그는 현재 인도 벵갈루루에서 독립 컨설턴트로 일하면서 데이터베이스 구현, Windows 클러스터링, 고가용성 및 다중 플랫폼/애플리케이션을 위한 전략을 연구하고 있다.

요약:  "트리거에서 기능이 향상된 오브젝트로" 기사에서는 DB2 9.7에 새로 도입된 Oracle 호환성 기능의 데모를 제시합니다.

기사 게재일:  2011 년 10 월 17 일
난이도: 초급 원문:  보기
페이지뷰:  834 회
의견:  


모든 개발자에게 묻고 싶은 질문이 있다. 여러분은 Oracle 데이터베이스 기술을 보유하고 있는가? PL/SQL에 대한 지식과 다른 데이터베이스 플랫폼의 코드를 다시 사용할 수 있길 바라는가?

Linux, UNIX 및 Windows(LLW)용 IBM DB2에 변화가 있었다. 비용 절감 효과를 높여달라는 현재와 미래의 고객 요구사항을 충족시키기 위한 최신 릴리스인 DB2 9.7은 자율 기능(자동 관리) 및 Deep Compression(이번 호의 "DB2 9.7: It All Adds Up" 참조)과 같이 익숙한 영역에서 다양한 신기술을 제공한다. 그러나 성공을 결정짓는 것은 바로 SQL 호환성에 초점을 맞춘 기능 콜렉션이다. 이런 기능 덕분에 DB2가 고객의 데이터베이스 소프트웨어로 더욱 쉽게 채택될 수 있으므로, 현재 경쟁사의 데이터베이스에 가장 익숙하더라도 DB2의 비용 절감 및 고성능이라는 장점을 최대한 이용할 수 있다.

이 기사에서는 DB2 9.7의 여러 가지 새로운 SQL 호환성 기능을 예제로 보여주겠다. 트리거와 새로운 데이터 유형에서 시작하여 Oracle SQL 및 PL/SQL에 대한 지원으로 넘어간 다음, 오브젝트 및 동시성 기능 향상에 대한 논의로 마무리하겠다. DB2가 "호환 가능하게" 된다면 모든 사용자에게 이점이 있을 것이다.

우선, CLP Plus(Command Line Processor Plus) 창(그림 1 참조)에 연결하여 "db2admin"을 자신이 선택한 로그인 신임 정보로 바꾸자.
clpplus db2admin@localhost:50000/sample

SQL 호환성

DB2 9.7에서 SQL 호환성 기능을 사용하는 첫 단계는 DB2_COMPATIBILITY_VECTOR 매개변수를 사용하는 것이다. db2set DB2_COMPATIBILITY_VECTOR=ORA로 설정하면 모든 후속 데이터베이스 작성 시 Oracle과 관련된 SQL 호환성 기능을 사용할 수 있다. DB2_COMPATIBILITY_ VECTOR에서 사용하는 가장 중요한 매개변수 중 몇 가지에 대한 설명이 표 1에 나와 있다.

이 기능을 사용하려면 관리 권한이 있어야 한다. DB2 명령 창에서 다음 명령을 입력한다.

db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

간단한 데이터베이스를 작성하려면 db2 create database [dbname]을 입력한다. 그러면 다음을 입력하여 데이터베이스에 연결할 수 있다.
db2 connect to [dbname];

다음 단계에서는 Oracle 데이터 유형을 사용하여 테이블을 작성한다. CLP Plus 창이나 IBM Data Studio를 사용하여 다음 CREATE TABLE 문을 입력한다.
Create table employee (EMPNO NUMBER(5), ENAME VARCHAR2(50), DEPTNO NUMBER(5))


그림 1: DB2 9.7에서는 CLP Plus 인터페이스를 사용하여 SQL 호환성 기능을 시험해 볼 수 있다.
그림 1: DB2 9.7에서는 CLP Plus 인터페이스를 사용하여 SQL 호환성 기능을 시험해 볼 수 있다.

PL/SQL 기능

이제 PL/SQL 프로시저를 작성할 수 있는 기능에 대해 알아보자. DB2 9.7에서는 다음을 지원한다.

  • 사용자 정의 패키지
  • PL/SQL 프로시저/함수/익명 블록
  • 내장 패키지(DBMS_OUT.PUT_LINE, DBMS_PIPE, DBMS_UTL 등)
  • 연관(INDEX BY) 배열
  • Varray
  • 트리거
  • %ROWTYPE
  • %TYPE
  • EXCEPTION
  • Ref-Cursor

PL/SQL은 LUW용 DB2 9.7의 Enterprise Server Edition 및 Workgroup Edition에서만 지원된다. DB2 Express-C, DB2 Express 또는 DB2 Personal Edition에서는 PL/SQL이 지원되지 않는다.


DB2의 PL/SQL 프로시저

DB2에서는 PL/SQL 언어를 지원한다. 샘플 코드를 통해 어떻게 작동하는지 살펴보자. 이 PL/SQL 프로시저를 컴파일하여 실행하면 사용자에게 시작 메시지가 표시된다. 콘솔에서 출력을 보려면 우선 SET SERVEROUTPUT ON 명령을 실행한다.

CREATE OR REPLACE PROCEDURE message_proc (myname varchar2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Welcome to DB2 9.7 ( )! ' || myname
|| '. Now supports for ORACLE SQL and PL /SQL as well :-)!');
END message_proc;

DB2에서 이 PL/SQL 프로시저를 호출하려면 다음 명령을 실행한다.

EXEC proc_name
EXEC message_proc('Anil');

다음은 FOR 루프를 사용하는 예제이다.

BEGIN
FOR a IN 10 .. 20 LOOP
DBMS_OUTPUT.PUT_LINE('Counter ' || a);
END LOOP;
END;

이 루프를 실행하면 다음과 같은 결과가 출력된다.

Counter 10
Counter 20


truncate table 명령

Oracle 데이터베이스에 대한 배경 지식이 있는 개발자들은 아마 TRUNCATE TABLE 명령을 사용한 경험이 있을 것이다. DB2에서도 이 명령을 지원한다. 다음 코드는 간단한 테이블을 작성하고 이 테이블에 행을 추가한 다음, TRUNCATE 명령을 사용하여 테이블에서 모든 행을 제거하기 위한 것이다.

CREATE TABLE CLIENTS
(CLIENTID NUMBER(5) PRIMARY KEY NOT NULL,CLIENTNAME
VARCHAR2(50));

다음 행을 삽입한다.

INSERT INTO CLIENTS (CLIENTID, CLIENTNAME) VALUES (1,'IBM');
INSERT INTO CLIENTS VALUES (2,'MSFT');
INSERT INTO CLIENTS VALUES (3,'EDB');


표 1: DB2_COMPATIBILITY_VECTOR 값
표 1: DB2_COMPATIBILITY_VECTOR 값

다음 행을 살펴보자.

SELECT * FROM CLIENTS;

이제 다음 명령을 실행하여 이들 행을 자른다.

TRUNCATE TABLE CLIENTS;

자른 행이 사라졌는지 증명해보자.

SELECT * FROM CLIENTS;

아무런 행도 표시되지 않을 것이다.


오브젝트 및 동시성 기능 향상

DB2 9.7을 통해 시간을 절약하고 성능을 높일 수 있는 두 가지 중요한 개선사항을 언급하는 것으로 본 기사를 마무리하기로 한다. 그 두 가지는 바로 최초 사용 유효성 검증과 새로운 기본 잠금 상태이다.

최초 사용 유효성 검증
기본 데이터베이스 오브젝트(테이블, 뷰, 프로시저, 함수 등)가 변경될 때마다, 다음에 종속 오브젝트로 어떤 오브젝트를 검색할 때 해당 오브젝트는 자동으로 다시 유효성 검증된다. 이는 분명히 애플리케이션 개발자 입장에서는 시간을 절약되는 요소이다. 오브젝트가 변경될 때마다 자동 종속성 검사가 이루어진다.

현재 커미트된 항목 읽기(DB2에서는 기본적으로 지원됨)
DB2의 이전 릴리스에서는 한 사용자가 같은 행을 읽는 동시에 쓰는 것이 불가능했다. 이는 리더가 보류 중인 쓰기 작업의 결과를 기다린다는 원리를 기반으로 하는 것이다. 그러나 DB2 9.7에서는 기본 잠금 상태를 사용하므로 리더가 보류 중인 쓰기 작업의 결과를 기다리지 않는다. 그 대신, 행의 현재 커미트된 버전을 읽는다. 그러므로 리더가 라이터를 차단하지 않고 라이터도 리더를 차단하지 않는다.

필자는 이런 새로운 SQL 호환성 기능에 매우 깊은 인상을 받았다. 이 기사에서는 SQL 호환성 기능을 수박 겉핥기식으로 다루었을 뿐이므로, DB2 9.7을 직접 한번 사용해보기 바란다. 결코 실망하지 않을 것이다.


참고자료

General information on IBM DB2
Upcoming DB2 technologies

필자소개

Anil Mahadev는 IBM Data Champion으로 선정된 바 있으며, IDUG India Forum의 이사회 구성원이다. 그는 현재 인도 벵갈루루에서 독립 컨설턴트로 일하면서 데이터베이스 구현, Windows 클러스터링, 고가용성 및 다중 플랫폼/애플리케이션을 위한 전략을 연구하고 있다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=Information Management
ArticleID=765649
ArticleTitle=DB2 9.7에서의 SQL 호환성
publish-date=10172011

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.