추적 수준 설정하기

TRACE_LEVEL 매개 변수를 사용하여 이벤트 테이블에 저장된 이벤트 추적 데이터의 세부 정보 표시를 관리할 수 있습니다.

TRACE_LEVEL은 오브젝트 매개 변수이자 세션 매개 변수인데, 이는 곧 오브젝트와 세션에 대한 매개 변수를 설정할 수 있다는 의미입니다.

추적 수준 이해하기

TRACE_LEVEL 매개 변수를 통해 이벤트 테이블에 저장되는 추적 이벤트의 범위를 지정할 수 있습니다. TRACE_LEVEL 매개 변수를 다음 값 중 하나로 설정할 수 있습니다.

OFF:

범위 또는 추적 이벤트를 기록하지 않습니다.

ALWAYS:

모든 범위 및 추적 이벤트를 기록합니다.

ON_EVENT:

저장 프로시저 또는 UDF가 이벤트를 명시적으로 추가할 때만 추적 이벤트를 기록합니다.

오브젝트에 대한 추적 수준 설정하기

다음 오브젝트에 대한 추적 수준을 설정할 수 있습니다.

  • 저장 프로시저

  • 사용자 정의 함수(UDF)

  • 저장 프로시저와 UDF를 포함하는 데이터베이스 또는 스키마

오브젝트에 대한 추적 수준을 설정하려면 다음을 수행하십시오.

  1. 오브젝트에 대한 추적 수준을 설정할 권한이 있는지 확인합니다.

    다음 권한이 부여되거나 상속되는 역할을 사용해야 합니다.

    • 계정에 대한 MODIFY TRACE LEVEL 전역 권한

    • TRACE_LEVEL을 설정하려는 오브젝트에 대한 MODIFY 권한

    예를 들어 계정에서 모든 데이터베이스, 스키마, 저장 프로시저 또는 UDF(central_event_admin 역할에 다른 권한이 없는 것까지도 포함)에 대한 추적 수준을 설정할 권한을 central_event_admin 역할에 부여하려면 다음 문을 실행하십시오.

    GRANT MODIFY TRACE LEVEL ON ACCOUNT TO ROLE central_event_admin;
    
    Copy

    저장 프로시저 또는 UDF에서 추적 수준을 설정하려면 역할에 저장 프로시저 또는 UDF를 포함하는 데이터베이스와 스키마에 대한 USAGE 권한도 가지고 있어야 합니다.

  2. ALTER <오브젝트> 명령을 사용하여 오브젝트에 대한 TRACE_LEVEL 매개 변수를 설정합니다.

    예를 들어 특정 UDF에 대한 추적 수준을 설정하려면 ALTER FUNCTION 을 사용하여 해당 UDF의 TRACE_LEVEL 매개 변수를 설정하십시오. 또 다른 예로, 데이터베이스의 모든 함수와 프로시저에 대한 기본 추적 수준을 설정하려면 ALTER DATABASE 를 사용하여 해당 데이터베이스에 대한 TRACE_LEVEL 매개 변수를 설정하십시오.

    다음 예제에서는 데이터베이스 db1 의 모든 함수와 프로시저에 대해 추적 수준을 ON_EVENT 로 설정합니다. 그런 다음 이 예제에서는 UDF f1(int) 에 대해 추적 수준을 ALWAYS 로 재정의합니다.

    USE ROLE central_event_admin;
    
    ALTER DATABASE db1 SET TRACE_LEVEL = ON_EVENT;
    ALTER FUNCTION f1(int) SET TRACE_LEVEL = ALWAYS;
    
    Copy

    TRACE_LEVEL이 다양한 오브젝트에 설정된 경우 Snowflake가 유효 추적 수준을 결정하는 자세한 방법은 Snowflake가 유효 추적 수준을 결정하는 방법 이해하기 섹션을 참조하십시오.

현재 세션에 대한 추적 수준 설정하기

