OTN 홈페이지에 [고성능 Oracle JDBC 프로그래밍]이라는 문서가 올라왔네요.
원문보러가기 : 고성능 Oracle JDBC 프로그래밍

고성능 Oracle JDBC 프로그래밍

연결 및 명령문 풀링 기능을 이용하여 Oracle 기반의 JDBC 프로그램 성능을 개선하는 방법을 학습합니다.

By Yuli Vasiliev

2009년 4월 게시

연결 풀링 및 명령문 풀링과 같은 풀링 기능을 사용하면 데이터베이스 집약적인 애플리케이션의 성능을 크게 개선할 수 있습니다. 풀링 기능을 사용하지 않을 경우, 처음부터 객체를 새로 만들어야 하므로 시간과 리소스가 많이 소모되지만 풀링을 사용하면 객체를 다시 사용할 수 있기 때문입니다.

애플리케이션에서 사용한 물리적 데이터베이스 연결을 나타내는 데이터베이스 연결 객체를 다시 사용할 경우, 성능을 크게 개선시킬 수 있습니다. 단, 해당 애플리케이션은 동일한 매개 변수를 사용하여 연결을 수시로 재설정하면서 데이터베이스와 끊임없이 상호 작용해야 합니다. 반면, 애플리케이션이 기본 데이터베이스에 연결하는 경우가 거의 없다면 연결 풀을 사용하는 이점이 별로 없을 것입니다. 그러나 실제로는 허용되는 최대/최소 연결 수에 대한 한도 설정 같은 풀 설정이 특정 애플리케이션에 맞게 최적화되어 있다면 많은 데이터베이스 집약적인 애플리케이션이 연결 풀을 사용함으로써 이점을 누릴 수 있습니다.

연결 풀처럼 명령문 풀도 애플리케이션 성능을 개선할 수 있는 방법을 제공합니다. 프로그램을 실행하는 중에 여러 번 실행되는 명령문을 풀링함으로써 추가적인 성능 개선을 얻을 수 있습니다. 그러나 명령문 풀링이 성능 문제를 해결할 수 있는 특효약은 아니라는 점을 기억하십시오. 만약 프로그램에서 명령문이 실행되는 횟수를 구분하지 않고 모든 단일 명령문을 캐시 한다면 성능 개선을 이루지 못할 수 있습니다. 프로그램 실행 중에 한 번만 실행되는 명령문을 캐시할 경우, 해당 명령문을 캐시에 넣고 보관하는 작업과 관련된 오버헤드로 인해 실제로는 성능이 저하될 수 있습니다.

이 문서에서는 Oracle JDBC 씬 드라이버를 통해 Oracle Database와 상호 작용하는 데이터 집약적인 JDBC(Java DataBase Connectivity) 프로그램의 성능을 개선하기 위해 연결 및 명령문의 풀링을 이용하는 방법을 설명합니다. 특히 JDBC 연결을 캐시하기 위해 모든 기능을 갖춘 연결 풀 구현을 제공하는 JDBC용 Oracle Universal Connection Pool(UCP)을 살펴보겠습니다. 마지막으로 Oracle의 JDBC 드라이버뿐 아니라 명령문 인터페이스에 추가되고 JDK(Java Development Kit) 1.6 이상 버전을 지원하는 Oracle JDBC 드라이버에서 사용할 수 있는 새로운 JDBC 4.0 메소드에 관련된 기능을 사용함으로써 명령문 풀링에서 이점을 얻을 수 있는 방법을 설명하겠습니다.


 요즘 DB가 거의 매일 문제를 일으켜서 성능관련 문서들을 많이 찾아보며 분석중에 있습니다. 그러다보니 wait event에 많은 시간을 투자하고 있죠.

OTN에는 많은 Oracle 관련 문서들이 있는걸 아시죠. 그중에서 이번에 찾은 [Oracle Wait Event 모니터링]이라는 문서가 눈에 띄더군요.

