PowerPoint 프레젠테이션

Similar documents
13주-14주proc.PDF

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Microsoft Word - PLSQL.doc

목 차

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

DBMS & SQL Server Installation Database Laboratory

歯sql_tuning2

Tablespace On-Offline 테이블스페이스 온라인/오프라인

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

歯PLSQL10.PDF

ALTIBASE HDB Patch Notes

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Microsoft Word - 05_SUBPROGRAM.doc

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

세미나(장애와복구-수강생용).ppt

Microsoft Word - SQL튜닝_실습교재_.doc

10.ppt

SQL Tuning Business Development DB

PowerPoint 프레젠테이션

untitled

Microsoft Word - 04_EXCEPTION.doc

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

ESQL/C

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Microsoft Word - 03_SQL_CURSOR.doc

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT


Jerry Held

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

90

슬라이드 1

<4D F736F F D205BB4EBBBF3C1A4BAB8B1E2BCFA5DB1E2BCFAB9AEBCAD2D524D414EBBE7BFEBBFB9C1A65F39695F313067>

FlashBackt.ppt

最即時的Sybase ASE Server資料庫診斷工具

오라클 데이터베이스 10g 핵심 요약 노트

62

The Self-Managing Database : Automatic Health Monitoring and Alerting

MS-SQL SERVER 대비 기능

PRO1_09E [읽기 전용]

오라클 명령어 와 SQL 정리

Spring Boot/JDBC JdbcTemplate/CRUD 예제

RDB개요.ppt

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Microsoft Word - 02_PLSQL_BLOCK_STRUCTURE.doc

Oracle Database 10g: Self-Managing Database DB TSC

untitled

PowerPoint Presentation

MySQL-.. 1

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Orcad Capture 9.x

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - PLSQL.ppt

Microsoft PowerPoint - PLSQL.ppt

Microsoft Word - 기술노트[19회] Flashback.doc

thesis

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

슬라이드 1

PowerPoint Presentation

PowerPoint 프레젠테이션

Chapter 1

MySQL-Ch10

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

Remote UI Guide

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

(Microsoft Word - PLSQL\300\314\266\365.doc)

강의 개요

Simplify your Job Automatic Storage Management DB TSC

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

PowerPoint Presentation

문서 템플릿

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

C# Programming Guide - Types

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

TITLE

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

ALTIBASE 사용자가이드 Templete

빅데이터분산컴퓨팅-5-수정

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

ORACLE-SQL

Microsoft PowerPoint - DB2 Migration절차, 방법 및 MTK소개.ppt

USER GUIDE

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

Microsoft PowerPoint - a10.ppt [호환 모드]

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

슬라이드 1

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

Microsoft PowerPoint - chap06-2pointer.ppt

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

Transcription:

U N I T 1 9 오라클호환성지원 DB2 9.7은오라클의데이터타입, SQL, PL/SQL, SQLPLUS등의애플리케이션을변경없이그대로전환가능한기능을제공하고있습니다. 349 DB2 9.7 운영자가이드

DB2 9.7 운영자가이드 Administrator Edition 아키텍처비교오라클에대한호환성지원 CLPPlus 유틸리티오라클데이터타입사용오라클함수사용오라클 PL/SQL 사용오라클패키지사용오라클관리자뷰 350 DB2 9.7 운영자가이드

아키텍처비교 DB2 는오라클과다른아키텍처를가지고있습니다. 하지만용어와기능에서차이가있더라도 DB 서비스를수행함에있어서매우유사합니다. 일반적으로오라클의 SGA영역과 DB2의공유메모리에서 Buffer pool, Log Buffer, Package Cache등의순으로사용메모리크기가작아집니다. 1 아래그림은 DB2 와오라클의아키텍처구성도입니다. Figure A DB2 와오라클의아키텍처비교 2 DBMS 의역할을수행하기위해다양한프로세서로구성됩니다. Figure B DB2 와오라클의프로세스비교 351 DB2 9.7 운영자가이드

