> For the complete documentation index, see [llms.txt](https://docs.tibero.com/sysmasterdb/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/sysmasterdb/8.4_manual/detail/sql-detail/bind-variable.md).

# Bind Variable

Bind Variable 탭 화면에서는 SQL Detail을 통해 확인되는 SQL에 대해 대상 인스턴스에 캡처되어 있는 바인드 변수 값을 확인할 수 있다. 같은 SQL Text라도 바인딩된 값에 따라 실행 계획과 수행 시간이 달라질 수 있으므로, 느린 수행이 특정 값 때문인지 판단하는 등의 목적으로 사용한다.

이 탭은 **Bind Variable View** 권한([Privileges](/sysmasterdb/8.4_manual/settings/user.md#configurable-privileges))이 부여된 인스턴스에서만 표시된다. 권한이 없으면 탭 자체가 나타나지 않는다.

<div data-with-frame="true"><figure><img src="https://264733866-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fgw24XwSa6QXLFywb7Txd%2Fuploads%2FZZQuAy16OYGmCX81JaQh%2Fimage.png?alt=media&amp;token=c15f5380-6446-4579-9b7d-c4b02b4171e8" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
목록에 표시되는 값은 **대상 인스턴스에 가장 최근 캡처된 값**이며, SQL Detail 진입 시 선택한 SQL 수행 과거 이력 조회 기간의 값이 아니다.&#x20;

바인드 변수 값은 대상 데이터베이스가 캡처해 둔 것을 조회하는 것이므로, 캡처가 꺼져 있었거나 캡처 주기 사이에 수행된 SQL의 값은 존재하지 않을 수 있다.
{% endhint %}

캡처된 값이 없으면 다음과 같이 표시된다.

* **No Captured Bind Variables**
* This SQL may not use bind variables, capture may not have occurred yet, or the target instance could not be queried.

이는 (1) 해당 SQL이 바인드 변수를 사용하지 않거나, (2) 아직 캡처가 일어나지 않았거나, (3) 대상 인스턴스가 조회 불가 상태인 등의 경우에 발생할 수 있다.

#### **바인드 변수 목록**

<table><thead><tr><th width="193">항목</th><th>설명</th></tr></thead><tbody><tr><td>Name</td><td>바인드 변수의 이름</td></tr><tr><td>Position</td><td>SQL 문 내에서 해당 바인드 변수의 위치 (순서 번호)</td></tr><tr><td>Data Type</td><td>바인드 변수의 데이터 타입</td></tr><tr><td>User Name</td><td>해당 값이 캡처될 당시 SQL을 수행한 데이터베이스 사용자 이름</td></tr><tr><td>Captured At</td><td><p>해당 값이 캡처된 시각</p><p>(SQL이 실제로 수행된 시각이 아닌 <strong>캡처된 시각)</strong></p></td></tr><tr><td>Child Number</td><td>같은 SQL의 실행 계획을 구분하는 번호</td></tr><tr><td>Plan Hash Value</td><td>실행 계획의 해시 값</td></tr><tr><td>Value</td><td><p>캡처된 바인드 값으로, 값이 긴 경우 요약 표시됨.</p><p>클릭 시 <strong>Bind Value Detail</strong> 을 통해 전체 값 확인 가능</p></td></tr></tbody></table>

{% hint style="info" %}
같은 SQL, 같은 Position이라도 재캡처될 수 있으므로, 목록에는 Captured At이 다른 여러 행이 함께 표시될 수 있다.

Value는 목록에서 80자까지만 표시하고, 그보다 긴 값은 뒤에 `(truncated)`를 붙여 잘렸음을 표시한다. 전체 값은 Value를 클릭해 확인한다.
{% endhint %}

#### Bind Value Detail (값 상세보기)

Value를 클릭하면 해당 바인드 값의 전체 원문을 확인할 수 있는 창이 열린다.

<div data-with-frame="true"><figure><img src="https://264733866-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fgw24XwSa6QXLFywb7Txd%2Fuploads%2FtvR649gUEemqD8anlWpL%2Fimage.png?alt=media&amp;token=49dd544e-5795-4a1a-8cef-dcb37bfa8d31" alt=""><figcaption></figcaption></figure></div>

창 상단에는 해당 값의 식별 정보(Position, Data Type, Child Number, Plan Hash Value, Captured at)가, 아래에는 값의 원문이 표시된다. **\[Copy]** 버튼으로 값 전체를 클립보드에 복사할 수 있다.

{% hint style="info" %}
목록에서 값이 잘려 표시된 경우에는 창을 열 때 대상 인스턴스에서 원문을 다시 조회한다. 그 사이 해당 값이 더 최근 캡처로 교체되었거나 캐시에서 제거된 경우에는 원문을 가져오지 못할 수 있으며, 이때는 목록에 표시되던 요약 값이 그대로 표시된다.
{% endhint %}

#### Capture 상태 확인 및 설정

목록 상단 도구 영역을 통해 대상 인스턴스의 바인드 변수 캡처 상태를 확인하고, 캡처 사용 여부와 캡처 주기를 변경할 수 있다.

<div data-with-frame="true"><figure><img src="https://264733866-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fgw24XwSa6QXLFywb7Txd%2Fuploads%2FwUEKzessj9vbafdUW0dN%2Fimage.png?alt=media&amp;token=ac1693c7-b7c3-4089-b891-9450b2a22303" alt=""><figcaption></figcaption></figure></div>

**Capture 상태**

<table><thead><tr><th width="145">상태</th><th>설명</th></tr></thead><tbody><tr><td><strong>On</strong></td><td>바인드 변수 캡처 활성화 상태 (SQL이 수행되면 새 값이 기록됨)</td></tr><tr><td><strong>Off</strong></td><td>바인드 변수 캡처 비활성화 상태 (새 값을 기록하려면 캡처 활성화 필요)</td></tr><tr><td><strong>Unknown</strong></td><td>대상 인스턴스에서 캡처 설정을 조회하지 못한 상태<br>연결과 설정을 확인해야 하며, 이 상태에서는 설정 변경과 Capture Parameters 조회 불가</td></tr></tbody></table>

**설정 패널**

톱니바퀴 아이콘을 클릭하면 **Bind Variable Capture** 설정 패널이 열린다. 변경 내용은 **대상 데이터베이스에 `ALTER SYSTEM`으로 즉시 적용**된다.

<table><thead><tr><th width="211">항목</th><th>설명</th></tr></thead><tbody><tr><td>On / Off 토글</td><td>대상 인스턴스의 바인드 변수 캡처 사용 여부를 변경<br>토글을 바꾸면 확인 창이 열리며, [Confirm]을 클릭해야 적용된다</td></tr><tr><td>Capture Interval</td><td><p>캡처와 캡처 사이의 최소 간격(초)</p><p><strong>0 ~ 86,400</strong> 사이의 정수를 입력하고 <strong>[Apply]</strong>를 클릭해 적용</p><p>(이미 적용된 값과 같으면 버튼이 <strong>[Applied]</strong>로 표시)</p></td></tr></tbody></table>

Capture가 Off인 상태에서는 Capture Interval을 입력하거나 적용할 수 없으며, 범위를 벗어난 값을 입력하면 오류 메세지가 표시된다.

{% hint style="warning" %}
캡처를 켜면 **대상 인스턴스의 리소스 사용량이 늘어날 수 있다.** 필요한 경우에만 켜는 것을 권장한다.

캡처를 끄면 이후 새로운 값은 기록되지 않는다. 이미 캡처된 값은 그대로 유지된다.

캡처 설정에 따른 상세 동작은 모니터링 대상 DB 인스턴스 동작을 따른다.
{% endhint %}

**Capture Parameters**

도구 영역의 목록 아이콘을 클릭하면 대상 인스턴스에 설정되어 있는 바인드 변수 캡처 관련 파라미터를 조회할 수 있다. 조회 전용이며, 이 창에서 값을 변경할 수는 없다.

조회 대상 파라미터 종류는 모니터링 대상 Tibero 버전에 따라 다를 수 있다. 기본적으로 해당 Tibero 인스턴스에서 제공되는 Bind Variable Capture 파라미터를 모두 보여준다.

<div data-with-frame="true"><figure><img src="https://264733866-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fgw24XwSa6QXLFywb7Txd%2Fuploads%2Fik25gt51Unr7pHNrjzaN%2Fimage.png?alt=media&amp;token=df986a00-69ed-402a-b65b-3f28d98372f1" alt=""><figcaption></figcaption></figure></div>

<table><thead><tr><th width="377">파라미터</th><th>설명</th></tr></thead><tbody><tr><td>BIND_VARIABLE_CAPTURE</td><td>Bind Variable Capture 사용 여부</td></tr><tr><td>BIND_VARIABLE_CAPTURE_INTERVAL</td><td>Bind Variable Capture 실행 주기 (초)</td></tr><tr><td>BIND_VARIABLE_CAPTURE_ALLOC_COUNT</td><td>Bind Variable Capture용 슬레이브 할당자 수</td></tr><tr><td>BIND_VARIABLE_CAPTURE_KEEP_FIRST</td><td>플랜의 첫 번째 바인드 변수 캡처 유지 여부</td></tr><tr><td>BIND_VARIABLE_CAPTURE_MAX_COUNT</td><td>Bind Variable Capture가 저장 가능한 바인드 변수 최대 개수</td></tr><tr><td>BIND_VARIABLE_CAPTURE_MAX_VAR_COUNT</td><td>단일 쿼리에서 캡처 가능한 바인드 변수의 최대 개수</td></tr><tr><td>BIND_VARIABLE_CAPTURE_POOL_SIZE</td><td>Bind Variable Capture 풀 크기</td></tr><tr><td>BIND_VARIABLE_CAPTURE_POOL_PCTDEL</td><td>Bind Variable Capture 풀에서 삭제할 변수 비율</td></tr></tbody></table>

{% hint style="info" %}
SysMasterDB 화면에서는 `BIND_VARIABLE_CAPTURE`(캡처 사용 여부)와 `BIND_VARIABLE_CAPTURE_INTERVAL`(캡처 주기) 파라미터만 변경을 지원한다. 그 외 파라미터는 조회만 가능하며, 변경이 필요하면 데이터베이스 관리자를 통해 직접 설정해야 한다.
{% endhint %}

#### Bind Variable View 권한

Bind Variable 탭은 [**\[Settings\] > \[User\]** 의 Configurable Privileges](/sysmasterdb/8.4_manual/settings/user.md#configurable-privileges) 중 **Bind Variable View** 권한이 부여된 인스턴스에서만 사용할 수 있다. 인스턴스 단위로 부여하는 권한이며, 권한이 없는 인스턴스에서는 탭이 표시되지 않고 관련 조회 및 설정도 차단된다.

기본값은 Admin 이상 사용자에게만 부여되며, 일반 사용자의 경우 Admin으로부터 Bind Variable View 권한을 부여받아야 해당 기능을 사용할 수 있다.

{% hint style="warning" %}
바인드 변수 값에는 실제 업무 데이터가 그대로 담길 수 있다. **개인정보 등 민감한 데이터가 포함될 수 있으므로 권한 부여 대상을 신중히 결정해야 한다.**

또한 **이 권한이 부여된 사용자**는 값 조회뿐 아니라 **대상 인스턴스의 캡처 설정(사용 여부·주기) 변경도 할 수 있다.**
{% endhint %}

{% hint style="info" %}
Bind Variable 탭은 SQL Detail 화면과 Session Detail의 SQL Detail 탭에서 동일하게 제공된다. 표와 기능은 같고, 조회 대상 SQL을 어떤 진입 경로로 선택했는지만 다르다.

바인드 변수 캡처 기능을 지원하지 않는 버전의 Tibero에서는 값을 조회할 수 없으며, 이때 캡처 상태는 Unknown으로 표시된다.
{% endhint %}
