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)