Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの起動とデータベースへの接続 » データベース・ファイルの処理

 

追加 DB 領域の使用

通常は大容量データベース向け

ほとんどのデータベースでは、データベース・ファイルは 1 つだけで十分です。しかし、大容量データベースを使用していると、多くの場合、追加データベース・ファイルが必要になります。また、追加データベース・ファイルは、別々のファイルにある関連した情報をまとめる場合に便利なツールです。

データベースを初期化すると、データベースにはデータベース・ファイルが 1 つ含まれます。この最初のデータベース・ファイルを「メイン・ファイル」または「system」DB 領域と呼びます。デフォルトでは、すべてのデータベース・オブジェクトとすべてのデータがこのメイン・ファイルに配置されます。

「DB 領域」は、データ用の領域をさらに作成する追加のデータベース・ファイルです。1 つのデータベースは 13 個までのファイルに保管されます (メイン・ファイル 1 つと 12 の DB 領域)。各テーブルは、そのインデックスとともに、単一のデータベース・ファイルに含まれている必要があります。CREATE DBSPACE という SQL コマンドで、新しいファイルをデータベースに追加できます。

テンポラリ・テーブルは、temporary DB 領域にのみ作成されます。

ベース・テーブルまたはその他のデータベース・オブジェクトを作成する DB 領域は複数の方法で指定できます。次のリストで先に示す方法で指定されている場所が、後に示すものよりも優先されます。

  1. IN DBSPACE 句 (指定されている場合)

  2. default_dbspace オプション (設定されている場合)

  3. system DB 領域

DB 領域名にピリオドが含まれていて、引用符で囲まれていない場合、データベース・サーバでエラーが生成されます。

各データベース・ファイルの最大容量は、228 (約 2 億 6800 万) データベース・ページです。たとえば、データベース・ページ・サイズが 4 KB のデータベース・ファイルが作成されると、そのファイルのサイズは 1 テラバイト (228*4 KB) まで増やすことができます。しかし実際には、ファイルが作成された物理ファイル・システムで許容される最大ファイル・サイズが、最大許容サイズに大きく影響します。

一部の古いファイル・システムではファイルの最大サイズが 2 GB に制限されていますが、Windows が使用している NTFS ファイル・システムのように、多くのファイル・システムでは、データベース・ファイルを最大サイズまで利用できます。データベースにあるデータの量が最大ファイル・サイズを超える場合は、データを複数のデータベース・ファイルに分割する必要があります。また、関連オブジェクトをまとめる場合など、サイズ制限以外の理由で複数の DB 領域を作成する場合もあります。

サポートされるオペレーティング・システムごとのファイルの最大サイズについては、SQL Anywhere のサイズと数の制限を参照してください。

sa_disk_free システム・プロシージャを使用して、DB 領域に使用可能な領域に関する情報を取得できます。sa_disk_free_space システム・プロシージャを参照してください。

SYSDBSPACE システム・ビューには、データベースのすべての DB 領域に関する情報が含まれています。SYSDBSPACE システム・ビューを参照してください。

既存のデータベースの分割

既存のデータベース・オブジェクトをいくつかの DB 領域に分割する場合は、データベースをアンロードし、生成済みのコマンド・ファイル (デフォルトでは reload.sql という名前のファイル) をデータベース再構築用に修正します。reload.sql ファイルで、メイン・ファイルに配置しないテーブルごとに、CREATE TABLE 文に IN 句を追加して DB 領域を指定します。

DB 領域のパーミッション

SQL Anywhere は、DB 領域のパーミッションをサポートします。CREATE パーミッションのみサポートされています。CREATE パーミッションによって、ユーザは指定した DB 領域でデータベース・オブジェクトを作成できます。GRANT CREATE 文を実行して、DB 領域の CREATE パーミッションを付与できます。GRANT 文を参照してください。

DB 領域のパーミッションは、次のように動作します。

  • 基本となるデータを使用して新しいオブジェクトを作成するユーザには、データを配置する DB 領域の CREATE パーミッションが必要です。

  • GRANT CREATE ON 文が発行されていても、そのユーザが新しいデータベース・オブジェクトを作成するためには RESOURCE 権限が必要です。

  • 特定の DB 領域に配置するため、CREATE パーミッションが必要なオブジェクトの現在のリストには、テーブル、インデックス、テキスト・インデックス、マテリアライズド・ビューが含まれています。通常のビューやプロシージャなどのオブジェクトには、基本となるデータはなく、CREATE パーミッションは必要ありません。

  • ユーザには CREATE パーミッションを直接付与することも、パーミッションが付与されているグループのメンバシップによってパーミッションを継承させることもできます。

  • 特定の DB 領域に対する CREATE パーミッションを PUBLIC に付与することも可能です。この場合、RESOURCE 権限を持つすべてのユーザが DB 領域にオブジェクトを作成できます。

  • DB 領域を新規に作成すると、その DB 領域に対する CREATE パーミッションが自動的に PUBLIC に付与されます。

  • DB 領域を保護する場合などは、パーミッションを取り消すことができます。内部 DB 領域の system と temporary のパーミッションを管理することで、アクセスを制御することもできます。

  • ローカル・テンポラリ・テーブルの作成にはパーミッションは必要なく、DB 領域のパーミッションはローカル・テンポラリ・テーブルの作成には影響しません。ただし、グローバル・テンポラリ・テーブルの作成には、RESOURCE 権限と temporary DB 領域に対する CREATE パーミッションが必要です。

参照

DB 領域の作成
データベース・ファイル用領域の事前割り付け
DB 領域の削除