> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tibero-manuals/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tibero-manuals/7.2.6.manuals/sql-reference-guide/functions/sys_context.md).

# SYS\_CONTEXT

**SYS\_CONTEXT**는 문맥 네임스페이스(CONTEXT NAMESPACE)와 관련된 파라미터 값을 반환하는 함수입니다. 문맥 네임스페이스와 파라미터는 문자열이나 표현식으로 정의할 수 있으며, 함수의 반환 값은 VARCHAR 타입입니다.

Tibero에서 기본으로 제공하는 문맥 네임스페이스는 USERENV입니다.

* **USERENV 파라미터**

<table><thead><tr><th width="242">파라미터</th><th>설명</th></tr></thead><tbody><tr><td>CLIENT_IDENTIFIER</td><td>DBMS_SESSION.SET_IDENTIFIER 프러시저에 의해 정의된 클라이언트 식별자를 반환함</td></tr><tr><td>CURRENT_SCHEMA</td><td><ul><li>현재 활성화된 스키마 이름을 반환함</li><li>이 값은 ALTER SESSION SET CURRENT_SCHEMA 구문에 의해 변경될 수 있음</li></ul></td></tr><tr><td>CURRENT_SCHEMAID</td><td>현재 활성화된 스키마 식별번호를 반환함</td></tr><tr><td>CURRENT_SQL</td><td>현재 수행 중인 SQL 문장을 반환함</td></tr><tr><td>DB_NAME</td><td>DB_NAME 초기화 파라미터에 의해 정의된 데이터베이스 이름을 반환함</td></tr><tr><td>HOST</td><td>클라이언트가 실행 중인 장비 이름을 반환함</td></tr><tr><td>INSTANCE_NAME</td><td>현재 인스턴스 이름을 반환함</td></tr><tr><td>INSTANCE</td><td>현재 인스턴스 식별번호를 반환함</td></tr><tr><td>IP_ADDR[ESS]</td><td>클라이언트의 IP 주소를 반환함</td></tr><tr><td>LANG</td><td><code>LANGUAGE</code> 파라미터의 약어를 반환함</td></tr><tr><td>LANGUAGE</td><td>현재 세션의 지역, 언어, 데이터베이스 문자 집합 이름을 <code>언어_지역.문자 집합</code> 형식으로 반환함</td></tr><tr><td>MODULE</td><td>DBMS_APPLICATION_INFO.SET_MODULE 프러시저에 의해 정의된 모듈 이름을 반환함</td></tr><tr><td>NETWORK_PROTOCOL</td><td>양방향 통신을 위한 네트워크 프로토콜 이름을 반환함</td></tr><tr><td>OS_USER</td><td>클라이언트 프로세스의 OS 사용자 이름을 반환함</td></tr><tr><td>SCHEMA</td><td>클라이언트의 접속 스키마 이름을 반환함</td></tr><tr><td>SCHEMAID</td><td>클라이언트의 접속 사용자 식별번호를 반환함</td></tr><tr><td>SERVER_ADDRESS</td><td><ul><li>현재 인스턴스가 실행 중인 장비의 IP 주소를 반환함</li><li>OS에서 관리 중인 IP 주소 리스트의 첫 번째 값을 반환하므로 네트워크 환경 구성이 변경되면 값이 바뀔 수 있음</li><li>값을 고정하려면 LISTENER_IP를 설정해야 함</li></ul></td></tr><tr><td>SERVER_HOST</td><td>현재 인스턴스가 실행 중인 장비 이름을 반환함</td></tr><tr><td>SESSION_USER</td><td>클라이언트의 접속 사용자 이름을 반환함</td></tr><tr><td>SESSIONID</td><td>세션 감시 식별번호를 반환함</td></tr><tr><td>TERMINAL</td><td>클라이언트의 OS 식별자를 반환함</td></tr><tr><td>TID, SID</td><td>현재 세션 식별번호를 반환함</td></tr></tbody></table>

사용자 지정 문맥 네임스페이스는 CREATE CONTEXT DDL 구문을 사용하여 생성할 수 있습니다. 또한 SYS\_CONTEXT가 해당 네임스페이스의 각 파라미터에 따라 반환할 값은 DBMS\_SESSION.SET\_CONTEXT 프러시저를 통해 설정할 수 있습니다.

SYS\_CONTEXT의 세부 내용은 다음과 같습니다.

* **문법**

<div align="left"><figure><img src="https://content.gitbook.com/content/evqs7Ne3nMyXQFkBSQWR/blobs/cumN0BUVKfh89LNLuAK7/sys_context.png" alt=""><figcaption></figcaption></figure></div>

* **구성요소**

<table><thead><tr><th width="215">구성요소</th><th>설명</th></tr></thead><tbody><tr><td>namespace</td><td>문맥 네임스페이스를 정의하는 값</td></tr><tr><td>param</td><td>문맥 네임스페이스와 관련된 파라미터 이름</td></tr></tbody></table>

* **예제**

다음은 SYS\_CONTEXT 함수를 사용하는 예입니다.

```
SELECT SYS_CONTEXT('USERENV', 'TID') "TID"
FROM DUAL;

TID
---
  1

1 row selected.
```

다음은 지정된 패키지를 통해 ctx0 네임스페이스의 attr0 파라미터 값이 설정되었을 경우 그 값을 SYS\_CONTEXT 함수를 통해 출력하는 예입니다.

```
CREATE OR REPLACE PACKAGE app_context_pkg
IS
    -- 사용자 정의 컨텍스트를 설정하는 프러시저
    PROCEDURE set_app_attr (
        p_namespace IN VARCHAR2,
        p_attribute IN VARCHAR2,
        p_value IN VARCHAR2
    );
END app_context_pkg;
/

-- 컨텍스트 설정을 위한 패키지 본문 (DBMS_SESSION.SET_CONTEXT 호출)
CREATE OR REPLACE PACKAGE BODY app_context_pkg
IS
    PROCEDURE set_app_attr (
            p_namespace IN VARCHAR2,
        p_attribute IN VARCHAR2,
        p_value IN VARCHAR2
    )
    AS
    BEGIN
        -- DBMS_SESSION.SET_CONTEXT를 사용하여 컨텍스트에 값 설정
        DBMS_SESSION.SET_CONTEXT(p_namespace, p_attribute, p_value);
    END set_app_attr;
END app_context_pkg;
/

-- sys 계정에서 namespace 생성
CREATE CONTEXT ctx0 USING TIBERO.app_context_pkg;

-- TIBERO 계정에서 수행
EXEC app_context_pkg.set_app_attr('ctx0', 'attr0', 'val0');

SELECT SYS_CONTEXT('ctx0', 'attr0') "ATTR0" FROM DUAL;

ATTR0                                                           
----------------------------------------------------------------
val0                                                            

1 row selected.
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.tibero.com/tibero-manuals/7.2.6.manuals/sql-reference-guide/functions/sys_context.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