아키텍처비교 관련오브젝트에대한용어에도약간의차이가있습니다. 3 DB2 와오라클의사용용어에차이가있습니다. Oracle DB2 Instance Database Initialization File 동일 동일 Database Manager Configuration File Tablespace Data Block Extents Data Files 동일 Pages 동일 DMS Containers PL/SQL SQL/PL, PL/SQL ( 호환성지원 ) Data Buffer SGA Buffer Pool Database Manager and Shared Memory Data Dictionary Library Cache Large Pool Data Dictionary Cache System tablespace Catalog Package Cache Utility Heap Catalog cache Syscatspace tablespace 4 오라클과 DB2 에서유사한기능을수행하는명령문입니다. 명령문 Oracle DB2 Start instance Startup (pfile = ) db2start Stop instance Shutdown (abort, immediate) Db2stop (force) Collect Statistics Analyze table Runstats on table Load Sqlldr Load from Exp/imp Export/import 동일 리스너 Lsnrctl start 없음 관리자모듈 Emctl start dbconsole db2admin start UNIT 오라클호환성지원 352

아키텍처비교 명령문및환경변수에도두데이터베이스는다릅니다. 그러나역할은대칭됩니다. 5 오라클과 DB2 에서유사한기능을수행하는명령문입니다. 명령문 Oracle DB2 Backup ( 오프라인백업 ) Backup ( 온라인백업 :DB 별 ) Backup ( 온라인백업 : 테이블스페이스별 ) DB shutdown 이후 관련 files 복사 RMAN> backup database plus archivelog; alter tablespace <name> begin backup; copy alter tablespace <name> end backup; db2 backup db <name> db2 backup db <name> online backup database <name> tablespace (userspace1) online to path include logs Restore (DB 전체 ) Restore( 로그 ) 백업히스토리아카이브모드설정 restore database; Recover database; Restore archivelog all; RMAN> list backup summary; mount 모드 >alter database archivelog; restore db <name> db2 rollforward db <name> to end of logs db2 list backup all for <sample> db2 update db cfg for <name> using LOGRETAIN on 6 파라미터변수중오라클과유사한 DB2 파라미터수치를비교합니다. Oracle db_block_size pagesize DB2 db_write_processes Local_listener Num_iocleaners Svcename, db2comm Log_buffer Parallel_max_server user_dump_dest logbufsz Dft_degree diagpath 353 DB2 9.7 운영자가이드

02 오라클에대한호환성지원 DB2 9.7 에서는오라클환경그대로 DB2 환경으로서비스이전이가능합니다. DB2 9.7 에서는다양한오라클호환성기능을추가하여오라클운영자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. 동시성제어인경우에는 DB2 9.7 설치시오라클 mode를디폴트로가지고있다. 1 오라클과공통으로사용되는호환성기능입니다. Oracle 동시성제어 SQL 언어 PL/SQL, PL/SQL 패키지, 내장패키지 기본지원 기본지원 기본지원 DB2 JDBC 클라이언트 ( 확장포함 ) SQL*Plus 스크립트 기본지원 기본지원 설정값을조회하려면 db2set all 이나 db2 get cfg grep compa 로설정값을확인할수있습니다. 2 DB2 9.7 에서오라클호환성지원을위한데이터유형 데이터유형 number Varchar2 Oracle DATE 설명 Decfloat 및 decimal 을기반 Null과후행공백을구분하는데이터포함달력날짜와함께 time 구성요소를포함한다 Timestamp(n) 초단위의범위를 0( 날짜 + 시간 ) 부터 12( 피코초 ) 사이에선택할수있다. 오라클관리자뷰기능을사용하시려면운영자 DB 생성전에미리기능을설정하셔야합니다. Boolean Varray Index by 절차적논리, 변수및루틴매개변수에서사용할수있다. 프로시저의 array 지원확장 배열지원 Row type Ref Cursor type 복합변수유형지원 매개변수를사용하여커서를변수에할당하거나전달할수있다. UNIT 오라클호환성지원 354

