DBMS_PIPE

개요

DBMS_PIPE은 동일한 인스턴스 내에 속해 있는 세션들 간에 통신할 수 있는 기능을 지원하는 패키지입니다.

함수 / 프로시저
반환 타입
설명

CREATE_PIPE(pipename [, maxpipesize ] [, private ])

INTEGER

명시적으로 공개 또는 사용자 소유의 통신용 파이프를 생성하는 함수입니다.

NEXT_ITEM_TYPE

INTEGER

로컬 메시지 버퍼에 저장되어 있는 다음 아이템의 데이터 타입을 알려주는 함수입니다.

PACK_MESSAGE(item)

n/a

로컬 메시지 버퍼 안에서 메시지를 만드는 프로시저입니다. 이 프로시저를 호출하여 로컬 버퍼에 단위 데이터(아이템)를 저장하고, 1개 이상의 아이템이 저장되면 SEND_MESSAGE합니다.

PURGE(pipename)

n/a

파이프에 저장되어 있는 모든 내용을 비우는 프로시저입니다.

RECEIVE_MESSAGE(pipename [, timeout ])

INTEGER

파이프에 저장되어 있는 메시지 한 개를 로컬 버퍼에 읽어오는 함수입니다.

REMOVE_PIPE(pipename)

INTEGER

명시적으로 생성된 파이프 및 파이프에 저장되어 있던 모든 내용을 제거하는 함수입니다.

RESET_BUFFER

n/a

로컬에 있는 읽기 버퍼 및 쓰기 버퍼의 모든 내용을 비우는 프로시저입니다.

SEND_MESSAGE(pipename [, timeout ] [, maxpipesize ])

INTEGER

로컬 버퍼에 저장되어 있던 메시지를 파이프에 저장하는 함수입니다.

UNIQUE_SESSION_NAME

TEXT

데이터베이스에 연결되어 있는 모든 세션들 중에 식별할 수 있는 유일한 이름을 반환하는 함수입니다.

UNPACK_MESSAGE(item OUT)

n/a

로컬 메시지 버퍼 안에 저장되어 있는 아이템 하나를 읽어오는 프로시저입니습니다.


권한

설치는 super user에 이루어져야 하고 public으로 공개되어 있습니다.


구성

본 절에서는 DBMS_PIPE 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명합니다.

CREATE_PIPE

명시적으로 공개 또는 사용자 소유의 통신용 파이프를 생성하는 함수입니다.

프로토타입

파라미터

파라미터
설명

pipename

생성하는 파이프의 이름으로 인스턴스 내에서 고유한 값입니다. SEND_MESSAGE, RECEIVE_MESSAGE를 호출할 때 이 이름을 사용하여 송수신할 수 있습니다.

maxpipesize

메시지들을 파이프에 저장할 수 있는 최대 크기입니다. (기본값: 8192Bytes)

private

  • TRUE : 사용자 소유의 파이프가 생성됩니다. (기본값)

  • FALSE : 모든 사용자가 공유하는 파이프가 생성됩니다.

예제

NEXT_ITEM_TYPE

로컬 메시지 버퍼에 저장되어 있는 다음 아이템의 데이터 타입을 알려주는 함수입니다. RECEIVE_MESSAGE를 호출하여 로컬 버퍼에 가져온 다음 NEXT_ITEM_TYPE을 호출하고 반환된 타입에 맞는 UNPACK_MESSAGE 프로시저를 호출하여 데이터를 읽어올 수 있습니다.

프로토타입

예제

PACK_MESSAGE

로컬 메시지 버퍼 안에서 메시지를 만드는 프로시저입니다. 이 프로시저를 호출하여 로컬 버퍼에 단위 데이터(아이템)를 저장하고, 1개 이상의 아이템이 저장되면 SEND_MESSAGE 함수를 호출하여 하나의 메시지로 합쳐서 파이프에 보낼 수 있습니다.

프로토타입

파라미터

파라미터
설명

item

로컬 버퍼에 저장할 아이템입니다.

예제

PURGE

파이프에 저장되어 있는 모든 내용을 비우는 프로시저입니다.

프로토타입

파라미터

파라미터
설명

pipename

저장된 모든 메시지를 비울 파이프의 이름입니다.

예제

RECEIVE_MESSAGE

파이프에 저장되어 있는 메시지 한 개를 로컬 버퍼에 읽어오는 함수입니다.

프로토타입

파라미터

파라미터
설명

pipename

저장된 메시지를 읽어올 파이프의 이름입니다.

timeout

메시지를 기다릴 시간을 초 단위로 설정합니다.

(기본값: MAXWAIT, 86400000(1000일))

예제

REMOVE_PIPE

명시적으로 생성된 파이프 및 파이프에 저장되어 있던 모든 내용을 제거하는 함수입니다. 단, 이 함수를 호출하지 않고 인스턴스가 종료되어도 파이프는 제거됩니다.

파이프가 제거되는 경우 0을 반환한다. 이미 제거된 파이프에 대해서 해당 함수를 호출한 경우에도 0을 반환합니다.

프로토타입

파라미터

파라미터
설명

pipename

제거하려는 파이프의 이름입니다.

예제

RESET_BUFFER

로컬에 있는 읽기 버퍼 및 쓰기 버퍼의 모든 내용을 비우는 프로시저입니다. 새로운 파이프에 대한 읽기 및 쓰기를 위해 현재 로컬에 남아 있는 메시지를 비울 때 사용할 수 있습니다.

프로토타입

예제

SEND_MESSAGE

로컬 버퍼에 저장되어 있던 메시지를 파이프에 저장하는 함수입니다. PACK_MESSAGE를 한 번 이상 호출하여 누적된 아이템들이 하나의 메시지로 구성되어 전송됩니다. 존재하지 않는 파이프의 이름이 인자로 들어오는 경우, 묵시적으로 private 파이프를 생성합니다.

프로토타입

파라미터

파라미터
설명

pipename

메시지를 송신할 파이프의 이름입니다.

timeout

메시지를 기다릴 시간을 초 단위로 설정합니다.(기본값: MAXWAIT, 86400000(1000일))

maxpipesize

Byte 단위이며, 파이프에 해당 메시지를 보낼 때 사용가능한 최대 크기입니다. 최대 사이즈를 초과하는 경우, 메시지를 파이프에 쓰지 못합니다.(기본값: 8192Bytes)

예제

UNIQUE_SESSION_NAME

데이터베이스에 연결되어 있는 모든 세션들 중에 식별할 수 있는 유일한 이름을 반환하는 함수입니다. 동일한 세션에서 이 함수를 호출할 때마다 항상 같은 값을 반환하며, 이 함수를 이용해 자신 세션 안에서만 사용할 수 있는 파이프의 이름을 지정할 수 있습니다.

프로토타입

예제

UNPACK_MESSAGE

로컬 메시지 버퍼 안에 저장되어 있는 아이템 하나를 읽어오는 프로시저입니다. RECEIVE_MESSAGE 함수를 호출하여 파이프로부터 읽어온 메시지를 로컬 읽기 버퍼에 저장하고, UNPACK_MESSAGE 프로시저를 호출하여 메시지 안의 아이템들을 하나씩 가져올 수 있습니다.

프로토타입

파라미터

파라미터
설명

item

로컬 버퍼에서 읽어올 아이템입니다.

예제

Last updated