SUMMARY: この記事はALTER DATABASE、RENAME DATABASE、DROP DATABASE文とCREATE DATABASE WITH TEMPLATE文を使ってデータベースをコピーすることについて説明しています。 ALTER DATABASE文
a. 所有者の変更
b. テンプレートデータベースの設定
c. 特定のデータベースに対する新規接続の制限
d. 特定のデータベースに対する接続数の制限
e. データベースのデフォルトテーブルスペースの変更
2. RENAME DATABASEステートメント
3. DROP DATABASEステートメント
4. データベース構造とデータのコピー
この投稿では、PSQL プロンプトから PostgreSQL データベースの管理用に利用できるいくつかのコマンドについて説明します。 データベースの変更、名前の変更、削除、およびコピーの方法を確認します。
いくつかの基本的な PostgreSQL コマンドを復習しましょう。 データベース作成構文:
CREATE DATABASE name user_name ] template ] encoding ] lc_collate ] lc_ctype ] tablespace ] connlimit ] ]
2. 現在のクラスタ内のデータベースのリストを取得するには:
a. \l+
b. select * from pg_database ;
ALTER database statements
ALTER database statementsはターゲットデータベースの既存の属性を変更するために使用されることがあります。
データベースの所有者を変更する
データベースの所有者を変更するには、接続ユーザーがデータベースの所有者であると同時に、新しい所有ロールの直接または間接メンバーでなければならず、接続ユーザーはCREATEDB権限を持っていなければなりません。
構文
ALTER DATABASE <database_name> OWNER TO <new_owner>;
例
ALTER DATABASE test OWNER TO user;
テンプレートデータベースを設定する
デフォルトでは、クラスタのテンプレートデータベースはtemplate0 と template1 のみとなっています。 その他のデータベースはデフォルトではテンプレートとして使用できません。
構文
ALTER DATABASE <database_name> WITH IS_TEMPLATE = true;
例
ALTER DATABASE test WITH IS_TEMPLATE = true;
特定のデータベースへの新しい接続を制限する
このオプションはデータベースを保守するために非常に便利です。 データベース メンテナンス ウィンドウの間、特定のデータベースへの新しい接続を制限することができます。 このオプションを有効にするには、対象のデータベースにユーザーが接続されていません。
構文
ALTER DATABASE <database_name> WITH ALLOW_CONNECTIONS = false;
例
ALTER DATABASE test2 WITH ALLOW_CONNECTIONS = false;
特定データベースへの接続制限
セキュリティと最適パフォーマンスのために、ターゲット データベースに接続可能な数の接続を制限することができます。 デフォルトでは、このパラメータの値は、すべてのデータベースに対して無制限、つまり -1 です。
構文
ALTER DATABASE <database_name> WITH CONNECTION LIMIT <max_number_of_connections>;
例
ALTER DATABASE test2 WITH CONNECTION LIMIT 10;
データベースのデフォルト表領域の変更
テーブルおよびインデックスなどのデフォルト表領域オブジェクトをデフォルト表領域から新しいカスタム表領域へ物理的に移動することが可能です。 新しいデフォルトの表領域はこのデータベースに対して空でなければならず、このアクティビティの間は誰もデータベースに接続できません。
注意:データベースの所有者またはスーパーユーザーがこの変更を行う必要があり、ユーザーは新しい表領域に対して CREATE 権限を持っていなければなりません。
構文
ALTER DATABASE <database_name> SET TABLESPACE <custom_tablespace_name>;
例
ALTER DATABASE test SET TABLESPACE custom_tblspc;
RENAME データベース文
RENAMEを使って、現在のデータベースの名前を変更することができます。
注意:データベースの所有者またはスーパーユーザーがこの変更を行う必要があり、ユーザーはCREATEDB権限を持っていなければなりません。
構文
ALTER DATABASE <old_database_name> RENAME TO <new_database_name>;
例
ALTER DATABASE test RENAME TO test123;
DROP Database statements
対象データベースをDROPすることができます。 これは、データベースのカタログエントリーを削除し、データを含むディレクトリを削除します。 データベースの所有者のみが実行できます。
Note: DROP DATABASE は元に戻せません。
構文
DROP DATABASE <database_name>;
例
DROP DATABASE test2;