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 Remote » SQL Remote のリファレンス » SQL Remote ユーティリティとオプションのリファレンス

 

抽出ユーティリティ (dbxtract)

SQL Anywhere の統合データベースからリモート・データベースを抽出します。

構文
dbxtract [ options ] [ directory ] subscriber
オプション 説明
@data

設定ファイルからオプションを読み出します。@data サーバ・オプションを参照してください。

このオプションを使用すると、指定された環境変数または設定ファイルからオプションを読み込むことができます。同じ名前の環境変数と設定ファイルが両方存在する場合は、環境変数が使用されます。設定ファイルの使用を参照してください。

設定ファイル内のパスワードなどの情報を保護する場合は、ファイル難読化ユーティリティを使用して、設定ファイルの内容を難読化できます。ファイル難読化ユーティリティ (dbfhide)を参照してください。

-ac "keyword=value; ..."

接続文字列で指定したデータベースに接続して、再ロードします。

このオプションを使用すると、データベースのアンロード処理と、既存データベースへの結果の再ロード処理を組み合わせることができます。

たとえば、次のコマンド (1 行で入力) は、field_user サブスクライバのデータのコピーを既存のデータベース・ファイル c:\field.db にロードします。

dbxtract -c "UID=DBA;PWD=sql;DBF=c:\cons.db" 
-ac "UID=DBA;PWD=sql;DBF=c:\field.db" field_user

このオプションを使用した場合、データのコピーはディスク上に作成されないため、コマンドでアンロード用ディレクトリを指定する必要はありません。これによりデータのセキュリティは高まりますが、パフォーマンスは多少低下します。

-al filename -an オプションを使用している場合は、新しいデータベースのトランザクション・ログ・ファイル名を指定します。
-an database

抽出するデータベースと同じ設定でデータベース・ファイルを作成し、それを自動的に再ロードします。

このオプションを使用すると、データベースのアンロード、新規データベースの作成、データのロードを組み合わせて実行できます。

たとえば、次のコマンド (1 行で入力) は、新規のデータベース・ファイル c:\field.db を作成し、そこに c:\cons.db の field_user サブスクライバのスキーマとデータをコピーします。

dbxtract -c "UID=DBA;PWD=sql;DBF=c:\cons.db" 
-an c:\field.db field_user

このオプションを使用した場合、データのコピーはディスク上に作成されないため、コマンドでアンロード用ディレクトリを指定する必要はありません。これによりデータのセキュリティは高まりますが、パフォーマンスは多少低下します。

-ap size

新しいデータベースのページ・サイズを設定します。-an が使用されていない場合、このオプションは無視されます。データベースのページ・サイズには、2048、4096、8192、16384、32768 バイトのいずれかを指定できます。デフォルトは元のデータベースのページ・サイズです。データベース・サーバですでにデータベースが実行中の場合、サーバのページ・サイズ (-gp オプションで設定) は新規ページ・サイズを処理するのに十分な容量でなければなりません。-gp サーバ・オプションを参照してください。

-b

サブスクリプションを開始しません。このオプションを指定した場合は、統合データベース (リモート・データベース用) とリモート・データベース (統合データベース用) で、レプリケーションを開始するために START SUBSCRIPTION 文を使用して、サブスクリプションを明示的に開始しなければいけません。START SUBSCRIPTION 文 [SQL Remote]を参照してください。

-c "keyword=value; ..."

文字列でデータベース接続パラメータを指定します。

ユーザはデータベースの全テーブル上にパーミッションを持っている必要があるため、user ID には DBA 権限を持つユーザ ID を指定してください。

たとえば、次の文 (1 行で入力) は、ユーザ ID が DBA、パスワードが sql で接続している sample_server データベース・サーバ上で実行しているサンプル・データベースから、リモート・ユーザ ID joe_remote のデータベースを抽出します。データは c:\extract ディレクトリにアンロードされます。

dbxtract -c "ENG=sample_server;DBN=demo;
UID=DBA;PWD=sql" c:\extract joe_remote

接続パラメータを指定しない場合、SQLCONNECT 環境変数が設定されていると、SQLCONNECT 環境変数からの接続パラメータを使用します。

-d

データのみを抽出します。このオプションを指定すると、スキーマ定義はアンロードされません。また、リモート・データベースに対するパブリケーションとサブスクリプションも作成されません。このオプションは、適切なスキーマのあるリモート・データベースがすでに存在していて、データを格納するためだけに使用します。

-ea alg

新しいデータベースで使用する暗号化アルゴリズムを指定します。このオプションにより、新しいデータベースの暗号化に強力な暗号化アルゴリズムを選択できます。AES (デフォルト) または AES_FIPS (FIPS 認定のアルゴリズム) のどちらかを選択できます。AES_FIPS は個別のライブラリを使用するため、AES との互換性はありません。

セキュリティを強化するには、128 ビットの場合は AES、256 ビットの場合は AES256 の強力な暗号化を指定します。FIPS 認定の暗号化を使用するには、128 ビットの場合は AES_FIPS、256 ビットの場合は AES256_FIPS をそれぞれ指定してください。強力な暗号化を使用するためには、-ek または -ep オプションも指定する必要があります。強力な暗号化の詳細については、強力な暗号化を参照してください。

暗号化されていないデータベースを作成するには、-ea none を指定するか、-ea オプションを指定しません (-e、-et、-ep、-ek オプションも指定しません)。

-ea オプションを指定しない場合、デフォルトの動作は次のようになります。

  • -ea none (-ek、-ep、-et が指定されない場合)
  • -ea AES (-ek または -ep が指定される場合) (-et の指定とは無関係)
  • -ea simple (-ek または -ep を指定せずに -et を指定する場合)

アルゴリズム名の大文字と小文字は区別されません。

別途ライセンスが必要な必須コンポーネント

ECC 暗号化と FIPS 認定の暗号化には、別途ライセンスが必要です。強力な暗号化テクノロジはすべて、輸出規制対象品目です。

別途ライセンスが必要なコンポーネントを参照してください。

-ek key

新しいデータベースで使用する暗号化キーを指定します。このオプションを使用すると、コマンドに暗号化キーを直接指定することで、強力に暗号化されたデータベースを作成できます。データベースの暗号化に使用されるアルゴリズムは、-ea オプションで指定した AES または AES_FIPS です。 -ek オプションを指定して、-ea オプションを指定しないと、AES アルゴリズムが使用されます。

警告

強力な暗号化が適用されたデータベースの場合、キーのコピーは必ず安全な場所に保管してください。暗号化キーがわからなくなった場合は、Sybase 製品の保守契約を結んでいるサポート・センタに依頼してもデータにはアクセスできません。アクセスできなくなったデータベースは、廃棄して、新しくデータベースを作成する必要があります。

-ep

新しいデータベースで使用する暗号化キーの入力を要求します。このオプションを使用すると、ウィンドウに暗号化キーを入力することで、強力に暗号化されたデータベースを作成するように指定できます。クリア・テキストでは暗号化キーを見ることができないようにすることで、高いセキュリティが得られます。

暗号化キーは、正確に入力されたことを確認するために 2 回入力してください。キーが一致しない場合は、初期化は失敗します。強力な暗号化を参照してください。

-er

アンロード中に暗号化されたテーブルの暗号化を解除します。

テーブル暗号化が有効であるデータベースから抽出するとき、-er または -et を指定して、新しいデータベースのテーブルで暗号化を有効にするかどうかを指定する必要があります。このオプションを指定しないと、データを新しいデータベースにロードしようとしたときにエラーが発生します。

次のコマンドは、テーブルの暗号化を解除してデータベース (cons.db) を抽出し、テーブル暗号化が有効になっていない新しいデータベース (field.db) に再ロードします。

dbxtract -an c:\field.db -er -c "UID=DBA;PWD=sql;DBF=c:\cons.db;DBKEY=29bN8cj1z field_user"
-et

新しいデータベースのテーブル暗号化を有効にします (-an または -ar も一緒に指定する必要があります)。-ea オプションを指定せずに -et オプションを指定すると、AES アルゴリズムが使用されます。-et オプションを指定する場合、-ep または -ek も指定しないと操作は失敗します。新しいデータベースのテーブル暗号化設定を変更して、アンロードしているデータベースのテーブル暗号化設定とは異なるものに設定できます。

テーブル暗号化が有効であるデータベースを再構築するとき、-er または -et を指定して、新しいデータベースのテーブルで暗号化を有効にするかどうかを指定する必要があります。このオプションを指定しないと、データを新しいデータベースにロードしようとしたときにエラーが発生します。

