패키지 소개

패키지의 기본 개념과 구성을 소개합니다.

개요

패키지(package)는 하나 이상의 tbPSM 프러시저(procedure)와 함수(function) 등을 포함하는 스키마 객 체입니다. 하나의 패키지에 포함되는 스키마 객체는 프러시저와 함수를 비롯하여 변수, 커서(cursor), 예외 상황(exception) 등이 있습니다.

패키지는 프러시저, 함수와 마찬가지로 임의의 SQL 문장에서 사용할 수 있습니다.

패키지를 사용함으로써 얻을 수 있는 장점은 다음과 같습니다.

  • 연관된 프러시저와 함수의 개발과 관리가 쉽습니다.

예를 들어 여러 프러시저와 함수에서 공통으로 액세스하는 변수를 패키지에 포함시킬 수 있습니다.

  • 애플리케이션 프로그램의 개발이 쉽습니다.

패키지에서 지원하는 여러 기능을 이용하면 좀 더 강력한 애플리케이션 프로그램을 작성할 수 있습니다.

  • 효율적인 실행이 가능합니다.

권한의 부여와 회수, 메모리 로딩(memory loading) 등이 패키지 단위로 수행되기 때문에 효율적인 실행이 가능합니다.

구성

패키지는 사용자 정의 패키지와 Tibero에서 제공하는 시스템 패키지로 구성됩니다.

사용자 정의 패키지

사용자 정의 패키지는 사용자가 원하는 목적에 맞춰 정의하는 패키지입니다. 사용자 정의 패키지는 프러시저, 함수와 유사하게 다음과 같이 정의할 수 있습니다.

패키지 선언부

외부 인터페이스이며 공개 프러시저(public procedure)와 함수, 변수, 상수 등을 포함합니다.

패키지 선언부의 세부 내용은 다음과 같습니다.

  • 문법

  • 특징

    • CREATE PACKAGE 문장을 이용하여 선언부를 생성합니다.

    • 패키지 이름(package_name) 다음에 패키지를 호출자 권한(invoker's rights) 또는 정의자 권한(definer's rights)으로 실행할 것인지를 설정할 수 있다. 설정이 생략되면 정의자 권한으로 실행됩니다.

    • END 다음에 패키지 이름은 생략해도 상관없습니다.

  • 사용 예제

[예 1] EMP_MGMT 패키지의 선언부

위의 예에서는 EMP_MGMT 패키지를 정의자 권한으로 실행하며, 공개 프러시저(2개)와 함수(1개) 그리고 공개 예외 상황(1개)를 포함하고 있습니다.

패키지 구현부

실제 프로그램이 구현되는 부분입니다. 공개 프러시저와 함수 등의 프로그램 구현부와 함께 비공개 프러시저(private procedure)와 함수, 변수 등을 포함합니다.

패키지 구현부의 세부 내용은 다음과 같습니다.

  • 문법

  • 특징

    • CREATE PACKAGE BODY 문장을 이용하여 구현부를 생성합니다.

    • END 다음에 패키지 이름은 생략해도 상관없습니다.

  • 사용 예제

[예 2] EMP_MGMT 패키지의 구현부

위의 예에서는 [예 1]에 포함된 모든 프러시저와 함수에 대한 정의를 포함하고 있으며, 비공개 변수 NUM_EMP를 선언하고 있습니다.

패키지 프러시저와 함수를 정의하는 방법은 패키지 변수, 상수, 예외 상황에 대한 내용 외에는 일반 프러시저 및 함수를 정의하는 방법과 동일합니다.

프러시저 또는 함수 내부의 컬럼의 이름과 변수의 이름이 같은 경우 컬럼이 포함된 테이블의 이름이나 프러시저 또는 함수의 이름을 지정하여 혼동을 피할 수 있습니다. 예를 들어 프러시저 FIRE 함수의 내부에서 테 이블 EMP에 포함된 컬럼 EMPNO와 프러시저 FIRE로 전달된 파라미터 변수 EMPNO가 같은 이름을 가지므로, 각각 테이블 이름과 프러시저 이름을 지정해 주었습니다.

패키지 내에 포함된 프러시저나 함수를 그 패키지의 소유자 이외의 다른 사용자가 호출하도록 할 수 있습니다. 프러시저나 함수를 호출하려면 해당 패키지의 EXECUTE 권한을 부여 받아야 합니다. 해당 패키지의 소유자는 항상 해당 패키지를 호출할 수 있습니다.

뷰(view)가 패키지 프러시저나 함수를 이용하여 정의된 경우에는 뷰를 접근하기 위해 SELECT 권한을 부여 받아야 합니다. 이때 해당 패키지의 EXECUTE 권한은 필요하지 않습니다. 패키지 프러시저나 함수를 참조하려면 패키지의 이름과 프러시저 또는 함수의 이름을 함께 써주어야 합니다.

다음은 [예 1.1]에서 정의한 EMP_MGMT 패키지 내의 HIRE 함수를 호출하는 예입니다. 이때 반환값은 EMPNO 변수에 저장됩니다.

시스템 패키지

시스템 패키지는 Tibero에서 기본적으로 제공하는 패키지 라이브러리로, SYS 사용자의 소유로 정의됩니다. 또한, Tibero를 설치한 후에 일반 사용자도 사용할 수 있도록 시스템 패키지와 동일한 이름의 공용 동의어 (Public Synonym)가 정의됩니다. 그리고 일반 사용자가 시스템 패키지의 프러시저 또는 함수를 호출하면 호 출자 권한으로 실행됩니다.

시스템 패키지는 일반 사용자에게 여러 가지의 확장된 기능을 제공합니다. 시스템 패키지를 SQL 문장에서 그대로 사용합니다거나, 다른 프러시저와 함수 그리고 패키지를 정의할 때도 사용할 수 있습니다.

시스템 패키지의 프러시저와 함수를 호출하는 방법은 사용자 정의 패키지와 같습니다.

다음은 32KB 이상인 대용량 객체의 이름과 생성자를 출력하는 예입니다.

위 예에서 보듯이 data는 image 테이블에서 대용량 객체형으로 정의된 컬럼입니다.

다음은 Tibero에서 제공하는 시스템 패키지입니다.

시스템 패키지
설명

ANYDATA

임의의 타입을 담을 수 있는 타입

DBMS_ALERT

ALERT은 Tibero 데이터베이스와 통합되어 있는 알림/기다림 기능을 하는 패키지

DBMS_APPLICATION_INFO

애플리케이션 정보에 관련된 뷰의 값을 변경하기 위한 패키지

DBMS_AQ

Avanced Queuing 기능과 관련한 프러시저와 함수를 제공하는 패키지

DBMS_AQADM

Advanced Queuing 기능을 구성하고 관리하는 데 사용할 수 있는 프러시저와 함수 제공

DBMS_BACKUP_RESTORE

데이터베이스의 백업과 복구를 위해 사용되는 패키지

DBMS_CRYPTO

DES, DES3, AES 알고리즘 및 체인, 패딩 기법을 이용한 확장된 데이터 암호화 및 복호화 패키지

DBMS_DB_VERSION

제품의 버전 정보를 확인하는 패키지

DBMS_DDL

CREATE OR REPLACE PROCEDURE, PACKAGE로 시작하는 DDL 구문에 대한 WRAPPING 기능 외 기타 DDL 관련 기능을 제 공하는 패키지

DBMS_DEBUG

두 개의 세션을 이용하여 PSM 프로그램의 디버깅을 할 수 있는 패키지

DBMS_ERRLOG

DML의 error logging 기능을 지원하는 패키지

DBMS_FGA

FGA(Fine-Grained Auditing) policy를 관리하는 패키지

DBMS_FLASHBACK

Flashback 기능을 지원하는 패키지

DBMS_INMEMORY

In-Memory Column Store 기능을 지원하는 패키지

DBMS_JAVA

데이터베이스에서 사용하는 Java 객체에 접근하기 위한 패키지

DBMS_JOB

JOB을 관리하기 위한 패키지

DBMS_JOB_WITH_NAME

JOB을 name을 통해 관리하기 위한 패키지

DBMS_LOB

BLOB, CLOB 타입의 대용량 데이터를 처리하기 위한 패키지

DBMS_LOCK

세션을 대기시키는 패키지

DBMS_METADATA

DB Object에 metadata 정보를 조회하여 생성 script를 얻을 수 있는 함수 제공

DBMS_MONITOR

인스턴스 단위, 세션 단위, 클라이언트 식별자 단위로 SQL 수행을 모니터링하기 위한 패키지

DBMS_MVIEW

실체화 뷰(Materialized View)와 관련된 정보를 제공하고 이 정보를 최근의 것으로 변경할 수 있는 REFRESH 기능을 사용하기 위한 패키지

DBMS_OBFUSCATION_TOOLKIT

DES, DES3 알고리즘을 이용한 데이터 암호화 및 복호화 패키지

DBMS_OUTPUT

메시지 버퍼에 메시지를 저장하고 읽기 위한 패키지

DBMS_PARALLEL_EXECUTE

병렬 방식으로 테이블을 업데이트할 수 있는 기능을 제공하는 패키지

DBMS_PIPE

동일 인스턴스에 속해 있는 세션들 간의 통신을 지원하는 패키지

DBMS_RANDOM

임의의 숫자 및 문자열을 생성하는 패키지

DBMS_REDACT

Data redaction을 위한 interface를 제공하는 패키지

DBMS_REDEFINITION

테이블과 인덱스 내의 깨진 블록을 검사하고 복구하는 기능을 제 공하는 패키지

DBMS_REPAIR

테이블과 인덱스 내의 깨진 블록을 검사하고 복구하는 기능을 제공하는 패키지

DBMS_RESOURCE_MANAGER

업무의 성격에 따라 그룹을 나누어 자원을 분배할 수 있음

DBMS_RESULT_CACHE

Result Cache를 관리하는 패키지

DBMS_RLS

가상 개인 데이터베이스 기능을 관리하는 패키지