원문보러가기~!
(주)웨어벨리의 책임 컨설턴트인 안진철님이 2003년경에 작성한 문서로 순서는 아래와 같습니다.

 이 글을 읽으면서 맘에 와닿았던 글귀가 있습니다.

흔히 DBA를 3D업종이라고 부르는 이유 가운데 하나는 몸은 고달픈데 반해 그 성과가 별로 티가 나지 않는다는 사실 때문일 것이다. 실제로, DBA가 수행해야 하는 일상적인 관리 업무들은 몸은 다소 피곤하게 만들지 몰라도 어느 정도 경험이 쌓이면 그리 부담을 주는 일은 아니다. 우리가 한단계 업그레이드된 전문가로서 인정 받는 DBA가 되기 위해서는 장애상황 혹은 유사 장애 상황에서 DB 모니터링 작업을 수행하고 분석할 수 있어야 한다. 시스템이 갑자기 느려지고 업무가 마비되는 상황에 맞닥뜨렸을 때 문제의 원인이 무엇인지를 집어낼 수 있는 능력이 있어야 하며 최소한 오라클의 문제인지 아닌지를 판단할 수는 있어야 몸으로 야간작업이나 때우는 DBA가 아니라 조직에 없어서는 안될 전문가로서의 나의 존재가치를 인정 받을 수 있을 것이다.


다음은 시중에 나와있는 OWI(Oracle Wait Interface) 관련 책들입니다.
오라클 진단 & 튜닝
카테고리 컴퓨터/IT
지은이 RICHMOND SHEE (엑셈, 2005년)
상세보기

OWI Advanced Oracle Wait Interface in 10g
카테고리 컴퓨터/IT
지은이 조동욱 (엑셈, 2006년)
상세보기

PRACTICAL OWL IN ORACLE 10G
카테고리 컴퓨터/IT
지은이 엑셈 (엑셈, 2007년)
상세보기

ADVANCED OWI INTERNALS AND PERFORMANCE IN...
카테고리 컴퓨터/IT
지은이 조동욱 (엑셈, 2007년)
상세보기


 DB가 log file sync 메세지를 앞세우고 버벅거리는 현상이 발생했네요... 그것도 거의 매일 퇴근시간 쯤에요.
이곳 저곳 뒤지다가 발견한 문서입니다.
엑셈에서 운영하는 Oracle관련 위키같네요.


원문보러가기~!



Eclipse에서 Oracle 개발할때 사용하는 플러그인이네요.

영문으로 된 아래의 소개글을 대~충 읽어보니 웹로직에서 개발할때 사용하는 이클립스 플러그인이라고 하네요.
아직 써보지는 않아서 어떨지는 모르겠네요. 좋겠죠???

This certified set of Eclipse plug-ins is designed to help develop, deploy and debug applications for Oracle WebLogic Server. It installs as a plug-in to your existing Eclipse, or will install Eclipse for you, and enhances Eclipse's capabilities for Java, Java EE, Spring, ORM and WebServices.

Plugin to Eclipse today for free.


플러그인 홈페이지 보기

다운로드 하기
 OTN에 올라온 Oracle RAC 구축 관련 문서입니다. Oracle VM과 Oracle Enterprise Linux 환경에 구축하는 내용을 담고 있으며, 개인이나 회사에서 개발용, 테스트 혹은 교육용으로만 사용할 것을 권장하고 있네요.
세개의 웹 페이지로 나뉘어져있으며, 각 페이지에는 인쇄용 화면을 볼 수 있는 링크가 있습니다.

소개

일반적인 Oracle RAC(Real Application Cluster) 구현은 하나 또는 여러 노드의 장애를 신속하게 복구하는 아키텍처입니다. 그러나 일반적인 시나리오에서 Oracle RAC의 모든 노드는 한 곳의 데이터 센터에 있으므로 치명적인 데이터 센터 장애로 이어지기 쉽습니다. 이 시나리오에서 재난 복구를 위한 솔루션은 로컬 데이터 센터와 일부 백업 데이터 센터 간에 Oracle DataGuard를 설치하여 대기 시스템(일반적으로 하나의 Oracle Database 또는 다른 RAC 클러스터)을 실행하는 것입니다.