次の例は、テーブルが単純暗号化アルゴリズムによって暗号化されたデータベース (cons.db) を、テーブル暗号化が有効になっている新しいデータベース (field.db) にアンロードし、キーを 34jh として AES_FIPS アルゴリズムを使用します。

dbxtract -an c:\field.db -et -ea AES_FIPS -ek 34jh -c "UID=DBA;PWD=sql;DBF=c:\cons.db field_user"
-f

完全に修飾されたパブリケーションを抽出します。ほとんどの場合、完全に修飾されたパブリケーション定義をリモート・データベース用に抽出する必要はありません。通常、すべてのローはレプリケートされ、統合データベースに戻されます。

しかし、多層の設定や、統合データベースにないローがリモート・データベースにある設定では、完全に修飾されたパブリケーションが必要な場合もあります。

-ii

内部アンロードと内部再ロードを実行します。このオプションを使用すると、再ロード・スクリプトは、データのアンロードとロードそれぞれに対して、Interactive SQL の OUTPUT 文と INPUT 文ではなく、内部の UNLOAD 文と LOAD TABLE 文を強制的に使用します。このオペレーションの組み合わせがデフォルトの動作です。

データ・ファイルのパスには、外部オペレーションでは dbxtract の現在の作業ディレクトリからの相対パスを使用し、内部の文ではデータベース・サーバからの相対パスを使用します。

-ix

内部アンロードと外部再ロードを実行します。このオプションを使用すると、再ロード・スクリプトは、データのアンロードに対して内部の UNLOAD 文を強制的に使用し、新しいデータベースへのデータのロードに対して Interactive SQL の INPUT 文を強制的に使用します。

データ・ファイルのパスには、外部オペレーションでは dbxtract の現在の作業ディレクトリからの相対パスを使用し、内部の文ではデータベース・サーバからの相対パスを使用します。

-l level

指定した独立性レベルですべての抽出オペレーションを実行します。デフォルト設定では、独立性レベルは 0 です。アクティブなデータベース・サーバからデータベースを抽出する場合は、独立性レベル 3 で実行し、抽出されたデータベース内のデータがデータベース・サーバ上のデータと一致するようにします。独立性レベルを大きくすると、抽出ユーティリティ (dbxtract) が多数のロックを使用することになり、他のユーザによるデータベースの使用が制限される可能性があります。抽出ユーティリティ (dbxtract)を参照してください。

-n

スキーマ定義のみ抽出します。この定義を指定すると、データはアンロードされません。再ロード・ファイルには、データベース・スキーマだけを構築する SQL 文が記述されています。SYNCHRONIZE SUBSCRIPTION 文を使用すると、メッセージ・システム全体のデータをロードできます。パブリケーション、サブスクリプション、PUBLISH パーミッション、SUBSCRIBE パーミッションは、スキーマの一部です。

dbxtract -c "UID=DBA;PWD=sql;DBF=c:\remote\cons\cons.db" -n "c:\remote\reload.sql" UserName
-nl

構造体を抽出します (-n オプションと同じ動作)。ただし、生成される reload.sql ファイルには、各テーブルに対する LOAD TABLE 文または INPUT 文も含まれます。このオプションを使用した場合、ユーザ・データは抽出されません。-nl を指定するときには、LOAD/INPUT 文を生成できるようにデータ・ディレクトリも指定する必要があります。ただし、このディレクトリにファイルは書き込まれません。このオプションを指定すると、データをアンロードしない再ロード・スクリプトを生成できます。データを抽出するには、-d を指定します。データベースにデータのアンロードが不要なテーブルがある場合は、dbxtract -d -e table-name と指定することによって、データのアンロードを回避できます。

-o file

出力ログ・ファイルにメッセージを出力します。

-p character

エスケープ文字を指定します。このオプションを使用して、デフォルトのエスケープ文字 (\) を別の文字に置き換えることができます。

-q

クワイエット・モードで処理を実行し、メッセージまたはウィンドウの表示を行いません。このオプションは -y オプションと一緒に指定してください。そうしないと操作は失敗します。

このオプションは、コマンド・ライン・ユーティリティに対してのみ使用できます。

-r file

生成された再ロード Interactive SQL コマンド・ファイルの名前を指定します。

再ロード・コマンド・ファイルのデフォルト名は、現在のディレクトリの reload.sql です。このオプションを使用して異なるファイル名を指定できます。

-u

