今回は、Silverの「S2 運用管理 - S2.1 インストール方法(テンプレートデータベース)」からの出題です。
テンプレートデータベースtemplate0内には通常のデータベースと同様にテーブルを追加できる。
テンプレートデータベースtemplate1内には通常のデータベースと同様にテーブルを追加できる。
CREATE DATABASEでデータベースを新規に作成するとき、オプションで指定しなければ、template0がテンプレートデータベースとして使用される。
新規にテンプレートデータベースtemplate2を作成するためには、CREATE DATABASEコマンドの実行時にTEMPLATEオプションを付加する。
デフォルトでは、テンプレートデータベースtemplate0には誰も接続できない。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2015年9月4日
PostgreSQLではCREATE DATABASEで新規のデータベースを作成するとき、実態としては、その作成元となるテンプレートデータベースのコピーを作成します。
initdbでデータベースクラスタを初期化した直後は、template0、template1の2つのテンプレートデータベースがあります。
template0はPostgreSQLが提供する標準のオブジェクトのみが含まれ、データやオブジェクトの追加・更新をすることはできません。template1は、通常のデータベースと同様に、データやオブジェクトの追加・更新が可能です。
CREATE DATABASEはデフォルトではtemplate1をテンプレートデータベースとして利用します。他のデータベースをテンプレートデータベースとして使う場合は、そのデータベースをTEMPLATEオプションで指定します。TEMPLATEオプションで指定するデータベースは、必ずしもテンプレートデータベースである必要はありませんが、テンプレートデータベースでないデータベースを指定する場合は、スーパーユーザーか、そのデータベースの所有者でなければなりません。データベースをテンプレートデータベースにするには、システムカタログpg_databaseのdatistemplateをtrueに設定します。
template0は誤って更新されることを防ぐため、pg_databaseのdatallowconnがfalseになっており、スーパーユーザも含め、誰も接続できないようになっています。
従って正解はBとEです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.