

 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 DATASHARE 権限を持つユーザー
+ データベースの所有者

## 構文
<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\_name*   
変更するデータベースの名前。通常、現在接続されていないデータベースを変更します。いずれの場合も、変更は後のセッションにのみ反映されます。現在のデータベースの所有者を変更できますが、名前を変更することはできません。  

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

RENAME TO   
指定したデータベースの名前を変更します。有効な名前の詳細については、「[名前と識別子](r_names.md)」を参照してください。dev、padb\_harvest、template0、template1、または sys:internal の各データベースの名前を変更することはできません。また、現在のデータベースの名前も変更できません。データベース所有者または[superuser](r_superusers.md#def_superusers)のみがデータベース名を変更できます。スーパーユーザー以外の所有者には CREATEDB 権限も必要です。

 *new\_name*   
新しいデータベース名。

OWNER TO   
指定したデータベースの所有者を変更します。現在のデータベースまたは他のデータベースの所有者を変更できます。スーパーユーザーのみが所有者を変更できます。

 *new\_owner*   
新しいデータベース所有者。新しい所有者は、書き込み権限を持つ既存のデータベースユーザーであることが必要です。ユーザー権限の詳細については、[GRANT](r_GRANT.md)を参照してください。

CONNECTION LIMIT { *limit* \| UNLIMITED }   
ユーザーが同時に開けるデータベース接続の最大数。この制限はスーパーユーザーには適用されません。同時接続の最大数を許可するには、UNLIMITED キーワードを使用します。ユーザーごとの接続数の制限が適用される場合もあります。詳細については、「[CREATE USER](r_CREATE_USER.md)」を参照してください。デフォルトは UNLIMITED です。現在の接続を確認するには、[STV\_SESSIONS](r_STV_SESSIONS.md)システムビューに対してクエリを実行します。  
ユーザーとデータベースの両方の接続制限が適用される場合は、ユーザーが接続しようとしたときに、両方の制限内に未使用の接続スロットがなければなりません。

COLLATE { CASE\_SENSITIVE \| CS \| CASE\_INSENSITIVE \| CI }  
文字列の検索または比較において、大文字と小文字を区別するか、あるいは区別しないかを指定する句。  
現在のデータベース (空の場合でも) の大文字と小文字の区別を変更できます。  
現在のデータベースで大文字と小文字の区別を変更するには、ALTER アクセス許可が必要です。CREATE DATABASE アクセス許可を持つスーパーユーザーまたはデータベース所有者も、データベースの大文字と小文字の区別を変更できます。  
CASE\_SENSITIVE と CS は互換性があり、同じ結果が得られます。同様に、CASE\_INSENSITIVE と CI は互換性があり、同じ結果が得られます。

ISOLATION LEVEL { SNAPSHOT \| SERIALIZABLE }  
データベースに対してクエリを実行するときに使用される分離レベルを指定する句。分離レベルの詳細については、「[Amazon Redshift の分離レベル](c_serial_isolation.md)」を参照してください。  
+ スナップショットの分離 – 更新および削除の競合に対する保護機能を備えた分離レベルを提供します。
+ 直列化可能な分離 – 同時トランザクションの完全な直列化機能を提供します。
データベースの分離レベルを変更するときは、以下の点を考慮します。  
+ データベースの分離レベルを変更するには、スーパーユーザー権限または CREATE DATABASE 権限が必要です。
+ `dev` データベースの分離レベルは変更できません。
+ トランザクションブロック内の分離レベルは変更できません。
+ 他のユーザーがデータベースに接続している場合、分離レベルの変更コマンドは失敗します。
+ 分離レベルの変更コマンドでは、現在のセッションの分離レベルの設定を変更できます。

INTEGRATION  
ゼロ ETL 統合データベースを変更します。

REFRESH {{ ALL \| INERROR } TABLES [IN SCHEMA *schema* [, ...]] \| TABLE *schema.table* [, ...]}  
Amazon Redshift がすべてのテーブルを更新するか、あるいは指定されたスキーマやテーブル内でエラーのあるテーブルを更新するかどうかを指定する句。更新によって、指定されたスキーマやテーブル内のテーブルはソースデータベースから完全に複製されます。  
詳細については、「*Amazon Redshift 管理ガイド*」の「[ゼロ ETL 統合](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.html)」を参照してください。統合の状態の詳細については、「[SVV\_INTEGRATION\_TABLE\_STATE](r_SVV_INTEGRATION_TABLE_STATE.md)」と「[SVV\_INTEGRATION](r_SVV_INTEGRATION.md)」を参照してください。

QUERY\_ALL\_STATES [=] { TRUE \| FALSE }  
QUERY\_ALL\_STATES 句を使用すると、ゼロ ETL 統合テーブルをすべての状態 (`Synced`、`Failed`、`ResyncRequired`、`ResyncInitiated`) でクエリできるかどうかを設定できます。ゼロ ETL 統合テーブルはデフォルトでは、`Synced` 状態でのみクエリできます。

ACCEPTINVCHARS [=] { TRUE \| FALSE }  
ACCEPTINVCHARS 句を使用すると、VARCHAR データ型で無効な文字が検出された場合、ゼロ ETL 統合テーブルが取り込みを継続するかどうかを設定できます。無効な文字が検出されると、無効な文字はデフォルトの `?` 文字に置き換えられます。

REFRESH\_INTERVAL <interval>  
REFRESH\_INTERVAL 句を使用すると、ゼロ ETL ソースからターゲットデータベースにデータを更新するためのおよその時間間隔を秒単位で設定できます。この `interval` は、ソースタイプが Aurora MySQL、Aurora PostgreSQL、または RDS for MySQL のゼロ ETL 統合では、0～432,000 秒 (5 日) に設定できます。Amazon DynamoDB ゼロ ETL 統合の場合、`interval` は 900～432,000 秒 (15 分～5 日) に設定できます。  
ゼロ ETL 統合を使用したデータベースの作成の詳細については、「Amazon Redshift 管理ガイド」の「[Amazon Redshift でのデスティネーションデータベースの作成](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.creating-db.html)」を参照してください。**

TRUNCATECOLUMNS [=] { TRUE \| FALSE }  
TRUNCATECOLUMNS 句を使用すると、VARCHAR 列の値または SUPER 列の属性が制限を超えた場合に、ゼロ ETL 統合テーブルが取り込みを続行するかどうかを設定できます。`TRUE` の場合、値は列に収まるように切り捨てられ、オーバーフローする JSON 属性の値は SUPER 列に収まるように切り捨てられます。

HISTORY\_MODE [=] {TRUE \| FALSE} [ FOR { {ALL} TABLES [IN SCHEMA schema [, ...]] \| TABLE schema.table [, ...]} ]  
Amazon Redshift が、ゼロ ETL 統合の対象となるすべてのテーブルまたは指定されたスキーマ内のテーブルに履歴モードを設定するかどうかを指定する句。このオプションは、ゼロ ETL 統合用に作成されたデータベースにのみ適用されます。  
HISTORY\_MODE 句は `TRUE` または `FALSE` に設定できます。デフォルトは `FALSE` です。履歴モードのオンとオフの切り替えが適用されるのは、`Synced` 状態のテーブルのみです。HISTORY\_MODE の詳細については、「*Amazon Redshift 管理ガイド*」の「[History mode](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\_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** という名前のデータベースを変更します。

```
ALTER DATABASE sampledb ISOLATION LEVEL SNAPSHOT;
```

次の例では、ゼロ ETL 統合で、データベース **sample\_integration\_db** 内のテーブル **schema1.sample\_table1** と **schema2.sample\_table2** を更新します。

```
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\_schema** 内で `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
```