アンロード中にデータの順序を変更しません。デフォルトでは、各テーブルのデータはプライマリ・キーを基準に順序付けられます。-u オプションを使用するとアンロード処理は高速になりますが、リモート・データベースへのデータのロード処理は遅くなります。

-v

冗長メッセージを表示します。アンロードされているテーブル名、アンロードされたロー数、使用された SELECT 文が表示されます。

-xf

外部キーを除外します。リモート・データベースに統合データベース・スキーマのサブセットがあり、いくつかの外部キー参照がない場合に、このオプションを使用できます。

-xh プロシージャ・フックを除外します。
-xi

外部アンロードと内部再ロードを実行します。データベースのアンロードでは、デフォルトの動作として UNLOAD 文を使用します。これはデータベース・サーバが実行します。外部アンロードを選択すると、dbxtract は UNLOAD 文の代わりに OUTPUT 文を使用します。OUTPUT 文はクライアントで実行されます。

データ・ファイルのパスには、外部オペレーションでは dbxtract の現在の作業ディレクトリからの相対パスを使用し、内部の文ではデータベース・サーバからの相対パスを使用します。

-xp

データベースからストアド・プロシージャを抽出しません。

-xt

データベースからトリガを抽出しません。

-xv

データベースからビューを抽出しません。

-xx

外部アンロードと外部ロードを実行します。データをアンロードする場合には、OUTPUT 文が使用されます。また、新規データベースにデータをロードする場合には、INPUT 文が使用されます。

アンロードのデフォルト動作では UNLOAD 文が使用され、ロードのデフォルト動作では LOAD TABLE 文が使用されます。内部の UNLOAD 文と LOAD TABLE 文を使用すると、OUTPUT 文と INPUT 文よりも高速で処理します。

データ・ファイルのパスには、外部オペレーションでは dbxtract の現在の作業ディレクトリからの相対パスを使用し、内部の文ではデータベース・サーバからの相対パスを使用します。

-y

確認メッセージを表示せずにコマンド・ファイルを上書きします。このオプションを指定しないと、既存のコマンド・ファイルを置き換えるときに、確認メッセージが表示されます。

directory ファイルが書き込まれるディレクトリを指定します。-an または -ac を指定する場合は不要です。
subscriber データベースを抽出するサブスクライバを指定します。
備考

デフォルトでは、抽出ユーティリティ (dbxtract) は独立性レベル 0 で実行されます。アクティブなデータベース・サーバからデータベースを抽出する場合は、独立性レベル 3 で実行し、抽出されたデータベース内のデータがデータベース・サーバ上のデータと一致するようにします。独立性レベル 3 で実行すると、多数のロックが必要になるため、データベース・サーバ上の他のユーザのターンアラウンド・タイムに影響が出ることがあります。データベース・サーバへのアクセスが少ないときに抽出ユーティリティ (dbxtract) を実行するか、データベースのコピーに対して抽出ユーティリティ (dbxtract) を実行することをおすすめします。

抽出ユーティリティ (dbxtract) は、コマンド・ファイルと、一連の関連データ・ファイルを作成します。新しく初期化したデータベースに対してコマンド・ファイルを実行し、データベース・オブジェクトを作成してリモート・データベース用のデータをロードできます。

デフォルトのコマンド・ファイル名は reload.sql です。

リモート・ユーザがグループの場合、グループのメンバのユーザ ID すべてを抽出します。これにより、リモート・データベースの複数のユーザに対して異なるユーザ ID を使用できます。カスタム抽出処理は必要ありません。

バージョン 10.0.0 以降のデータベースの抽出ユーティリティ (dbxtract) またはデータベース抽出ウィザードを使用する場合は、使用する dbxtract のバージョンが、データベースへのアクセスに使用するデータベース・サーバのバージョンと一致する必要があります。dbxtract のバージョンがデータベース・サーバのバージョンより古いまたは新しい場合は、エラーがレポートされます。

抽出ユーティリティ (dbxtract) とデータベース抽出ウィザードでは、データベース作成時に dbo ユーザ ID 用に作成されたオブジェクトをアンロードしません。データをアンロードするとき、システム・プロシージャの再定義など、これらのオブジェクトに加えられた変更は失われます。抽出ユーティリティ (dbxtract) でアンロードされるため、データベースの初期化以降に dbo ユーザ ID によって作成されたオブジェクトは保存されます。

参照