- 第1回:いつでもどこでも使えるデータベース 「SQL Anywhere Studio」
- 第2回:SQL Anywhereのインストールと概要
- 第3回:SQL Anywhereのデータベース管理の基礎
- 第4回:SQL Anywhereでの主キー/スケジュール処理/暗号化
2.11 データベースファイルの再構築
データベースファイルの再構築とは、既存のデータベースをテキストファイルにダンプし、それを新しいデータベースに適用し、データベースファイルを作り直すことである。再構築のメリットとして、主に次の点が挙げられる。
- データベースファイル形式の更新
- データベースファイルのサイズの縮小
- データベースパラメータの変更(ページサイズや暗号化など)
再構築している間はデータベースを停止する必要があるため、頻繁に行うわけにはいかないが(データベースのデータ量や利用のしかたに依存するが)、上記のような問題はまれであろうから、頻繁に再構築する必要もない。必要となったときに実行すればよい。
再構築の手順は、以下のようにunloadとreloadの2つの過程からなる。
- unloadでは、既存のデータベースのスキーマやデータをテキストファイルにダンプする。
- reloadでは、ダンプされた情報を新しいデータベースに適用する。
これらの作業は、Sybase CentralからGUIで操作することも可能だが、ここではコマンドラインによる手順を紹介する。
なお、SQL Anywhere 10以降では、ふたたびファイルフォーマットの互換性が保たれる。
2.11.1 既存データベースのunload
既存データベースをダンプするには、dbunloadコマンドを用いる。
$ dbunload -c "dsn=ASA 9.0 Sample" c:\unload
指定されたデータベースに接続し、引数のディレクトリにダンプされたファイルを生成する。生成されるファイルには2種類あり、(1) reload.sqlというreload用のSQL文が書かれたファイルと、(2) datの拡張子を持つデータファイルからなる。unload終了後、古いデータベースは停止させてかまわない。
2.11.2 新しいデータベースの作成
reload先となる新しいデータベースを作成する。データベースの作成時でしか変更できない項目は、ここで設定する。
$ dbinit -p 8192 new_asademo.db
2.11.3 データのreload
新しいデータベースを起動し、unload時に作成されたreload.sqlを新しいデータベースに対して実行する。
$ dbeng9 -n newasademo new_asademo.db $ dbisql -c "eng=new_asademo;uid=dba;pwd=sql" reload.sql
2.11.4 その他のテクニック
以上が再構築の一連の手順であるが、実は、これらを自動化する便利なオプションがdbunloadコマンドにある。
-an
前ページ以降で説明した作業と同じことをdbunloadコマンドの-anオプションで実行できる(ページサイズの指定は後述)。-anで指定された新しいデータベースを自動作成し、さらにreloadも実行される。ダンプファイルは自動削除されるので残らない。
$ dbunload -c "dsn=ASA 9.0 Sample" -an new_asademo.db
-ar
-arオプションでは、“同じ”データベースに対して再構築できる。“同じ”の意味は、物理的に同じファイルという意味ではなくて、新規に作成されたデータベースが既存のデータベースと置換されるという意味である。すなわち、新データベースへのreloadが完了した後、新データベースは停止し、旧データベースが削除されて、新データベースのファイル名が書き換わる。
$ dbunload -c "dsn=ASA 9.0 Sample" -ar
-ap
-anや-arオプションと共に使われ、新しいデータベースのページサイズを指定できる。
同期に関係するとき
Mobile Link同期クライアントは、トランザクションログを用いて同期するため、再構築の前後でトランザクションログを維持する必要がある。それには、dbunloadコマンドの -arオプションのあとにディレクトリを指定する。そうすると、同期に必要な部分のトランザクションログが指定されたディレクトリに保存されるので、同期クライアントの引数にこのディレクトリを指定すれば、同期が継続できる。