Oracle DB로 보는
데이터베이스 인터페이스의 발전
많은 개발자들이나 DBA들은 하루에도 몇 번씩 데이터베이스와 대화를 시도한다. 때로는 툴을 쓰기도 하고 때로는 COMMAND 모드로 대화를 시도한다. 대부분 직관적으로 보기 쉽고 접근하기 쉬운 GUI 기반의 툴로 접근하리라 생각된다. 막상 편한 GUI 기반의 툴을 쓰다가 갑자기 커맨드 라인 모드로 데이터에 접근한다면 불편하기 그지없을 것이다. 우리가 익숙하게 쓰는 데이터베이스가 어떤 툴로 변모해 왔으며 앞으로 어떤 방향으로 변해갈지 오라클 데이터베이스를 중심으로 설명하고자 한다.
먼저 데이터베이스에서 유저 인터페이스의 종류를 꼽으면 아래와 같다.
- 커맨드 라인 인터페이스
- GUI 기반 관리 툴
- SQL*DEVELOPER
- 기타 RDBMS에서의 유저 인터페이스
커맨드 라인 인터페이스
SQL*PLUS
오라클 데이터베이스의 유저 인터페이스 가운데 가장 대표적인 커맨드 라인 유틸리티인 SQL*PLUS는 크게 MS-DOS 프롬프트와 같은 명령
프롬프트 기반의 CUI(Character User Interface) 유저 인터페이스와 일부 그래픽 모드를 보강한 GUI 기반의 인터페이스 두
가지를 지원한다.
SQL*PLUS라는 이름의 기원은 Oracle 4 버전 때로 거슬러 올라간다. UFI(User Friendly Interface)라는 이름으로 버전 4까지 포함되어 오다가 이 UFI에 신규 기능들이 추가되어 내부적으로 ‘Advanced UFI’로 명명되었다. 후에 신규 릴리즈가 발표되기 전 공식적으로 SQL*PLUS로 명명해서 발표하게 되었다.
근래 들어서 강력한 사용자 편의 기능을 갖춘 써드파티 툴에 밀려서 개발자나 DBA에게 있어서 그 사용빈도가 줄었다고는 하나 모든 운영체제 시스템에서 사용 가능할 뿐만 아니라 SQL* PLUS만의 특수한 기능으로 인해 그 효율성은 여전히 유효하다고 하겠다. 특히나 유닉스(UNIX) 계열의 서버 작업시에는 없어서는 안 될 중요한 유틸리티라고 할 수 있다.
<화면 1>은 X-Terminal에서 실행한 SQL*plus 커맨드 라인의 예제와 윈도우 GUI 기반의 예제이다.
<화면 1> CUI 기반의 SQL*PLUS와 윈도우 GUI 기반의 SQL*PLUS
ISQL*PLUS
본격적인 인터넷 환경이 활성화되기 시작한 시기에 발표된 Oracle 8i(1998)에서 SQL*PLUS의 웹(web) 기반 버전이 ISQL*PLUS이다. Oracle 9i부터는 웹 브라우저에서 SQL을 실행하는 환경을 지원하게 되었다. 이는 후에 나오는 10g의 웹 기반 Enterprise Manager의 모체가 되었던 존재이기도 하다. 기존의 SQLPLUS가 포맷을 정하기 힘들고 FETCH 사이즈를 지정하기 힘든 문제점을 지녔는데, ISQLPLUS에서는 데이터 GRID 형태를 지원함으로써 이 문제를 어느 정도 해소하게 되었다.
<화면 2> 웹 기반의 ISQLPLUS
접속 방식은 다음과 같이 웹 브라우저에서 URL로 host 서버의 주소와 포트번호를 입력해서 접속한다.
- 형식 : http://machine_name.domain:port/isqlplus
- 예 : http://localhost:5560/isqlplus
9i에서의 ISQLPLUS는 Java Oracle HTTP 서버 기반에서 7777 포트를 대기하고 있다. 반면 10g에서는 ocj4로 동작하는 5560 포트를 대기하고 있다.
SQL*PLUS에서의 HTML, EXCEL 출력물 만들기 |
개발자들이 SQL*PLUS가 힘들다고 생각하는 가장 큰 이유 중 하나는 데이터의 포맷이나 출력물 생성에 있어서 사용자가 원하는 포맷대로 나오기 힘들다는 점이다. 하지만 SQL*PLUS의 MARKUP 옵션으로 커맨드를 지정한다면 출력물에 대한 포맷을 맞추고 저장하기 위한 수고를 덜 수 있다.
[HTML, EXCEL 형식의 리포트 만들기]
<화면 3> HTML 형식으로 표현된 OUTPUT |
SQL*PLUS의 장단점
● 단점
- OUTPUT 출력 값에 대한 데이터 포맷과 사이즈를 일일이 지정하기 힘들다.
:
관련 옵션을 알거나 미리 설정해야 한다.
- 써드파티 툴에서의 ARRAY 사이즈가 디폴트로 지정되어 있다.
: 많은 데이터가
FETCH되는 경우 이를 정지할 수 없으므로 쿼리의 ROWNUM으로써 제어해야 한다.
- COMMAND 지향적인 툴이므로 모든 명령어를
숙지하고 있어야 한다.
: TOAD나 ORANGE와 같은 간편한 인터페이스를 제공하지 않는다.
● 장점
- PL/SQL, SQL 명령어를 구분 없이 사용할 수 있다.
- OS 명령어를
SQL*PLUS 명령어에 포함해서 사용할 수 있다.
: 윈도우의 경우 host, 유닉스의 경우에는 ‘!’를 붙여서 운영체제 명령어를 병행해
사용할 수 있다.
- 미리 작성된 스크립트(script)를 활용하면 더 효율적으로 배치 작업이나 DBA 업무를 수행할 수 있다.
:
@script.sql 형태로 해당 스크립트를 실행할 수 있으며 스크립트 파일 내에 @@ 기호를 붙여서 스크립트 파일 안에서 다른 스크립트 파일을
호출할 수 있다.
- AUTOTRACE나 EXPLAIN PLAN 명령어, DBMS_ XPLAN을 통해 각종 통계정보와 실행계획 확인 및
옵티마이저의 동작 방법을 확인해볼 수 있는 강력한 기능을 제공한다. 모든 장점 중에서도 특히 이것이 DBA나 개발자가 반드시 SQL*PLUS에
친숙해야만 하는 가장 큰 이유가 아닐까 생각된다.
그럼 SQL*PLUS와 ISQLPLUS의 미래는 어떨까? 11g에서 그 명암이 갈리게 되었다. SQL*PLUS의 존재는 최소화되었다. 기존 윈도우 GUI 기반의 SQL*PLUS는 더 이상 지원되지 않는다. 그도 그럴 것이 뒤에서 살펴보겠지만 2006년도에 써드파티용 대체 툴로 발표된 SQL Developer 툴이 이 SQL*PLUS의 역할을 수행하면서 11g에서는 GUI용 SQL*PLUS와 자리바꿈을 하게 되었다. 다만 커맨드 유저 인터페이스는 계속해서 지원한다. 또한 ISQLPLUS는 10g에서의 EM 등장으로 인해 11g에서는 그 효용성이 감소함으로써 11g에서는 더 이상 지원되지 않는다.
GUI 기반 관리 툴
자바 콘솔 기반의 9i ENTERPISE MANAGER
Oracle이 GUI 기반의 유저 인터페이스를 Oracle 8i에서 본격적으로 지원한 GUI용 데이터베이스 관리 유저 인터페이스가 Oracle Enterprise Manager이다. 자바 콘솔 기반으로서 당시만 하더라도 구동하기가 매우 무겁다는 의견이 많았다. 따라서 사용자들에게 널리 사용되지 못하고 대신 쉽고 사용자 친화적인 인터페이스(user friendly interface)로 무장한 많은 데이터베이스 관리 툴들이 득세하기도 했다.
하지만 EM(Enterprise Manager) 그 자체만 본다면 상당히 매력적인 기능들이 많았다. 3-tier 기반으로 다수의 서버를 통합적으로 관리 가능했을 뿐 아니라 스케줄링 작업이나 각종 리포트 및 위험 상황이 오면 관리자에게 공지(Notification)하는 유용한 기능들을 제공했다.
<화면 4> Oracle 9i Enterprise Manager의 초기 화면
브라우저 기반의 10g Enterprise Manager
본격적인 그리드(Grid) 컴퓨팅을 표방하고 발표된 Oracle 10g EM에서 가장 크게 바뀐 점은 인터넷에서 사용하는 HTML 기반의 3-tier 아키텍처로 구성되었다는 점이다. 사용자는 브라우저를 통해 OEM에 접속해서 어디에서라도 데이터베이스를 관리할 수 있다. 모바일 디바이스에서도 인터넷에만 접속된다면 OEM에 접속할 수 있다. 뿐만 아니라 자바 콘솔 기반이 아니기 때문에 클라이언트에서는 소프트웨어 설치가 필요하지 않게 되었다.
이 OEM에는 두 가지 타입이 지원된다. 하나는 Oracle 설치 시에 디폴트로 설치되는 Oracle Enterprise
Manager Data base Control과 복수의 인스턴스를 가진 RAC(Real Appli cation Cluster) 환경에서 설치할
수 있는 Oracle Enterprise Manager Grid Control을 설치할 수 있다.
<그림 1> HTML 기반의 3-tier 아키텍처
브라우저를 통해 OEM에 접속했다면 이 홈페이지 안에서 정보를 통합해 확인할 수 있고 데이터베이스의 상태를 즉시 확인해볼 수 있다. 직관적인 인터페이스를 제공하므로 마치 웹사이트를 서핑하는 것처럼 링크를 클릭해 확인함으로써 원하는 정보를 간편하고 쉽게 접근할 수 있다. 또한 전체적인 구성은 Drill down 메뉴 구성으로써 전체 문제 -> 세부 문제로 문제의 원인을 재빨리 찾을 수 있다.
<화면 5> 10g의 Enterprise Manager
모바일용 Enterprise Manager
EM의 서브 버전으로서 10g에서는 OEM의 모바일 버전인 EM2GO라는 버전을 제공하며, 모바일 환경에서 데이터베이스를 관리하고 장소에 구애받지 않고 데이터베이스를 관리할 수 있는 환경을 제공한다. EM2GO의 경우에는 OEM과 동일하게 OC4J 인스턴스를 공유함으로써 추가적인 리소스가 필요하지 않다.
<화면 6> PDA를 통한 EM2GO의 로그인
상용 툴의 대체자, SQL*DEVELOPER
2006년 오라클은 기존 사용 툴을 대체할 만한 그래픽 유저 인터페이스 IDE(Integrated Development Environment)용 툴인 SQL DEVELOPER를 발표한다. SQL*PLUS나 ISQL*PLUS 등 Oracle의 유저 인터페이스가 MS SQL의 ENTERPRISE CONSOLE이나 DB2의 DB CENTER에 비해 그 사용자 편의적인 유저 인터페이스가 부족했던 것은 사실이다.
MS SQL에서 Oracle과의 비교우위를 강조할 때 항상 자신 있게 내세웠던 것은 사용자가 쉽게 데이터를 관리하고 접근할 수 있는 쉬운 GUI 인터페이스였다. 따라서 이러한 점 때문에 Oracle을 지원하는 TOAD, Orange, PL/SQL Developer 등의 수많은 데이터베이스 관리용 써드파티 툴들이 득세할 수 있었다. 이에 대한 변화로 오라클은 SQL*DEVELOPER를 발표하게 되었고 11g에서는 GUI용 SQL*PLUS를 대체하게 되었다.
그렇다면 SQL*DEVELOPER가 기타 써드파티 툴과 비교할 때 어떤 특징을 지니고 있을까? 먼저 몇 가지 점을 꼽을 수 있다. 첫 번째, CLIENT 제품 설치 없이 JDK만 설치되어 있는 상태라면 JDBC를 통해 바로 접속할 수 있는 Direct Access를 지원한다. OCI, SQLNET을 통해 접속하기 위해서는 반드시 Oracle CLIENT에 포함된 이런 요소를 설치하고 또한 CLIENT 설치 후에 TNSNAME.ORA 파일에 해당 서비스를 등록해야 이 접속 정보를 참조하여 해당 서버에 접속할 수 있었다. 그러나 이러한 설정이나 설치 없이 SQL DEVELOPER에 포함된 JDBC 드라이버를 이용하면 DB 서버의 주소를 직접 기술해 바로 접속할 수 있다.
기존에도 SQLGATE라는 툴이 SQLNET 설치 없이 접속할 수 있는 방법을 지원했으나 SQL*DEVELOPER처럼 제품 설치 없이 압축만 풀고 해당 실행 파일만 가지고 있다면 툴을 실행할 수 있는 경우는 없었다. 그러나 이와 같이 어느 환경에서나 휴대용 저장장치에 파일을 가지고 다니면서 설치 없이 언제든 실행할 수 있다는 것은 큰 장점이 될 수 있다.
<화면 7> SQL DEVELOPER의 메인 화면
두 번째, 기존의 써드파티 툴은 RDBMS에 종속적인 터라 특정 DB용의 툴만 존재했다. 그러나 SQL*DEVELOPER에서는 이기종 DB 접속을 지원한다. Oracle뿐만 아니라 사이베이스, MS ACCESS, MySQL로의 접속을 지원한다. 따라서 이기종 DB를 관리하거나 이기종 DB로의 마이그레이션을 수행할 때 유용하다.
세 번째는 기존 써드파티 툴들이 일방적으로 정보를 제공하는 역할을 했다면 SQL*DEVELOPER에서는 사용자가 자신만의 리포트를 작성해서 모니터링에 사용할 수 있는 툴을 사용자가 편집 및 커스터마이징할 수 있는 편의 기능을 제공하고 있다. 대표적인 것이 User Define Report이다. 기존의 9I OEM에서 지원하던 사용자 작성 리포트 기능을 그대로 차용한 형식으로 사용자가 지정된 스크립트를 그리드나 차트 형태로 보여줄 수 있는 기능을 말한다.
SQL*DEVELOPER에서 사용자정의 단축키 사용 |
툴을 사용하다 보면 특정 툴에 익숙해져서 좀처럼 다른 툴로 바꾸기가 힘들다. 특히나 익숙한 단축키 사용에 있어서는 더욱 그렇다. 예를 들어 TOAD에서는 SQL 문장 실행이 CTRL + F8인데 다른 툴에서는 ALT + ENTER 키가 실행키라면 단축키에 익숙해진 사용자라면 상당히 신경 쓰이는 일이 아닐 수 없다. 따라서 이러한 점 때문에 단축키를 변경할 수 있는 설정을 SQL* DEVELOPER에서 지원하고 있다. 메뉴 TOOLS - PREFERENCES 설정에서 ACCELERATORS를 선택하면 해당되는 각각의 ACTION을 실행하는 단축키(HOT KEY)를 설정할 수 있다.
<화면 8> 유저 정의 단축 키 설정 화면 |
많은 유용한 모니터링 스크립트를 가지고 있다고 하더라도 구슬도 꿰어야 서말이라는 말처럼 적시에 찾아내지 못한다면 무용지물일 것이다. 이
리포트에 해당되는 스크립트를 정리해서 정리된 폴더로 쌓아놓는다면 강력한 사용자정의 모니터링 툴이 될 수 있다.
아래는 Report 메뉴에서
사용자정의 리포트의 차트 스타일로 지정하고 실행한 예제이다.
● 예제 : 사용자정의 리포트 작성
① 먼저 다음의 Connection 탭을 선택하고 User Define Report를 선택한 후 오른쪽 마우스 버튼 클릭으로 Add Report를 추가한다.
<화면 9> Add Report 추가
② Report명과 해당되는 SQL문을 입력하고 STYLE은 CHART 형식으로 지정한다. 주의해야 할 것은 아래 3개의 measure 값이 항상 들어가야 하며 각각 값들은 그래프의 X축 값, 계열 값, Y축 값으로 나타낸다. 다시 말해 SID 컬럼이 X축, EVENT가 각각의 계열 값, SUM의 계산 값이 Y축의 값을 나타낸다는 것이다.
SQL> SELECT SID,EVENT,SUM(seconds_in_wait)
FROM V$SESSION
WHERE TYPE
<> ‘BACKGROUND’
GROUP BY SID,EVENT
<화면 10> STYLE 지정(CHART 형식)
③<화면 10>의 하단 탭 중 Chart Detail을 선택해서 차트의 종류를 설정한다. 여기서는 BAR_VERT_STACK 형태(막대-수평 형태)의 차트를 선택해본다.
<화면 11> BAR_VERT_STACK 형태 선택
④<화면 12>와 같은 그래프가 완성되었다. REFRESH 간격 TIME을 5초로 설정하면 주기적으로 바뀌는 리포트 차트를 볼 수 있다.
<화면 12> SQL*DEVELOPER의 CHART 스타일 리포트
Oracle | MS SQL | IBM DB2 | |
커맨드 라인 모드 |
SQL*PLUS ISQL*PLUS |
SQLCMD (명령 프롬프트) |
command line processor (DB2 명령행 처리기) |
데이터 관리 GUI 툴 |
ENTERPRISE MANAGER |
SQLSERVER MANAGEMENT STUDIO |
제어 센터 |
써드파티 툴 |
TOAD For Oracle SQLGater for Oracle Navicat for Oracle |
TOAD FOR MSSQL |
TOAD FOR DB2 |
<표 1> 기타 RDBMS와의 비교
지금까지 간략하게나마 데이터베이스 유저 인터페이스의 발전 방향에 대해 살펴봤다. 설명한 내용을 통해 COMMAND, JAVA CLIENT 기반, 웹 기반으로 서서히 변화하고 있으며 좀 더 쉽고 편하면서 언제 어디서나 사용 가능한 방향으로 바뀌고 있음을 알 수 있었다. 앞으로의 유저 인터페이스 진행 방향을 꾸준히 지켜보는 것은 언제나 흥미로운 시도임이 분명하다.
데이터베이스 접속 방식 |
Oracle에서는 접속 방식이 크게 두 가지로 나뉜다. 하나는 Telnet이나 터미널 프로그램으로 호스트에 바로 접속해서 실행하는 방식이고, 다른 하나는 SQL*NET을 통해서 OCI, JDBC Driver 등으로 접속하는 방식이다.
<그림 2> 오라클 데이터베이스 엑세스 제품들
애플리케이션에서의 다양한 접속명령 예
● JDBC OCI 드라이버 ● JDBC Thin드라이버 ● SQL*PLUS |
필자소개
김도근 kilgw@naver.com|OracleAce, OCM, MCDBA. ‘데이터베이스란 OS 위에 올라가 있는 애플리케이션에 불과하다’라는 생각으로 항상 데이터베이스를 생각하면서 데이터베이스를 공부하는 것을 낙으로 삼고 있다. 스터디 및 온라인, 오프라인 기고 등의 활동을 전개 중이다.
출처 : 한국 마이크로 소프트웨어 [2009년 6월호]
'ORACLE > ORACLE TOOL' 카테고리의 다른 글
Orange-국내 기술로 개발된 오라클 개발 지원 및 튜닝 도구 (0) | 2009.11.23 |
---|---|
SQL * Plus 명령어 & 환경 시스템 변수 (0) | 2009.09.04 |
Toad 에서 null 값 노란색으로 표시하기 (0) | 2009.08.21 |
toad 에서 explain plan 보기 (1) | 2009.03.27 |
SQL Developer 문서화와 모니터링, 그리고 관리 (0) | 2008.11.11 |