ALTER DATABASE

기존 데이터베이스의 속성을 수정합니다.

데이터베이스 수정은 다음을 포함합니다.

  • 데이터베이스 이름 변경 또는 Time Travel 데이터 보존 기간 변경(Snowflake Enterprise Edition 이상을 사용하는 경우).

  • 데이터베이스 복제 및 장애 조치 사용 및 관리.

참고 항목:

CREATE DATABASE , DESCRIBE DATABASE , DROP DATABASE , SHOW DATABASES , UNDROP DATABASE

구문

ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_db_name>

ALTER DATABASE [ IF EXISTS ] <name> SWAP WITH <target_db_name>

ALTER DATABASE [ IF EXISTS ] <name> SET [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
                                        [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
                                        [ EXTERNAL_VOLUME = <external_volume_name> ]
                                        [ CATALOG = <catalog_integration_name> ]
                                        [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                        [ LOG_LEVEL = '<log_level>' ]
                                        [ TRACE_LEVEL = '<trace_level>' ]
                                        [ COMMENT = '<string_literal>' ]

ALTER DATABASE <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER DATABASE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER DATABASE [ IF EXISTS ] <name> UNSET { DATA_RETENTION_TIME_IN_DAYS         |
                                            MAX_DATA_EXTENSION_TIME_IN_DAYS     |
                                            EXTERNAL_VOLUME                     |
                                            CATALOG                             |
                                            DEFAULT_DDL_COLLATION               |
                                            COMMENT
                                          }
                                          [ , ... ]
Copy

데이터베이스 복제 및 장애 조치 구문

데이터베이스 복제

ALTER DATABASE <name> ENABLE REPLICATION TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ] [ IGNORE EDITION CHECK ]

ALTER DATABASE <name> DISABLE REPLICATION [ TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ] ]

ALTER DATABASE <name> REFRESH
Copy

데이터베이스 장애 조치

ALTER DATABASE <name> ENABLE FAILOVER TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ]

ALTER DATABASE <name> DISABLE FAILOVER [ TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ] ]

ALTER DATABASE <name> PRIMARY
Copy

매개 변수

name

변경할 데이터베이스의 식별자를 지정합니다. 식별자에 공백, 특수 문자 또는 대/소문자가 혼합된 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

RENAME TO new_db_name

데이터베이스의 새 식별자를 지정하며, 계정에 고유한 식별자여야 합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

오브젝트의 이름이 바뀌면 그 오브젝트를 참조하는 다른 오브젝트도 새 이름으로 업데이트해야 합니다.

SWAP WITH target_db_name

지정된 두 데이터베이스 간에 식별자를 포함한 모든 오브젝트(스키마, 테이블, 뷰 등)와 메타데이터를 교환합니다. 또한, 데이터베이스와 데이터베이스에 포함된 오브젝트에 부여된 모든 액세스 제어 권한도 교환합니다. SWAP WITH 는 본질적으로 두 데이터베이스 모두의 이름 바꾸기를 단일 작업으로 수행합니다.

SET ...

데이터베이스를 위해 설정할 하나 이상의 속성을 지정합니다(공백, 쉼표 또는 줄 바꿈으로 구분됨).

DATA_RETENTION_TIME_IN_DAYS = num

데이터베이스에서 Time Travel 작업(CLONE 및 UNDROP)을 수행할 수 있는 일수뿐 아니라, 데이터베이스에서 생성된 모든 스키마의 기본 Time Travel 보존 시간도 지정합니다.

지정할 수 있는 값은 다음과 같이 사용 중인 Snowflake Edition에 따라 다릅니다.

  • Standard Edition: 0 또는 1

  • Enterprise Edition(또는 그 이상): 0 ~ 90

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Snowflake가 테이블의 스트림이 부실해지는 것을 방지하기 위해 데이터베이스에 있는 테이블의 데이터 보존 기간을 연장할 수 있는 최대 일수를 지정하는 오브젝트 매개 변수입니다.

이 매개 변수에 대한 자세한 설명은 MAX_DATA_EXTENSION_TIME_IN_DAYS 섹션을 참조하십시오.

EXTERNAL_VOLUME = external_volume_name

Iceberg 테이블 에 사용할 기본 외부 볼륨을 지정하는 오브젝트 매개 변수입니다.

이 매개 변수에 대한 자세한 내용은 EXTERNAL_VOLUME 를 참조하십시오.

CATALOG = catalog_integration_name

Iceberg 테이블 에 사용할 기본 카탈로그 통합을 지정하는 오브젝트 매개 변수입니다.

이 매개 변수에 대한 자세한 내용은 CATALOG 를 참조하십시오.

DEFAULT_DDL_COLLATION = 'collation_specification'

다음에 대한 기본 데이터 정렬 사양 을 지정합니다.

  • 데이터베이스의 기존 테이블에 추가된 모든 새 열.

  • 새 테이블의 모든 열이 데이터베이스에 추가됩니다.

이 매개 변수를 설정해도 기존 열의 데이터 정렬 사양은 변경되지 않습니다.

이 매개 변수에 대한 자세한 내용은 DEFAULT_DDL_COLLATION 을 참조하십시오.

LOG_LEVEL = 'log_level'

수집하여 활성 이벤트 테이블에서 사용 가능하도록 해야 하는 메시지의 심각도 수준을 지정합니다. 지정된 수준과 더 심각한 수준의 메시지가 수집됩니다.

수준에 대한 자세한 내용은 LOG_LEVEL 섹션을 참조하십시오. 로그 수준 설정에 대한 자세한 내용은 로그 수준 설정하기 섹션을 참조하십시오.

TRACE_LEVEL = 'trace_level'

추적 이벤트가 이벤트 테이블에 수집되는 방식을 제어합니다.

수준에 대한 자세한 내용은 TRACE_LEVEL 섹션을 참조하십시오. 추적 수준 설정에 대한 자세한 내용은 추적 수준 설정하기 섹션을 참조하십시오.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

태그 이름과 태그 문자열 값을 지정합니다.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.

문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.

COMMENT = 'string_literal'

데이터베이스에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.

UNSET ...

데이터베이스에 대해 설정 해제할 하나 이상의 속성 및/또는 매개 변수를 지정하여 이들을 기본값으로 재설정합니다.

  • DATA_RETENTION_TIME_IN_DAYS

  • MAX_DATA_EXTENSION_TIME_IN_DAYS

  • EXTERNAL_VOLUME

  • CATALOG

  • DEFAULT_DDL_COLLATION

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

단일 ALTER 문으로 여러 속성/매개 변수를 재설정할 수 있지만, 각 속성/매개 변수는 쉼표로 구분해야 합니다. 속성/매개 변수를 재설정할 때는 이름만 지정하십시오. 속성 값을 지정하면 오류가 반환됩니다.

데이터베이스 복제 및 장애 조치 매개 변수

ENABLE REPLICATION TO ACCOUNTS account_identifier [ , account_identifier ... ]

복제를 위한 기본 데이터베이스 역할을 하도록 로컬 데이터베이스를 승격합니다. 기본 데이터베이스는 하나 이상의 계정에서 복제할 수 있으므로, 해당 계정의 사용자가 각 보조 (즉, 복제본) 데이터베이스의 오브젝트를 쿼리할 수 있습니다.

또는 기존의 기본 데이터베이스를 수정하여 데이터베이스 복제본을 저장할 수 있는 계정의 목록에 추가하거나 이 목록에서 제거합니다.

이 데이터베이스의 복제본을 저장할 수 있는 조직의 계정이 나열된 쉼표로 구분된 목록을 제공합니다.

account_identifier

계정의 고유 식별자입니다. 기본 설정된 식별자는 organization_name.account_name 입니다. 조직에서 복제를 위해 활성화한 계정의 목록을 보려면 SHOW REPLICATION ACCOUNTS 를 쿼리하십시오.

레거시 계정 로케이터를 계정 식별자로 사용할 수도 있지만, 앞으로는 작동하지 않을 수 있으므로 사용하지 않는 것이 좋습니다. 계정 로케이터를 계정 식별자로 사용하는 방법에 대한 자세한 내용은 데이터베이스 복제 및 장애 조치 사용법 노트 를 참조하십시오.

IGNORE EDITION CHECK