DataGuard는 이 역할을 물론 잘 수행하지만 전체 대기 시스템과 어레이를 패시브 노드로 전환하므로 트랜잭션에 전산 능력을 사용할 수 없게 되며 이로 인해 솔루션 비용이 매우 높아집니다. (대기 Oracle DataGuard 시스템은 읽기 전용 쿼리를 수행하기 위해 열 수 있고 Active DataGuard in Oracle Database 11g를 사용할 경우 항상 읽기 전용 모드로 실행할 수도 있지만, 이 구성의 경우 애플리케이션이 일부 노드의 읽기 전용 특성을 알고 있어야 합니다.)

다행히도 부분적인 재난 복구를 위한 다른 솔루션이 있으며 그것이 바로 확장 RAC입니다. 이 아키텍처에서 일부 RAC 노드는 "알파 사이트"에서 작동하며 나머지 노드는 "베타 사이트"에서 작동합니다. 두 사이트의 노드는 액티브 모드이므로 모든 전산 리소스를 충분히 사용합니다. 그림 1에서 볼 수 있는 것처럼 각 사이트에는 전용 SAN(Storage Area Network)이 있고, 양쪽 데이터 센터(dcA와 dcB)에 있는 시스템은 동일한 RAC의 구성원이므로 데이터를 신속하게 상호 교환할 수 있고 다른 사이트의 스토리지에 액세스할 수 있습니다. 즉, dcA에 있는 RAC1 노드는 dcB에 있는 SAN 어레이에 데이터를 쓰고 dcB에 있는 RAC2 노드와도 통신합니다.



원문 : Oracle VM 및 Oracle Enterprise Linux에 Oracle 확장 RAC 클러스터 직접 구축하기



 예전에는 MS-SQL을 사용하던 중소 규모의 업체에서 회사 규모 확장에 따라서 Oracle을 구매하여 Migration을 하는 경우가 많았었다.  예전에 몸 담았었던 H 모사에서도 그랬고 대용량 DB를 운영하는 사이트에서는 Oracle을 많이 사용하는 추세였죠.
 최근들어 Windows 계열 서버의 사용이 많아지고, MS-SQL Server의 기능이 향상됨에 따라서 MS-SQL Server의 사용이 많아지고 있습니다. 그래서 역으로 Oracle에서 MS-SQL로 이전하는 경우도 생기고 있습니다. 물론 일반적인 경우는 아니라고 생각합니다. 아직은... 성능이든 엔지니어든 여러모로 부족한게 사실이니까요. 설치 및 관리의 편리함은 MS-SQL에 대한 접근성을 낮춰주었고 수많은 MS-SQL 사이트들이 존재하며 그 영역을 넓혀가고 있는데요. 기존 Oracle에서 MS-SQL로 이전하는 사용자를 위한 이전 툴이 MS에서 나왔습니다. 당연한 얘기겠죠. 후발 주자이니 이런 툴에 대한 지원을 잘해야겠죠.

이름하여 SQL Server Migration Assistant(SSMA for Oracle)!!

홈페이지에 있는 정보를 보니 세번째 버전인것 같은데, 그동안 까마득히 모르고 있었네요. 사실 이런식으로 Migration 작업을 한 적이 없었는데, 이번에 Migration 작업을 하시는 분이 있어서 대신 자료를 찾다가 발견하게 되었습니다. 이런 툴들이 존재하는걸 보니 이제는 DB 시장도 치열한 경쟁 구도로 바뀌어가는것 같습니다.
 기존에 AIX 서버에서 Oracle DB를 운영중이었는데, 여기에 개발용으로 Instance를 하나 추가하는 작업을했습니다. 여러가지 작업이 필요하지만 CREATE DATABASE 명령을 실행하기 전에 해야하는 작업 내용을 정리해보려합니다. 사전 작업 때문에 사실 고생을 좀 했거든요.

