STL_DDLTEXT - Amazon Redshift

STL_DDLTEXT

다음과 같이 시스템에서 실행된 DDL 문을 수집합니다.

이러한 DDL 문에는 다음 쿼리와 객체가 포함됩니다.

  • CREATE SCHEMA, TABLE, VIEW

  • DROP SCHEMA, TABLE, VIEW

  • ALTER SCHEMA, TABLE

STL_QUERYTEXTSTL_UTILITYTEXT 및 도 참조하십시오.SVL_STATEMENTTEXT 이 보기들은 시스템에서 SQL 명령을 실행한 시간표를 제공하기 때문에 문제 해결 뿐만 아니라 모든 시스템 활동에 대한 감사 추적을 생성하는 데도 유용합니다.

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

STL_DDLTEXT는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.

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

테이블 열

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

샘플 쿼리

다음 쿼리는 이전에 실행된 DDL 문을 포함하는 레코드를 반환합니다.

select xid, starttime, sequence, substring(text,1,40) as text from stl_ddltext order by xid desc, sequence;

다음은 CREATE TABLE 문 4개를 보여주는 출력 샘플입니다. DDL 문은 가독성을 위해 잘린 text 열에 나타납니다.

xid | starttime | sequence | text ------+----------------------------+----------+------------------------------------------ 1806 | 2013-10-23 00:11:14.709851 | 0 | CREATE TABLE supplier ( s_suppkey int4 N 1806 | 2013-10-23 00:11:14.709851 | 1 | s_comment varchar(101) NOT NULL ) 1805 | 2013-10-23 00:11:14.496153 | 0 | CREATE TABLE region ( r_regionkey int4 N 1804 | 2013-10-23 00:11:14.285986 | 0 | CREATE TABLE partsupp ( ps_partkey int8 1803 | 2013-10-23 00:11:14.056901 | 0 | CREATE TABLE part ( p_partkey int8 NOT N 1803 | 2013-10-23 00:11:14.056901 | 1 | ner char(10) NOT NULL , p_retailprice nu (6 rows)

저장된 SQL 재구성

다음 SQL은 STL_DDLTEXT의 text 열에 저장된 행을 나열합니다. 행은 xidsequence로 정렬됩니다. 원래 SQL이 200자 이상의 여러 행인 경우 STL_DDLTEXT는 sequence별로 여러 행을 포함할 수 있습니다.

SELECT xid, sequence, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') WITHIN GROUP (ORDER BY sequence) as query_statement FROM stl_ddltext GROUP BY xid, sequence ORDER BY xid, sequence;
xid | sequence | query_statement --------+-----------+----------------- 7886671 0 create external schema schema_spectrum_uddh\nfrom data catalog\ndatabase 'spectrum_db_uddh'\niam_role ''\ncreate external database if not exists; 7886752 0 CREATE EXTERNAL TABLE schema_spectrum_uddh.soccer_league\n(\n league_rank smallint,\n prev_rank smallint,\n club_name varchar(15),\n league_name varchar(20),\n league_off decimal(6,2),\n le 7886752 1 ague_def decimal(6,2),\n league_spi decimal(6,2),\n league_nspi smallint\n)\nROW FORMAT DELIMITED \n FIELDS TERMINATED BY ',' \n LINES TERMINATED BY '\\n\\l'\nstored as textfile\nLOCATION 's 7886752 2 3://mybucket-spectrum-uddh/'\ntable properties ('skip.header.line.count'='1'); ...

STL_DDLTEXT의 text 열에 저장된 SQL을 재구성하려면 다음 SQL 문을 실행합니다. 그렇게 하면 text 열에 있는 하나 이상의 세그먼트에서 DDL 문이 함께 포함됩니다. 재구성된 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_ddltext GROUP BY xid, endtime order by xid, endtime;
query_statement -------------- create external schema schema_spectrum_uddh\nfrom data catalog\ndatabase 'spectrum_db_uddh'\niam_role ''\ncreate external database if not exists; CREATE EXTERNAL TABLE schema_spectrum_uddh.soccer_league\n(\n league_rank smallint,\n prev_rank smallint,\n club_name varchar(15),\n league_name varchar(20),\n league_off decimal(6,2),\n league_def decimal(6,2),\n league_spi decimal(6,2),\n league_nspi smallint\n)\nROW FORMAT DELIMITED \n FIELDS TERMINATED BY ',' \n LINES TERMINATED BY '\\n\\l'\nstored as textfile\nLOCATION 's3://mybucket-spectrum-uddh/'\ntable properties ('skip.header.line.count'='1');