SQL コマンド・ファイルにデータベースをアンロードします。
dbunload [ options ] [ directory ]
オプション | 説明 | ||||
---|---|---|---|---|---|
@data |
指定された環境変数または設定ファイルからオプションを読み込みます。設定ファイルの使用を参照してください。 設定ファイル内のパスワードなどの情報を保護する場合は、ファイル難読化ユーティリティを使用して、設定ファイルの内容を難読化できます。ファイル難読化ユーティリティ (dbfhide)を参照してください。 |
||||
-ac "keyword=value; ..." |
既存のデータベースに接続し、データをそのデータベースに直接再ロードすることによって、データベースのアンロードとその結果を既存のデータベースに再ロードする操作を一度に実行します。このオプションは、Windows Mobile ではサポートされていません。 たとえば、初期化ユーティリティを使用して新しいデータベースを作成し、このオプションを使用して再ロードすることもできます。この方法は、初期化オプションを変更する場合に便利です。 次のコマンド (すべて 1 行に入力) は、c:\mydata.db データベースのコピーを c:\mynewdata.db という既存のデータベース・ファイルにロードします。
元のデータベースがバージョン 9 以前の SQL Anywhere で作成されており、新しいデータベースがまだ実行されていない場合は、-ac オプションでデータベース・サーバの名前を指定する必要があります。次に例を示します。
このオプションを使用した場合、データの中間コピーはディスク上に作成されないため、コマンドにアンロード・ディレクトリは指定しないでください。これにより、データのセキュリティが向上します。 |
||||
-an database |
このオプションを使用すると、データベースのアンロード、新規データベースの作成、データのロードを一度に実行できます。このオプションは、Windows Mobile 上、または Intel ベースの Mac OS X でバージョン 9 以前のデータベースを再構築する場合にはサポートされません。 ソース・データベースを作成したときに指定されたオプションが、新しいデータベースの作成に使用されます。ただし、サポートされているその他の dbunload オプション (たとえば、ページ・サイズを変更するときは -ap、テーブル暗号化を有効にするときは -et) を指定して、必要に応じて初期化オプションを変更することができます。 たとえば、次のコマンド (すべて 1 行に入力) は、mydatacopy.db という名前の新規データベース・ファイルを作成し、mydata.db のスキーマとデータをその中にコピーします。
このオプションを使用した場合、データの中間コピーはディスク上に作成されないため、コマンドにアンロード・ディレクトリは指定しません。これにより、データのセキュリティが向上します。 新しいデータベースが作成されると、DB 領域ファイル名に R が追加され、元のデータベースの DB 領域と同じディレクトリに新しいデータベースの DB 領域が作成された場合の名前の競合を防ぎます。たとえば、アンロードされたデータベースの library.db ファイルに library という DB 領域がある場合、新しいデータベースの library DB 領域は library.dbR となります。 -an には、ファイル名としてデータベース・サーバに対する相対パスを指定します。 |
||||
-ap size | 新しいデータベースのページ・サイズを設定します。-an または -ar も一緒に指定しないと、このオプションは無視されます。データベースのページ・サイズには、2048、4096、8192、16384、32768 バイトのいずれかを指定できます。デフォルトは元のデータベースのページ・サイズです。このオプションとともに -an または -ar のいずれかを指定する必要があります。データベース・サーバですでにデータベースが実行中の場合、サーバのページ・サイズ (-gp オプションで設定) は新規ページ・サイズを処理するのに十分な容量でなければなりません。-gp サーバ・オプションを参照してください。 | ||||
-ar [ directory ] |
古いデータベースと同じ設定を持つ新しいデータベースを作成し、新しいデータベースを再ロードして、古いデータベースと置き換えます。ただし、サポートされているその他の dbunload オプション (たとえば、ページ・サイズを変更するときは -ap、テーブル暗号化を有効にするときは -et) を指定して、必要に応じて初期化オプションを変更することができます。 このオプションを使用する場合は、データベースへの他の接続がなく、データベース接続が、ネットワークではなくローカルである必要があります。このオプションは、Windows Mobile 上、または Intel ベースの Mac OS X でバージョン 9 以前のデータベースを再構築する場合にはサポートされません。 オプションの directory を指定すると、レプリケーションを行うためにトランザクション・ログのオフセットがリセットされ、古いデータベースのトランザクション・ログが指定のディレクトリに移動されます。指定されたディレクトリは、Message Agent と Replication Agent が使用する古いトランザクション・ログを保持している必要があります。トランザクション・ログ管理は、データベースがレプリケーションで使用されるときだけ実行されます。SQL Remote パブリッシャや LTM チェックがない場合、古いトランザクション・ログは不要なので、指定するディレクトリにはコピーされず、削除されます。同期やレプリケーションに関連するデータベースのバックアップを参照してください。 新しいデータベースが作成されると、DB 領域ファイル名に R が追加され、元のデータベースの DB 領域と同じディレクトリに新しいデータベースの DB 領域が作成された場合の名前の競合を防ぎます。たとえば、アンロードされたデータベースの library.db ファイルに library という DB 領域がある場合、新しいデータベースの library DB 領域は library.dbR となります。 暗号化されたデータベースを再構築する場合は、新しいデータベースで元のデータベースと同じ暗号化キーを使用する必要があります。 -ar オプションを使用すると、データベースのトランケーション・ポイントが 0 にリセットされます。 |
||||
-c "keyword=value; ..." |
ソース・データベースの接続パラメータを指定します。接続パラメータの説明については、接続パラメータを参照してください。ユーザはデータベースの全テーブル上にパーミッションを持っている必要があるため、user ID には DBA 権限を持つユーザ ID を指定してください。 たとえば、次の文は、パスワード sql を指定してユーザ ID DBA として接続し、サンプル・データベースをアンロードします。データは c:\unload ディレクトリにアンロードされます。
samples-dir の詳細については、サンプル・ディレクトリを参照してください。 |
||||
-cm { sql | dbinit } |
サーバ・メッセージ・ウィンドウに、アンロードしているデータベースと同じデータベースを作成する CREATE DATABASE 文または dbinit コマンドを表示します。-an も一緒に指定した場合、表示されるコマンドは、新しいデータベースを作成するコマンドです。
既存の強力に暗号化された (-an を指定していない) データベースの文またはコマンドを表示するとき、データベースから暗号化キーを取得できないので、ENCRYPTED 句または -ek オプションに疑問符 (?) が表示されます。 バージョン 10 以前のデータベース・サーバで作成したデータベースをアンロードする場合は、データベースを作成するコマンドまたは文は表示されません。 |
||||
-cp | 実行される UNLOAD TABLE 文に COMPRESSED キーワードを追加して、テーブル・データ出力ファイルを圧縮します。このオプションは、-an または -ar が指定されている場合は機能しません。 | ||||
-d | このオプションを指定すると、データベース定義コマンド (CREATE TABLE、CREATE INDEX など) は生成されません。reload.sql にはデータを再ロードするための文のみが記述されます。 | ||||
-dc |
データベース内のすべての計算カラムを再計算します。デフォルトでは、計算カラムは再計算されません。-dc オプションを指定すると、reload.sql スクリプトに計算カラムの再計算に対応するセクションが追加されます。追加される文は次のような形式です。
テーブルに CURRENT DATE などのコンテキスト依存の計算カラムがある場合は、-dc オプションを使用するのではなく、ALTER TABLE 文を使用して計算カラムの値を再計算することをおすすめします。ALTER TABLE 文を参照してください。 |
||||
-e table, ... |
指定されたテーブルを reload.sql ファイルから除外します。大文字と小文字を区別するデータベースであっても、テーブル名では常に大文字と小文字が区別されません。 -e オプションを使用して作成した reload.sql ファイルにはすべてのデータベース・テーブルが含まれるわけではないので、このファイルを使用してデータベースを再構築しないでください。外部キーによって参照されているテーブルがある場合、そのテーブルの内容がなければ、データベースを再構築できません。 -e オプションを使用する場合は、必ず -d オプションも使用し、-e で指定したテーブルを除くすべてのテーブルのデータをアンロードすることをおすすめします。 |
||||
-ea algorithm |
データベース暗号化またはテーブル暗号化 (-et) で使用する暗号化アルゴリズムを指定します。単純暗号化の場合は、(-ek や -ep を指定するのではなく) -ea simple を指定します。単純暗号化はデータベースの難読化に相当し、データベース・ファイルが不用意に直接アクセスされた場合にデータが表示されないようにすることだけを目的としています。これにより第三者は、ディスク・ユーティリティを使用してファイルを表示し、データベースのデータを解読することが困難になります。 セキュリティを強化するには、128 ビットの場合は AES、256 ビットの場合は AES256 の強力な暗号化を指定します。FIPS 認定の暗号化を使用するには、128 ビットの場合は AES_FIPS、256 ビットの場合は AES256_FIPS をそれぞれ指定してください。強力な暗号化を使用するためには、-ek または -ep オプションも指定する必要があります。強力な暗号化の詳細については、強力な暗号化を参照してください。 暗号化されていないデータベースを作成するには、-ea none を指定するか、-ea オプションを指定しません (-e、-et、-ep、-ek オプションも指定しません)。 -ea オプションを指定しない場合、デフォルトの動作は次のようになります。
アルゴリズム名の大文字と小文字は区別されません。 別途ライセンスが必要な必須コンポーネントECC 暗号化と FIPS 認定の暗号化には、別途ライセンスが必要です。強力な暗号化テクノロジはすべて、輸出規制対象品目です。 別途ライセンスが必要なコンポーネントを参照してください。 |
||||
-ek key |
(-an オプションを使用して) データベースのアンロードと再ロードを実行する場合に、作成する新しいデータベースに対する暗号化キーを dbunload コマンドに指定します。強力に暗号化されたデータベースを作成する場合、データベースやトランザクション・ログを使用するには必ず暗号化キーを指定します。データベースの暗号化に使用されるアルゴリズムは、-ea オプションで指定したアルゴリズムです。-ea オプションを指定せずに、-ek オプションを指定すると、AES アルゴリズムが使用されます。強力な暗号化を参照してください。 キーは保護してください。キーのコピーは、安全な場所に保管してください。キーを紛失すると、データベースにまったくアクセスできなくなり、リカバリも不可能になります。 |
||||
-ep |
(-an オプションを使用して) データベースのアンロードと再ロードを実行する場合に、作成する新しいデータベースに対する暗号化キーの指定を求めるプロンプトを表示します。クリア・テキストでは暗号化キーを見ることができないようにすることで、高いセキュリティが得られます。-an を指定せずに -ep を指定した場合、-ep オプションは無視されます。-ep と -an を指定する場合は、暗号化キーが正確に入力されたことを確認するために、2 回入力してください。キーが一致しない場合は、アンロードは失敗します。強力な暗号化を参照してください。 |
||||
-er |
アンロード中に暗号化されたテーブルの暗号化を解除します。 テーブル暗号化が有効であるデータベースを再構築するとき、-er または -et を指定して、新しいデータベースのテーブルで暗号化を有効にするかどうかを指定する必要があります。このオプションを指定しないと、データを新しいデータベースにロードしようとしたときにエラーが発生します。 次のコマンドは、テーブルの暗号化を解除してデータベース (mydata.db) をアンロードし、テーブル暗号化が有効になっていない新しいデータベース (mydatacopy.db) に再ロードします。
|
||||
-et |
新しいデータベースのテーブル暗号化を有効にします (-an または -ar も一緒に指定する必要があります)。-ea オプションを指定せずに -et オプションを指定すると、AES アルゴリズムが使用されます。-et オプションを指定する場合、-ep または -ek も指定しないと操作は失敗します。新しいデータベースのテーブル暗号化設定を変更して、アンロードしているデータベースのテーブル暗号化設定とは異なるものに設定できます。 テーブル暗号化が有効であるデータベースを再構築するとき、-er または -et を指定して、新しいデータベースのテーブルで暗号化を有効にするかどうかを指定する必要があります。このオプションを指定しないと、データを新しいデータベースにロードしようとしたときにエラーが発生します。 次の例は、テーブルが単純暗号化アルゴリズムによって暗号化されているデータベース (mydata.db) を、テーブル暗号化が有効になっている新しいデータベース (mydatacopy.db) にアンロードし、キーを 34jh として AES_FIPS アルゴリズムを使用します。
|
||||
-g |
マテリアライズド・ビュー MANUAL REFRESH と定義されているマテリアライズド・ビューは、デフォルトでは再ロード後に初期化されません。このようなマテリアライズド・ビューを再ロード・プロセス中に初期化するには、-g オプションを指定してください。-g を指定すると、データベース・サーバによって sa_refresh_materialized_views システム・プロシージャが実行されます。sa_refresh_materialized_views システム・プロシージャを参照してください。 -g オプションを指定するかどうかを決定するときには、すべてのマテリアライズド・ビューを初期化すると再ロード・プロセスの実行時間が大幅に長くなる可能性があることを考慮に入れてください。一方、-g オプションを指定しない場合、初期化されていないマテリアライズド・ビューを最初に使用しようとしたクエリはビューの初期化が完了するまで待つことになり、予想外の遅延が生じることがあります。-g オプションを指定しない場合は、再ロードの完了後に、マテリアライズド・ビューを手動で初期化することもできます。マテリアライズド・ビューの初期化を参照してください。 テキスト・インデックス MANUAL REFRESH と定義されているテキスト・インデックスは、デフォルトでは再ロード後に初期化されません。このようなテキスト・インデックスを再ロード・プロセス中に初期化するには、-g オプションを指定してください。-g を指定すると、データベース・サーバによって sa_refresh_text_indexes システム・プロシージャが実行されます。sa_refresh_text_indexes システム・プロシージャを参照してください。 |
||||
-ii | UNLOAD 文を使用してデータベースからデータを抽出し、reload.sql ファイル内の LOAD 文を使用してデータベースにデータを再移植します。これはデフォルトです。 | ||||
-ix | UNLOAD 文を使用してデータベースからデータを抽出し、reload.sql ファイル内の Interactive SQL の INPUT 文を使用してデータベースにデータを再移植します。 | ||||
-k |
sa_diagnostic_auxiliary_catalog テーブルにデータを移植します。このテーブルは、テーブル、ユーザ、プロシージャなどのデータベース・オブジェクト ID をソース・データベースからトレーシング・データベースにマッピングします。このとき、すべてのヒストグラムがアンロード/再ロードされます。このオプションは、診断トレーシング情報を受け取るトレーシング・データベースを作成する場合に使用します。sa_diagnostic_auxiliary_catalog テーブルによって、サーバはトレーシング・データを収集したときの状態を (インデックス・コンサルタントやアプリケーション・プロファイリングなどの目的で) シミュレートすることができます。このオプションが特に役立つのは、-n オプションと一緒に指定した場合です。診断トレーシングを使用した詳細なアプリケーション・プロファイリングとsa_diagnostic_auxiliary_catalog テーブルを参照してください。 |
||||
-l |
データベースを再構築しても SYSTABCOL.max_identity の現在の値を維持します。 デフォルトでは、オートインクリメント・カラムがあるテーブルを含むデータベースを再構築すると、データベース・サーバでは、テーブルの現在の内容に基づいて、各オートインクリメント・カラムに使用できる次の値が計算されます。ほとんどの場合はこの処理で十分です。ただし、値の範囲の最後からローが削除されている場合は、値が再利用される可能性があり、この処理が適切ではない場合があります。 -l オプションを指定すると、オートインクリメント値が含まれるテーブルごとに、sa_reset_identity システム・プロシージャへの呼び出しが生成される reload.sql スクリプトに追加され、SYSTABCOL.max_identity の現在の値が維持されます。 参照 |
||||
-m | レプリケーションに参加しているデータベースでユーザ ID を保存しません。 | ||||
-n | データベースのデータをアンロードしません。reload.sql には、データベースの構造だけを構築する SQL 文が記述されています。reload.sql ファイルに LOAD TABLE 文または INPUT 文を追加する場合は、-n ではなく -nl を使用してください。 | ||||
-nl | 構造体をアンロードします (-n オプションと同じ動作)。ただし、生成される reload.sql ファイルには、各テーブルに対する LOAD TABLE 文または INPUT 文も含まれます。このオプションを使用した場合、ユーザ・データはアンロードされません。-nl を指定するときには、LOAD/INPUT 文を生成できるようにデータ・ディレクトリも指定する必要があります。ただし、このディレクトリにファイルは書き込まれません。このオプションを指定すると、データをアンロードしない再ロード・スクリプトを生成できます。データをアンロードするには、-d
を指定します。データベースにデータのアンロードが不要なテーブルがある場合は、dbunload -d -e table-name と指定することによって、そのテーブルのデータをアンロードの対象から除外することができます。
|
||||
-no |
データベース・オブジェクトを名前順にアンロードします。デフォルトでは、dbunload は作成された順にオブジェクトを生成します。作成順序が異なる同一のオブジェクトが複数のデータベース内にある場合は、-no オプションを指定すると、データベース・スキーマを比較する際に役立ちます。 -no を指定すると、オブジェクトの定義は reload.sql ファイル内でオブジェクト・タイプのアルファベット順で分類されます。
オブジェクトの定義は、所有者と名前の順で出力されます。場合によっては、3 つ目の要素 (たとえば、外部キーのロール名や、トリガ名) が順序の決定に関与することもあります。 -no オプションは、-n、-nl、-ar、-an、-ac オプションと一緒には使用できません。同じバージョンのデータベース・サーバを使用して作成されたデータベースの再ロード・スクリプトを比較するときは、比較を簡単にするために、-no オプションを使用することをおすすめします。これは、オブジェクトの定義間にわずかな違いがあるからです。 警告オブジェクトの作成順序が重要な意味を持つこともあるため、生成されたファイルを使用して新しいデータベースを作成しないでください。たとえば、プロシージャ p2 がプロシージャ p1 を呼び出し、p1 が結果セットを返す場合、p1 を p2 の前に定義することが重要です。-no オプションを指定して生成された reload.sql スクリプトを実行しようとすると、エラーが発生します。 |
||||
-o filename | 指定したファイルに、出力メッセージを書き込みます。このファイルのロケーションは dbunload に対する相対パスで指定します。 | ||||
-p char | 外部アンロード (dbunload -x オプション) で使用するデフォルトのエスケープ文字 (\) を別の文字に変更できます。このオプションは、このユーティリティをコマンド・プロンプトから実行する場合のみ使用できます。 | ||||
-q | クワイエット・モードで実行します (メッセージまたはウィンドウを表示しません)。このオプションは、このユーティリティをコマンド・プロンプトから実行する場合のみ使用できます。-q を指定する場合、-y も指定する必要があります。-y を指定しなければ、reload.sql がすでに存在する場合、アンロードは失敗します。 | ||||
-qc | アンロードの完了後にメッセージ・ウィンドウを閉じます。デフォルトでは、dbunload のメッセージ・ウィンドウはユーザが閉じるまで開いたままです。このオプションは Windows Mobile でのみ使用できます。 | ||||
-r reload-file | 生成される再ロード・コマンド・ファイルの名前とディレクトリを変更します。デフォルトは現在のディレクトリの reload.sql です。ディレクトリは、サーバではなく、クライアント・アプリケーションの現在のディレクトリに相対します。 | ||||
-t table, ... |
アンロードするテーブルのリストを指定します。デフォルトでは、すべてのテーブルがアンロードされます。-n オプションと一緒に使うと、テーブル定義のセットだけをアンロードできます。大文字と小文字を区別するデータベースであっても、テーブル名では常に大文字と小文字が区別されません。 -t オプションを使用して作成した reload.sql ファイルにはすべてのデータベース・テーブルが含まれるわけではないので、このファイルを使用してデータベースを再構築しないでください。外部キーによって参照されているテーブルがある場合、そのテーブルの内容がなければ、データベースを再構築できません。 -t オプションを使用する場合は、必ず -d オプションも使用し、-t で指定したテーブルのデータをアンロードすることをおすすめします。 |
||||
-u | 矛盾したインデックスを持つデータベースをアンロードする場合に、このオプションを使用すると、矛盾したインデックスがデータの順序付けに使われることはありません。通常、各テーブルでは、プライマリ・キーまたはクラスタード・インデックスが定義されている場合、それに基づいてデータが順序付けられます。 | ||||
-v | アンロードしているテーブルの名前と、アンロードが完了したローの数を表示します。このオプションは、dbunload をコマンド・プロンプトから実行する場合にのみ使用できます。 | ||||
-xi | dbunload クライアントへデータをアンロードし、生成された再ロード・コマンド・ファイル reload.sql 内の LOAD 文を使用することで外部アンロードを実行し、データベースにデータを再移植します。 | ||||
-xx | dbunload クライアントへデータをアンロードし、生成された再ロード・コマンド・ファイル reload.sql 内の Interactive SQL の INPUT 文を使用することによって外部アンロードを実行し、データベースにデータを再移植します。 | ||||
-y |
確認メッセージを表示することなく、既存のコマンド・ファイルを置き換えます。-q を指定する場合、-y も指定する必要があります。-y を指定しなければ、dbunload が既存のコマンド・ファイルを検出した場合、アンロードは失敗します。 レプリケーションに参加しているデータベースをアンロードする場合、特殊な考慮事項がいくつかあります。リモート・データベースの抽出とSQL Remote のアップグレードを参照してください。 |
||||
directory | アンロードされたデータを格納するディレクトリを指定します。reload.sql コマンド・ファイルは、常にユーザの現在のディレクトリと相対的になります。 |
既存のデータベースをバージョン 11 のデータベースに再構築する方法については、SQL Anywhere のアップグレードを参照してください。
バージョン 10.0.0 以降のデータベースで dbunload を使用する場合は、使用する dbunload のバージョンが、データベースへのアクセスに使用するデータベース・サーバのバージョンと一致する必要があります。dbunload のバージョンがデータベース・サーバのバージョンより古いまたは新しい場合は、エラーがレポートされます。
アンロード・ユーティリティを使ってデータベースをアンロードし、指定したディレクトリの中にデータ・ファイルのセットを入れることができます。アンロード・ユーティリティは、データベースを再構築するために、Interactive SQL コマンド・ファイルを作成します。また、各テーブルのすべてのデータを、カンマ区切りの形式で、指定したディレクトリ内のファイルにアンロードします。バイナリ・データはエスケープ・シーケンスを使って正しく再現できます。
内部アンロード/再ロードを実行すると、UPDATE ISYSUSER 文の発行により、各ユーザの現在のステータスに関する情報がアンロードされます。外部アンロード/再ロードでは、この情報は含まれず、すべてのユーザのステータスがリセットされます。ログイン・ポリシーの管理の概要を参照してください。
データベースをアンロードしてから再ロードして再構築すると、再構築されたデータベースが元のデータベースより小さくなる場合があります。データベースのサイズが縮小されるのは、SQL Anywhere でのインデックス変更が原因と考えられます。問題やデータが失われたことを示すものではありません。
リカバリが必要なバージョン 9 以前のデータベースは、バージョン 10 以降のアンロード・ユーティリティ (dbunload) を使用して再ロードできません。このようなデータベースはバージョン 9 以前の dbunload を使用して再ロードしてください。
また、アンロード・ユーティリティを使って、既存のデータベースから直接新しいデータベースを作成できます。これにより、通常のディスク・ファイルに書き込まれたデータベースの内容に関するセキュリティ問題が生じる可能性を回避できます。
テーブル・データのみをアンロードする場合は、Sybase Central の [データのアンロード] ウィンドウを使用すると 1 つの手順で行えます。
詳細については、[データのアンロード] ウィンドウを使用したデータのエクスポートを参照してください。
レプリケーションに参加しているデータベースをアンロードする場合、特殊な考慮事項がいくつかあります。リモート・データベースの抽出を参照してください。
次の方法で、アンロード・ユーティリティにアクセスできます。
Sybase Central の データベース・アンロード・ウィザードを使用する。データベース・アンロード・ウィザードを使用したデータのエクスポートを参照してください。
コマンド・プロンプトで、dbunload コマンドを入力する。バッチまたはコマンド・ファイルへの組み込みには、このユーティリティが便利です。
アンロード・ユーティリティは、DBA 権限のあるユーザ ID で実行してください。この方法でないと、すべてのデータをアンロードする権限を確実に持つことができません。また、reload.sql ファイルも DBA 権限を持つユーザが実行する必要があります(通常、このファイルは、パスワードが sql である DBA を唯一のユーザ ID とする新しいデータベースで実行します)。
データベース・サーバの -gl オプションは、データベースからデータをアンロードするときに必要となるパーミッションを制御します。-gl サーバ・オプションを参照してください。
ユーザ ID dbo は、データベース内のシステム・オブジェクトを所有します。これにはビューやストアド・プロシージャも含まれます。
アンロード・ユーティリティでは、データベース作成時に dbo ユーザ ID 用に作成されたオブジェクトをアンロードしません。データベースをアンロードすると、システム・プロシージャの再定義など、これらのオブジェクトに加えられた変更は失われます。データベースの初期化以降に dbo ユーザ ID によって作成されたオブジェクトは、アンロード・ユーティリティでアンロードされ、これらのオブジェクトは保存されます。
データベースをアンロードした場合、システム・オブジェクトに対するパーミッションの変更はアンロードされません。必要に応じて、新しいデータベースでパーミッションの付与または取り消しを行う必要があります。
データベースを再構築する前に、データを含めないでデータベースを再ロードして、再ロード・プロセスを検証することをおすすめします。次のようなコマンドを実行してください。
dbunload -n -an new.db -c "UID=your-user-id;PWD=your-password;DBF=original-database-file" |
元のデータベースに問題が見つかった場合は、修正してから再構築してください。
デフォルト・モードの場合、または -ii か -ix を使用する場合、データを格納するために dbunload が使用するディレクトリは、ユーザの現在のディレクトリではなく、データベース・サーバとの相対ディレクトリになります。
-xi または -xx を使用する場合、ディレクトリはユーザの現在のディレクトリとの相対ディレクトリになります。
このモードでファイル名とパスを指定する方法の詳細については、UNLOAD 文を参照してください。
テーブルのリストがない場合、すべてのデータベースをアンロードします。テーブルのリストがある場合、リストにあるテーブルだけをアンロードします。
アンロードされたデータには、reload.sql ファイルで生成された LOAD TABLE 文のカラム・リストが含まれています。カラム・リストのアンロードにより、テーブル内のカラムを並べ替えることができます。テーブルは削除または再作成することができ、その後 reload.sql を使用して再移植できます。
dbunload が生成する LOAD TABLE 文は、検査制約と計算カラムを無効にします。
終了コードは、0 (成功) または 0 以外の値 (失敗) です。ソフトウェア・コンポーネントの終了コードを参照してください。
データベースを再構築した後は、データベースでマテリアライズド・ビューをリフレッシュすることをおすすめします。手動ビューのリフレッシュを参照してください。
トレーシング情報は、データベースのアンロードまたは再ロード操作の一環としてアンロードされません。トレーシング情報を別のデータベースに転送する場合は、sa_diagnostic_* テーブルの内容をコピーして、手動で転送してください。ただし、この方法はおすすめしません。
-ii、-ix、-xi、-xx オプションを使用して、内部アンロード、外部アンロード、内部再ロード、外部再ロードを組み合わせます。内部コマンド (UNLOAD/LOAD) を使用すると、外部コマンド (Interactive SQL の INPUT と OUTPUT 文) に比べ、パフォーマンスが大幅に向上します。ただし、内部コマンドはサーバから実行されるため、ファイルとディレクトリは、データベース・サーバに対する相対パスを使用します。外部コマンドを使用すると、ユーザの現在のディレクトリに対する相対パスを使用することになります。
Sybase Central では、サーバに相対してアンロードするか、クライアントに相対してアンロードするかを指定できます。UNLOAD 文を参照してください。
データベースのアンロード、再ロード、または再構築を行うために外部アンロードや再ロードを行う場合、データベースの文字セットと dbunload を実行しているホスト・システムの文字セットとの間に互換性がないと、文字セットを変換することでデータが破損する可能性があります。これは、データベースの文字セットとホスト・システムの文字セットの間で変換が行われることが原因です。
この問題を回避するため、データベース用の接続文字列にデータベースの文字セットを指定します (-c オプションと -ac オプションを使用)。たとえば、データベースの文字セットが UTF-8 である場合、接続文字列に "charset=utf-8" を含めます。
dbunload -c UID=user-ID;PWD=password; CHARSET=utf-8;DBF=filename -ac UID=user-ID; PWD=password;CHARSET=utf-8;ENG=server-name -xx |
外部アンロードを行うと、reload.sql の先頭に、コメントアウトされた CREATE DATABASE 文が含まれます。この文を使用して、アンロードしているデータベースと同じデータベースを作成できます。
アンロードしたデータベースがバージョン 9 以前の SQL Anywhere で作成され、カスタム照合があった場合は、COLLATION 句は次のようになります。
COLLATION collation-label DEFINITION collation-definition |
ここで collation-definition はカスタム照合を指定する文字列です。
カスタム照合を保持する唯一の方法は、データベースを 1 ステップ (内部アンロード) で再構築することです。データベースをアンロードしてから、作成したデータベースにスキーマとデータをロードする場合は、提供されるいずれかの照合を使用する必要があります。
アンロードしたデータベースが強力な暗号化を使用して作成されていた場合は、CREATE DATABASE 文の KEY 句の値が疑問符 3 つ (???) として表示されます。
テーブル・データの再ロードとテーブル上のインデックスの再構築が完了した後で、-ar または -an を使用してデータベースの内部再構築を行っているときに障害が発生した場合、dbunload は現在のディレクトリに unprocessed.sql というファイルを作成します。このファイルには、障害が発生したために実行されなかった文が記録され、障害の原因となった文もコメントとして示されています。次に、unprocessed.sql ファイルの例を示します。
-- The database reload failed with the following error: -- ***** SQL error: the-SQL-ERROR -- This script contains the statements that were not executed as a -- result of the failure. The statement that caused the failure is -- commented out below. To complete the reload, correct the failing -- statement, remove the surrounding comments and execute this script. /* the failing statement go */ setuser "DBA" go ... the remainder of the statements to be processed |
このファイルがあると、障害の原因となった文を修正、削除、または変更できます。unprocessed.sql ファイルは、すべてのテーブル・データと参照整合性制約が再ロードされた後に作成されます。Interactive SQL を使用して新しいデータベースに接続し、更新された unprocessed.sql ファイルを実行できます。この方法で、再構築を最初からやり直さずにデータベースの再構築を完了でき、場合によっては時間を大幅に節約できます。
unprocessed.sql ファイルを生成するとき、dbunload は停止して失敗を示すエラー・コードを返し、再構築が失敗したことを他のツールやスクリプトに通知します。
テーブル暗号化が有効であるデータベースを再構築するとき、-er または -et を指定して、新しいデータベースのテーブルで暗号化を有効にするかどうかを指定する必要があります。このオプションを指定しないと、データを新しいデータベースにロードしようとしたときにエラーが発生します。
強力に暗号化されたデータベースをアンロードする場合は、暗号化キーを指定します。DatabaseKey (DBKEY) 接続パラメータを使用して、コマンドに暗号化キーを指定できます。または、暗号化キーを読み取り可能な文字で入力するのではなく、暗号化キーを要求するプロンプトを表示させる場合は、次に示すように -ep サーバ・オプションを使用できます。
dbunload -c "DBF=enc.db;START=dbeng11 -ep" |
-an オプションを使用してデータベースをアンロードし、新しいデータベースに再ロードするときに、-ek または -ep オプションを使用して新しいデータベースに対して暗号化キーを設定する場合は、次の点を考慮してください。
元のデータベースが強力に暗号化されている場合は、-ek または -ep オプションではなく、-c オプションで DatabaseKey (DBKEY) 接続パラメータを使用して、元のデータベースに対するキーを指定する必要があります。
-ek または- ep オプションを使用すると、暗号化されていないデータベースをアンロードし、強力に暗号化された新しいデータベースに再ロードできます。-ep および -an を使用するときは、キーが正しいことを確認してください。正しくない場合は、アンロードは失敗します。
元のデータベースが強力に暗号化されていても、-ek または -ep オプションを使用しないと、新しいデータベースは単純暗号化で暗号化されます。
-an が指定されていない場合は、-ek と -ep オプションは無視されます。dbunload の -ek と -ep オプションが新しいデータベースに適用されるのに対し、データベース・サーバ (dbeng11/dbsrv11) オプションと DBKEY= は既存のデータベースに適用されます。
暗号化の詳細については、-ep サーバ・オプションとDatabaseKey 接続パラメータ [DBKEY]を参照してください。
データベースをアンロードするときには、まずそのデータベースが動作していないことを確認します。次に、dbunload を実行します。このとき、DBA ユーザとパスワードを指定し、DBF= 接続パラメータでデータベースを指定します。
データベースを再ロードするには、新しいデータベースを作成し、生成された reload.sql コマンド・ファイルを Interactive SQL を介して実行します。
アンロードと再ロードを一度に行うには、dbunload を実行するときに、上記のアンロードに必要なオプションを指定するとともに、-an オプションで新しいデータベース・ファイルの名前を指定します。 -ac と -an オプションの説明を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |