Oracle 의 기능별 설명
1. 개방형 SYSTEM
1) 효율적인 운용능력
① 라이트 사이징 ( Rightsizing )
Oracle 은 80 개 이상의 다양한 하드웨어 플랫폼과 데스크탑 시스템에서 메인프레임 , 더나아가서는
슈퍼컴퓨터에 이르는 OS 플랫폼에서 완벽한 이식성을 제공합니다.
② 멀티스레드 서버 구조
멀티스레드 서버구조는 SMP( Symmetric Multiprocessor : 대칭형 멀티프로세서 ) 와 약결합
멀티프로세서를 비롯한 모든 하드웨어 구조상에서 수많은 사용자들에게 확장가능한 뛰어난 성능을
제공한다.
이러한 탁월한 성능의 CPU , I/O , 메모리 , OS 병목현상을 제거하고 Oracle RDBMS 서버코드를
최적화하여 내부의 모든 병목 현상을 제거함으로써 얻을 수 있다.
- 여러개의 클리이언트의 요구를 동시에 처리 ( 트랜잭션 규잉 )
- SMP , MPP 기종에서는 자동적인 CPU 부하조정
- 복수 공유 서버 프로세서
- 한 서버 프로세스마다 복수의 사용자
- 자동 로드 밸런싱
- 공유 SQL 캐쉬
- 약결합 시스템에 대한 병렬 서버 ( Parellel Server )
③ 병렬수행 제어
여러명의 사용자가 동일한 데이터를 동시에 acess 하면 이들 사이에는 충돌이 발생한다. Oracle 은 완전하고 무제한적인 행단위 Locking 과 무충돌 (contention free) 조회기능을 통해 기다리는 시간을
완전히 없애거나 최소한으로 줄인다.
Locking이 누적되어 계속 기다리게 되는 불편함이 없도록 데이터와 인덱스에 대해 행단위 록킹을
제공하며 , 트랜잭션 , 케이블 , 데이터베이스당 행 록킹의 갯수가 아무리 많아도 록킹할수 있다. 또
무충돌 조회는 Read Lock 을 사용하지 않고도 데이터의 무결성 및 일관성을 완벽하게 유지시커 주므로
수정과 조회 작업이 서로 방해받지 않습니다.
○ 병렬처리 ( Parallel operation ) 사용범위
가. 병렬처리 사용방법
- 테이블 생성시 같이 정의
0. Create table line_item ( item_no number(7) ,
item_name varchar(20) , ... ) parallel 20 ;
- 이미 작성된 테이블을 병렬처리로 전환
0. ater table line_item parallel 20 ;
0. 응용프로그램의 수정없이 즉시 사용가능
- 해당 SQL 만 병렬로 처리 : Hint 기능 사용
0. select / * + parallel ( line_item , 20 ) * / item_name , ....
from line_item , products .....
나. 병렬처리 적용범위
① TABLE ACCESS ( FULL )
② MERGE JOIN
③ NESTED LOOPS
④ SORT ( GROUP BY )
⑤ SORT ( JOIN )
⑥ SORT ( ORDER BY )
⑦ SORT ( UNIQUE )
⑧ AGGREGATE ( GROUP BY )
병렬 데이타 로딩 ( parallel Data Loading )
- SQL * Loader 를 여러개의 세션에서 동시 수행
- 동일한 테이블에 동시에 Fast Bulk Load
- CPU 갯수에 따라 선형적인 수행성능 증가
병렬 인덱스 생성 ( parallel Index Creation )
- CREATE INDEX 명령어 수행시
create index idx_1 on line_item ( Item_no ) parallel 20 ;
- 여러개의 CPU 에서 동시에 수행
- 인덱스 생성에 필요한 Table Scan , sort 기능을 병렬로 수행
- 초기 DB data 적재 ( Load ) 시
- 인덱스 재구성 시
병렬 복구 ( Parallel Recovery )
Oracle 에서의 병렬처리 기법
- 무제한적인 행단위 록킹
- 록의 누적이 없음
- 무경합 조회
- 멀티스레드 순서 번호 생성기
④ Avanced Cost-based 조회 최적화
지능적인 Cost-based 조회 최적화 기능을 통해 효율적인 데이터 액세스와 탁월한 조회 성능을 누릴 수
있습니다. 최적화기능은 테이블당 행 수와 인덱스선택도 같은 통계치를 고려하여 가장 효과적인 액세스
경로를 결정하는 것이다.
⑤ 자원 리미터
Oracle 의 자원 리미터를 사용하면, DBA 는 사용자가 쓰는 시스템 자원을 제어할수 있으며 CPU 시간 ,
논리 디스크 I/O , 연결시간 같은 자원들의 최대 수준을 설정할수 있습니다. 사용자가 최대 수준을
넘게되면 요청이나 세션은 종료됩니다
⑥ 지속적인 운용능력
OLPT 의 사용량이 많은 시간에도 백업 , 복구 , 테이터 베이스관리 같은 시스템의 중요한 기능이
트랜잭션을 방해하지 않으면서 온라인으로 처리된다.
⑦ 능동 Applecation
능동적인 데이터 베이스는 개발,유지보수,관리에 대한 부담을 최소화할 뿐만아니라 무결성과 보안에
있어서 탁월한 신뢰성을 보장해 준다. 그래서 완벽한 Compliant SQL 을 구현하며 완전한 개방형
애플리케이션 개발 환경이 보장됩니다.
⑧ 선언형 무결성 제한
- 애플리케이션 개발 및 유지보수비용을 최소화하고 코딩이 필요없음
- 애플리케이션 신뢰성을 향상시킴
DBMS 가 시행을 보장함
- 시행 오버해드를 줄임
Oracle 은 제한 시행을 최적화함
- 100 % ANSI/IOS 표준임
2) PL/SQL 저장 프로시저와 트리거
PL/SQL 프로시저를 사용하여 애플리케이션 신뢰성을 향상시키면서 서버 수준에서 복잡한 업무 규칙을
지킬 수 있다. 또한 애플리케이션 개발 비용을 줄이며 성능을 향상 시킨다. 하나이상의 SQL 명령문과
PL/SQL 의 강력한 절차언어 확장을 가진 프로시저들은 Oracle 데이터 베이스내의 컴파일된 공유
포맷으로 저장된다 . 이프로시저들은 툴이나 다른 프로시저에서 명시적으로 호출하거나 행이 입력,
갱신,삭제될때 자동적으로 실행(트리거)할수 있습니다. 공통프로시저를 각 애플리케이션에서가 아니라
중심 위치에서 개발하고 유지보수함으로써 저장 프로시저와 트리거는 애플리케이션 신뢰성을 높이며
개발 비용은 감소시킨다.
- SQL 구현
UNION , INTERSECT , MINUS , 외부결합 , 트리구조 조회 ( CONNECT BY ) 를 포함한 확실 SQL
확장
- 저장 프로시저
. 공유 컴파일 형식으로 저장된 PL/SQL 프로시저
. PL/SQL 패키지 및 기능
. 툴 , 프리컴파일러 , 기타 프로시저로부터 호출
. 있는 그대로의 2 단계 commit 로 보호된 원격 프로시저 호출 ( RPC )
- 데이타베이스 트리거
. INSERT,UPDATE , DELETE 에서 자동적으로 실행되는 PL/SQL 프로시저
. 트리거가 BEFORE 또는 AFTER operation 실행
. 한 명령문이나 행마다 한번씩 트리거 실행
. ANSI/ISO SQL 3 사양을 모델로함
3) Role-based 보안
권한모임이라고 하는 역할들을 기초로 하는 첨단 보안 구조를 제공합니다. 이역할들은 테이블과 기타
데이터베이스 오브젝트에 대한 권한을 그룹핑하여 각 개인이나 사용자 그룹에게 허용함으로써 보안
관리의 부담과 비용을 대폭 감소시킵니다. 이러한 방법으로 보안 관리자들은 GRANT 명령문 만으로
사용자들에게 애플리케이션 전체를 실행시킬 수 있는 권한을 부여합니다. 단 하나의 강력한 DBA를
가질수 있으며 각 DBA 가 가진 특별한 권한을 정확히 통제할수 있다.
4) 국어 지원 ( NILS )
Orcle 은 실질적으로 모든 유럽과 아시아 언어에 광범위한 8 bit 및 16 bit 현지어 지원 (NILS)을
제공한다. 에러메시지,소트순서,데이터포맷 설정규칙등,현지어 에 맞추어 자동 조절되는 기능들은 무수히
많다. 이기종간의 client-server 와 분산형 데이터 베이스 구성까지 배치시킬수 있다.
5) 트랜스페런트한 통합
개방형 관계 기술의 이점은 새로운 시스템과 기종의 시스템을 transparent 하게 통합해야 얻을 수 있다.
Oracle 트랜스 패런트한 분산 데이터 베이스와 게이트웨어에 이러한 통합을 제공한다.
6) 트랜스 패런트한 분산 데이타베이스
Oracle 을 쓰는 개발자와 사용자는 실제로 분산되어있는 데이타베이스를 하나의 논리 데이터베이스를
하나의 논리 데이터베이스 처럼 취급한다. 사용자들은 마치 자신의 앞에 있는 하나의 시스템 인양 여러
분산망위의 테이터를 쉽게 액세스하고 갱신할수 있다.
I/O 분산
① 지속적으로 ACCESS 되는 DBMS FILE 과 TABLE 은 다른 DISK 에 저장
② DATA 량이 매우 많은 TABLE 은 서로 다른 DISK 에 저장
③ TABLE 과 INDEX 는 서로 다른 DISK 에 저장
④ DATA 저장시 CHAIN 발생 방지 ( 적절한 parameter 산출 )
⑤ 주기적인 재생성 ( Reorganization ) 작업
⑥ DISK 사용률 분석하여 적절한 재배치
7) 분산 조회 프로세싱
Oracle 을 사용하면 SQL 명령문 하나로 많은 데이터베이스로 부터 데이터를 조회할 수 있으며 그대로
복잡한 결합도 숭행할수 있다. 사용자들은 데이터가 어디에 저장되어 있는지 기억해둘 필요가 없으며
데이터가 한 노드에서 다른 노드로 이동되더라도 애플리케이션들은 다시 코딩할 필요가 없다. 지능적
조회 구성기능과 분사 시스템 전체적인 관점에서 비용이 낮아지도록 조회를 최적화하는 기능은 아무리
복잡한 분산 조회 일지라도 효율적으로 실행되게 된다.
SQL 의 활용
① SQL 은 한 문장이나 결코 3 GL 의 READ , WRITE 가 아님
② SQL 은 그자체가 하나의 APPLICATION
③ SQL 은 사용방법에 따라 크게 확장
④ SQL 은 집합개념을 바탕으로한 비절차형 언어
⑤ 대다수 개발자들이 적응에 어려움
⑥ 사용능력의 개인차가 심함
⑦ 동일한 실행결과를 추출하는 다양한 형태의 SQL 이 존재
- ACCESS PATH 에 따라 PERFORMANCE 차이가 매우 큼
- 실행결과보다 처리과정에 유의해서 사용
예제
- 첨자 처리 SQL
SELECT SUM ( DECODE ( substr (yymm,3,2) , '01' , ATM)), .... 1 월
SUM ( DECODE ( substr (yymm,3,2) ,'02', ATM)), .... 1 월
SUM ( DECODE ( substr (yymm,3,2) , '03' , ATM)), .... 1 월
SUM ( DECODE ( substr (yymm,3,2) , '04' , ATM)), .... 1 월
.........................................................................
SUM ( DECODE ( substr (yymm,3,2) , '12' , ATM)), .... 1 월
SUM ( ATM )
FROM PLANTAB
WHERE YYMM LIKE '94%'
GROUP BY DEPT
8) 분산 트랜잭션 관리
Oracle 의 탁월하고 트랜스 패런트한 2 단계 커미트 매커니즘은 분산 갱신 트랜잭션의 무결성을
보장해준다 . Oracle 에서는 잘못된 결과를 자동으로 해결하여 모든 site 를 함께 commit 시키거나 롤백
합니다. 갱신 내용은 모두 보호되며 원격으로 호출된 PL/SQL 프로시저 까지도 보호됩니다.
* 명령문 - SQL COMMIT
이명령문 하나로 commit 되므로 코딩할 필요가 없다.
9) 테이블 복제
흔히 사용되는 데이터를 많은 노드에 있는 그대로 복제할 수 있습니다. Oracle은 1 시간에 한번 , 하루에
한번 , 1 주일에한번 같이 사용자가 정의한 간격으로 master 테이블의 읽기만 허용되는 사본을 리프레시
합니다.
10) Global Naming
Oracle 이 글로벌 데이터베이스명을 지원하기 때문에 여러분의 분산환경에서 모든 데이터를 식별하여
찾아낼수 있습니다. Oracle 은 외부명 서비스와 작업하도록 설계 되었기 때문에 데이터 베이스내에서
데이터 위치 정보를 유지보수해야하는 부담을 덜수 있다.
2. 약결합 ( Loosely coupled ) SYSTEM
- 약결합 시스템을 위한 Oracle 병렬서버 기술은 Oracle RDBMS V6.2에 도입되었으며 약결합 시스템을
위한 RDBMS 기능과 성능에 비약적 발전을 가져왔다.
Oracle 병렬서버는 다수의 컴퓨터 또는 노드가 메모리를 공유하지 않아도 서로협동할수 있는
약결합시스템의 이점을 가진 최초의 개방형 DBMS 기술이다. 약결합 시스템의 각 노드는 다른 노드와는
독립적으로 운영되지만 데이타 파일또는 프린트큐와 같은 자원을 공유할 경우에는 예외이다. 약결합
시스템의 모든노드는 시스템에 연결된 모든 디스크를 엑세스할 수 있다.
1) 점진적 확장성
확장시 애프리케이션을 수정하거나 Oracle 데이타베이스를 변경할 필요없이 노드만 추가하면 된다.
2) 최상의 성능
Oracle 병렬서버 기술은 4,5 개의 노드로 된 전형적인 클러스터형 구성뿐만 아니라 수십 또는 수백개의
노드가 물리적 및 논리적 데이터베이스를 동시에 액세스할 수 있는 대형 별렬 구성도 지원한다.
3) 높은 가용성
한 노드가 사용할 수 없게 되더라도 나머지 노드에 있는 사용자는 계속 데이터 베이스 작업을 할수 있으며
, 고장난 노드의 사용자는 다른 노드로 이전하여 처리를 계속할 수 있다. 나머지 노드는 데이터베이스
관리자가 개입하지 않더라도 고장난 노드에 대해 자동으로 복구 작업을 수행한다.
4) 데이타베이스 통합
Oracle 병렬서버 기술은 단일 데이터베이스를 여러대의 컴퓨터가 처리할 수 있도록 완벽하게 지원한다.
각 노드는 데이터베이스 전체를 완전히 액세스할 수 있다.
5) 성능 극대화
Oracle 병렬서버 기술의 핵심은 고급 I/O 최소화 기능과 캐시기능의 효과적인 관리이다. 또한 병렬서버가
DBMS 에 추가되면서 빠른 커미트 , 그룹커미트, 쓰기지연 , 열단위 Locking , 충돌없는 조회 및 노드간
삽입 등의 모든 기능이 지원된다.
3. Client - Server computing
- SQL Net V2.0 은 Oracle 의 리모트 데이터 액세스 소프트웨어로서 사용자 애플리케이션과 Oracle
데이터베이스 사이 ( Client-Server ) 또는 복수의 데이터베이스 사이 ( Server - Server ) 에 사용된다.
1) Network Transparency
모든 클라이언트 애플리케이션은 리모트 데이터베이스를 마치 로컬에 있는 것처럼 다루기 때문에
클라이언트 애플리케이션은 네트워크에 영향을 받지 않는다.
단 하나 다른 점이라면 초기 데이터베이스 연결시 리모트 데이터베이스의 이름을 지정해야 한다는 점
뿐이다.
2) 복수 네트워크 데이터 액세스
복수개의 네트워크상에 나타난 모든 클라이언트와 서버는 클라이언트 - 서버 또는 서버 - 서버 관계로
데이터를 공유할 수 있다.
3) 다른 프로토콜을 지원하는 interchage
각 시스템의 해당 네트워크 프로토콜을 알 필요없이 모든 클라이언트 애플리케이션은 모든 데이터베이스
서버와 통신이가능하다.
4) 상세한 진단
사용자가 제어할 수 있는 추적기능으로 네트워크 관리자나 데이타베이스 관리자는 네트워크 문제의
원인이 되는 이벤트의 흐름을 더욱 자세히 이해할수있다. 정상가동시 성능을 극대화하기 위해 추적 기능
및 오류기록은 문제가 확인된 경우에만 사용할 수 있다.
5) 문자세트 및 데이타 유형변환
사용가능한 문자세트 및 사용자 - 정의 파라미터를 중심으로 하여 클라이언트, 서버 및 네트워크에서
가장 적절한 문자가 사용되돌고 조정한다.
6) 서버 어드레스 지정
SQL Net V2.0 에서 데이타베이스는 다음정보와 함께 정의되며 . 소속 네트워크. 소속 시스템. 고유한
데이타베이스 시스템 식별자 하나의 이름 또는 별명이 할당됩니다. 차후 그 리모트 데이터베이스를
지칭할 경우 단지 별명만 사용하면 된다.
4. 다른 데이터 소스와의 상호 운영성
1) 투명한 테이터 액세스
Oracle 의 개방형 게이트웨이 기술을 사용하면 클라이언트 애플리케이션은 수정없이 non-Oracle
데이타를 액세스할 수 있다.
2) 분산 트랜잭션
Oracle open gateway 기술은 Oracle 및 non-Oracle 데이타소스가 여러현장에 있는 여러 서버에서
실행되는 트랜잭션에 사용 되도록 해준다.
3) 개방형 시스템 구축
Oracle open gateway 기술은 기존 혹은 고유 시스템상에 한층을 더함으로써 새로운 개방형 시스템의
구축을 돕습니다. open gateway 기술은 표준 3 GL 인터페이스 , 4 세대 애플리케이션 개발 툴 , CASE
제품 , 그리고 다양한 기타 제3자 툴 들의 non-Oracle 데이타를 조작하기 위해 확실하고 신뢰성 있는
인터페이스 및 액세스 방법을 채택하고 있다.
4) 완전한 현장 독립성
Oracle open gateway 기술은 각 현장이 완전한 독립성을 유지하게 해준다. 각 데이터 소스는 자체적인
관리체계를 유지하여 보안 및 조정이 잘 이루어지도록 관리된다.
5. 강력한 검색기능
1) 애플리케이션에 대한 선택
SQL TextRetrieval 을 다양한 Oracle 툴과 사용하면 필요에 따라 문서 검색 애플리케이션을 작성하거나 ,
기존 애플리케이션의 문서 저장이나 검색 기능을 쉽게 강화시킬수 있다.
2) 문서 및 데이터 검색
확장된 SQL 에는 단어 및 어구찾기 , 앞 및 뒤 글자 절단 처리 , 와일드 카드, 근거리 단어찾기 , 그리고
유사어 찾기 등의 기능이 있다.
3) 융통성 있는 문서저장
문서는 크기에 재한이 없으며 Oracle 데이터베이스와 운영 시스템 파일에서 동일하게 관리되기 때문에
어느 형태로든 저장이 가능하다. 텍스트 목록 및 애플리케이션테이블 보안과 관리상 항상 Oracle 내에
저장됩니다.
4) 포맷된 문서
SQL TextRetrieval 은 wordPerfect Microsoft Word , 그리고 WPS-PlUS 등을 포함한 가장 널리
사용되고 있는 워드 프로세서를 지원한다. 이것은 포맷 자체가 문서에 자장 되었음을 의미한다. 제공되는
관리 기능을 통해 포맷된 문서들은 ASCII file 처럼 인덱스 되고 검색되며 표시될수 있다. 이와달리
포맷된 문서를 표시하고 갱신하기 위해서 애플리케이션 자체에서부터 위드프로세서를 작동시킬수 있다.
또한 문서화된 인터페이스를 사용하면 다른 워드 프로세서의 포맷관리 기능도 포함시킬수 있다.
5) 필요에 맞는 애플리케이션
이제 문서들은 다른 모든 유형의 데이타와 결합되어 세계 제1의 DBMS 에 근거한 통합 애플리케이션을
만들어 준다.
6) 주요기능
① Document characteristics ⑤ Retrieval and Maintenance
- 무제한 길이 - 조회작성
- 워드 포로세서 포맷 - 조회수정
- ASCII / EBCDIC - 저장/파일명 변경/조회복구
- 데이타베이스에 저장가능 - 조회전시
- 외부에 저장가능 - 실행중인 조회 명세
- 압축기능 - 조회 중단
② Application Programming Interfaces - 텍스트 작성
- SQL Forms 사용자 정의 가능 - 텍스트 전시
- 조회조작
- 조회실행 - 텍스트 수정
- 텍스트 표시 - 텍스트 출력
- 텍스트 조작 - 도움말
- 텍스트 출력 - Shell
- 알람표 제어 ⑥ Software Routines Supplied
- 시스템 제어 - 텍스트 데이터 사전 유지관리
③ Text Indexing Options - 유사어 사전 유지관리
- 정지방식 - 텍스트 로딩 / 언로딩
- 통과방식 - 텍스트 인덱스 작성
-대소문자구분지정
- 텍스트 압축 - 검색 및 유지관리 유틸리티
- 컬럼 인덱싱
- 보이지 않는 텍스트
- 인텍스 통계
④ Extensions to SQL
- 단순단어
- 앞 글자 절단
- 뒷 글자 절단
- 와일드 카드를 지닌 단순 문자열
- 근거리 단어 찾기
- 유사어 범위확대
- 선호되는 용어
- 관련용어
- 지정된 조회 연산식 ( SQE )
- 완전 boolean 논리
6. 이식성 및 상호 운영성
Oracle Mail 은 VAX , PC , Macintosh , 그리고 UNIX 기계등 다양한 플랫폼의 사용자들이 있는
이기종에 내트워크상의 메시지 교환을 용이하게 해준다.
Oracle Mail 은 여러 서버들은 단일 시스템으로 다루기 위해 분산 데이터베이스 기술을 사용하기 때문에
사용자들은 수신자 서버의 위치 , 운영 시스템 , 그리고 네트워크 주소를 모르더라도 정보를 교환할 수
있다. Oracle Mail 은 또한 일반 전자 우편 시스템과도 메시지를 교환할 수 있다.
1) 강력한 기능성
워드 프로세서나 워크쉬트 파일 등 어떤 유형의 파일이든 무제한으로 첨부시킬수 있다. 또한 Oracle Mail
은 첨부된 내용의 열람을 위해 관련 애플리케이션을 자동으로 불러줍니다.
2) 애플리케이션 통합
모든 양식 , 보고서 , 일괄처리 프로그램 , 그리고 기타 애플리케이션은 기업내 어디로든지 메시지를
보내고 받고 관리할 수 있다. 한 예로 재고 관리 애플리케이션은 어떤 품목이 재주문 수준이하로 떨어질
때 구매담당자에게 자동적으로 그 사실을 통보하게 만들어준다.
3) 간편한 관리
Oracle Mail 은 또한 단일 화면에서 원거리에 있는 서버들을 관리할 수 있게 해주는 사용하기 쉬운 관리
툴도 제공해준다. 한서버에 사용자를 추가할때 Oracle Mail 은 자동적으로 기업내의 다른 서버에 이런
신규 사용자 정보를 전달해 준다.
7 다중 처리 ( Array Processing )
1) 한번 DBMS 호출에 여러건의 Data 를 처리하는 방법
2) DBMS 호출 ( CALL ) 은 시스템 OVERHEAD 의 주범
3) ARRAY PROCESSING 은 시스템 OVERHEAD 를 감소
4) TOOL , UTILITY 에 따라 차이
① SQL *FORMS , SQL * PLUS 등은 TOOL 에서 제공
② PRO *SQL , SQL *LOADER 등은 APPLICATION 에서 지정
5) ARRAY 단위는 사용자가 지정 가능 , 지나치면 OVERHEAD 발생
6) APPLICATION 작성 방법은 3 GL 과 많은 차이
개발자들의 인식전환이 필요함
8. 부분 범위 처리 ( Partial Range Scan )
1) 조건을 만족하는 전체 집합이 아닌 일부분만 ACCESS
2) DATA 량이 많아도 PERFORMANCE 에 지장이 없고 , 오히려 향상
3) INDEX 나 CLUSTER 를 적절히 활용하여 부분범위 처리 방식으로 유도
index 활용예제
SELECT * SELECT / * + INDEX ( A ITEM_IDX ) * / *
FROM PRODUCT FORM PRODUCT A
WHERE YMD LIKE '9408%' WHERE YMD LIKE '9408%'
AND ITEM LIKE 'AB%' AND ITEM LIKE 'AB%'
ORDER BY ITEM ;
index 만 처리 예제
SELECT MAX(SEQ)+1 SELECT / * + INDEX_DESC(A IDX1) */
FROM PRODUCT SEQ + 1
WHERE DEPT = '123' ; WHERE DEPT = '123'
AND RPWNUM = 1 ;
SELECT empno , ename , job
FROM emp
WHERE empno > 7800 ;
4) QUERY 를 이원화 하여 일부분씩 SCAN 하도록 유도
5) TABLE 은 ACCESS 하지 않고 INDEX 만 사용하도록 유도
6) ROWNUM 을 활용
7) INDEX 의 활용 ( 적용기준 )
① 6 블럭 이상의 테이블에 적용
② 컬럼의 분포가 10 - 15 % 이내인 경우 적용
③ 분포도가 범위이내더라도 절대량이 많은 경우에는 단일 테이블 클러스터링을 검토할것.
④ 분포도가 범위 이상이더라도 부분범위처리를 목적으로 하는 경우에는 적용
⑤ 인덱스만을 사용하여 요구를 해결하고자 하는 경우는 분포도가 나쁘더라도 적용할 수 있음 (
손익분기점 )
8) INDEX 활용의 선정기준
① 분포도가 좋은 컬럼은 단독적으로 새성하영 활용도 향상
② 자주 조합되어 사용되는 경우는 결합 인덱스 생성
③ 각종 엑세스 경우의 수를 만족할 수 있도록 인덱스간의 역할 분담
④ 가능한 수정이 빈번하지 않는 컬럼
⑤ 기본키 및 외부키 ( 조인의 연결고리가 되는 컬럼 )
⑥ 결합 인덱스의 컬럼순서 선정에 주의
⑦ 반복수행 ( LOOP 내 ) 되는 조건은 가장 빠른 수행속도를 내게 할 것.
⑧ 실제 조사된 엑세스 종류를 토대로 선정 및 검증
9) INDEX 활용 고려사항
① 새로 추가된 인덱스는 기존 엑세스 경로에 영향을 미칠 수 있음 .
② 지나치게 많은 인덱스는 오버헤드를 발생
③ 넓은 범위를 인덱스를 처리시 많은 오버헤드 발생
④ 옵티마이져를 위한 통계 DATA 를 주기적으로 갱신
⑤ 인덱스의 개수는 테이블의 사용형태에 따라 적절히 생성
⑥ 분포도가 양호한 컬럼도 처리범위에 따라 분포도가 나빠질수 있음 .
⑦ 인덱스 사용원칙을 준수해야 인덱스가 사용되어짐
⑧ 조인(JOIN)시에 인덱스가 사용여부에 주의
10) CLUSTER 의 활용
① 지정된 컬럼값의 순서대로 로우를 저장시키는 방법
② 하나 혹은 그이상의 테이블을 같은 클러스터내 저장 가능
③ 엑세스기법이 아니라 엑세스 효율향상을 위한 물리적 저장 기법
④ 검색의 효율을 높여주나 입력 , 수정 , 삭제시는 부하증가
⑤ 분포도가 넓을 수록 오히려 유리 ( 인덱스의 단점을 해결 5 - 7 배 )
⑥ 분포도가 넓은 테이블의 클러스터링은 오히려 저장공간 절약
11) CLUSTER 의 활용 선정기준
① 6 블럭이상의 테이블
② 다량의 범위를 자주 엑세스 해야 하는 경우
③ 인덱스를 사용한 처리가 부담이 되는 넓은 분포도
④ 여러개의 테이블이 빈번히 조인을 일으킬 때
⑤ 반복컬럼이 정규화 작업에 의해 어쩔수 없이 분할된 경우
⑥ UNION , DISTINCT , ORDER BY , GROUP BY 가 빈번한 컬럼이면 고려 해 볼것
⑦ 수정이 자주 발생하지 않는 컬럼
⑧ 처리범위가 넓어 문제가 발생되는 경우는 단일 테이블 클러스터링
⑨ 조인이 많아 문제가 발생되는 경우는 다중 테이블 클러스터링
12) CLUSTER 의 활용에 대한 고려사항
① 데이타 처리 ( 입력 , 수정 , 삭제 ) 에 오버헤드 발생 주의
② 인덱스로도 충분한 범위는 클러스터링 효과가 없음
③ 클러스터키는 수정이 빈번하지 않을 것
④ 각종 엑세스 형태에 대해 인데스와 적절한 역할 분담
⑤ 클러스터링은 기존의 인덱스의 수를 감소시킴 ( 인덱스 재구성 )
⑥ 클러스터 SIZE parameter 가 중요
⑦ 클러스터 키별 로우수의 편차가 심하지 않을 것.
클러스터 키를 첫번째로 하는 인덱스는 생성하지 말것.
⑧ 클러스터에 데이타 입력시 로우가 적은 테이블부터 실시할것.
⑨ 클러스터링된 테이블 조인시 로우수의 역순으로 FROM 절에 기술할것.
9. 명령어 설명
1) EXISTS 문의 활용
존재여부만 판정할때 조건에 맞는 전체범위를 ACCESS 하지 않고 만족되는 첫번째 ROW 를 만나면
종료됨.
예제
① SELECT DNAME , DEPTNO
FROM DEPT
WHERE DEPTNO IN ( SELECT DEPTNO FROM EMP )
② SELECT DNAME , DEPTNO
FROM DEPT
WHERE DEPTNO IN ( SELECT DEPTNO
FROM EMP
WHERE EMP.DEPTNO = DEPT.DEPTNO )
③ SELECT DNAME , DEPTNO
FROM DEPT
WHERE ( SELECT DEPTNO FROM EMP
WHERE EMP.DEPTNO = DEPT.DEPTNO )
* 수행속도는 ③ , ② , ① 의 순
2) UPDATE 문의 확장
원하는 범위의 DATA 를 차례로 ACCESS 하여 여러 TABLE 을 참조 , 가공후 UPDATE 하는 복잡한
OPERATION 도 하나의 UPDATE 문으로 가능
예제
① update TABLE3 set ( AQTY3 , BQTY 3 ) =
( select AQTY3 + 100 , ( QTY2 * BQTY3/QTY4 ) * 100
from TABLE2 , TABLE4
where ORD2 =: ORDER and ITEM2 = ITEM3 and
ITEM4 = ITEM2 and LOC4 = LOC3 )
where ITEM3 in ( select ITEM2 from TABLE2
where ORD2 =: ORD )
3) GROUP BY 의 활용
SELECT 시간 * 인원 " 공수 "
SUM ( 비용 ) " 금액 "
FROM 전표테이블
WHERE 발생일 LIKE '9408%'
GROUP BY 시간 * 인원
결 론
-------------
대용량 데이타베이스 구축에 적합한 ORACLE 은 다음과 같은 기능이 있다.
1) PARALLEL OPERATION
2) 공유 메모리
3) 멀티 쓰레드 , 멀티 서버
4) 경합없는 조회
5) 멀티 블럭 처리
6) ROW - LEVEL LOCKING
7) PL/SQL , 저장 프로시져
3] Oracle 의 Cooperative Developement Environment
1. Browser
- Oracle Browser 는 비전문가도 네트워크로 연결된 분산 데이터 베이스에 저장된 정보를 쉽게 찾고
,조회하고, 표시할 수 있게 해주는 그래픽 데이터 액세스 클라이언트이다. Oracle 의 Cooperative
Developement Enviroment 의 일부인 Brower는 결정권자에게 중요한 정보 시스템에 대한 선별적
액세스를 가능케 한다.
1) availability
사용하는 컴퓨터에 Oracle Brower 를 설치한 후 몇분이 지나면 예전에는 애플리케이션 프로그래머만이
액세스 할 수 있었던 데이터베이스 정보를 탐색 , 조회 및 포맷 할 수 있다. Brower 를 사용하면 생산성을
높일수 있다. GUI 를 다른 애플리케이션과 똑같이 사용할 수 있기 때문이다.
2) 프로그래밍없는 SQL 데이타에 대한 액세스
Brower 를 사용하는 경우 프로그래밍을 하지 않고 데이터를 엑세스할 수 있다.
이해하기 쉬운 확장 메뉴 및 대화 상자를 사용하여 그래픽 조화를 조작하기만 하면된다. 작업용지 (
워크쉬트 ) 인터페이스는 데이터를 간단하게 표시하고 포맷할 수 있게 한다. 폰트를 선택하고 , 데이터를
포맷하고 , 표제 및 밑표제를 지정하고 총계를 계산하고 , 분기가 있는 간단한 보고서를 작성할 수 있다.
스크래치로부터 자신의 조회내용을 작성하고 다른 사용자가 작성하여 저장해둔 조회를 공유할 수 있다.
3) Powerful
Brower 는 SQL 의 복잡성을 피하여 자연스러운 연결 , 외부연결 , 자체연결 , 그룹별 및 부속조회를 완전히 이용할수 있게 하는 SQL 조회의 기능을 제공한다. 다른 구좌 또는 데이터베이스로 부터 조회하는 것도 마찬가지로 쉽다. 실제 위치에 관계없이 동일한 방법으로 모든 데이타 소스를 처리하기 때문이다 .
4) 다른 애플리케이션과의 통합
클립보드를 사용하여 스프레드쉬트 또는 도표 프로그램과 같은 다른 적용 업무에 Browser 조회 결과를
첨부할수도 있다. Browser 는 Dynamic Data Exchange (DDE ) 가 있는 MS-Windows 와 같이
프로세스간 통신을 지원하는 플랫폼하의 다른 애플리케이션의 조회 내용을 동적으로 연결시킬 수 있다.
Browser 를 사용하는 경우 데이터에 기준하여 계산을 수행할 수 있습니다. SUM , AVG 및 COUNT 와
같은 기능을 사용하여 요약열을 정의할 수도 있다.
5) Browser 의 주요기능
① User Interface
- 그래픽 사용자 인터페이스 사용
- 풀다운 메뉴 , 대화상자
② Data Acess
- 원하는 데이터를 검색 , 결합하기 위한 저장 조회 특정화
- 다른 데이터배이스에 있는 테이블 뷰 , 조회 , 유사어정리
③ Query Building
- 관계행이 있는 경우 연관된 데이터 소스 자동결합
- 조건을 무제한 깊이로 내포
- 논리적 조작 지시를 이용한 결합조건
④ Formating and Reporting
- 디스플레이된 열의 크기 및 순서 조정
- 각 열에 대한 폰트명세
- page 표제 및 밑표제 명세
- 부분 보고서 출력
⑤ Client-server Architecture
2. Oracle Book
1) Powerful 한 온라인 문서
Oracle Book을 사용하면 , 정교한 온라인 문서를 작성하고 열람할 수 있다. 문서에는 텍스트 , 고속자기
텍스트 링크 , 이미지 , 디지탈 음향 및 디지탈 비디오 클립이 포함될수 있다. Oracle Book은
애플리케이션 문서 , 지침서 , 카탈로그 및 기타 문서를 온라인으로 처리하는데 있어서 이상적이다.
2) 정보에 대한 향상된 액세스 기능
Oracle Book은 용지 문서보다 정보를 더 많이 사용할수 있고 사용자체도 더 용이하다. 이미지 , 음향 및
비디오 등이 삽입되어 문서형태가 복잡하고 다양해지고 있기 때문에 독자들은 특정의 정보를 찾으려면
툴을 사용해야 한다. OracleBook 은 단어 또는 문구 탐색 , 고속 자기 텍스트 링크 및 다중 매체 데이터
유형을 지원하므로 , 독자가 복합형태의 문서를 관리하고 액세스하기가 쉽다.
3) 주요기능
① Image Display Options
② Document Storage Methods
- Oracle Cooperative Server
- CD-ROM 을 포함한 운영시스템 파일
③ Printing
- 사용자가 지정하는 선택사항
- 노트 , 목차 및 목록을 포함한 전체 문서
④ User Interface Portability
- MS-Windows , Macintosh , Motif , OPENLOOK , 문자모드
3. Oracle Data Query
최종사용자들이 SQL 에 대한 지식이 없어도 질의를 정의하고 실행할 수 있도록 설계되었다.
1) 자체 보고서 작성
Oracle Data Query 를 사용하면 디폴트는 헤딩 , 형식 , 그리고 변수들을 갖는 자체적인 환경을 특정한
요건에 맞춰 조정할 수 있다. 그런후 전문적인 보고서를 작성하기 위해 테입블 , 마스터 - 디테일 , 요약 ,
그리고 복수 보고서등 다양한 포맷을 사용하여 조회결과를 정리할 수 있다. 또한 조회를 실행하지 않고
도 언제든지 보고서 외형을 미리 볼수 있기 때문에 시간과 자원을 절약할 수 있다.
2) 시스템 자원 보호
중요한 테이터를 보호하기 위해 Oracle Data Query 는 읽기만 가능한 액세스 형태도 제공한다. 기본 보안
기능 이외에도 관리자는 사용자가 액세스 할수 있는 테이블과 뷰를 지정할 수 있다. 조회시간을
제한시킴으로써 조회 폭주를 방지하여 대형시스템의 다른 사용자들을 보호한다. 시간이 오래 걸리는 조회
작업은 일괄처리 환경에서 밤새 실행되도록 할수도 있다.
3) 개발지연의 단축
Oracle Data Query 는 개발자들을 끊임없는 개별 요청에서 해방시켜 , 데이터와 시스템자원의 관리와
애플리케이션 개발에 자기 시간과 노력을 더 많이 기울일수 있도록 한다.
4. Oracle precompilers
Ada , C , COBOL , FORTRAN , Pascal , 그리고 PL/1 등의 언어로 쓰여진 프로그램에 SQL을
삽입함으로써 Oracle precompilers 는 절차언어의 성능과 SQL 의 융통성 및 사용상 편리함응 동시에
제공해 준다. Oracle precompilers를 사용하면 기존의 언어에 대해 실행한 교육 및 애플리케이션에 대한
투자가치를 보존하는 한편 Oracle Cooperative Server Database 와 기타 SQL 기반의 Database
시스템과 인터페이스되는 강력한 프로그램을 작성할 수 있다.
5. Oracle Call interface
Oracle Call interface 는 Oracle 의 협동적 서버 Database 내에서 Ada , C , COBOL , 그리고 FORTRAN
같은 제 3세대 언어들이 데이터와 스키마를 조작할수 있게 해주는 애플리케이션 프로그래밍 인터페이스(
API ) 이다. Oracle Call interface는 애플리케이션 개발에 있어서 각 언어 고유의 강력한 편집 및 디버깅
기능을 사용하는 동시에 SQL 의 명령실행을 정확하게 통제할 수 있게 한다.
6. CASE Designer
1). 고급 그래픽 인터페이스
CASE Designer 의 마우스 작동식 다이어그램 작성 기능과 사용하기 쉬운 인터페이스는 조직의 시스템을
위한 다양한 모델을 신속하게 개발하도록 도와준다.
시스템분석가에서부터 설계자 , 프로그래머까지를 포함하는 개발팀응 CASE Designer 를 사용하여
사용자 요건과 시스템 명세를 정확하게 나타내는 그래픽 모델을 만들수 있다.
2) 즉각적인 CASE Dictionary 정보 갱신
CASE Designer 로 개발되는 모델들은 Oracle 의 이식성이 있는 복수 사용자 저장소인 CASE Dictionary
의 내용과 일관성이 있다. CASE Designer 는 그래픽을 그리는 중 근거리나 클라이언트/서버구조내의
원격 노드에서 병행성의 상실없이 CASE Dictionary 의 내용을 갱신한다. 그리하영 개발 담당자들은
지루한 업로드 , 다운로드 및 통합 절차를 거칠 필요없이 간단히 최신의 정보에 대해 액세스 하게 된다.
7. API ( Application Programming Interface )
현재 클라이언트 / 서버 애플리케이션 개발 단계에는 결정적인 차이가 없다. 이는 API 차이이다.
1) 데스크탑에 Data 연결
Oracle Glue는 서버에 있는 모든 데이터에 대해 원하는 도구를 사용할 수 있는 일관성있는 높은 수준의
방법을 제공하는 융통성있고 이동이 가능한 통합된 애플리케이션 프로그래밍 인터페이스 ( API ) 이다.
2) 플랫폼 전반에 걸친 일관성을 위한 이식성
Oracle Glue 는 처음에는 Microsoft Windows에 유용하여 Microsoft Windows Apple Macintosh ,
PenPoint 및 Motif 그리고 UNIX 에 있는 OPENLOOK 를 포함하여 고아범위한 플랫폼에 일관성있고
간단하게 작업할 수 있도록 설계되었다. 다른 환경에서도 명령을 재작성하지 않고 Oracle Glue 명령을
사용할 수 있다.
예를 들경우 새로운 우편메시지를 검색하려는 경우
현제 환경에 관계없이 " get new mail " 명령을 사용할수 있다.
3) 툴과의 통합
Oracle Glue 는 사용자가 선택한 프론트 엔드 환경에 결점없이 연결된다. 해당 환경의 호출 및 표현
기법을 사용하는 중 , Oracle Glue 는 프론트 및 백 엔드 사이의 데이터를 명료하게 변환한다. 예를 들면
Excel 에서 작업하고 있는 경우 Oracle Gule 명령은 셀 범위에 해당하는 매크로이다 .
4) 주요기능
① Electronic Mail
- VIM , MAPI 및 MHS 식 우편 시스템
② Palmtop Computers
- Sharp Wizard 9600 시리즈
- Apple Computer 사의 Personal
Digital Assistant ( PDA )
③ Microsoft Visual Basic
- 기능 호출 사용
- 삽입 변수 및 제어 배열 참조
④ Flat-File Database
- DBASE 및 Paradox 파일 엑세스
- CREATE TABLE , DROP TABLE ,
SELECT , INSERT , UPDATE, DELETE 등 표준 SQL 문 사용
- 결합 , WHERE 절 및 하부 조회를 내포한 조회 작성