ALTER DATABASE - Amazon Redshift

ALTER DATABASE

データベースの属性を変更します。

必要な権限

ALTER DATABASE を使用するには、次の権限のいずれかが必要です。

  • スーパーユーザー

  • ALTER DATASHARE 権限を持つユーザー

  • データベースの所有者

構文

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 { 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 [, ...] } ] ] } }

パラメータ

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 キーワードを使用します。ユーザーごとの接続数の制限が適用される場合もあります。詳細については、「CREATE USER」を参照してください。デフォルトは UNLIMITED です。現在の接続を確認するには、STV_SESSIONSシステムビューに対してクエリを実行します。

注記

ユーザーとデータベースの両方の接続制限が適用される場合は、ユーザーが接続しようとしたときに、両方の制限内に未使用の接続スロットがなければなりません。

COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }

文字列の検索または比較において、大文字と小文字を区別するか、あるいは区別しないかを指定する句。

現在、空の状態のデータベースでは、大文字と小文字を区別するかどうかの設定を変更することができます。

大文字と小文字の区別を変更するには、そのデータベースに対する権限が必要です。CREATE DATABASE 権限を持つスーパーユーザーまたはデータベース所有者も、データベースで大文字と小文字を区別するかどうかを設定できます。

ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }

データベースに対してクエリを実行するときに使用される分離レベルを指定する句。

  • 直列化可能な分離 – 同時トランザクションの完全な直列化機能を提供します。詳細については、「直列化可能分離」を参照してください。

  • スナップショットの分離 – 更新および削除の競合に対する保護機能を備えた分離レベルを提供します。

分離レベルの詳細については、「CREATE DATABASE」を参照してください。

データベースの分離レベルを変更するときは、以下の点を考慮します。

  • データベースの分離レベルを変更するには、スーパーユーザー権限または CREATE DATABASE 権限が必要です。

  • dev データベースの分離レベルは変更できません。

  • トランザクションブロック内の分離レベルは変更できません。

  • 他のユーザーがデータベースに接続している場合、分離レベルの変更コマンドは失敗します。

  • 分離レベルの変更コマンドでは、現在のセッションの分離レベルの設定を変更できます。

INTEGRATION

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

REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}

Amazon Redshift がすべてのテーブルを更新するか、あるいは指定されたスキーマやテーブル内でエラーのあるテーブルを更新するかどうかを指定する句。更新によって、指定されたスキーマやテーブル内のテーブルはソースデータベースから完全に複製されます。

詳細については、「Amazon Redshift 管理ガイド」の「ゼロ ETL 統合」を参照してください。統合の状態の詳細については、「SVV_INTEGRATION_TABLE_STATE」と「SVV_INTEGRATION」を参照してください。

QUERY_ALL_STATES [=] { TRUE | FALSE }

QUERY_ALL_STATES 句を使用すると、ゼロ ETL 統合テーブルをすべての状態 (SyncedFailedResyncRequiredResyncInitiated) でクエリできるかどうかを設定できます。ゼロ 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 でのデスティネーションデータベースの作成」を参照してください。

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」(履歴モード) を参照してください。

使用に関する注意事項

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 という名前のデータベースを変更します。

ALTER DATABASE sampledb ISOLATION LEVEL SNAPSHOT;

次の例では、ゼロ ETL 統合で、データベース sample_integration_db 内のテーブル schema1.sample_table1schema2.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