02 오라클에대한호환성지원 DB2 9.7 에서는오라클환경그대로 DB2 환경으로서비스이전이가능합니다. DB2 9.7 에서는다양한오라클호환성기능을추가하여오라클운영자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. 오라클호환성기능을 reset하려면 db2_compability_vector= 값을공란으로설정하시고재기동하면됩니다. 3 DB2 9.7에서오라클호환성기능을전부설정하는경우 $ db2set DB2_COMPATIBILITY_VECTOR=ORA --FFF 값도동일한기능수행 $ db2stop $ db2start 4 DB2 9.7에서오라클호환성지원중일부기능만설정하는경우 (varchar2 지원설정예시 ) $ db2set DB2_COMPATIBILITY_VECTOR=7 $ db2stop $ db2start 설정값을조회하려면 db2set all 이나 db2 get cfg grep compa 로설정값을확인할수있습니다. 오라클관리자뷰기능을사용하시려면운영자 DB 생성전에미리기능을설정하셔야합니다. Bit position Compatibility Feature Comment 1 (0x) ROWNUM Synonym for ROW_NUMBER() OVER() 2 (0x02) DUAL SYSIBM.DUAL 3 (0x04) (+) Outer join operator 4 (0x08) Hierarchical queries 5 (0x10) NUMBER Using CONNECT BY clause 6 (0x20) DATE Enables DATE as TIMESTAMP(0) 7 (0x40) VARCHAR2 8 (0x80) TRUNCATE TABLE 11 (0x400) Data dictionarycompatible views 12 (0x800) PL/SQL Compilation Views are created when the database is created Enables the compilation and execution of PL/SQL statements and language elements. Figure 02A 오라클호환성지원별설정값구별 355 DB2 9.7 운영자가이드

03 CLPPlus 유틸리티 CLPPlus 는오라클의 SQL*Plus 를대신하는 DB2 9.7 의유틸리티입니다. ID 입력은 DB 운영자계정을입력하시면됩니다. 1 CLPPlus 명령어수행방법 $ clpplus id/password 2 CLPPlus 에서는오라클의 SQL*plus 명령어를그대로수행합니다. SQL*plus, CLPplus(DB2) 설명 CLPPlus는자바환경변수가세팅이되어야합니다. 실행이안되는경우에는자바 path 여부를확인바랍니다. REM This is a remark example 주석처리합니다. SET termout off SET linesize 250 SQL*plus 의 set 명령어를그대로사용가능합니다. SPOOL myfile_out.txt Output 파일을만들어서작업중인내용을저장합니다. ACCEPT [substitution_variable_name] 키보드로변수값을입력받습니다. DEFINE [variable_name] 변수를지정합니다. COLUMN [colname] format 9,999 heading My heading' 컬럼출력포맷을변경합니다. EXEC [procname] 저장프로시저를실행합니다. CONNECT, DISCONNECT DB2의접속과연결중단을합니다. EXIT, QUIT CLPPlus 세션을종료합니다. HELP,? 도움기능을호출합니다. HOST [OS_command] OS 명령어를실행합니다. DESCRIBE [tablename] 오브젝트의구조정보를확인합니다. EDIT, INPUT, APPEND, CLEAR, etc. CLPPlus 에할당된버퍼에대하여작업합니다. 오라클의문장그대로수행할때종결자가 /( 백슬래시 ) 로되어있는경우 db2set SQLCOMPAT PLSQL 설정하세요 3 Figure 03A CLPPlus 와 SQL*Plus 에서사용가능한명령어리스트 CLPPlus 에서입력화일명에있는명령어수행결과를화일로저장할수있습니다. $ db2 -x -td@ -f 입력화일명 -z 출력화일명 UNIT 오라클호환성지원 356

04 오라클데이터타입사용 DB2 9.7 에서는오라클호환모드를지원하며호환모드설정시오라클의데이터타입 number,varchar2,date 사용이가능합니다. 사용가능한오라클의데이터타입을함께살펴보겠습니다. db2set all에서오라클의호환성파라미터값 (db2_compatibility_vector) 설정을확인할수있습니다. 1 사용가능한오라클의데이터타입입니다. number varchar2 date Figure 04A 오라클 DB2 9.7 number decfloat(16) number decimal(p) number(p,2) decimal (p,s) 0<p<32; 0<s<=p varchar Max length 32672 Timestamp(0) DB2 와오라클의데이터타입비교 2 오라클과데이터타입사용예시입니다. 샘플테이블을생성합니다. CREATE TABLE emp_test ( empno NUMBER, ename VARCHAR2(10), hiredate DATE, sal NUMBER(7,2)) 오라클호환데이터타입사용시 DB2 9.7 에서는 date 타입을 timestamp로사용합니다. 오라클호환모드비설정시와는다른값을보여줍니다. 3 생성한테이블결과입니다. SELECT COLNAME,TYPENAME,LENGTH,SCALE FROM SYSCAT.COLUMNS where TABNAME ='EMP_TEST' ORDER BY COLNO COLNAME TYPENAME LENGTH SCALE ---------- ----------- --------- -------- EMPNO DECFLOAT 8 0 ENAME VARCHAR 10 0 HIREDATE TIMESTAMP 7 0 SAL DECIMAL 7 2 357 DB2 9.7 운영자가이드

04 오라클데이터타입사용 DB2 9.7 에서는오라클호환모드를지원하며호환모드설정시오라클의데이터타입 number,varchar2,date 사용이가능합니다. 사용가능한오라클의데이터타입을함께살펴보겠습니다. boolean 타입은프로시저안에서만제한적으로사용할수있습니다. 4 오라클과유사한 Syntax 을사용하는 DB2 9.7 데이터타입을살펴봅니다. Figure 04A 오라클과유사한데이터타입비교 5 오라클과유사한 Cursor data type 에대하여살펴봅니다. Figure 04B cusor data type 사용예시 느슨한형변환은오라클호환성모드설정과상관없이 DB2 9.7에서디폴드로설정되어있습니다. 6 DB2 9.7 에서는다른데이터타입비교시느슨한묵시적형변환을적용합니다. 대입 : set salary := 52000 비교 : where salary > 52000 이어붙히기 (concat): salary: 52000 UNIT 오라클호환성지원 358

05 오라클함수사용 이전 DB2 버전에서개발자정의함수로구현한오라클함수도 DB2 9.7 에서는오라클함수그대로사용이가능합니다. 오라클개발자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. 1 DB2 9.7 에서추가지원되는 Built-in 함수목록입니다. 함수구분변환및캐시팅함수날짜계산문자열조작기타 오라클, DB2 함수명 TO_DATE, TO_CHAR, TO_CLOB, TO_NUMBER, TO_TIMESTAMP EXTRACT, ADD_MONTHS, MONTHS_BETWEEN, NEXT_DAY, 요일부분을추가하는 + 부호 LPAD, RPAD, INSTR, INITCAP, SUBSTR 에대한확장 NVL,DECODE, LEAST, GREATEST, BITAND 2 오라클의 SQL 문지원항목을살펴봅니다. SQL 구분 CONNECT BY 재귀 조인 (+) 구문 DUAL 테이블 ROWNUM ROWID MINUS 연산자 SELECT INTO FOR UPDATE CREATE GLOBAL TEMPORARY TABLE TRUNCATE 설명 LEVEL 및 CONNECT_BY_PATH 같은다양한재귀함수를지원 OUTER JOIN 구문을사용하는오라클구문지원 단일행과단일열로구성된더미테이블 리턴되는행의수를제한하고결과세트의행을열거하는데사용 오라클에서는물리적주소를기반으로빠르게검색하는데사용하나 DB2 9.7에서는형식만지원하고해당기능은미지원 차집합. 기본의 DB2 문인 EXCEPT 도사용가능 나중에커서를사용하지않고 DB2 에서행을추출할때사용 전역임시테이블생성 테이블내용을빠르게삭제 359 DB2 9.7 운영자가이드

05 오라클함수사용 이전 DB2 버전에서개발자정의함수로구현한오라클함수도 DB2 9.7 에서는오라클함수그대로사용이가능합니다. 오라클개발자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. 오라클호환성기능을 reset하려면 db2_compability_vector= 값을공란으로설정하시고재기동하면됩니다. 3 오라클의 sysdate 를사용하는예시 (DB2:current date) select sysdate as ora_compa, CURRENT DATE as db2_origin from dual ORA_COMPA DB2_ORIGIN ---------------------- ---------------------- 2009. 8. 10 오후 8:42:29 2009. 8. 10 오후 8:42:29 4 오라클의 to_char 를사용하는경우 (DB2: char) select TO_CHAR(sysdate,'YYYY-MM-DD.hh.mm.ss') as ora_compa, char(current date) as db2_origin from dual ORA_COMPA DB2_ORIGIN ------------------- ------------------- 2009-08-10.10.08. 2009-08-10-22.08. 5 current date 함수실행시 DB2 9.7 과 DB2 9.1 에서다른결과를보여주는경우입니다. -- 9.7 에서 oracle 호환모드적용 values (CHAR(current date)) 1 ------------------- 2009-08-10-22.05.16 -- 9.1 에서의 SQL 문 values (CHAR(current date)) 1 ---------- 2009-06-09 UNIT 오라클호환성지원 360

05 오라클함수사용 이전 DB2 버전에서개발자정의함수로구현한오라클함수도 DB2 9.7 에서는오라클함수그대로사용이가능합니다. 오라클개발자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. 오라클호환성설정여부와관계없이오라클함수의기능은 DB2에서사용하는함수로도사용이가능합니다. 6 오라클의 nvl 함수를사용하는예시 (DB2: coalesce) SELECT DEPTNO, MGRNO,NVL(MGRNO, 'ABSENT') as ora_compa, COALESCE(MGRNO, 'ABSENT') as db2_origin FROM DEPARTMENT DEPTNO MGRNO ORA_COMPA DB2_ORIGIN --------- -------- ------------ ------------- A00 0000 0000 0000 D (null) ABSENT ABSENT 7 오라클의 decode 함수를사용하는예시 (DB2: case 문 ) select deptno, decode (deptno,'b','aaa','zzz' ) as ora_compa, case when deptno = 'B' then 'AAA' else 'ZZZ' end as db2_origin from department DEPTNO ORA_COMPA DB2_ORIGIN --------- ------------ ------------- A00 ZZZ ZZZ B AAA AAA C ZZZ ZZZ 8 오라클의 rownum 함수를사용하는예시 (DB2: fetch first n rows only) select a.empno, a.ora_compa, b.db2_origin from (select empno,firstnme as ora_compa from emp where rownum <=2) a, (select empno,firstnme as db2_origin from emp fetch first 2 row only) b where a.empno=b.empno EMPNO ORA_COMPA DB2_ORIGIN -------- ------------ ------------- 0000 CHRISTINE CHRISTINE 000020 MICHAEL MICHAEL 361 DB2 9.7 운영자가이드

05 오라클함수사용 이전 DB2 버전에서개발자정의함수로구현한오라클함수도 DB2 9.7 에서는오라클함수그대로사용이가능합니다. 오라클개발자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. 9 오라클의 last_day,add_months,dayofyear 함수를사용하는예시 select last_day(current date ) as last_day, add_months (current date, 1) as add_months, dayofyear(current date) from dual LAST_DAY ADD_MONTHS 3 ----------------------- ----------------------- ---- 2009. 8. 31 오후 11:28:48 2009. 9. 10 오후 11:28:48 222 오라클의 lower 함수를사용하는예시 (DB2: lcase) select deptno, lower(deptno) as ora_compa, lcase(deptno) as db2_origin from dept 오라클호환성설정여부와관계없이 lag,lead 같은일부함수는오라클함수명으로추가되었습니다. DEPTNO ORA_COMPA DB2_ORIGIN --------- ------------ ------------- A00 a00 a00 B b b C c c D d d 10 조회데이타를기준으로이후데이터를가져오는 Lead 함수, 조회데이타를기준으로이전데이터를가져오는 lag 함수를사용하는예시 SELECT empno, FIRSTNME,bonus, LEAD(bonus,1) OVER (ORDER BY bonus) AS next_sal, LAG(bonus,1) OVER (ORDER BY bonus) AS prev_sal FROM emp WHERE workdept='a00' EMPNO FIRSTNME BONUS NEXT_SAL PREV_SAL -------- ----------- -------- ----------- ----------- 0020 SEAN 600 600 (null) 2020 GREG 600 900 600 0010 VINCENZO 900 1000 600 0000 CHRISTINE 1000 1000 900 2000 DIAN 1000 (null) 1000 UNIT 오라클호환성지원 362

05 오라클함수사용 이전 DB2 버전에서개발자정의함수로구현한오라클함수도 DB2 9.7 에서는오라클함수그대로사용이가능합니다. 오라클개발자가마치오라클을사용하는것처럼 DB2 환경에쉽게적응할수있습니다. connect by 사용시 depth level이 64이상초과시에는 with 구문으로작성할것을권장합니다. 11 오라클의 connect by 함수를사용하는예시 select level,deptno, deptname,admrdept FROM dept WHERE DEPTNAME NOT LIKE 'BRANCH%' START WITH DEPTNO= 'E' CONNECT BY PRIOR deptno= admrdept LEVEL DEPTNO DEPTNAME ADMRDEPT -------- --------- ---------------- ----------- 1 E SUPPORT SERVICES A00 2 E11 OPERATIONS E 2 E21 SOFTWARE SUPPORT E 12 오라클의 lpad 함수를사용하는예시 select deptno, lower(deptno) as ora_compa, lcase(deptno) as db2_origin from dept DEPTNO ORA_COMPA DB2_ORIGIN --------- ------------ ------------- A00 a00 a00 B b b C c c D d d 363 DB2 9.7 운영자가이드

06 오라클 PL/SQL 사용 오라클의 PL/SQL 도 DB2 9.7 에서는지원합니다. 1 DB2 9.7 에서오라클 PL/SQL 코드는 DB2 엔진의전용컴파일러를사용합니다. Figure 06A DB2 서버에서의 PL/SQL 컴파일러 Or replace 옵션은해당오브젝트가 invalid 되는경우를방지해줍니다. 2 3 DB2 오브젝트에서 or replace 옵션을사용할수있습니다. CREATE [OR REPLACE] FUNCTION CREATE [OR REPLACE] PROCEDURE CREATE [OR REPLACE] PACKAGE CREATE [OR REPLACE] TRIGGER CREATE [OR REPLACE] VIEW 세센에서 PL/SQL의 / 종결문자를사용할수있습니다. UNIT 오라클호환성지원 364

06 오라클 PL/SQL 사용 오라클의 PL/SQL 도 DB2 9.7 에서는지원합니다. 4 오라클의 PL/SQL 의데이터타입선언과 DB2 9.7 에서새로추가된 anchor 문비교예시 create or replace procedure emp_output as declare v_empno emp.empno%type; -- v_empno anchor emp.empno; v_ename emp.firstnme%type; -- v_ename anchor emp.firstnme; v_deptno emp.workdept%type; -- v_deptno anchor emp.workdept; v_sal emp.salary%type; -- v_sal anchor emp.salary; v_answer varchar(20); begin select empno, FIRSTNME, workdept, salary, case WHEN salary < 2000 THEN 'BAD' WHEN (salary > 2000 and salary < 3000) THEN 'GOOD' ELSE 'VERYGOOD' end Into v_empno, v_ename, v_deptno, v_sal, v_answer from emp where empno ='0000'; dbms_output.put_line(v_empno ' ' v_ename ' ' v_deptno ' ' to_char(v_sal) ' ' v_answer); end; / sqlstate 와 sqlcode,get diagnostics 값도사용이가능합니다. 5 커서처리조건처리예시 CREATE OR REPLACE PROCEDURE list_emp IS v_empno NUMBER(4); v_ename VARCHAR2(10); CURSOR emp_cur IS SELECT empno, ename FROM emp ORDER BY empno; BEGIN OPEN emp_cur; DBMS_OUTPUT.PUT_LINE('EMPNO ENAME'); DBMS_OUTPUT.PUT_LINE('----- -------'); LOOP FETCH emp_cur INTO v_empno, v_ename; EXIT WHEN emp_cur%notfound; DBMS_OUTPUT.PUT_LINE(v_empno ' ' v_ename); END LOOP; CLOSE emp_cur; END 3 오라클의커서조건문입니다. 오라클 SQL%NOTFOUND SQL%FOUND SQL%ROWCOUNT 설명커서에데이터가존재하지않는경우커서의데이터가존재하는경우 Insert/update/delete 문으로반영된데이터건수 365 DB2 9.7 운영자가이드

07 오라클패키지사용 오라클의패키지도 DB2 9.7 에서사용이가능합니다. 단지 DB2 에서오라클의패키지는모듈 (module) 이라고명명하였습니다. Utl.file, dbms_lob같은일부오라클패키지 (DB2 모듈 ) 는비 DPF 환경에서만지원됩니다. 1 현재 DB2 9.7 에서사용가능한오라클내장패키지입니다. 패키지명 DBMS_OUTPUT UTL_FILE DBMS_SQL UTL_MAIL UTL_SMTP DBMS_ALERT DBMS_PIPE DBMS_JOB DBMS_LOB DBMS_UTILITY 설명 명령행에서설정또는해제할수있는기본적인보고기능을제공 DB2 서버에서파일작업을수행하는데필요한기능을제공 기존 EXECUTE 및 EXECUTE IMMEDIATE 명령문과함께동적 SQL 을수행할수있는 SQL API 를제공하는패키지 SQL 의이메일알림을보낼수있는모듈 UTL_MAIL 과비슷한하위수준 API 로 SMTP 통합기능을제공 다른세션끼리서로세마포어를설정하는데사용할수있는패키지 세션간에데이터를보내는데필요한기능을제공하는모듈 DB2 의작업스케줄러와통합되는호환가능한 API 를제공 DB2 의내장 LOG 함수처리를위함 애플리케이션에서사용하는프로시저의모음 SYSCAT.ROUTINES 에서도오라클패키지리스트을확인할수있습니다. 2 현재 DB2 9.7 에서사용가능한오라클패키지를쿼리문으로확인합니다 select MODULEID, MODULENAME from SYSCAT.MODULES MODULEID MODULENAME ----------- ------------- 1 DBMS_OUTPUT 2 DBMS_ALERT 3 DBMS_PIPE 4 DBMS_JOB 5 DBMS_LOB 6 DBMS_SQL 7 DBMS_UTILITY 8 UTL_DIR 9 UTL_FILE 10 UTL_ENCODE 11 UTL_TCP 12 UTL_SMTP 13 UTL_MAIL 14 DBMS_STANDARD UNIT 오라클호환성지원 366

07 오라클패키지사용 오라클의패키지도 DB2 9.7 에서사용이가능합니다. 단지 DB2 에서오라클의패키지는모듈 (module) 이라고명명하였습니다. 오라클패키지형식으로컴파일하면자동적으로 syscat.modules의 dialect 값이 PL/SQL 로등록됩니다. 3 오라클패키지형식으로컴파일했는지, DB2 모듈로컴파일되었는지확인이가능합니다. SQL> SELECT MODULENAME, DIALECT, MODULETYPE, REMARKS FROM SYSCAT.MODULES WHERE MODULESCHEMA = 'SCOTT MODULENAME DIALECT MODULETYPE REMARKS ------------- ---------- ------------- ------------------- EMP_ADMIN PL/SQL P PL/SQL Package Body MOD_TEST1 DB2 SQL PL M (null) 4 오라클패키지 (DB2 모듈 ) 에어떤오브젝트가포함되어있는지확인이가능합니다. SELECT OBJECTMODULENAME, OBJECTNAME FROM SYSCAT.MODULEOBJECTS OBJECTMODULENAME OBJECTNAME ------------------- --------------------------------------- DBMS_ALERT MAXWAIT DBMS_PIPE MAXWAIT DBMS_JOB ANY_INSTANCE DBMS_LOB DEFAULT_CSID DBMS_LOB DEFAULT_LANG_CTX DBMS_LOB FILE_READONLY... 367 DB2 9.7 운영자가이드

07 오라클패키지사용 오라클의패키지도 DB2 9.7 에서사용이가능합니다. 단지 DB2 에서오라클의패키지는모듈 (module) 이라고명명하였습니다. 5 DBMS_OUTPUT 패키지 (DB2 모듈 ) 사용예시 CREATE OR REPLACE PROCEDURE list_emp IS v_empno NUMBER(4); v_ename VARCHAR2(10); CURSOR emp_cur IS SELECT empno, ename FROM emp ORDER BY empno; BEGIN OPEN emp_cur; DBMS_OUTPUT.PUT_LINE('EMPNO ENAME'); DBMS_OUTPUT.PUT_LINE('----- -------'); LOOP FETCH emp_cur INTO v_empno, v_ename; EXIT WHEN emp_cur%notfound; DBMS_OUTPUT.PUT_LINE(v_empno ' ' v_ename); END LOOP; CLOSE emp_cur; END 6 DBMS_OUTPUT 패키지수행결과 set serveroutput on은현재세션에서만효력이발생합니다. db2inst1@prod:~> db2 "set serveroutput on" output 설정 on 으로아래명령어가수행됨 CALL DBMS_OUTPUT.ENABLE( 50000 ) db2inst1@prod:~> db2 "call scott.list_emp Return Status = 0 EMPNO ENAME ----- ------- 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK ) UNIT 오라클호환성지원 368

08 오라클관리자뷰 DB2 9.7 에서는오라클운영자에게친숙한 DBA_*, ALL_*,USER_* 같은관리자뷰를그대로사용할수있습니다. S해당기능을활용하기위해서는운영자 DB를생성하기전에 db2_compatibility_vector 설정값은 11이나호환성전체적용을하셔야합니다. 오라클관리자오브젝트는 syspublic의 alias 나 sysadmin 의 view에서확인할수있습니다. 1 오라클관리자뷰에대한주석을보려면 sysibmadm.dictionary 를참조하세요 $ db2 select table_name, substr(comments,1,50) from sysibmadm.dictionary --------------------- ----------------------------------------------- DBA_ARGUMENTS ALL_ARGUMENTS USER_ARGUMENTS DBA_CATALOG ALL_CATALOG USER_CATALOG DBA_COL_COMMENTS ALL_COL_COMMENTS USER_COL_COMMENTS DBA_CONS_COLUMNS ALL_CONS_COLUMNS USER_CONS_COLUMNS DBA_CONSTRAINTS Arguments in all objects in the database Arguments in objects accessible to the user Arguments in objects owned by the user All database tables, views and synonyms All accessible tables, views and synonyms All user's own tables, views and synonyms Comments on columns of all tables and views Comments on columns of accessible tables and views Comments on columns of user's tables and views Information about all columns in constraint defini Information about columns in constraint definition Information about columns in constraint definition Constraint definitions on all tables 2 오라클에서자주사용하는테이블리스트현황보기예시쿼리 구체적으로위치가지정되지않은오브젝트의 path 순서는 values(current path) 로확인할수있습니다. DB2 9.7에서는 "SYSIBM","SYSFUN", "SYSPROC", "SYSIBMADM"," 운영자스키마 순으로오브젝트를검색합니다. $db2 SELECT * FROM TAB -- SYSIBMADM.TAB $db2 SELECT * FROM TABS -- SYSIBMADM.USER_TABLES TSCHEMA TNAME TABTYPE ------------- ----------- ---------------------- ADMINISTRATOR CL_SCHED TABLE ADMINISTRATOR DEPARTMENT TABLE ADMINISTRATOR DEPT SYNONYM ADMINISTRATOR EMPLOYEE TABLE ADMINISTRATOR EMP SYNONYM ADMINISTRATOR EMP_PHOTO TABLE ADMINISTRATOR EMP_RESUME TABLE ADMINISTRATOR PROJECT TABLE ADMINISTRATOR PROJ SYNONYM ADMINISTRATOR PROJACT TABLE ADMINISTRATOR EMPPROJACT TABLE 369 DB2 9.7 운영자가이드

Memo UNIT 오라클호환성지원 370