この文は、DB 領域またはトランザクション・ログ用に領域を割り付ける場合、または DB 領域ファイルの名前変更時や移動時に使用します。
ALTER DBSPACE { dbspace-name | TRANSLOG | TEMPORARY } { ADD number [ add-unit ] | RENAME filename }
add-unit : PAGES | KB | MB | GB | TB
TRANSLOG 句 この特別な DB 領域名 TRANSLOG を指定して、トランザクション・ログにディスク領域を事前に割り付けます。事前に割り付けておくと、トランザクション・ログが急速に大きくなることが予測される場合に、パフォーマンスを改善できます。たとえば、ビットマップのような多量のバイナリ・ラージ・オブジェクト (BLOB) を処理する場合、この機能を使用できます。
TEMPORARY 句 特別な DB 領域名 TEMPORARY を指定して、テンポラリ DB 領域にスペースを追加します。テンポラリ DB 領域にスペースが追加されるとすぐに、追加のスペースは対応するテンポラリ・ファイルで実体化されます。データベースのテンポラリ DB 領域に領域を事前に割り付けると、大きなワーク・テーブルを使用する複雑なクエリを実行する場合、パフォーマンスが向上します。
ADD 句 ALTER DBSPACE に ADD 句を指定して、DB 領域にディスク領域を事前に割り付けます。ページ、キロバイト (KB)、メガバイト (MB)、ギガバイト (GB)、またはテラバイト (TB) 単位でサイズを指定して、対応するデータベース・ファイルを拡張します。単位を指定しない場合、デフォルトは PAGES です。データベースのページ・サイズはデータベースの作成時に決定されます。領域が事前に割り付けられていない場合、データベース・ファイルは、領域が必要になったとき、ページ・サイズが 2 KB、4 KB、8 KB の場合は一度に約 256 KB 拡張され、その他のページ・サイズの場合は約 32 ページ拡張されます。領域を事前に割り付けると、多量のデータをロードする場合のパフォーマンスを改善でき、ファイル・システム内でデータベース・ファイルの断片化を防ぐことができます。
この句を使用して、事前定義の DB 領域 (system、temporary、temp、translog、translogmirror) のいずれかに領域を追加できます。事前定義の DB 領域を参照してください。
RENAME 句 メイン・ファイル以外のデータベース・ファイルを別のファイル名に変更したり、別のディレクトリまたはデバイスに移動したりする場合は、RENAME 句を指定した ALTER DBSPACE 文を使用すると、SQL Anywhere にデータベース起動時に確実に新しいファイルを検索させることができます。filename パラメータには、文字列リテラルまたは変数を指定できます。
名前の変更は、次のように有効になります。
文を実行する前に DB 領域がすでに開いている場合 (つまり、実際のファイルの名前はまだ変更していない場合)、継続してアクセスすることはできますが、カタログに格納されている名前は更新されます。データベースが停止した後、ファイルの名前を変更して、RENAME 句で指定したのと同じ名前に変更する必要があります。そうしないと、カタログにある DB 領域の名前とファイル名が一致せず、データベースを次に起動するときに、データベース・サーバが DB 領域を開くことができなくなります。
文を実行したときに DB 領域が開いていない場合、データベース・サーバは、カタログを更新し、その後で DB 領域を開くことを試行します。DB 領域を開くことができたら、アクセス可能になっています。DB 領域を開くことができない場合でも、エラーは返されません。
DB 領域が開いているかどうかを確認するには、次に示す文を実行します。結果が NULL である場合は、DB 領域は開いていません。
SELECT DB_EXTENDED_PROPERTY('FileSize','dbspace-name'); |
メイン DB 領域の system に RENAME 句を指定した ALTER DBSPACE を使用しても効果はありません。
それぞれのデータベースは 1 つまたは複数のファイルの中に保持されます。DB 領域は、各データベース・ファイルに関連付けられた論理名を持つ追加ファイルであり、メイン・データベース・ファイル単独では保持できないデータを格納するために使用されます。ALTER DBSPACE は、メイン・データベース (ルート・ファイルとも呼ばれます) または追加の DB 領域を修正します。データベースの DB 領域名は、ISYSFILE システム・テーブルに保持されます。メイン・データベース・ファイルの DB 領域名は system です。
マルチファイル・データベースを起動すると、起動ラインまたは ODBC データ・ソースの記述が、SQL Anywhere にメイン・データベース・ファイルの場所を知らせます。メイン・データベース・ファイルは、システム・テーブルを保持しており、SQL Anywhere は、このシステム・テーブルを調べて他の DB 領域のロケーションを検索します。次に、SQL Anywhere は、検索した各 DB 領域を開きます。default_dbspace オプションを設定して新規テーブルを作成する DB 領域を指定できます。
DBA 権限が必要です。また、このデータベースに他のユーザがいないことが必要です。
オートコミット。
SQL/2003 ベンダ拡張。
次の例は、system の DB 領域サイズを 200 ページ増やします。
ALTER DBSPACE system ADD 200; |
次の例は、system の DB 領域サイズを 400 MB 増やします。
ALTER DBSPACE system ADD 400 MB; |
次の例は、system_2 の DB 領域に関連するファイル名を変更します。
ALTER DBSPACE system_2 RENAME 'e:\db\dbspace2.db'; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |