FAQサイトよくあるご質問を製品別にまとめたFAQサイトです。DBMotoについてよくある質問の一覧です。2008以降)のマシン(物理/仮想)にインストールします。インストールしたマシンからソースDB・ターゲットDBのマシンに接続してレプリケーションの設定・実行を行います。インストールされている必要があります。詳細は下記をご確認ください。ESX/ESXiやMicrosoftのHyper-Vなど、仮想マシン上にもインストール可能です。エージェント導入が必要ですか?ソースDB・ターゲットDB・DBMotoマシンいずれに対してもエージェントを導入する必要はありません。サポートしているDBの種類とバージョンは?AS/400をはじめとする非常に多くのDBをサポートしております。DBのプラットフォーム(OS)には依存しません。詳細な対応DB一覧は下記をご覧ください。対応データベース一覧どのようなレプリケーションモードがありますか?下記の3つのモードをサポートしております。・リフレッシュ(レコード全件レプリケーション)・ミラーリング(片方向差分レプリケーション)・シンクロナイゼーション(双方向差分レプリケーション)DBMoto導入によってDBにかかる負荷はどの程度でしょうか?DBMotoはDBに対するクライアントツールとしてのアクセスしか行わないため大きな負荷はかかりません。DBに対するエージェント導入も不要です。必要とされる回線の帯域の目安はありますか?回線が速ければレプリケーション速度も向上しますが、回線が遅くてもレプリケーションは十分可能です。ISDN回線を使用しているお客様もいらっしゃいます。-ライセンスライセンス体系はどのようになっていますか?ソースDBとターゲットDBのマシンスペックに依存します。価格はマトリクスで計算されますので、お見積もりをご希望の場合は下記の情報をご連絡ください。1-1)ソースDBの種類1-2)ソースDBの稼動するサーバのCPUソケット数、コア数1-3)ソースDBプラットフォーム(Solaris・AIX・Windows等)2-1)ターゲットDBの種類2-2)ターゲットDBの稼動するサーバのCPUソケット数、コア数2-3)ターゲットDBのプラットフォーム(Solaris・AIX・Windows等)※2コアは1.3CPU、4コアは2CPUとして計算します。※iSeries(AS/400)はPXXgroup番号が必要になります。P05からP50まであります。コマンドを使用して確認できます)※メインフレーム(z/OS)の場合はMSU数が必要になります。レプリケーションモードによって価格は異なるのでしょうか?シンクロナイゼーション(双方向)を使用せず、ミラーリング(片方向)のみを使用する場合は、20%引きとなります。バックアップ、HA環境、RACなどの構成で使用する場合は、価格が変わりますのでお問い合わせください。-購入サポート代理店で購入可能ですか?弊社から販売、代理店を通しての販売どちらも行っております。電話サポートは24時間対応ですか?電話での対応は営業時間内(9:00~18:00)です。サポートの回数に制限はありますか?回数に制限はありません。製品のバージョンアップの際には別途料金はかかりますか?サポート期間内の場合、無償でバージョンアップをお客様自身で行うことができます。弊社でもバージョンアップ作業(有償)を行っています。日本語メニューに対応していますか?現時点では日本語化対応しております。(2016年10月14日現在)製品の操作マニュアルは日本語版を用意しております。導入支援は行っていますか?別料金となりますが、弊社にて設計、インストール、設定を行います。保守費用について教えてください。なっており、初年度は必須です。評価期間は何日間ですか?評価用ライセンスキーが発行されてから15日間となります。評価中のサポートは受けられますか?無償でご利用いただけます。質問の内容により、お時間を頂く場合がございます。評価版に機能制限はありますか?評価版に機能制限はありません。評価するには何が必要になりますか?下記の環境をご用意ください。・DBMotoインストール用のWindowsPC(仮想マシンでも可)・ソースDBとターゲットDB、及び評価の際に使用するテストデータ※インストールするサーバについては、システム要件をご確認ください。※インストールや設定方法については、インストールマニュアルをご確認ください。-機能レプリケーション検証機能で正常なレコードがソースのみ、ターゲットのみのレコードとして表示されます。レプリケーションの検証をすることで、ソースのみのレコード、ターゲットのみのレコード、ソースとターゲットで差異のあるレコードを確認できます。本来、ソースにもターゲットにも存在し、差異のないレコードがソースのみ、ターゲットのみに存在するレコードとして表示されることがあります。これは、DBMotoはソースとターゲットのレコードを比較する前に主キーをベースにレコードのソートを行いますが、このときのソースDBとターゲットDBのソートの仕様の違いによるものです。区別せずソートするため、a→Dの順番でソートされます。このソートの順番が異なるため、このような結果が生じます。BY句」の「ソーステーブル」「ターゲットテーブル」に「LOWER(主キー)」を入力してください。することで、大文字、小文字の区別なくソートが行えるため、問題なく検証することが可能です。複数のテーブル内のレコードを1つのテーブルに結合可能ですか?可能ですが注意が必要です。ミラーリング時はPKが各テーブルで重複していなければ問題ありませんが、リフレッシュ時はそのまま実行してしまいますとリフレッシュ前に一度レコードを削除する処理(DBMotoの仕様)が行われます。これを回避するためにスクリプトでリフレッシュ時にレコードを削除しないようブロックする必要があります。各テーブル内のレコードが結合後に重複する可能性がある場合は、PK代わりのフィールドを新規で作成することでPK重複エラーを回避可能です。UPDATE時のみレプリケーション対象外とすることは可能ですか?スクリプトで対応可能です。リフレッシュ時にはまずターゲットのレコードを一度削除するようですが、削除しないようにできますか?スクリプトで実現可能です。データを加工したり変換してレプリケーションすることは可能ですか?可能です。自前の関数を定義して使用することは可能ですか?可能です。いう機能で呼び出すことが可能です。レプリケーション対象外のフィールドがある場合に固定の値を必ず挿入する設定は可能ですか?可能です。Expressionという機能を使用し、固定値を入れることも可能ですし、現在日時を挿入するなど、関数を使用することも可能ですnullを特定の値に変換してレプリケーションすることは可能でしょうか?スクリプトを使用することで実現可能です。詳細は下記をご参照ください。-機能(レプリケーション)ミラーリング時の更新サイクルはどのくらいですか?デフォルト値は60秒です。変更可能ですが、30秒~5分が推奨値となっております。複数のソースサーバから1つのターゲットサーバに結合レプリケーションすることは可能ですか?可能です。詳細は下記ページをご参照ください。https://www.climb.co.jp/soft/dbmoto/outline/example.html1つのソースサーバから複数のターゲットサーバに分散レプリケーションすることは可能ですか?可能です。詳細は下記ページをご参照ください。https://www.climb.co.jp/soft/dbmoto/outline/example.htmlリフレッシュ実行中にソースに更新があった場合はどうなりますか?リフレッシュ完了後にミラーリングモードに移行し、更新分が差分レプリケーションされます。シンクロナイゼーションで同一フィールドの同じ値を更新した時にコンフリクト扱いになりますか?同じ値を更新した場合はコンフリクトとはみなされません。レプリケーション定義を一括で作成する方法はありますか?予めソース・ターゲットの接続設定を済ませたうえで「マルチレプリケーション作成」を選択することで可能です。ターゲット→ソースへのリフレッシュは可能ですか?リフレッシュはソース→ターゲット方向のみサポートしております。DBへの接続設定でIPアドレスの代わりにコンピュータ名の指定は可能ですか?可能です。シンクロナイゼーション(双方向)における処理シーケンスを教えてください。以下の流れとなります。ソースのトランザクションログを検索⇒ターゲットのトランザクションログを検索⇒ソースからターゲットへの更新処理⇒ターゲットからソースへの更新処理ミラーリングの真っ最中にスケジュールリフレッシュの時間になった場合はどのような挙動になりますか?ミラーリングプロセス終了後にリフレッシュされます。強引に割り込むことはありません。Factor」の値を増やすことで処理速度の向上が期待できます。インターネット越しでレプリケーションすることは可能ですか?例えば大阪と東京など。ネットワーク障害が発生した場合、復旧処理は自動で行われますか?自動で行われます。シンクロナイゼーション時に双方の同じレコードを更新した場合にはどうなりますか?下記のオプションから選択可能です。・ソースDBを優先する・ターゲットDBを優先する・TimeStampの早いほうを優先する(先勝ち)・カスタムスクリプト(上記3つ以外の挙動を設定したい場合など)なお、「TimeStampの遅いほうを優先(後勝ち)」としたい場合には、カスタムスクリプトの記述が必要となります。ソースDBとターゲットDBで文字コードが異なっていても大丈夫?問題ありません。DBMotoで文字コード変換を吸収します。DBMoto内部ではUnicodeで処理され、双方のDBに対して文字コード変換を行います。スケジュール機能はありますか?はい、あります。リフレッシュを定期的に実行するリフレッシュスケジュール、ミラーリングを実行する日時を制限するミラーリングスケジュールの設定が可能です。細かく設定でき、複数設定も可能です。DB障害が発生してレプリケーションが停止した際の復旧が心配です。データの不整合が発生してしまうのでは?DBMotoは最後に更新したトランザクションIDを常に保持しておりますので、DB障害復旧後には、障害発生前の最後のトランザクションIDからレプリケーションを再開します。よって通常はデータの不整合が発生することはまずありません。ミラーリングでソースに対してレコードの更新や削除を行った際に、ターゲット側にレコードが存在しなかった場合にはどのような挙動になりますか?エラーメッセージ「ターゲットにレコードが存在しません」をログファイルに出力し、更新時にはターゲットに対して登録処理が行われます。オプション設定変更により登録処理を行わないようにもできます。DBMotoで使用する通信の種類とポートを教えてください。使用するデフォルトポートを使用します。Oracleの場合はデフォルトで1521を使用します。マルチシンクロナイゼーションにおいて、ソースとターゲットの複数で同じタイミングで同一レコードの更新をかけた場合、どのサーバのレコードが優先されますか?ソースとターゲットで同一レコードの更新があった場合の挙動は以下から選択可能です。・ソースDBを優先する・ターゲットDBを優先する・TimeStampの早いほうを優先する・カスタムスクリプト(上記3つ以外の挙動を設定したい場合など)さらにターゲットの複数サーバで同一レコードの更新があった場合には、TimeStampの早いほうが優先されます。ミラーリングモードでも初回でリフレッシュは可能ですか?可能です。下記の弊社ブログをご参照ください。-機能(オプション)メタデータは複数作成できますか?同時に使用できますか?DBMotoのメタデータは、複数作成することは可能です。これにより運用環境とテスト環境それぞれのメタデータを用意できます。複数のメタデータを同時に使用することはできません。それぞれのメタデータ内にあるレプリケーションは、それぞれのメタデータを有効化していない限り動作しません。メタデータの切り替えは、メタデータ上で右クリックして表示されるメニューの、「既定のメタデータにする」で可能です。ログ出力先をWindowsイベントログにした場合historyファイルはどこにありますか?Windowsイベントログでの運用の場合、historyファイルはご使用いただけません。Frameworkの○○という関数が動きません。Frameworkの関数が動作しないことがあります。FrameworkのライブラリがDBMotoに読み込まれていないのが原因です。Frameworkのライブラリは読み込まないようになっております。Frameworkのライブラリを読み込んでください。■例SHA256CryptoServiceProvider関数を利用する場合、System.Core.dllというライブラリを呼び出す必要があります。Microsoft公式のSHA256CryptoServiceProvider解説ページこのDLLファイルは、C:\Windows\Microsoft.NET\Framework64\vX.X.XXXX(Xは任意のバージョン数値)にありますので、ここへのリファレンスを追加してください。AS/400AS/400のレプリケーションで「レプリケーション検証機能」を使用すると文字変換が正しくないとのエラーが出ます。DBMotoの機能に、レプリケーションのソースとターゲット双方のテーブル間で差異が生じていないかを確認するレプリケーション検証機能があります。13488の間の文字変換は正しくない」とのエラーメッセージが出力されることがあります。このエラーメッセージは通常のレプリケーション中には発生せず、データは問題なくレプリケーションできていることが多いです。これは、このレプリケーション検証機能使用時に限り、DBMotoの「検証のソート・シーケンステーブル」設定が有効であるため、GRAPHIC型が文字変換を行おうとして失敗しています。対処法は、この設定個所の部分を空欄にすることです。Replicatorの停止が必要です。)なお、通常のレプリケーションは、前述の通りこの設定を使用していないので、問題なく変換され動作します。マルチメンバーファイル(テーブル)からレプリケーションができません。AS400上のマルチメンバーファイルとなっているテーブルからレプリケーションしようとすると、ステータスは成功なのに処理件数が0件のまま動かないことがあります。これはマルチメンバーファイルの仕様上の制限でSELECTクエリが実行できないためです。テーブルのエイリアスを作成していただければSELECTクエリで結果が取得できるため、レプリケーションできるようになります。エイリアスを作成するクエリの一例は以下の通りです。MYLIB.MYFILE(MBR2)どのようにして差分レプリケーションが行われますか?AS/400のミラーリングではトランザクションログとして「ジャーナル・レシーバ」を参照しますので、予め物理ファイルに対してジャーナルを起動しておく必要があります。DBMotoからジャーナルを参照するためのプロシージャをAS/400のライブラリに対して作成する必要がありますが、DBMotoでAS/400の接続設定を行う際に簡単に作成することができます。ジャーナルがAS/400側で自動で切り替わった場合、DBMotoが参照するジャーナルも自動で切り替わりますか?自動で切り替わります。古いジャーナルは削除しても問題ないですか?DBMotoから参照しているジャーナルより前のものについては削除して問題ありません。AS/400にはどのドライバで接続するのでしょうか?Ritmo/iというドライバを使用します。DBMotoに同梱されております。ジャーナルレシーバはテーブル単位で作成する必要がありますか?それともまとめて1つでも問題ないですか?1つにまとめても問題ありません。DBMotoではテーブル単位でレプリケーション定義を作成し、定義ごとにトランザクションIDを管理することが可能なためです。DBMOTOLIBにジャーナルレシーバを作成してもよいですか?可能ですが非推奨です。照するためのプロシージャが存在しますので、DBMOTOLIBにプロシージャ以外のデータが存在するとレプリケーションのパフォーマンスに影響が出る場合があります。AS/400からのミラーリングでトランザクションID取得のためにReadボタンを押下するとエラーになりますDBMotoからAS/400のジャーナルレシーバを参照するためのプロシージャを手動で作成した場合に、正しく作成されていない可能性があります。AS/400ジャーナル作成手順書を再確認してください。AS/400のエラー「資源の限界を超えた」が発生しましたが原因はなんでしょうか?下記ブログ記事をご参照ください。https://www.climb.co.jp/blog_dbmoto/archives/491ジャーナルが切り替わった場合、DBMotoもちゃんと切り替えて追ってくれますか?はい、AS/400側のジャーナルに合わせてDBMotoが参照するジャーナルも自動で切り替わります。AS/400でジャーナルを作成する手順が知りたいのですが。下記のブログ記事をご参照ください。https://www.climb.co.jp/blog_dbmoto/archives/337レコードの全消去時に他データべースへのレプリケーションをどのように行いますか?AS/400でレコードの全消去を含む操作(CLRPFMやCPYF(REPLACEオプション))を行った場合、他データベースに対してこの変更をTRUNCATEとして他データベースに反映します。レコードが対象ではなく、ファイルそのものを置き換えている場合など(RSTOBJ等)の場合、変更は他データベースへ反映されません。11.2のクライアントを使用している場合「oracore11.dll」にて障害が発生した旨Windowsイベントログに記録されている可能性があります。一部の条件下にて本事象が発生するケースがあり、エラー発生までの流れは以下の通りです。コネクションを確立した際」です。詳細を解析するなどし下記のことが判明しております。接続をオープンにしないようコネクションプールを有効にする方法がございます。設定手順は以下の通りです。接続を右クリック→「プロパティ」を開きます。右にあるボタンをクリックします。本事象は発生しなくなります。Readerの場合、REDOログから取得できる情報は更新したカラムとPKのみとなります。NULL制約のカラムがあるとエラーになります。対処方法は以下の2通りです。対して以下のクエリを発行し、すべてのカラム情報をREDOログから取得できるようにする。COLUMNSパーティション化したテーブルからミラーリングできますか?可能です。DBMotoではDML文のみレプリケーションするため、パーティションがDDL文で削除されたときはそれを反映できません。Oracleからのミラーリングタイミングが更新が起きていない時間帯でもバラバラです。Oracleからのミラーリング時にはデフォルトでアーカイブログを参照し、またその際にCONTINIOUS_MINEオプションを有効にしています。一部のOracle環境ではCONTINIOUS_MINEオプションをオンにしているとミラーリングタイミングがバラバラになることがあります。CONTINIOUS_MINEオプションを外すとこの事象が解消することがあります。オプションの切り替えにより、レプリケーションの性能劣化やOracleに対する負荷増加が発生することはほとんどありません。DBMotoでOracleのマテリアライズドビューはレプリケーションできますか?リフレッシュとミラーリングが可能です。ミラーリング時の注意点として、DBMotoは差分データの取得にトランザクションログを用いていますが、マテリアライズビューにあるレコードに対するUPDATE操作をOracleが内部で行う際、UPDATEではなくDELETEとINSERTを組み合わせて行っているため、トランザクションログの数が1つではなく、2つになっています。DBMotoのレコード処理件数表示はトランザクションログをベースにしている都合上、マテリアライズドビューのリフレッシュモードが「完全」の場合は、ビュー上の全レコード数×2、「部分」の場合は、UPDATE対象レコードの数×2の数が、レコード処理件数として表示されます。これはOracle側の仕様によるものです。どのようにして差分レプリケーションが行われますか?Redoログを参照します。事前にサプリメンタルロギングの設定が必要ですが、DBMotoから行うことが可能です。Oracle10gのレプリケーション設定時にドライバエラーが出ますDBMoto側のOracleクライアントドライバを最新の11gにしてください。Oracle側の既知不具合です。アーカイブログを参照した差分レプリケーションは可能ですか?可能です。RACに対応していますか?対応しております。Server経由のみ対応しています。ビューはレプリケーションに対応していますか?対応しておりません。Oracleへ接続するドライバのダウンロード先を教えてください。以下のサイトからOracleクライアント又はODACをダウンロード可能です。http://www.oracle.com/technetwork/jp/database/windows/downloads/index.htmlまた、Oracleデータベースのバージョンに関わらず、ドライバのバージョンは11を使用してください。OracleからのレプリケーションでORA-01291(ログ・ファイルがありません)が表示される。OracleのRedoログが1周してDBMotoが参照しに行くIDが既になくなってしまった際に発生するエラーです。復旧はリフレッシュするか、最新のトランザクションIDを取得する必要があります。このエラーが頻発する場合はRedoログのサイズ設定を見直す必要があります。Level」は何が違うのでしょうか?また、実行されるSQLを教えてください。Levelレプリケーションするテーブルのみ(最低限)にサプリメンタルロギングの設定が行われます。以下のSQLが実行されます。Levelデータベース全体(すべてのテーブル)に対してサプリメンタルロギングの設定が行われます。以下のSQLが実行されます。Level」にも自動でチェックが入ってしまうOracle9iの仕様によるものです。レプリケーションに必要な最低限の権限を教えてください。下記ブログ記事をご参照ください。https://www.climb.co.jp/blog_dbmoto/archives/560Oracleでエラー「ORA-03113」が発生しました。OracleとDBMoto間のネットワーク障害によるものです。Oracleへのリフレッシュ時にデータは問題ないのにORA-00001(PK重複)エラーが出力されるDBMotoの既知問題です。http://www.hitsw.com/support/kbase/DBMoto/DBMoto_1655_OracleBulkInsert.htmテーブルに複数のPKが設定されている、かつバルクインサートモードでのリフレッシュ時に発生します。ログにエラーは出力されますが、データには影響ありません。AIXDB2のHADR構成のスタンバイサーバからミラーリングは可能ですか?トリガー形式およびログ参照形式のいずれも不可です。DB2側の仕様でトリガーに必要な機能もログ参照に必要なAPIもスタンバイサーバでは利用できません。Logを参照する方法と、トリガーログテーブルを作成する方法があります。Logを使用する場合、予めdb2udbreadlogという拡張ファイル(DBMotoに同梱済み)をDB2側に格納する必要があります。UDBにはどのドライバで接続するのでしょうか?Ritmo/DB2というドライバを使用します。DBMotoに同梱されております。Serverの仕様上の制約によりできません。レプリケーション作成時にエラーが発生します。「接続’DB接続名’用に定義されたユーザ’sa’はsysadminであり、シンクロナイゼーションでは有効ではありません。sysadmin以外のユーザでログインを定義してください。ディストリビュータを作成し、トランザクションログを読むためにsysadminのログインIDを供給しています。Serverの接続設定に「sa」以外のユーザをご利用ください。シンクロナイゼーションでは、更新がループしないようにするため、接続設定に使用したユーザでの更新はレプリケーション対象として検出しない仕様となっております。そのため、シンクロナイゼーションを行う場合には、DBMoto専用ユーザを用意する必要がございます。「sa」はDBMoto専用とすることができないため、このようなエラーが発生します。ビューのレプリケーションに対応していますか?参照するベースのテーブルが1つの場合かつSQLServerのビュー更新条件(特定の関数が使用されていないこと)を満たしている場合に限り、リフレッシュのみ可能です。deleteが行えず、selectのみ可能となりますので、DBMotoでも同様にレプリケーションは行えなくなります。どのようにして差分レプリケーションが行われますか?Distributorを参照する方法と、トリガーログテーブルを作成する方法があります。Editionに対応していますか?対応しております。差分レプリケーションの際にDistributorを使用することはできず、トリガーテーブルを作成する必要があります。バイナリデータはレプリケーション可能ですか?可能です。SQLServerへのレプリケーションで以下のエラーが発生しました。列に明示的な値を挿入できません。SQLServerのフィールドIdentityの仕様によるものです。Identity以外のPKフィールドを用意するかIdentity自体をOFFにする必要があります。レプリケーション中にSQLServer側のコネクション数が最大値に達したというエラーが出ます。Sizeをご確認ください。DBMoto側のデフォルト値は100です。-MySQLGTIDモードレプリケーションに関与しているMySQLからミラーリング可能ですか?可能です。パーティション化したテーブルからミラーリングできますか?可能です。DBMotoではDML文のみレプリケーションするため、パーティションがDDL文で削除されたときはそれを反映できません。MySQLへのミラーリングが反映されませんMySQLへミラーリングを行うためには、MySQLでautocommitが有効になっている必要があります。以下のクエリで確認が可能です。@@autocommit;もしもこの結果が0の場合、autocommitが無効になっているので、有効化してください。アプリの都合で有効化が困難な場合は、以下の対応を行ってください。