BIND_VARIABLE_CAPTURE
불필요한 hard parse를 줄이기 위해서 바인드 변수를 많이 사용하는데, SQL에서 바인드 변수를 사용하게 되면 대신 sql_text에 해당 변수 값이 기록되지 않아 디버깅이 어려워질 수 있다. 이런 경우 BIND_VARIABLE_CAPTURE 파라미터를 활성화 하여 해당 변수 값을 기록해둘 수 있다.
사용 방법
system 사용자로 로그인하여 다음 쿼리 수행.
SQL> alter system set BIND_VARIABLE_CAPTURE=Y;
관련 파라미터
BIND_VARIABLE_CAPTURE_MAX_COUNT
v$sql_bind_capture
뷰에서 저장할 최대 변수 개수
BIND_VARIABLE_CAPTURE_INTERVAL
한 가지 플랜에 대하여 매번 바인드 변수를 수집하는 것이 아니라 주기적으로 갱신하게 되는데 이 주기를 지정
BIND_VARIABLE_CAPTURE_MAX_VAR_COUNT
한 가지 쿼리(플랜)에 대하여 저장할 최대 변수 개수
관련 View
V$SQL_BIND_CAPTURE
COLUMN_NAME TYPE CONSTRAINT
---------------------------------------- ------------------ --------------------
SQL_HASH_VALUE NUMBER(38)
PLAN_HASH_VALUE NUMBER(38)
SQL_ID VARCHAR(13)
CHILD_NUMBER NUMBER(38)
USER_ID NUMBER(38)
NAME VARCHAR(128)
POSITION NUMBER(38)
TYPE NUMBER(38)
TYPE_NAME VARCHAR(128)
PRECISION NUMBER(38)
SCALE NUMBER(38)
LENGTH NUMBER(38)
TIME_CAPTURED DATE
VALUE VARCHAR(65532)
v$SQL_BIND_CAPTURE_ALL
COLUMN_NAME TYPE CONSTRAINT
---------------------------------------- ------------------ --------------------
SQL_HASH_VALUE NUMBER(38)
PLAN_HASH_VALUE NUMBER(38)
SQL_ID VARCHAR(13)
CHILD_NUMBER NUMBER(38)
USER_ID NUMBER(38)
NAME VARCHAR(128)
POSITION NUMBER(38)
TYPE NUMBER(38)
TYPE_NAME VARCHAR(128)
PRECISION NUMBER(38)
SCALE NUMBER(38)
LENGTH NUMBER(38)
TIME_CAPTURED DATE
VALUE VARCHAR(65532)