SQL スクリプトファイルにデータベースをアンロードします。
dbunload [ options ] [ directory ]
オプション | 説明 | ||||||
---|---|---|---|---|---|---|---|
@data |
指定された環境変数または設定ファイルからオプションを読み込みます。設定ファイルを参照してください。 設定ファイル内のパスワードなどの情報を保護する場合は、ファイル非表示ユーティリティを使用して、設定ファイルの内容を読みにくくすることができます。ファイル非表示ユーティリティ (dbfhide)を参照してください。 |
||||||
-ac "keyword=value; ..." |
既存のデータベースに接続し、データをそのデータベースに直接再ロードすることによって、データベースのアンロードとその結果を既存のデータベースに再ロードする操作を一度に実行します。このオプションは、Windows Mobile ではサポートされていません。 たとえば、dbinit ユーティリティを使用して新しいデータベースを作成し、このオプションを使用して再ロードすることもできます。この方法は、初期化オプションを変更する場合に便利です。 次のコマンド (すべて 1 行に入力) は、c:\mydata.db データベースのコピーを c:\mynewdata.db という既存のデータベースファイルにロードします。
新しいデータベースが元のデータベースと同じファイル名を持つ必要がある場合、DBN 接続パラメーターを使用して正しいデータベース名を指定します。DatabaseName (DBN) 接続パラメーターを参照してください。 次のコマンド (すべてを 1 行で入力する) は、同じファイル名 mydata.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 [ k ] | 新しいデータベースのページサイズを設定します。-an または -ar も一緒に指定しないと、このオプションは無視されます。データベースのページサイズには、2048、4096、8192、16384、32768 バイトのいずれかを指定できます。デフォルトは元のデータベースのページサイズです。k を使用して、キロバイトの単位を指定します (-ap 4k など)。このオプションとともに -an または -ar のいずれかを指定する必要があります。データベースサーバーですでにデータベースが実行中の場合、サーバーのページサイズ (-gp オプションで設定) は新規ページサイズを処理するのに十分な容量でなければなりません。-gp dbeng12/dbsrv12 サーバーオプションを参照してください。 | ||||||
-ar [ directory ] |
古いデータベースと同じ設定を持つ新しいデータベースを作成し、新しいデータベースを再ロードして、古いデータベースと置き換えます。ただし、サポートされているその他の dbunload オプション (たとえば、ページサイズを変更するときは -ap、テーブル暗号化を有効にするときは -et) を指定して、必要に応じて初期化オプションを変更することができます。 このオプションを使用する場合は、データベースへの他の接続がなく、データベース接続が、ネットワークではなくローカルである必要があります。このオプションは、Windows Mobile 上、または Intel ベースの Mac OS X でバージョン 9 以前のデータベースを再構築する場合にはサポートされません。 オプションの directory を指定すると、レプリケーションを行うためにトランザクションログのオフセットがリセットされ、古いデータベースのトランザクションログが指定のディレクトリに移動されます。指定されたディレクトリは、Message Agent が使用する古いトランザクションログを保持している必要があります。トランザクションログ管理は、データベースがレプリケーションで使用されるときだけ実行されます。SQL Remote パブリッシャーがない場合、古いトランザクションログは不要なので、指定するディレクトリにはコピーされず、削除されます。同期やレプリケーションに関連するデータベースのバックアップを参照してください。 新しいデータベースが作成されると、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 ディレクトリにアンロードされます。
|
||||||
-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 を指定するのではなく) セキュリティを強化するには、128 ビットの場合は AES、256 ビットの場合は AES256 の強力な暗号化を指定します。FIPS 認定の暗号化を使用するには、128 ビットの場合は AES_FIPS、256 ビットの場合は AES256_FIPS をそれぞれ指定してください。強力な暗号化を使用するためには、-ek または -ep オプションも指定する必要があります。強力な暗号化の詳細については、強力な暗号化を参照してください。 暗号化されていないデータベースを作成するには、 -ea オプションを指定しない場合、デフォルトの動作は次のようになります。
アルゴリズム名の大文字と小文字は区別されません。 注意別途ライセンスが必要な必須コンポーネント ECC 暗号化と FIPS 認定の暗号化には、別途ライセンスが必要です。強力な暗号化テクノロジはすべて、輸出規制対象品目です。 別途ライセンスが必要なコンポーネントを参照してください。 |
||||||
-ek key |
(-an オプションを使用して) データベースのアンロードと再ロードを実行する場合に、作成する新しいデータベースに対する暗号化キーを dbunload コマンドに指定します。強力に暗号化されたデータベースを作成する場合、データベースやトランザクションログを使用するには必ず暗号化キーを指定します。データベースの暗号化に使用されるアルゴリズムは、-ea オプションで指定したアルゴリズムです。-ek オプションを指定して、-ea オプションを指定しないと、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 |
|
||||||
-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 テーブルを参照してください。 |
||||||
-kd |
データベースを 1 つの DB 領域ファイルに再ロードします。このオプションは、トレーシングデータベースを作成しているコンピューターのディレクトリ構造が運用データベースと同じでない場合に、トレーシングデータベースを作成するのに便利です。外部トレーシングデータベースの作成 (Sybase Central の場合)を参照してください。 |
||||||
-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 でのみ使用できます。 | ||||||
-qr | テーブルのロードやインデックスの作成を行うときに、進行メッセージの作成と表示をできないようにします。 | ||||||
-r reload-file | 生成される再ロード SQL スクリプトファイルの名前とディレクトリを変更します。デフォルトは現在のディレクトリの 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 スクリプトファイルは、常にユーザーの現在のフォルダーと相対的になります。 |
既存のデータベースをバージョン 12 のデータベースに再構築する方法については、SQL Anywhere サーバーのアップグレードを参照してください。
バージョン 10.0.0 以降のデータベースで dbunload を使用する場合は、使用する dbunload のバージョンが、データベースへのアクセスに使用するデータベースサーバーのバージョンと一致する必要があります。dbunload のバージョンがデータベースサーバーのバージョンより古いまたは新しい場合は、エラーがレポートされます。
アンロードユーティリティを使ってデータベースをアンロードし、指定したディレクトリの中にデータファイルのセットを入れることができます。アンロードユーティリティは、データベースを再構築するために、Interactive SQL スクリプトファイルを作成します。また、各テーブルのすべてのデータを、カンマ区切りの形式で、指定したディレクトリ内のファイルにアンロードします。バイナリデータはエスケープシーケンスを使って正しく再現できます。
内部アンロード/再ロードを実行すると、UPDATE ISYSUSER 文の発行により、各ユーザーの現在のステータスに関する情報がアンロードされます。外部アンロード/再ロードでは、この情報は含まれず、すべてのユーザーのステータスがリセットされます。ログインポリシーを参照してください。
データベースをアンロードしてから再ロードして再構築すると、再構築されたデータベースが元のデータベースより小さくなる場合があります。データベースのサイズが縮小されるのは、SQL Anywhere でのインデックス変更が原因と考えられます。問題やデータが失われたことを示すものではありません。
アンロードユーティリティ (dbunload) を使用してバージョン 11 以前のデータベースを再構築すると、元のデータベースでチェックサムがオフになっていても、新しいデータベースではデフォルトでグローバルチェックサムが有効になります。おすすめできる方法ではありませんが、ALTER DATABASE 文を使用して、データベースのグローバルチェックサムを無効にすることができます。ALTER DATABASE 文とチェックサムを使用した破損の検出を参照してください。
リカバリが必要なバージョン 9 以前のデータベースは、バージョン 10 以降のアンロードユーティリティ (dbunload) を使用して再ロードできません。このようなデータベースはバージョン 9 以前の dbunload を使用して再ロードしてください。
また、アンロードユーティリティを使って、既存のデータベースから直接新しいデータベースを作成できます。これにより、通常のディスクファイルに書き込まれたデータベースの内容に関するセキュリティ問題が生じる可能性を回避できます。
テーブルデータのみをアンロードする場合は、Sybase Central の [データのアンロード] ウィンドウを使用すると 1 つの手順で行えます。
詳細については、[データのアンロード] ウィンドウを使用したデータのエクスポートを参照してください。
レプリケーションに参加しているデータベースをアンロードする場合、特殊な考慮事項がいくつかあります。リモートデータベースの抽出を参照してください。
次の方法で、アンロードユーティリティにアクセスできます。
Sybase Central のデータベースアンロードウィザードを使用する。データベースアンロードウィザードを使用したデータのエクスポートを参照してください。
コマンドプロンプトで、dbunload コマンドを入力する。バッチまたはコマンドファイルへの組み込みには、このユーティリティが便利です。
アンロードユーティリティは、DBA 権限のあるユーザー ID で実行してください。この方法でないと、すべてのデータをアンロードする権限を確実に持つことができません。また、reload.sql ファイルも DBA 権限を持つユーザーが実行する必要があります (通常、このファイルは、パスワードが sql である DBA を唯一のユーザー ID とする新しいデータベースで実行します)。
データベースサーバーの -gl オプションは、データベースからデータをアンロードするときに必要となるパーミッションを制御します。-gl dbeng12/dbsrv12 サーバーオプションを参照してください。
ユーザー 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;Host=host-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 は停止して失敗を示すエラーコードを返し、再構築が失敗したことを他のツールやスクリプトに通知します。
-ar を使用したデータベースの内部再構築で障害が発生すると、新しいデータベースファイルとトランザクションログファイルに .db と .log というファイル拡張子がそれぞれ付けられます。次の手順を使用して、unprocessed.sql ファイルを適用し、再ロードを手動で完了します。
新しいデータベースを起動します。
更新済みの unprocessed.sql ファイルを適用します。
データベースを停止します。
original-name.db と original-name.log を、新しいディレクトリに移動します。
original-name.dbr と original-name.logr ファイルの名前を original-name.db と original-name.log にそれぞれ変更します。
次のコマンドを実行します。
dblog -t original-name.log original-name.db |
テーブル暗号化が有効であるデータベースを再構築するとき、-er または -et を指定して、新しいデータベースのテーブルで暗号化を有効にするかどうかを指定する必要があります。このオプションを指定しないと、データを新しいデータベースにロードしようとしたときにエラーが発生します。
強力に暗号化されたデータベースをアンロードする場合は、暗号化キーを指定します。DatabaseKey (DBKEY) 接続パラメーターを使用して、コマンドに暗号化キーを指定できます。または、暗号化キーを読み取り可能な文字で入力するのではなく、暗号化キーを要求するプロンプトを表示させる場合は、次に示すように -ep サーバーオプションを使用できます。
dbunload -c "DBF=myenc.db;START=dbeng12 -ep" |
-an オプションを使用してデータベースをアンロードし、新しいデータベースに再ロードするときに、-ek または -ep オプションを使用して新しいデータベースに対して暗号化キーを設定する場合は、次の点を考慮してください。
元のデータベースが強力に暗号化されている場合は、-ek または -ep オプションではなく、-c オプションで DatabaseKey (DBKEY) 接続パラメーターを使用して、元のデータベースに対するキーを指定する必要があります。
-ek または- ep オプションを使用すると、暗号化されていないデータベースをアンロードし、強力に暗号化された新しいデータベースに再ロードできます。-ep および -an を使用するときは、キーが正しいことを確認してください。正しくない場合は、アンロードは失敗します。
元のデータベースが強力に暗号化されていても、-ek または -ep オプションを使用しないと、新しいデータベースは単純暗号化で暗号化されます。
-an が指定されていない場合は、-ek と -ep オプションは無視されます。dbunload の -ek と -ep オプションが新しいデータベースに適用されるのに対し、データベースサーバー (dbeng12/dbsrv12) オプションと DBKEY= は既存のデータベースに適用されます。
同期またはレプリケーションに使用しているデータベースを再構築する場合、dbunload は、-ek または -ep オプションで指定された暗号化キーが元のデータベースおよび再構築されるデータベースの暗号化キーであると見なします。
暗号化の詳細については、-ep dbeng12/dbsrv12 サーバーオプションとDatabaseKey (DBKEY) 接続パラメーターを参照してください。
データベースをアンロードするときには、まずそのデータベースが動作していないことを確認します。次に、dbunload を実行します。このとき、DBA ユーザーとパスワードを指定し、DBF= 接続パラメーターでデータベースを指定します。
データベースを再ロードするには、新しいデータベースを作成し、生成された reload.sql スクリプトファイルを Interactive SQL を介して実行します。
アンロードと再ロードを一度に行うには、dbunload を実行するときに、上記のアンロードに必要なオプションを指定するとともに、-an オプションで新しいデータベースファイルの名前を指定します。-ac と -an オプションの説明を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |