SVL_STORED_PROC_MESSAGES - Amazon Redshift

SVL_STORED_PROC_MESSAGES

시스템 뷰 SVL_STORED_PROC_MESSAGES를 쿼리하여 저장 프로시저 메시지에 대한 정보를 가져올 수 있습니다. 저장 프로시저 호출이 취소된 경우에도 발생한 메시지가 기록됩니다. 각 저장 프로시저 호출은 쿼리 ID를 수신합니다. 기록된 메시지의 최소 수준을 설정하는 방법에 대한 자세한 내용은 stored_proc_log_min_messages를 참조하십시오.

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

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

테이블 열

열 명칭 데이터 유형 설명
userid 정수 문을 실행하는 데 사용된 권한을 소유한 사용자의 ID입니다. 이 호출이 SECURITY DEFINER 저장 프로시저 내에서 중첩된 경우, 이는 해당 저장 프로시저 소유자의 userid입니다.
session_userid 정수 세션 생성자이자 최상위 저장 프로시저 호출의 호출자인 사용자의 ID입니다.
pid 정수 프로세스 ID.
xid bigint 프로시저 호출 쿼리의 트랜잭션 ID입니다.
쿼리 정수 프로시저 호출의 쿼리 ID입니다.
recordtime 타임스탬프 메시지가 발생한 시간(UTC)입니다.
loglevel 정수 발생한 메시지의 로그 수준의 숫자 값입니다. 가능한 값: 20 – LOG 30의 경우 – INFO 40의 경우 – NOTICE 50의 경우 – WARNING 60의 경우 – EXCEPTION의 경우
loglevel_text character(10) loglevel의 숫자 값에 해당하는 로그 수준입니다. 가능한 값: LOG, INFO, NOTICE, WARNING, EXCEPTION.
message character(1024) 발생한 메시지의 텍스트입니다.
linenum 정수 발생한 문의 행 번호입니다.
querytext 문자(500) 프로시저 호출 쿼리의 실제 텍스트입니다.
레이블 character(320) 쿼리 실행에 사용되는 파일의 이름 또는 SET QUERY_GROUP 명령을 사용하여 정의되는 레이블. 쿼리가 파일 기반이 아니거나 QUERY_GROUP 파라미터가 설정되지 않은 경우, 이 필드의 값은 기본값입니다.
aborted 정수 저장 프로시저가 시스템에 의해 중지되거나 사용자에 의해 취소되는 경우, 이 열에 1이 포함됩니다. 호출이 실행되어 완료되면 이 열에 0이 포함됩니다.
message_xid bigint 발생한 메시지의 트랜잭션 ID입니다.

샘플 쿼리

다음 SQL 문은 SVL_STORED_PROC_MESSAGES를 사용하여 발생한 메시지를 검토하는 방법을 보여 줍니다.

-- Create and run a stored procedure CREATE OR REPLACE PROCEDURE test_proc1(f1 int) AS $$ BEGIN RAISE INFO 'Log Level: Input f1 is %',f1; RAISE NOTICE 'Notice Level: Input f1 is %',f1; EXECUTE 'select invalid'; RAISE NOTICE 'Should not print this'; EXCEPTION WHEN OTHERS THEN raise exception 'EXCEPTION level: Exception Handling'; END; $$ LANGUAGE plpgsql; -- Call this stored procedure CALL test_proc1(2); -- Show raised messages with level higher than INFO SELECT query, recordtime, loglevel, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE loglevel > 30 AND query = 193 ORDER BY recordtime; query | recordtime | loglevel | loglevel_text | message | aborted -------+----------------------------+----------+---------------+-------------------------------------+--------- 193 | 2020-03-17 23:57:18.277196 | 40 | NOTICE | Notice Level: Input f1 is 2 | 1 193 | 2020-03-17 23:57:18.277987 | 60 | EXCEPTION | EXCEPTION level: Exception Handling | 1 (2 rows) -- Show raised messages at EXCEPTION level SELECT query, recordtime, loglevel, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE loglevel_text = 'EXCEPTION' AND query = 193 ORDER BY recordtime; query | recordtime | loglevel | loglevel_text | message | aborted -------+----------------------------+----------+---------------+-------------------------------------+--------- 193 | 2020-03-17 23:57:18.277987 | 60 | EXCEPTION | EXCEPTION level: Exception Handling | 1

다음 SQL 문은 SVL_STORED_PROC_MESSAGES를 사용하여 저장 프로시저를 생성할 때 SET 옵션을 사용하여 발생한 메시지를 검토하는 방법을 보여줍니다. test_proc()의 최소 로그 수준은 NOTICE이므로 NOTICE, WARNING, EXCEPTION 수준 메시지만 SVL_STORED_PROC_MESSAGES에 기록됩니다.

-- Create a stored procedure with minimum log level of NOTICE CREATE OR REPLACE PROCEDURE test_proc() AS $$ BEGIN RAISE LOG 'Raise LOG messages'; RAISE INFO 'Raise INFO messages'; RAISE NOTICE 'Raise NOTICE messages'; RAISE WARNING 'Raise WARNING messages'; RAISE EXCEPTION 'Raise EXCEPTION messages'; RAISE WARNING 'Raise WARNING messages again'; -- not reachable END; $$ LANGUAGE plpgsql SET stored_proc_log_min_messages = NOTICE; -- Call this stored procedure CALL test_proc(); -- Show the raised messages SELECT query, recordtime, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE query = 149 ORDER BY recordtime; query | recordtime | loglevel_text | message | aborted -------+----------------------------+---------------+--------------------------+--------- 149 | 2020-03-16 21:51:54.847627 | NOTICE | Raise NOTICE messages | 1 149 | 2020-03-16 21:51:54.84766 | WARNING | Raise WARNING messages | 1 149 | 2020-03-16 21:51:54.847668 | EXCEPTION | Raise EXCEPTION messages | 1 (3 rows)