1. Parameter file 생성
 $ORACLE_HOME/dbs 디렉토리에 보면 기존 DB에서 사용하는 Parameter file이 있다. 이 파일을 수정해서 init[SID].ora라는 이름으로 파일을 생성한다. 이 작업은 oracle 계정(UNIX 계정)에서 수행해야한다.
 파일 내용중에서 SID, DBNAME, Control file의 위치 및 이름 그리고 디렉토리 이름등을 수정해야한다.
예를 들어 새로 만들 개발DB의 SID를 NEWDEV라고 하면.
수정해줘야 할 부분은 아래와 같다. 음... 그외에도 손볼곳을 손본뒤에 저장한다.
###########################################
# Database Identification
###########################################
db_domain=""
db_name=NEWDEV

###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/oracle/dbms/admin/NEWDEV/bdump
core_dump_dest=/oracle/dbms/admin/NEWDEV/cdump
timed_statistics=TRUE
user_dump_dest=/oracle/dbms/admin/NEWDEV/udump

###########################################
# File Configuration
###########################################
control_files=("/db1/NEWDEV/control01.ctl","/db2/NEWDEV/control02.ctl")

###########################################
# Instance Identification
###########################################
instance_name=NEWDEV

###########################################
# MTS
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=NEWDEVXDB)"

###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_retention=3600
undo_tablespace=UNDOTBS1   <= 이 부분은 CREATE DATABASE 명령을 실행할때와 이름을 맞춰줘야한다.


2. Password file을 생성한다.
 Parameter file과 마찬가지로 $ORACLE_HOME/dbs 디렉토리에서 아래 명령을 실행한다.
# orapwd file=orapwNEWDEV password=비밀번호

그리고 중요한거... 기존의 oracle이라는 UNIX 계정이 아닌 다른 계정에서 oracle이 실행되므로 password file은 oracle 계정(UNIX 계정)에서 생성하고, chmod 명령을 이용하여 권한을 777로 만들어 줘야한다. 근데 instance를 추가하고 난뒤에 DB를 생성하면 이게 원상태로 돌아가버리던데... 이건 뭐가 문제인지...

 요즘엔 Oracle 11g가 출시되고 RAC, GRID 등의 다양한 기능을 제공하지만 아직까지 Oracle 9i를 고집하는 시스템도 있다. 특히나 지금 근무중인 곳은 대형 시스템이다보니 한꺼번에 10g나 11g로 옮겨가는 것을 꺼려하고 있다. 이곳만해도 "만약 작업 소요 시간이 지금보다 느리게 나오면 어떻할거냐"는 문제와 함께 "여러대의 DB를 동시에 옮기는데 따른 서비스 중지 시간" 등의 문제로 인해서 쉽게 결정을 못하는 상태이다. 이런저런 문제가 있긴하지만 예산과 인력만 투입된다면 처리될 문제이다. 적어도 내가 보기엔...

