ALTER DATABASE¶
기존 데이터베이스의 속성을 수정합니다.
데이터베이스 수정은 다음을 포함합니다.
데이터베이스 이름 변경 또는 Time Travel 데이터 보존 기간 변경(Snowflake Enterprise Edition 이상을 사용하는 경우).
데이터베이스 복제 및 장애 조치 사용 및 관리.
구문¶
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
}
[ , ... ]
데이터베이스 복제 및 장애 조치 구문¶
데이터베이스 복제
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
데이터베이스 장애 조치
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
매개 변수¶
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;
데이터베이스 복제 예¶
로컬 데이터베이스 mydb1
(account1
계정)을 기본 데이터베이스로 승격하고 myorg
조직의 account2
및 account3
계정이 각각 이 데이터베이스의 복제본을 저장할 수 있도록 지정합니다.
ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS myorg.account2, myorg.account3;
mydb1
기본 데이터베이스에 대한 복제 비활성화:
ALTER DATABASE mydb1 DISABLE REPLICATION;