다음과 같은 상황에서 하위 에디션의 계정에 데이터 복제를 허용합니다.

  • 기본 데이터베이스가 Business Critical 이상 계정에 있지만, 복제를 위해 승인된 하나 이상의 계정이 하위 에디션에 있는 경우. Business Critical Edition은 극히 민감한 데이터가 있는 Snowflake 계정을 위한 것입니다.

  • 기본 데이터베이스가 Business Critical(또는 그 이상) 계정에 있고 HIPAA 및 HITRUST 규정에 따라 계정에 PHI 데이터를 저장하기 위해 서명된 비즈니스 제휴 계약이 마련되어 있지만, 복제를 위해 승인된 하나 이상의 계정이 Business Critical(또는 그 이상) 계정인지와는 관계없이 이런 계정에 대해 그와 같은 계약이 준비되어 있지 않은 경우.

Business Critical(또는 그 이상) 계정의 계정 관리자가 실수로 민감한 데이터를 하위 에디션의 계정으로 복제하는 것을 방지하려고 두 가지 상황은 모두 기본적으로 금지됩니다.

DISABLE REPLICATION [ TO ACCOUNTS account_identifier [ , account_identifier ... ] ]

이 기본 데이터베이스의 복제를 비활성화합니다. 즉, 다른 계정에서는 이 데이터베이스의 복제본(예: 보조 데이터베이스)을 새로 고칠 수 없다는 뜻입니다. 모든 보조 데이터베이스가 기본 데이터베이스에 연결된 상태로 유지되지만, 보조 데이터베이스 새로 고침 요청은 거부됩니다.

기본 데이터베이스에 대한 복제를 비활성화해도 같은 계정으로 복제되는 것을 방지할 수 없으므로, 데이터베이스는 SHOW REPLICATION DATABASES 출력에 계속 나열됩니다.

조직의 계정이 나열된 쉼표로 구분된 목록을 선택적으로 제공하여 지정된 계정에서만 이 데이터베이스에 대한 복제를 비활성화합니다.

account_identifier

계정의 고유 식별자입니다. 기본 설정된 식별자는 organization_name.account_name 입니다. 조직에서 복제를 위해 활성화한 계정의 목록을 보려면 SHOW REPLICATION ACCOUNTS 를 쿼리하십시오.

레거시 계정 로케이터를 계정 식별자로 사용할 수도 있지만, 앞으로는 작동하지 않을 수 있으므로 사용하지 않는 것이 좋습니다. 계정 로케이터를 계정 식별자로 사용하는 방법에 대한 자세한 내용은 데이터베이스 복제 및 장애 조치 사용법 노트 를 참조하십시오.

REFRESH

기본 데이터베이스의 스냅샷에서 보조 데이터베이스를 새로 고칩니다. 스냅샷에는 오브젝트 및 데이터 변경 사항이 포함됩니다.

ENABLE FAILOVER TO ACCOUNTS account_identifier [ , account_identifier ... ]

이 기본 데이터베이스의 복제본이 기본 데이터베이스 역할을 하도록 승격할 수 있는 조직의 계정이 나열된 쉼표로 구분된 목록을 지정합니다.

account_identifier

계정의 고유 식별자입니다. 기본 설정된 식별자는 organization_name.account_name 입니다. 조직에서 복제를 위해 활성화한 계정의 목록을 보려면 SHOW REPLICATION ACCOUNTS 를 쿼리하십시오.

레거시 계정 로케이터를 계정 식별자로 사용할 수도 있지만, 앞으로는 작동하지 않을 수 있으므로 사용하지 않는 것이 좋습니다. 계정 로케이터를 계정 식별자로 사용하는 방법에 대한 자세한 내용은 데이터베이스 복제 및 장애 조치 사용법 노트 를 참조하십시오.

DISABLE FAILOVER [ TO ACCOUNTS account_identifier [ , account_identifier ... ] ]

이 기본 데이터베이스에 대한 장애 조치를 비활성화하는데, 이는 이 데이터베이스의 어떤 복제본(즉, 보조 데이터베이스)도 기본 데이터베이스 역할을 하도록 승격할 수 없다는 뜻입니다.

조직의 계정이 나열된 쉼표로 구분된 목록을 선택적으로 제공하여 지정된 계정에서만 이 데이터베이스에 대한 장애 조치를 비활성화합니다.

account_identifier

계정의 고유 식별자입니다. 기본 설정된 식별자는 organization_name.account_name 입니다. 조직에서 복제를 위해 활성화한 계정의 목록을 보려면 SHOW REPLICATION ACCOUNTS 를 쿼리하십시오.

레거시 계정 로케이터를 계정 식별자로 사용할 수도 있지만, 앞으로는 작동하지 않을 수 있으므로 사용하지 않는 것이 좋습니다. 계정 로케이터를 계정 식별자로 사용하는 방법에 대한 자세한 내용은 데이터베이스 복제 및 장애 조치 사용법 노트 를 참조하십시오.

PRIMARY

지정된 보조(복제본) 데이터베이스를 기본 데이터베이스로 사용하도록 승격합니다. 승격되면 데이터베이스가 쓰기 가능한 상태가 됩니다. 그와 동시에, 이전의 기본 데이터베이스는 읽기 전용 보조 데이터베이스가 됩니다.

사용법 노트

  • 데이터베이스 이름을 바꾸려면 이 작업의 수행에 사용되는 역할에 데이터베이스에 대한 CREATE DATABASE 전역 권한과 OWNERSHIP 권한이 있어야 합니다.

  • 두 데이터베이스를 서로 바꾸려면 작업을 수행하는 데 사용되는 역할에 두 데이터베이스 모두에 대한 OWNERSHIP 권한이 있어야 합니다.

  • 주석을 업데이트하려면 작업을 수행하는 데 사용되는 역할에 데이터베이스에 대한 MODIFY 권한이 부여되거나 상속되어야 합니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

데이터베이스 복제 및 장애 조치 사용법 노트

참고

계정 복제 기능 을 사용하여 데이터베이스를 복제하는 것이 좋습니다. 복제 및 장애 조치 그룹 을 사용하면 그룹의 오브젝트에 대한 특정 시점 일관성을 유지하며 여러 데이터베이스와 다른 계정 오브젝트를 복제할 수 있습니다. 제공되는 기능지원되는 오브젝트 의 전체 목록은 여러 계정에 걸쳐 복제 및 장애 조치 도입 섹션을 참조하십시오.

  • 계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 데이터베이스 복제와 장애 조치를 활성화하고 관리할 수 있습니다.

  • 기본 데이터베이스가 보조 데이터베이스에 처음 복제될 때 기본값인 10TB의 크기 제한이 적용됩니다. 크기 제한을 변경하거나 제거하려면 계정 수준에서 INITIAL_REPLICATION_SIZE_LIMIT_IN_TB 매개 변수를 설정하십시오.

    참고로, 현재 보조 데이터베이스의 후속 새로 고침에 적용되는 기본 크기 제한은 없습니다.

  • 계정을 식별하도록 기본 설정된 방법에서는 조직 이름과 계정 이름을 계정 식별자로 사용합니다. 레거시 계정 로케이터를 대신 사용하기로 결정한 경우 계정을 고유하게 식별하려면 추가 세그먼트를 포함해야 할 수 있습니다. 참고로 아래 표를 참조하십시오.

    계정 식별자

    원격 계정의 위치

    organization_name.account_name

    기본 데이터베이스를 저장하는 계정의 리전 또는 리전 그룹에 관계없이 사용할 수 있는 기본 설정 계정 식별자입니다.

    account_locator

    리전은 같지만 기본 데이터베이스를 저장하는 계정과는 다른 계정입니다.

    snowflake_region.account_locator

    리전 그룹은 같지만 기본 데이터베이스를 저장하는 계정과는 다른 리전입니다.

    region_group.snowflake_region.account_locator

    기본 데이터베이스를 저장하는 계정과 다른 리전 그룹 입니다.

일반적인 예

데이터베이스 이름을 db1 에서 db2 로 바꾸기:

ALTER DATABASE IF EXISTS db1 RENAME TO db2;
Copy

데이터베이스 복제 예

로컬 데이터베이스 mydb1 (account1 계정)을 기본 데이터베이스로 승격하고 myorg 조직의 account2account3 계정이 각각 이 데이터베이스의 복제본을 저장할 수 있도록 지정합니다.

ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS myorg.account2, myorg.account3;
Copy

mydb1 기본 데이터베이스에 대한 복제 비활성화:

ALTER DATABASE mydb1 DISABLE REPLICATION;
Copy