현재 세션에서 이루어진 함수 및 프로시저 호출에 대한 추적 수준을 설정하려면 다음을 수행하십시오.

  1. 오브젝트에 대한 추적 수준을 설정할 권한이 있는지 확인합니다.

    MODIFY SESSION TRACE LEVEL 전역 권한이 부여되거나 상속되는 역할을 사용해야 합니다.

    예를 들어 developer_debugging 역할에 현재 세션의 추적 수준을 설정할 권한을 부여하려면 다음 문을 실행하십시오.

    GRANT MODIFY SESSION TRACE LEVEL ON ACCOUNT TO ROLE developer_debugging;
    
    Copy
  2. ALTER SESSION 명령을 사용하여 현재 세션에 대한 TRACE_LEVEL 매개 변수를 설정합니다.

    USE ROLE developer_debugging;
    
    ALTER SESSION SET TRACE_LEVEL = ALWAYS;
    
    Copy

TRACE_LEVEL 매개 변수가 현재 세션과 해당 세션에서 호출된 함수와 프로시저에 대해 서로 다른 수준으로 설정된 경우 Snowflake가 사용할 유효 추적 수준을 결정합니다. Snowflake가 유효 추적 수준을 결정하는 방법 이해하기 섹션을 참조하십시오.

Snowflake가 유효 추적 수준을 결정하는 방법 이해하기

TRACE_LEVEL은 오브젝트 매개 변수 이자 세션 매개 변수 입니다.

세션 매개 변수와 오브젝트 매개 변수 유형은 모두 수준 계층 구조 가 있어 더 높은 수준에서 설정된 매개 변수를 재정의할 수 있습니다.

  • 세션 매개 변수 의 경우 계층 구조는 계정 » 사용자 » 세션입니다.

    이는 계정에 대한 매개 변수를 설정하고, 사용자에 대한 계정 수준 매개 변수를 재정의하며, 현재 세션에 대한 사용자 수준 매개 변수를 재정의할 수 있다는 뜻입니다.

  • 오브젝트 매개 변수 의 경우 계층 구조는 계정 » 데이터베이스 » 스키마 » 오브젝트입니다.

    이는 계정에 대한 매개 변수를 설정하고, 데이터베이스 또는 스키마에 대한 계정 수준 매개 변수를 재정의하며, 특정 저장 프로시저에 대한 데이터베이스 수준 또는 스키마 수준의 매개 변수와 해당 데이터베이스 또는 스키마의 UDF를 재정의할 수 있다는 뜻입니다.

예를 들어 함수의 TRACE_LEVEL은 함수를 포함한 계정의 TRACE_LEVEL을 재정의합니다. 계정의 TRACE_LEVEL이 ON_EVENT 이고 계정에 있는 UDF의 TRACE_LEVEL이 ALWAYS 인 경우 유효 TRACE_LEVEL(계정이 아닌 함수의 수준)은 ALWAYS 입니다.

다음 예제에서는 계층 구조에서 MY_UDF 함수가 ACCOUNT보다 낮으므로 ALWAYS 추적 수준이 사용됩니다.

ALTER ACCOUNT SET TRACE_LEVEL = ON_EVENT;

ALTER FUNCTION MY_UDF SET TRACE_LEVEL = ALWAYS;
Copy

세션 매개 변수 및 오브젝트 매개 변수 계층 구조에서 모두 TRACE_LEVEL이 설정된 경우 가장 자세한 TRACE_LEVEL이 사용됩니다. 즉, ALWAYSON_EVENTOFF 보다 우선하고 ON_EVENTOFF 보다 우선합니다.

다음 예제에서는 ALWAYS가 OFF보다 더 자세히 표시하므로 ALWAYS 추적 수준이 사용됩니다.

ALTER SESSION SET TRACE_LEVEL = ALWAYS;

ALTER FUNCTION MY_UDF SET TRACE_LEVEL = OFF;
Copy