DBMS_ROWID

ROWID에 담긴 정보를 보거나 생성하기 위한 패키지

DBMS_SCHEDULER

PSM으로 작성된 프로그램을 스케줄링하고 관리하기 위한 패키지

DBMS_SESSION

세션 식별자를 관리하는 패키지

DBMS_SPACE_ADMIN

세그먼트를 관리하는 기능을 제공하는 패키지

DBMS_SPH

SQL Plan History(이하 SPH) 기능을 사용하는데 필요로 하는 기능을 제공하기 위한 패키지

DBMS_SPM

SQL Plan Baseline 기능을 사용하는데 필요로 하는 기능을 제공하기 위한 패키지

DBMS_SQL

데이터베이스에 접근하는 Dynamic SQL을 사용하기 위한 패키지

DBMS_SQLTUNE

실시간 SQL 모니터링 기능에 대한 보고서를 생성해 주는 함수를 제공하고 있는 패키지

DBMS_SQL_TRANSLATOR

SQL 번역 프로파일을 관리 및 사용하는 패키지

시스템 패키지
설명

DBMS_STATS

데이터베이스 객체에 대한 통계 정보를 관리하기 위한 패키지

DBMS_SYSTEM

SYS 권한을 가진 관리자가 시스템적인 제어를 위해 사용하는 패키지

DBMS_TPR

Tibero Performance Repository(이하 TPR) 기능을 사용하는데 필요로 하는 기능을 제공하기 위한 패키지

DBMS_TRANSACTION

트랜잭션(Transaction) 문장을 실행하고 트랜잭션을 관리하기 위한 패키지

DBMS_TYPES

데이터 타입들을 숫자로 정의한 패키지

DBMS_UTILITY

여러 가지 유용한 기능들을 제공하는 패키지

DBMS_VERIFY

여러 요소들에 대하여 정합성을 검사하는 기능을 제공

DBMS_XMLDOM

XML 문서 처리를 위한 DOM API를 제공

DBMS_XMLGEN

쿼리를 입력으로 받고 해당 쿼리의 결과 집합을 XML형식으로 생성해주는 패키지

DBMS_XMLPARSER

XML 문서를 파싱하여 XML 문서의 구조 및 내용에 접근할 수 있는 API 제공

DBMS_XMLSAVE

XML-to-database-type 기능을 제공하는 패키지

DBMS_XPLAN

SQL의 플랜 정보와 수행 정보를 조회하는 기능을 제공하는 패키지

DBMS_XSLPROCESSOR

XML 문서의 구성과 내용을 관리할 수 있는 인터페이스를 제공하는 패키지

HTF

HTML 태그를 생성하는 패키지

HTP

HTML 태그를 생성하는 패키지

Apache 웹 서버 모듈로 개발 된 mod_tbpsm과 연동되어 프러시저를 호출할 때 HTML 페이지를 생성하여 내보냄

OWA_UTIL

웹 에이전트에서 주로 사용하는 서브 프로그램을 담고 있는 패키지

SA_COMPONENTS

Label Security 기능의 레이블들의 정의를 관리하는 패키지

SA_LABEL_ADMIN

Label Security 정책의 레이블들을 관리하는 패키지

SA_POLICY_ADMIN

Label Security 정책들을 관리할 수 있는 패키지

SA_SYSDBA

Label Security 정책들을 생성, 변경, 작동 제어, 제거하는 패키지

SA_USER_ADMIN

Label Security 기능의 사용자 레이블들을 관리하는 패키지

TEXT_DDL

TEXT INDEX를 사용할 때 TEXT INDEX의 설정들을 변경하기 위한 패키지

UTL_COMPRESS

데이터를 압축/압축 해제하기 위한 패키지

UTL_ENCODE

호스트 간의 데이터를 전송할 수 있도록 표준 인코딩 기술로 인코딩하기 위한 패키지

UTL_FILE

운영체제에서 관리하는 파일에 접근하기 위한 패키지

UTL_HTTP

웹 표준(RFC2616)에 따라 웹 페이지(Web page)의 요청을 처리하 기 위한 패키지

UTL_I18N

언어, 국가별 설정들 간의 호환 기능을 제공하는 패키지

UTL_MATCH

두 문자열의 유사도를 계산하는 함수들을 제공하는 패키지

UTL_RAW

Invalid RAW 타입의 데이터를 처리하기 위한 패키지

UTL_RECOMP

Invalid 상태의 오브젝트를 다시 컴파일하기 위한 패키지

UTL_SMTP

SMTP(Simple Mail Transfer Protocol)를 이용하여 전자 메일을 전송하기 위한 패키지

UTL_TCP

tbPSM을 이용한 원격 TCP 서버와의 TCP/IP 소켓 통신을 지원하는 패키지

UTL_URL

URL(Uniform Resource Locator) 주소를 ESCAPE 형태로 변환하기 위한 패키지

circle-info

참고

위의 패키지에 대한 자세한 내용은 해당 패키지를 설명하는 각 장을 참고합니다.

Last updated