

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# ALTER DATABASE
<a name="r_ALTER_DATABASE"></a>

데이터베이스의 속성을 변경합니다.

## 필수 권한
<a name="r_ALTER_DATABASE-privileges"></a>

ALTER DATABASE를 사용하려면 다음 권한 중 하나가 필요합니다.
+ 수퍼유저
+ ALTER DATABASE 권한을 가진 사용자
+ 데이터베이스 소유자

## 구문
<a name="r_ALTER_DATABASE-synopsis"></a>

```
ALTER DATABASE database_name
{ 
  RENAME TO new_name
  | OWNER TO new_owner
  | [ CONNECTION LIMIT { limit | UNLIMITED } ]
    [ COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI } ]
    [ ISOLATION LEVEL { SNAPSHOT | SERIALIZABLE } ]
| INTEGRATION
 { 
  REFRESH { { ALL | INERROR } TABLES [ IN SCHEMA schema [, ...] ] | TABLE schema.table [, ...] }
   | SET 
     [ QUERY_ALL_STATES [=] { TRUE | FALSE } ] 
     [ ACCEPTINVCHARS [=] { TRUE | FALSE } ] 
     [ REFRESH_INTERVAL <interval> ]
     [ TRUNCATECOLUMNS [=] { TRUE | FALSE } ]
     [ HISTORY_MODE [=] {TRUE | FALSE} [ FOR { {ALL} TABLES [IN SCHEMA schema [, ...] ] | TABLE schema.table [, ...] } ] ]
 }
}
```

## 파라미터
<a name="r_ALTER_DATABASE-parameters"></a>

 *database\$1name*   
변경할 데이터베이스의 이름입니다. 일반적으로, 현재 연결되어 있지 않은 데이터베이스를 변경하며, 경우에 따라 후속 세션에서만 변경 사항이 적용됩니다. 현재 데이터베이스의 소유자를 변경할 수는 있지만 이름을 바꿀 수는 없습니다.  

```
alter database tickit rename to newtickit;
ERROR:  current database may not be renamed
```

