

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# STL\_UTILITYTEXT
<a name="r_STL_UTILITYTEXT"></a>

SELECT를 제외하고 데이터베이스에서 실행된 SQL 명령 텍스트를 수집합니다.

STL\_UTILITYTEXT 뷰에 대한 쿼리를 실행하여 다음과 같이 시스템에서 실행된 SQL 문의 하위 집합을 수집합니다.
+ ABORT, BEGIN, COMMIT, END, ROLLBACK
+ ANALYZE
+ CALL
+ CANCEL
+ COMMENT
+ CREATE, ALTER, DROP DATABASE
+ CREATE, ALTER, DROP USER
+ EXPLAIN
+ GRANT, REVOKE
+ LOCK
+ reset
+ SET
+ SHOW
+ TRUNCATE

[STL\_DDLTEXT](r_STL_DDLTEXT.md)[STL\_QUERYTEXT](r_STL_QUERYTEXT.md) 및 도 참조하세요.[SVL\_STATEMENTTEXT](r_SVL_STATEMENTTEXT.md)

STARTTIME 열과 ENDTIME 열은 일정 시간 동안 기록된 문을 확인하는 데 사용됩니다. 긴 SQL 텍스트 블록은 200개 문자의 길이로 구분되며, SEQUENCE 열에서 단일 문에 속하는 텍스트 조각을 식별할 수 있습니다.

STL\_UTILITYTEXT 시스템 테이블은 구체화된 뷰의 MANUAL 및 AUTO REFRESH 작업을 모두 지원합니다. 구체화된 뷰에서 AUTO REFRESH를 식별하려면 `label` 열을 찾습니다. 모든 AUTO REFRESH 쿼리에는 값이 `maintenance`인 레이블이 있습니다.

STL\_UTILITYTEXT는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 [시스템 테이블 및 뷰에 있는 데이터의 가시성](cm_chap_system-tables.md#c_visibility-of-data) 섹션을 참조하세요.

이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 [SYS\_QUERY\_HISTORY](SYS_QUERY_HISTORY.md)에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.

## 테이블 열
<a name="r_STL_UTILITYTEXT-table-columns"></a>


| 열 이름  | 데이터 유형  | 설명  | 
| --- | --- | --- | 
| userid | 정수 | 항목을 생성한 사용자의 ID. | 
| xid  | bigint  | 트랜잭션 ID. | 
| pid  | 정수  | 쿼리 문과 연결된 프로세스 ID  | 
| 레이블  | character(320)  | 쿼리 실행에 사용되는 파일의 이름 또는 SET QUERY\_GROUP 명령을 사용하여 정의되는 레이블. 쿼리가 파일 기반이 아니거나 QUERY\_GROUP 파라미터가 설정되지 않은 경우, 이 필드의 값은 공백입니다. | 
| starttime | timestamp | 쿼리 시작 시간(UTC) 총 시간에는 대기 및 실행이 포함되며 소수점 이하 자릿수는 6자리입니다. 예를 들면 2009-06-12 11:29:19.131358입니다. | 
| endtime | timestamp | 쿼리가 완료된 시간(UTC)입니다. 총 시간에는 대기 및 실행이 포함되며 소수점 이하 자릿수는 6자리입니다. 예를 들면 2009-06-12 11:29:19.131358입니다. | 
| SEQUENCE  | 정수  | 단일 문에 200자 이상이 포함된 경우, 해당 문에 대해 추가 행이 기록됩니다. 시퀀스 0이 첫 번째 행이고 1이 두 번째 행이 되는 방식입니다. | 
| 텍스트  | character(200)  | 200자씩 증가하는 SQL 텍스트. 이 필드에는 백슬래시(\\\\) 및 줄 바꿈(\\n) 등의 특수 문자가 포함될 수 있습니다. | 

## 샘플 쿼리
<a name="r_STL_UTILITYTEXT-sample-queries"></a>

다음은 2012년 1월 26일에 실행된 "utility" 명령 텍스트를 반환하는 쿼리입니다. 여기에서는 SET 명령 몇 개와 SHOW ALL 명령 1개가 실행되었습니다.

```
select starttime, sequence, rtrim(text)
from stl_utilitytext
where starttime like '2012-01-26%'
order by starttime, sequence;

starttime          | sequence |              rtrim
---------------------------+-----+----------------------------------
2012-01-26 13:05:52.529235 |   0 | show all;
2012-01-26 13:20:31.660255 |   0 | SET query_group to ''
2012-01-26 13:20:54.956131 |   0 | SET query_group to 'soldunsold.sql'
...
```

### 저장된 SQL 재구성
<a name="r_STL_UTILITYTEXT-reconstruct-sql"></a>

STL\_UTILITYTEXT의 `text` 열에 저장된 SQL을 재구성하려면 SELECT 문을 실행하여 `text` 열의 1개 이상의 부분에서 SQL을 생성합니다. 재구성된 SQL을 실행하기 전에 모든 (`\n`) 특수 문자를 줄 바꿈으로 바꿉니다. 다음 SELECT 문의 결과는 `query_statement` 필드에서 재구성된 SQL의 행입니다.

```
SELECT LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement 
FROM stl_utilitytext GROUP BY xid order by xid;
```

예를 들어 다음 쿼리는 query\_group을 제로 문자열로 설정합니다. 쿼리 자체는 200자 이상이며 STL\_UTILITYTEXT에 여러 부분으로 저장됩니다.

```
set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000                  000000';
```

이 예제에서 이 쿼리는 STL\_UTILITYTEXT의 `text` 열에 많은 두 부분(행)으로 저장됩니다.

```
select query, sequence, text
from stl_utilitytext where query=pg_last_query_id() order by query desc, sequence limit 10;
```

```
         starttime          | sequence |                                                                                                   text                                                                                                   
----------------------------+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 2019-07-23 22:55:34.926198 |        0 | set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000\n0000000000000000000000000000000000000000000000000000000000000000000000000000000000
 2019-07-23 22:55:34.926198 |        1 |                   000000';
```

STL\_UTILITYTEXT에 저장된 SQL을 재구성하려면 다음 SQL을 실행합니다.

```
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS query_statement 
from stl_utilitytext where query=pg_last_query_id();
```

클라이언트에서 재구성된 SQL을 사용하려면 모든 (`\n`) 특수 문자를 줄 바꿈으로 바꿉니다.

```
                                                                                                                                      query_statement                                                                                                                                       
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000\n0000000000000000000000000000000000000000000000000000000000000000000000000000000000                  000000';
```