ALTER DATABASE
데이터베이스의 속성을 변경합니다.
필수 권한
ALTER DATABASE를 사용하려면 다음 권한 중 하나가 필요합니다.
수퍼유저
ALTER DATABASE 권한을 가진 사용자
데이터베이스 소유자
구문
ALTER DATABASE database_name { RENAME TO new_name | OWNER TO new_owner | CONNECTION LIMIT { limit | UNLIMITED } | COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } | ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT } | INTEGRATION {{SET REFRESH_INTERVAL <interval>} | REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}} }
파라미터
- database_name
-
변경할 데이터베이스의 이름입니다. 일반적으로, 현재 연결되어 있지 않은 데이터베이스를 변경하며, 경우에 따라 후속 세션에서만 변경 사항이 적용됩니다. 현재 데이터베이스의 소유자를 변경할 수는 있지만 이름을 바꿀 수는 없습니다.
alter database tickit rename to newtickit; ERROR: current database may not be renamed
- RENAME TO
-
지정된 데이터베이스의 이름을 바꿉니다. 유효한 이름에 대한 자세한 내용은 이름 및 식별자 섹션을 참조하세요. dev, padb_harvest, template0, template1 또는 sys:internal 데이터베이스의 이름을 바꿀 수 없고, 현재 데이터베이스의 이름도 바꿀 수 없습니다. 데이터베이스 소유자 또는 superuser만이 데이터베이스 이름을 바꿀 수 있고, 수퍼유저가 아닌 소유자 역시 CREATEDB 권한을 가져야 합니다.
- new_name
-
새 데이터베이스 이름입니다.
- OWNER TO
-
지정된 데이터베이스의 소유자를 변경합니다. 현재 데이터베이스 또는 다른 데이터베이스의 소유자를 변경할 수 있습니다. 수퍼유저만이 소유자를 변경할 수 있습니다.
- new_owner
-
새 데이터베이스 소유자입니다. 새 소유자는 쓰기 권한을 가진 기존 데이터베이스 사용자여야 합니다. 사용자 권한에 대한 자세한 내용은 GRANT 섹션을 참조하세요.
- CONNECTION LIMIT { limit | UNLIMITED }
-
사용자가 동시에 열어놓을 수 있는 데이터베이스 연결의 최대 개수입니다. 수퍼유저에 대해서는 이 제한이 적용되지 않습니다. 최대 동시 연결 수를 허용하려면 UNLIMITED 키워드를 사용하십시오. 각 사용자에 대한 연결 개수 제한이 적용될 수도 있습니다. 자세한 내용은 사용자 생성 단원을 참조하십시오. 기본값은 UNLIMITED입니다. 현재 연결을 보려면 STV_SESSIONS 시스템 뷰를 쿼리하십시오.
참고
사용자 및 데이터베이스 연결 제한이 모두 적용되는 경우 사용되지 않는 연결 슬롯은 사용자가 연결 시도 시 양쪽 제한 범위 내에서 모두 사용 가능해야 합니다.
- COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }
-
문자열 검색 또는 비교가 대/소문자를 구분하는지, 구분하지 않는지를 지정하는 절입니다.
비어 있는 현재 데이터베이스의 대/소문자 구분을 변경할 수 있습니다.
대/소문자 구분을 변경하려면 현재 데이터베이스에 대한 권한이 있어야 합니다. CREATE DATABASE 권한을 가진 슈퍼 사용자 또는 데이터베이스 소유자는 데이터베이스 대/소문자 구분을 변경할 수도 있습니다.
- ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }
-
데이터베이스에 대해 쿼리가 실행될 때 사용되는 격리 수준을 지정하는 절입니다.
SERIALIZABLE 격리 - 동시 트랜잭션에 대한 완전한 직렬화 기능을 제공합니다. 자세한 내용은 직렬화 가능 격리 단원을 참조하십시오.
SNAPSHOT 격리 - 업데이트 및 삭제 충돌로부터 보호하는 격리 수준을 제공합니다.
격리 수준에 대한 자세한 내용은 데이터베이스 생성 섹션을 참조하세요.
데이터베이스의 격리 수준을 변경할 경우 다음 사항을 고려하세요.
데이터베이스 격리 수준을 변경하려면 현재 데이터베이스에 대해 슈퍼 사용자 또는 데이터베이스 생성 권한이 있어야 합니다.
dev
데이터베이스의 격리 수준은 변경할 수 없습니다.트랜잭션 블록 내에서는 격리 수준을 변경할 수 없습니다.
다른 사용자가 데이터베이스에 연결되어 있으면 격리 수준 변경 명령이 실패합니다.
격리 수준 변경 명령으로 현재 세션의 격리 수준 설정을 변경할 수 있습니다.
- INTEGRATION REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}
Amazon Redshift가 지정된 스키마 또는 테이블에서 오류가 있는 테이블을 모두 새로 고칠지를 지정하는 절입니다. 새로 고침은 지정된 스키마 또는 테이블의 테이블이 소스 데이터베이스에서 완전히 복제되도록 트리거합니다.
자세한 내용은 Amazon Redshift 관리 안내서의 제로 ETL 통합 작업을 참조하세요. 통합 상태에 대한 자세한 내용은 SVV_INTEGRATION_TABLE_STATE 및 SVV_INTEGRATION 섹션을 참조하세요.
- INTEGRATION {SET REFRESH_INTERVAL <interval>}
-
SET REFRESH_INTERVAL 절은 제로 ETL 소스에서 대상 데이터베이스로 데이터를 새로고침하기 위해 대략적인 시간 간격을 초 단위로 설정합니다. 소스 유형이 Aurora MySQL, Aurora PostgreSQL 또는 RDS for MySQL인 제로 ETL 통합의 경우 값을 0~432,000초(5일)로 설정할 수 있습니다.
제로 ETL 통합을 사용하여 데이터베이스를 생성하는 방법에 대한 자세한 내용은 Amazon Redshift 관리 가이드의 Amazon Redshift에서 대상 데이터베이스 생성을 참조하세요.
사용 노트
ALTER DATABASE 명령은 현재 세션이 아닌 후속 세션에 적용됩니다. 변경 효과를 보려면 변경된 데이터베이스에 다시 연결해야 합니다.
예시
다음 예에서는 TICKIT_SANDBOX라는 데이터베이스 이름을 TICKIT_TEST로 바꿉니다.
alter database tickit_sandbox rename to tickit_test;
다음 예에서는 TICKIT 데이터베이스(현재 데이터베이스)의 소유자를 DWUSER로 변경합니다.
alter database tickit owner to dwuser;
다음 예에서는 sampledb 데이터베이스의 데이터베이스 대/소문자 구분을 변경합니다.
ALTER DATABASE sampledb COLLATE CASE_INSENSITIVE;
다음 예에서는 sampledb
데이터베이스를 SNAPSHOT 격리 수준으로 변경합니다.
ALTER DATABASE sampledb ISOLATION LEVEL SNAPSHOT;
다음 예시는 제로 ETL 통합에서 sample_integration_db
데이터베이스의 테이블 schema1.sample_table1
및 schema2.sample_table2
를 새로 고칩니다.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH TABLES schema1.sample_table1, schema2.sample_table2;
다음 예시는 제로 ETL 통합 내에서 동기화된 테이블과 실패한 테이블을 모두 새로 고칩니다.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH ALL tables;
다음 예제에서는 제로 ETL 통합의 새로고침 간격을 600초로 설정합니다.
ALTER DATABASE sample_integration_db INTEGRATION SET REFRESH_INTERVAL 600;
다음 예제는 sample_schema
스키마에서 ErrorState
인 모든 테이블을 새로고침합니다.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;