물론 DataStage나 기타 관제 소프트웨어, 백업 구성 등등 신경쓸 문제가 너무 많다는것도 맘에 걸리긴 한다. 이런 문제를 한방에 해결하려면 도데체 몇군데 업체가 회의에 참가해야 할런지... 막막하기만 하다. 그래서 일단 Oracle 9i와 9i RAC 설치 연습을 하려고한다.

 운영체제로는 Linux를 선택했다. 앞으로 Linux를 사용하는 곳이 점점 늘어날거라 생각하고 있고(지난번에 소개한 HP Oracle ExaData라는 제품이 Linux 기반이다. 앞으로 이런 제품이 더 많아질거라 생각한다.), 고가의 UNIX 장비를 소유하지 못한 중소기업체에서도 Oracle에 대한 수요가 늘어날거라 생각하기에 Linux에 Oracle 9i를 설치하려고 마음먹었다.

 DB를 선택했고 Linux라는 운영체제를 선택했으니 이제 Linux 배포판을 선택해야겠다. Oracle에서 배포하는 Oracle Unbreakable Linux(다운로드 링크에는 Oracle Enterprise Linux라는 이름으로 되어있다.)를 사용할까 했으나 업데이트에 문제가 있어서 CentOS 4.7을 선택했다. 현재 CentOS는 5.x 버전이 있으나 Oracle 9i 관련 설치 문서는 RedHat Enterprise Linux 4 기반의 문서가 많기에 CentOS도 4.x 버전대를 선택했다. (CentOS는 RedHat Enterprise Linux의 클론이다.)



다른 UNIX 장비에 Oracle을 설치할때와 순서는 비슷하다.

1. 필수 Software 설치 및 OS 환경 설정하기
2. oracle user 환경 설정하기
3. Oracle 9.2.0.4 설치하기
4. Oracle 9.2.0.8 Patch 설치하기
5. Oracle DB 생성하기


  이번에 새로 나온 따끈한 제품입니다. HP의 하드웨어(DL360 G5)와 Oracle Database, Oracle Enterprise Linux가 결합된 제품입니다.

 나날이 늘어만가는 데이터 때문에 DW 시스템 운영자에게는 커다란 고민거리죠.  그래서일까요. HP와 Oracle이 손잡고 Exadata라는 제품이 나왔습니다.

 
 Oracle에서 공개한 문서를 보면요, Oracle Enterprise Linux 기반의 Oracle 11g Real Application Cluster 제품이네요. 단순히 스토리지라고 생각을 했었는데...

 DataWarehouse를 위해서 익스트림!!!한 성능을 보여준다고합니다.
가격도 익스트림하면 도입하기 힘들지 않을까합니다만...

 그래도 리눅스 기반의 제품이 나오니 반갑네요.
아직까지 공개된 정보가 별로 없어서 리눅스 기반의 RAC 제품이며, 소프트웨어와 하드웨어가 결합된 형식의 제품으로 판매할 계획이라는 것만 아는 상태입니다.
SQL 배움터(제2판) 상세보기
&lt;b&gt;우용태&lt;/b&gt; 지음 | 생능 펴냄
SQL 입문서. 이 책은 데이터베이스 등장 배경과 역사, 특징에서부터 SQL 명령문의 종류와 사용법, 검색 및 행렬, SQL 함수와 데이터 조작어, 분석함수 등의 내용으로 구성했다.
직접 수업을 들은적은 없지만 모교(국립창원대학교)에서 데이터 베이스를 가르치시는 우용태 교수님의 책입니다. 꼭 한번 수업을 듣고 싶었는데, 컴퓨터 공학과 학생이 아니라서 수강을 못 했었죠. 음... 진드기처럼 달라붙었었다면 수업은 들을 수 있지 않았을까...하고 생각은 해보지만, 불청객 신세는 그때도 지금도 사양하는 편이라서... ^^;; 그다지 좋은 처세술은 아닌것 같지만요...

암튼, 창원대학교 컴퓨터 공학과는 제게 여러가지 전환점을 준 곳입니다. 여기서는 학부생 데이터베이스 수업때 MySQL을 사용하지 않고 Oracle을 사용했었습니다. 거의 한해 등록금에 가까운 돈을 줘야만 학원에서 들을 수 있었던 수업을 학교에서 들었죠. 그때 국립대라서 등록금이 일년에 백만원이 조금 안되었었습니다. 나름 효도했다고 생각합니다. ^^

표지만 좀더 보기 좋으면 좋을텐데요...

'IT 기술 > 기술서적' 카테고리의 다른 글

무선인터넷관리사 1급 자격증 교재 수령!!  (0) 2007.05.10

+ Recent posts