RENAME TO   
지정된 데이터베이스의 이름을 바꿉니다. 유효한 이름에 대한 자세한 내용은 [이름 및 식별자](r_names.md) 섹션을 참조하세요. dev, padb\$1harvest, template0, template1 또는 sys:internal 데이터베이스의 이름을 바꿀 수 없고, 현재 데이터베이스의 이름도 바꿀 수 없습니다. 데이터베이스 소유자 또는 [superuser](r_superusers.md#def_superusers)만이 데이터베이스 이름을 바꿀 수 있고, 수퍼유저가 아닌 소유자 역시 CREATEDB 권한을 가져야 합니다.

 *new\$1name*   
새 데이터베이스 이름입니다.

OWNER TO   
지정된 데이터베이스의 소유자를 변경합니다. 현재 데이터베이스 또는 다른 데이터베이스의 소유자를 변경할 수 있습니다. 수퍼유저만이 소유자를 변경할 수 있습니다.

 *new\$1owner*   
새 데이터베이스 소유자입니다. 새 소유자는 쓰기 권한을 가진 기존 데이터베이스 사용자여야 합니다. 사용자 권한에 대한 자세한 내용은 [GRANT](r_GRANT.md) 섹션을 참조하세요.

CONNECTION LIMIT \$1 *limit* \$1 UNLIMITED \$1   
사용자가 동시에 열어놓을 수 있는 데이터베이스 연결의 최대 개수입니다. 수퍼유저에 대해서는 이 제한이 적용되지 않습니다. 최대 동시 연결 수를 허용하려면 UNLIMITED 키워드를 사용하세요. 각 사용자에 대한 연결 개수 제한이 적용될 수도 있습니다. 자세한 내용은 [CREATE USER](r_CREATE_USER.md) 섹션을 참조하세요. 기본값은 UNLIMITED입니다. 현재 연결을 보려면 [STV\$1SESSIONS](r_STV_SESSIONS.md) 시스템 뷰를 쿼리하세요.  
사용자 및 데이터베이스 연결 제한이 모두 적용되는 경우 사용되지 않는 연결 슬롯은 사용자가 연결 시도 시 양쪽 제한 범위 내에서 모두 사용 가능해야 합니다.

COLLATE \$1 CASE\$1SENSITIVE \$1 CS \$1 CASE\$1INSENSITIVE \$1 CI \$1  
문자열 검색 또는 비교가 대/소문자를 구분하는지, 구분하지 않는지를 지정하는 절입니다.  
현재 데이터베이스가 비어 있더라도 대소문자 구분을 변경할 수 있습니다.  
대소문자 구분을 변경하려면 ALTER 권한이 있어야 합니다. CREATE DATABASE 권한을 가진 슈퍼 사용자 또는 데이터베이스 소유자는 데이터베이스 대소문자 구분을 변경할 수도 있습니다.  
CASE\$1SENSITIVE와 CS는 서로 바꿔 사용할 수 있으며 동일한 결과를 냅니다. 마찬가지로 CASE\$1INSENSITIVE와 CI는 서로 바꿔 사용할 수 있으며 동일한 결과를 냅니다.

ISOLATION LEVEL \$1 SNAPSHOT \$1 SERIALIZABLE \$1  
데이터베이스에 대해 쿼리가 실행될 때 사용되는 격리 수준을 지정하는 절입니다. 격리 수준에 대한 자세한 내용은 [Amazon Redshift의 격리 수준](c_serial_isolation.md) 섹션을 참조하세요.  
+ SNAPSHOT 격리 - 업데이트 및 삭제 충돌로부터 보호하는 격리 수준을 제공합니다.
+ SERIALIZABLE 격리 - 동시 트랜잭션에 대한 완전한 직렬화 기능을 제공합니다.
데이터베이스의 격리 수준을 변경할 경우 다음 사항을 고려하세요.  
+ 데이터베이스 격리 수준을 변경하려면 현재 데이터베이스에 대해 슈퍼 사용자 또는 데이터베이스 생성 권한이 있어야 합니다.
+ `dev` 데이터베이스의 격리 수준은 변경할 수 없습니다.
+ 트랜잭션 블록 내에서는 격리 수준을 변경할 수 없습니다.
+ 다른 사용자가 데이터베이스에 연결되어 있으면 격리 수준 변경 명령이 실패합니다.
+ 격리 수준 변경 명령으로 현재 세션의 격리 수준 설정을 변경할 수 있습니다.

INTEGRATION  
제로 ETL 통합 데이터베이스를 변경합니다.

REFRESH \$1\$1 ALL \$1 INERROR \$1 TABLES [IN SCHEMA *schema* [, ...]] \$1 TABLE *schema.table* [, ...]\$1  
Amazon Redshift가 지정된 스키마 또는 테이블에서 오류가 있는 테이블을 모두 새로 고칠지를 지정하는 절입니다. 새로 고침은 지정된 스키마 또는 테이블의 테이블이 소스 데이터베이스에서 완전히 복제되도록 트리거합니다.  
자세한 내용은 *Amazon Redshift 관리 안내서*의 [제로 ETL 통합](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.html)을 참조하세요. 통합 상태에 대한 자세한 내용은 [SVV\$1INTEGRATION\$1TABLE\$1STATE](r_SVV_INTEGRATION_TABLE_STATE.md) 및 [SVV\$1INTEGRATION](r_SVV_INTEGRATION.md) 섹션을 참조하세요.

QUERY\$1ALL\$1STATES [=] \$1 TRUE \$1 FALSE \$1  
QUERY\$1ALL\$1STATES 절은 모든 상태(`Synced`, `Failed`, `ResyncRequired`, `ResyncInitiated`)에서 제로 ETL 통합 테이블을 쿼리할 수 있는지 여부를 설정합니다. 기본적으로 제로 ETL 통합 테이블은 `Synced` 상태에서만 쿼리할 수 있습니다.

ACCEPTINVCHARS [=] \$1 TRUE \$1 FALSE \$1  
ACCEPTINVCHARS 절은 VARCHAR 데이터 유형에 대해 유효하지 않은 문자가 감지될 때 제로 ETL 통합 테이블이 수집을 계속할지 여부를 설정합니다. 유효하지 않은 문자가 발견되면 유효하지 않은 문자가 기본 `?` 문자로 교체됩니다.

REFRESH\$1INTERVAL <interval>  
REFRESH\$1INTERVAL 절은 제로 ETL 소스에서 대상 데이터베이스로 데이터를 새로고침하기 위해 대략적인 시간 간격을 초 단위로 설정합니다. 소스 유형이 Aurora MySQL, Aurora PostgreSQL 또는 RDS for MySQL인 제로 ETL 통합의 경우 `interval`을 0\$1432,000초(5일)로 설정할 수 있습니다. Amazon DynamoDB 제로 ETL 통합의 경우 `interval`을 900\$1432,000초(15분\$15일)로 설정할 수 있습니다.  
제로 ETL 통합을 사용하여 데이터베이스를 생성하는 방법에 대한 자세한 내용은 **Amazon Redshift 관리 가이드의 [Amazon Redshift에서 대상 데이터베이스 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.creating-db.html)을 참조하세요.

TRUNCATECOLUMNS [=] \$1 TRUE \$1 FALSE \$1  
TRUNCATECOLUMNS 절은 VARCHAR 열 또는 SUPER 열 속성의 값이 제한을 초과할 때 제로 ETL 통합 테이블이 수집을 계속할지 여부를 설정합니다. `TRUE`인 경우 값이 열에 맞게 잘리고 오버플로되는 JSON 속성의 값이 SUPER 열에 맞게 잘립니다.

HISTORY\$1MODE [=] \$1TRUE \$1 FALSE\$1 [ FOR \$1 \$1ALL\$1 TABLES [IN SCHEMA schema [, ...]] \$1 TABLE schema.table [, ...]\$1 ]  
Amazon Redshift가 제로 ETL 통합에 포함되는 모든 테이블 또는 지정된 스키마의 테이블에 대해 기록 모드를 설정할지 여부를 지정하는 절입니다. 이 옵션은 제로 ETL 통합을 위해 생성된 데이터베이스에만 적용됩니다.  
HISTORY\$1MODE 절은 `TRUE` 또는 `FALSE`로 설정할 수 있습니다. 기본값은 `FALSE`입니다. 기록 모드를 켜거나 끄는 것은 `Synced` 상태인 테이블에만 적용됩니다. HISTORY\$1MODE에 대한 자세한 내용은 *Amazon Redshift 관리 안내서*의 [기록 모드](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-history-mode.html)를 참조하세요.

## 사용 노트
<a name="r_ALTER_DATABASE-usage-notes"></a>

ALTER DATABASE 명령은 현재 세션이 아닌 후속 세션에 적용됩니다. 변경 효과를 보려면 변경된 데이터베이스에 다시 연결해야 합니다.

## 예제
<a name="r_ALTER_DATABASE-examples"></a>

다음 예에서는 TICKIT\$1SANDBOX라는 데이터베이스 이름을 TICKIT\$1TEST로 바꿉니다.

```
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\$1integration\$1db** 데이터베이스의 테이블 **schema1.sample\$1table1** 및 **schema2.sample\$1table2**를 새로 고칩니다.

```
ALTER DATABASE sample_integration_db INTEGRATION REFRESH TABLE 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\$1schema** 스키마에서 `ErrorState`인 모든 테이블을 새로고침합니다.

```
ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;
```

다음 예제에서는 `myschema.table1` 테이블에 대해 기록 모드를 켭니다.

```
ALTER DATABASE sample_integration_db INTEGRATION SET HISTORY_MODE = true FOR TABLE myschema.table1
```

다음 예제에서는 `myschema`의 모든 테이블에 대해 기록 모드를 켭니다.

```
ALTER DATABASE sample_integration_db INTEGRATION SET HISTORY_MODE = true for ALL TABLES IN SCHEMA myschema
```