本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ALTER DATABASE
變更資料庫的屬性。
所需權限
若要使用 ALTER DATABASE,需要下列其中一個權限。
超級使用者
具有 ALTERDATABASE權限的使用者
資料庫擁有者
語法
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 至
-
重新命名指定的資料庫。如需有效名稱的相關資訊,請參閱 名稱與識別碼。您無法重新命名 dev、padb_harvest、template0 或 template1 或 sys:internal 資料庫,也無法重新命名目前的資料庫。只有資料庫擁有者或 superuser可以重新命名資料庫;非超級使用者擁有者也必須具有 CREATEDB權限。
- new_name
-
新的資料庫名稱。
- OWNER 至
-
變更所指定資料庫的擁有者。您可以變更目前資料庫或其他資料庫的擁有者。但只有超級使用者可以變更擁有者。
- new_owner
-
新的資料庫擁有者。新的擁有者必須是具備寫入權限的現有資料庫使用者。如需使用者權限的相關資訊,請參閱 GRANT。
- CONNECTION LIMIT { limit | UNLIMITED }
-
允許使用者同時開啟的資料庫連線數目上限。超級使用者不受此限制規範。使用 UNLIMITED關鍵字來允許並行連線的數量上限。另外也可能限制每位使用者的連線數目。如需詳細資訊,請參閱CREATE USER。預設值為 UNLIMITED。若要檢視目前連線數目,請查詢 STV_SESSIONS 系統畫面。
注意
如果同時套用使用者和資料庫連線數目限制,則必須在使用者嘗試連線時,在不超過這兩項限制的情況下提供一個未使用的連線位置。
- COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }
-
指定字串搜尋或比較是否區分大小寫的子句。
您可以變更目前空資料庫的區分大小寫設定。
您必須擁有目前資料庫的權限,才能變更區分大小寫的設定。具有 CREATEDATABASE權限的超級使用者或資料庫擁有者也可以變更資料庫大小寫敏感度。
- ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }
-
指定對資料庫執行查詢時所用隔離層級的子句。
SERIALIZABLE 隔離 – 為並行交易提供完整的序列化功能。如需詳細資訊,請參閱可序列化隔離。
SNAPSHOT 隔離 – 提供隔離層級,防止更新和刪除衝突。
如需隔離層級的相關資訊,請參閱 CREATE DATABASE。
修改資料庫的隔離層級時,請考慮下列項目:
您必須擁有目前資料庫的超級使用者或CREATEDATABASE權限,才能變更資料庫隔離層級。
您無法變更
dev
資料庫的隔離層級。您無法變更交易區塊中的隔離等級。
如果其他使用者連線到資料庫,修改隔離層級命令就會失敗。
修改隔離層級命令可以修改目前工作階段的隔離層級設定。
- INTEGRATION REFRESH {{ ALL | INERROR } TABLES【IN SCHEMA 結構描述 【, ...】】 | TABLE 結構描述.table 【, ...】}
指定 Amazon Redshift 是否會重新整理指定結構描述或資料表中的所有資料表或發生錯誤之資料表的子句。重新整理會觸發指定結構描述或資料表中的資料表,從來源資料庫完全複製。
如需詳細資訊,請參閱 Amazon Redshift 管理指南 中的使用零ETL整合。如需整合狀態的詳細資訊,請參閱 SVV_INTEGRATION_TABLE_STATE 和 SVV_INTEGRATION。
- INTEGRATION {SET REFRESH_INTERVAL <interval>}
-
REFRESH_ SET INTERVAL 子句會設定大約的時間間隔,以秒為單位,將資料從零ETL來源重新整理至目標資料庫。對於來源類型為 Aurora My 、Aurora Postgre 或 RDS My 的零ETL整合SQL,此值可以設定為 0–432SQL,000 秒 (5 天)SQL。
如需使用零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;
下列範例會重新整理sample_integration_db
零ETL整合schema2.sample_table2
中資料庫中的資料表schema1.sample_table1
和 。
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;
下列範例會重新整理結構描述 ErrorState
中 中的所有資料表sample_schema
。
ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;