(57)【特許請求の範囲】
【請求項１】
第１のデータベースを第２のデータベースに移行する際の、前記第１のデータベースから前記第２のデータベースへの切替時刻を記憶する切替時刻記憶部と、
前記第１のデータベースを管理する第１のデータベースサーバに対して、前記第１のデータベースに対する更新内容を示す更新ログの出力指示を出力する更新ログ出力指示部と、
を備え、
前記第１のデータベースサーバは、所定サイズごとに前記更新ログを出力するように設定され、前記出力指示を受け付けると、前記設定にかかわらず前記更新ログを出力するように構成されており、
前記更新ログ出力指示部は、前記所定サイズを所定規則に従って順次減少させて所定の閾値以下となるまでの回数を決定し、該回数及び前記切替時刻に基づいて、前記出力指示を出力するタイミングを決定する、
データベース移行システム。
【請求項２】
請求項１に記載のデータベース移行システムであって、
所定時点における前記第１のデータベースのバックアップを取得するバックアップ取得部と、
前記取得されたバックアップの前記第２のデータベースへのリストアの指示を、該第２のデータベースを管理する第２のデータベースサーバに対して出力するリストア指示部と、
前記所定時点以降に前記第１のデータベースサーバで出力された前記更新ログを取得する更新ログ取得部と、
前記取得された更新ログに応じて前記第２のデータベースを更新する指示を、前記第２のデータベースサーバに対して出力する更新指示部と、
をさらに備えるデータベース移行システム。
【請求項３】
請求項１または２に記載のデータベース移行システムであって、
前記第１のデータベースサーバにおいて出力された前記更新ログを記憶する更新ログ記憶部と、
前記更新ログ記憶部に記憶されている前記更新ログに基づいて、前記第１のデータベースに対する単位期間ごとの更新件数を算出する更新件数算出部と、
前記算出された更新件数に基づいて、前記所定サイズを決定するサイズ決定部と、
をさらに備えるデータベース移行システム。
【請求項４】
第１のデータベースを第２のデータベースに移行する際の、前記第１のデータベースから前記第２のデータベースへの切替時刻を記憶する切替時刻記憶部と、
前記第１のデータベースを管理する第１のデータベースサーバに対して、前記切替時刻に近づくに従って短くなる間隔で、前記第１のデータベースに対する更新内容を示す更新ログの出力指示を出力する更新ログ出力指示部と、
前記第１のデータベースサーバにおいて出力された前記更新ログを記憶する更新ログ記憶部と、
前記更新ログ記憶部に記憶されている前記更新ログに基づいて、前記第１のデータベースに対する更新件数が所定件数以下である単位期間を判定する期間判定部と、
を備えるデータベース移行システム。
【請求項５】
コンピュータが、
第１のデータベースを第２のデータベースに移行する際の、前記第１のデータベースから前記第２のデータベースへの切替時刻を切替時刻記憶部に記憶し、
前記第１のデータベースを管理する第１のデータベースサーバに対して、前記第１のデータベースに対する更新内容を示す更新ログの出力指示を出力する、
データベース移行方法であって、
前記第１のデータベースサーバは、所定サイズごとに前記更新ログを出力するように設定され、前記出力指示を受け付けると、前記設定にかかわらず前記更新ログを出力するように構成されており、
前記コンピュータが、前記所定サイズを所定規則に従って順次減少させて所定の閾値以下となるまでの回数を決定し、該回数及び前記切替時刻に基づいて、前記出力指示を出力するタイミングを決定する、
データベース移行方法。
【請求項６】
コンピュータが、
第１のデータベースを第２のデータベースに移行する際の、前記第１のデータベースから前記第２のデータベースへの切替時刻を切替時刻記憶部に記憶し、
前記第１のデータベースを管理する第１のデータベースサーバに対して、前記切替時刻に近づくに従って短くなる間隔で、前記第１のデータベースに対する更新内容を示す更新ログの出力指示を出力し、
前記第１のデータベースサーバにおいて出力された前記更新ログを更新ログ記憶部に記憶し、
前記更新ログ記憶部に記憶されている前記更新ログに基づいて、前記第１のデータベースに対する更新件数が所定件数以下である単位期間を判定する、
データベース移行方法。
【請求項７】
コンピュータに、
第１のデータベースを第２のデータベースに移行する際の、前記第１のデータベースから前記第２のデータベースへの切替時刻を切替時刻記憶部に記憶する機能と、
前記第１のデータベースを管理する第１のデータベースサーバに対して、前記第１のデータベースに対する更新内容を示す更新ログの出力指示を出力する機能と、
を実現させるためのプログラムであって、
前記第１のデータベースサーバは、所定サイズごとに前記更新ログを出力するように設定され、前記出力指示を受け付けると、前記設定にかかわらず前記更新ログを出力するように構成されており、
前記更新ログの出力指示を出力する機能は、前記所定サイズを所定規則に従って順次減少させて所定の閾値以下となるまでの回数を決定し、該回数及び前記切替時刻に基づいて、前記出力指示を出力するタイミングを決定する機能を備える、
プログラム。
【請求項８】
コンピュータに、
第１のデータベースを第２のデータベースに移行する際の、前記第１のデータベースから前記第２のデータベースへの切替時刻を切替時刻記憶部する機能と、
前記第１のデータベースを管理する第１のデータベースサーバに対して、前記切替時刻に近づくに従って短くなる間隔で、前記第１のデータベースに対する更新内容を示す更新ログの出力指示を出力する機能と、
前記第１のデータベースサーバにおいて出力された前記更新ログを更新ログ記憶部に記憶する機能と、
前記更新ログ記憶部に記憶されている前記更新ログに基づいて、前記第１のデータベースに対する更新件数が所定件数以下である単位期間を判定する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース移行システムに関する。
【背景技術】
【０００２】
多くの情報処理システムは、データベースサーバによって管理されるデータベースを利用している。データベースを用いる情報処理システムでは、例えば、データ量やトランザクション量の増大などに伴い、データベースの移行が必要となることがある。データベースの移行時には、まず、現在のデータベースサーバ（以後、「旧データベースサーバ」という。）によって管理されているデータベース（以後、「旧データベース」という。）を、新しいデータベース（以後、「新データベースサーバ」という。）によって管理されるデータベース（以後、「新データベース」という。）に移行する必要がある。
【０００３】
旧データベースから新データベースへの移行方式としては、例えば、旧データベースサーバにおいて旧データベースをバックアップ（エクスポート）し、バックアップされたデータを、新データベースサーバにおいて新データベースにリストア（インポート）することが考えられる。
【０００４】
また、単純にバックアップ・リストアを行うだけではなく、バックアップされた後の旧データベースに対する更新情報が記録された更新ログを用いる移行方式も検討されている（例えば、特許文献１。）。この方式の場合、バックアップされたデータを新データベースにリストアした後に、更新ログに基づいて、新データベースを更新することにより、データベースを移行することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２５０７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した方式では、データ量が多い場合には、バックアップ及びリストアの処理時間や、更新ログに基づく更新の処理時間が長くなり、データベース移行に伴うシステム停止時間が長くなってしまう。そのため、例えば、２４時間・３６５日稼動する情報処理システムなど、システム停止時間の制約が厳しいシステムにおいては、上述した方式によるデータベース移行は難しい場合がある。
【０００７】
本発明はこのような事情に鑑みてなされたものであり、データベース移行に伴うシステム停止時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面に係るデータベース移行システムは、第１のデータベースを第２のデータベースに移行する際の、第１のデータベースから第２のデータベースへの切替時刻を記憶する切替時刻記憶部と、第１のデータベースを管理する第１のデータベースサーバに対して、切替時刻に近づくに従って短くなる間隔で、第１のデータベースに対する更新内容を示す更新ログの出力指示を出力する更新ログ出力指示部と、を備える。
【０００９】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」や装置が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」や装置の機能が１つの物理的手段や装置により実現されてもよい。
【発明の効果】
【００１０】
本発明によれば、データベース移行に伴うシステム停止時間を短縮することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態であるデータベース移行システムを含む情報処理システムの構成を示す図である。
【図２】旧データベースのバックアップを新データベースにリストアする流れを説明する図である。
【図３】旧データベースの更新ログに基づいて新データベースを更新する流れを説明する図である。
【図４】旧データベースから新データベースへの移行の流れを説明する図である。
【図５】データベース移行システムの構成例を示すブロック図である。
【図６】データベース移行システムにおける処理の流れを示す図である。
【図７】トランザクション件数の表示の一例を示す図である。
【図８】切替時刻の決定を支援する処理の一例を示すフローチャートである。
【図９】固定ログ期間における更新ログサイズを決定する処理の一例を示すフローチャートである。
【図１０】追い込み期間における更新ログの出力回数を決定する処理の一例を示すフローチャートである。
【図１１】更新ログの出力回数を決定する処理の一例を説明するための図である。
【図１２】追い込み期間における更新ログの出力タイミングを決定する処理の一例を示すフローチャートである。
【図１３】出力間隔の初期値を１時間、出力回数が４回である場合の出力タイミングの算出例を示す図である。
【図１４】データベース切り替えのリハーサル処理の一例を示すフローチャートである。
【図１５】データベース切り替えの本番処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の一実施形態について説明する。図１は、本発明の一実施形態であるデータベース移行システムを含む情報処理システムの構成を示す図である。図１に示すように、情報処理システムは、データベースサーバ１０，２０、外部記憶装置３０，４０、アプリケーションサーバ５０、及びデータベース移行システム６０を含んで構成されている。
【００１３】
データベースサーバ１０は、外部記憶装置３０に格納されているデータベースを管理する情報処理装置である。データベースサーバ１０は、アプリケーションサーバ５０やデータベース移行システム６０等の他の情報処理装置と、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して通信可能に接続されている。また、データベースサーバ１０は、データベースを格納するための外部記憶装置３０と、例えば、ファイバチャネルケーブル等を介して通信可能に接続されている。データベースサーバ１０には、外部記憶装置３０に格納されているデータベースを管理するためのソフトウェアが実装されており、アプリケーションサーバ５０やデータベース移行システム６０からの要求に応じて、データベースを管理するための各種処理を実行することができる。
【００１４】
例えば、データベースサーバ１０は、データベースの更新やバックアップ、リストア等を行うことができる。また、データベースサーバ１０は、データベースに対する更新処理（トランザクション）の内容を示す更新ログを出力することができる。データベースサーバ１０は、所定サイズ（例えば１Ｇバイト）ごとに１つのファイルとして更新ログを出力することができる。更新ログのサイズは、データベースサーバ１０において、あるいは、外部の情報処理装置からの指示によって設定することができる。例えば、データベースサーバ１０は、データベースへの更新処理が行われるたびに、その内容を一時ファイルに追加出力していき、一時ファイルのサイズが所定サイズ（例えば１Ｇバイト）に達した時点で、一時ファイルを更新ログとして出力することができる。また、データベースサーバ１０は、一時ファイルのサイズが所定サイズに達していない場合であっても、外部の情報処理装置からの指示に応じて、その時点の一時ファイルを更新ログとして出力することができる。更新ログは、例えば、所定のフォルダ内に順次格納される。なお、データベースサーバ１０は、例えば、データベースのバックアップを生成した場合には、バックアップ生成時点より前の更新ログを削除してもよい。
【００１５】
外部記憶装置３０は、例えば、１つまたは複数のハードディスクドライブ等を含んで構成される記憶装置である。外部記憶装置３０には、データベース製品に応じたデータフォーマットのデータベースが格納される。外部記憶装置３０は、データベースサーバ１０からの要求に応じて、データベースを更新することができる。なお、外部記憶装置３０は、データベースサーバ１０による管理とは別に、例えば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）等のデータ管理機能を有していることとしてもよい。
【００１６】
データベースサーバ２０は、外部記憶装置４０に格納されているデータベースを管理する情報処理装置である。データベースサーバ２０は、アプリケーションサーバ５０やデータベース移行システム６０等の他の情報処理装置と、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して通信可能に接続されている。また、データベースサーバ２０は、データベースを格納するための外部記憶装置４０と、例えば、ファイバチャネルケーブル等を介して通信可能に接続されている。データベースサーバ２０には、外部記憶装置４０に格納されているデータベースを管理するためのソフトウェアが実装されており、アプリケーションサーバ５０やデータベース移行システム６０からの要求に応じて、データベースを管理するための各種処理を実行することができる。データベースサーバ２０におけるデータベースの管理機能は、データベースサーバ１０と同等である。
【００１７】
外部記憶装置４０は、例えば、１つまたは複数のハードディスクドライブ等を含んで構成される記憶装置である。外部記憶装置４０には、データベース製品に応じたデータフォーマットのデータベースが格納される。外部記憶装置４０は、データベースサーバ２０からの要求に応じて、データベースを更新することができる。なお、外部記憶装置４０は、データベースサーバ２０による管理とは別に、例えば、ＲＡＩＤ等のデータ管理機能を有していることとしてもよい。
【００１８】
本実施形態では、外部記憶装置３０に格納されているデータベースを、外部記憶装置４０に移行することが行われる。また、データベースを管理するサーバは、データベースサーバ１０からデータベースサーバ２０に移行される。本実施形態では、外部記憶装置３０に格納されているデータベースを「旧データベース」、データベースサーバ１０を「旧データベースサーバ」とも言う。また、本実施形態では、外部記憶装置４０に格納されているデータベースを「新データベース」、データベースサーバ２０を「新データベースサーバ」とも言う。
【００１９】
アプリケーションサーバ５０は、データベースを用いる各種処理を実行する情報処理装置である。例えば、アプリケーションサーバ５０は、旧データベースに格納されたデータを用いて各種処理を実行することができる。この場合、アプリケーションサーバ５０は、旧データベースサーバ１０に対してアクセス要求を出力することにより、旧データベースにアクセスすることができる。アプリケーションサーバ５０から旧データベースサーバ１０へのアクセス要求は、旧データベースサーバ１０のサーバ名やＩＰアドレスを指定して行うことができる。本実施形態では、旧データベースサーバ１０から新データベースサーバ２０への移行が行われると、新データベースサーバ２０のサーバ名及びＩＰアドレスが、旧データベースサーバ１０のサーバ名及びＩＰアドレスに変更される。そのため、移行後は、アプリケーションサーバ５０は、移行前と同様にデータベースへのアクセス要求を出力することにより、新データベースサーバ２０を介して新データベースにアクセスすることができる。
【００２０】
データベース移行システム６０は、旧データベースを新データベースに移行するためのものであり、１台または複数台の情報処理装置を用いて構成される。図２〜図４を参照して、データベース移行システム６０による移行の概要を説明する。
【００２１】
図２は、旧データベースのバックアップを新データベースにリストアする流れを説明する図である。まず、データベース移行システム６０は、旧データベースサーバ１０から、旧データベースのある時点におけるバックアップデータ（単に「バックアップ」とも言う。）を取得する。バックアップは、旧データベースに格納されているデータの全件をエクスポートすることにより生成することができる。バックアップは、通常は、データベースに障害が生じた場合の復旧用として用いられるものである。旧データベースサーバ１０は、例えば、データベース移行システム６０からの要求に応じてバックアップを生成することができる。また、旧データベースサーバ１０は、あらかじめ定められたタイミング（例えば毎日０時等）でバックアップを生成することも可能である。
【００２２】
データベース移行システム６０は、取得したバックアップを新データベースにリストアするためのリストア指示を新データベースサーバ２０に出力する。この指示に応じて、新データベースサーバ２０は、バックアップを新データベースにリストア（インポート）する。これにより、バックアップが生成された時点で旧データベースに格納されていた全てのデータが新データベースに格納された状態となる。
【００２３】
図３は、旧データベースの更新ログに基づいて新データベースを更新する流れを説明する図である。旧データベースサーバ１０には、バックアップの生成後における旧データベースに対する更新処理の内容を示す更新ログが格納されている。データベース移行システム６０は、旧データベースサーバ１０から更新ログを取得する。そして、データベース移行システム６０は、更新ログに応じて新データベースを更新するための更新指示を新データベースサーバ２０に出力する。この指示に応じて、新データベースサーバ２０は、旧データベースに対する更新処理と同一の更新処理を新データベースに対して実行する。これにより、新データベースは旧データベースと同一の状態となる。本実施形態では、更新ログに応じてデータベースを更新することを、更新ログを適用するとも言う。
【００２４】
図４は、旧データベースから新データベースへの移行の流れを説明する図である。図４に示す例では、データベース移行システム６０は、時刻Ｔ１に、旧データベースのバックアップの新データベースへのリストアを開始している。データベースのリストアは、バックアップのデータサイズに応じた処理時間がかかる。例えば、データベースのリストアには数時間程度かかることもある。
【００２５】
バックアップがリストアされた後、データベース移行システム６０は、時刻Ｔ２に、旧データベースの更新ログの新データベースへの適用を開始している。なお、時刻Ｔ２において取得された更新ログは、旧データベースサーバ１０において事前に設定されたサイズ（例えば１Ｇバイト）のものである。更新ログの適用には、更新ログによって示されるトランザクション件数に応じた処理時間がかかる。例えば、１Ｇバイト程度の更新ログの適用には数十分かかることもある。データベース移行システム６０は、旧データベースから新データベースへの切替時刻に近づくまでの所定期間において、所定サイズの更新ログの適用を繰り返すことができる。図４の例では、時刻Ｔ３に、所定サイズの更新ログの適用が開始されている。図４に示すように、本実施形態では、所定サイズの更新ログの適用が繰り返される期間を「固定ログ期間」と言う。固定ログ期間は、例えば、バックアップ取得から切替時刻の所定時間前（例えば１時間前）までとすることができる。
【００２６】
その後、データベース移行システム６０は、切替時刻に近づくに従って短くなる間隔で、更新ログの適用を行うことができる。つまり、データベース移行システム６０は、更新ログを強制的に出力させるための出力指示を旧データベースサーバ１０に出力し、この指示に応じて出力される更新ログを新データベースに順次適用することができる。更新ログの出力指示を出力する間隔を短くしていくことにより、更新ログの１ファイルに含まれるトランザクション件数を少なくすることができる。そして、トランザクション件数を少なくすることにより、更新ログの適用に要する時間を短くすることができる。図４に示すように、本実施形態では、切替時刻に向けて更新ログの出力間隔を短くしていく期間を「追い込み期間」と言う。更新ログの出力間隔は、例えば、追いこみ期間の半分、さらにその半分、というように順次短くしていくことができる。具体的には、例えば、追いこみ期間が１時間であれば、３０分、１５分、８分というように、更新ログの出力間隔を短くしていくことができる。図４の例では、データベース移行システム６０は、時刻Ｔ４，Ｔ５において、更新ログの適用を行っている。ここで、時刻Ｔ３から時刻Ｔ４までの間隔よりも、時刻Ｔ４から時刻Ｔ５までの間隔の方が短くなっている。そして、データベース移行システム６０は、切替時刻である時刻Ｔ６において更新ログの適用を行う。これにより、旧データベースから新データベースへのデータ移行が完了する。
【００２７】
なお、切替時刻に適用される更新ログのトランザクション件数を５件程度であるとすると、切替時刻における更新ログの適用処理は、例えば数秒程度で完了させることが可能である。そのため、例えば、アプリケーションサーバ５０が２４時間３６５日稼動するシステムである場合などであっても、システムを停止させることなく、あるいは、非常に短いシステム停止時間で、データベースを切り替えることが可能となる。
【００２８】
次に、データベース移行システム６０の詳細について説明する。図５は、データベース移行システム６０の構成例を示すブロック図である。データベース移行システム６０は、更新ログ取得部１００、更新ログ記憶部１１０、更新件数表示部１２０、期間判定部１３０、更新件数算出部１４０、サイズ決定部１５０、バックアップ取得部１６０、リストア指示部１７０、切替時刻記憶部１８０、更新ログ出力指示部１９０、更新指示部２００、及び切替指示部２１０を含んで構成される。データベース移行システム６０を構成する各部は、例えば、メモリや記憶装置等の記憶領域を用いたり、記憶領域に格納されているプログラムをプロセッサが実行したりすることにより実現することができる。
【００２９】
図６は、データベース移行システム６０における処理の流れを示す図である。データベース移行システム６０における処理は、分析フェーズと実行フェーズの２つのフェーズに分けることができる。分析フェーズは、移行対象のデータベースに対するトランザクション量など、データベースの特徴を分析することにより、移行処理を行うための各種条件を決定するためのフェーズである。実行フェーズは、分析フェーズにおいて決定された条件に従って移行処理を実行するためのフェーズである。
【００３０】
分析フェーズでは、業務影響の少ない切替時刻の決定（Ａ１）や、トランザクション量に応じた固定ログ期間における更新ログのサイズ決定（Ａ２）、迅速な切り替えを行うための、追い込み期間における更新ログの出力回数及び出力タイミングの決定（Ａ３）などが行われる。実行フェーズでは、分析フェーズで決定された条件に従った移行処理のリハーサル（プレ実行）（Ｅ１）や、決定された条件に従った本番の移行処理（Ｅ２）などが行われる。
【００３１】
図５に戻り、更新ログ取得部１００は、旧データベースサーバ１０から更新ログを取得し、更新ログ記憶部１１０に格納することができる。更新ログ取得部１００は、例えば、分析フェーズにおいてデータベースの特徴を分析するために、旧データベースサーバ１０において所定期間（例えば１か月間）に出力された更新ログを取得することができる。また、更新ログ取得部１００は、実行フェーズにおいて、分析フェーズで決定された条件に従って旧データベースサーバ１０で出力される更新ログを取得することができる。例えば、更新ログ取得部１００は、旧データベースサーバ１０の所定フォルダを監視することにより、更新ログを取得することができる。
【００３２】
なお、更新ログ取得部１００は、旧データベースサーバ１０からではなく、旧データベースに対する更新ログが保存されている他の情報処理装置から所定期間の更新ログを取得することとしてもよい。また、更新ログ取得部１００は、所定期間分の更新ログをまとめて取得するのではなく、例えば１日ごとや１週間ごとなど、所定のタイミングで繰り返し更新ログを取得することとしてもよい。
【００３３】
更新件数表示部１２０は、更新ログ取得部１００によって取得された所定期間の更新ログに基づいて、単位期間（例えば１時間）ごとのトランザクション件数（更新件数）をディスプレイ装置等に表示することができる。図７は、トランザクション件数の表示の一例を示す図である。図７に示すように、更新件数表示部１２０は、例えば、日ごとに、単位期間ごとのトランザクション件数をグラフ表示することができる。本実施形態では、このようなグラフ表示をトランザクションマップとも言う。また、図７に示すように、更新件数表示部１２０は、例えば、マウスカーソル等で選択された日のトランザクション件数を拡大表示することとしてもよい。なお、図７に示した表示形態は一例にすぎず、更新件数表示部１２０は、任意の表示形態によりトランザクション件数を表示することができる。例えば、更新件数表示部１２０は、単位期間ごとのトランザクション件数を曜日ごとや週ごとに合算して表示してもよい。
【００３４】
図５に戻り、期間判定部１３０は、更新ログ取得部１００によって取得された所定期間の更新ログに基づいて、旧データベースに対するトランザクション件数（更新件数）が所定条件を満たしている単位期間を判定する。期間判定部１３０による判定は、データベースを切り替えるタイミング、すなわち切替時刻を決定するためのものである。例えば、期間判定部１３０は、トランザクション件数が所定件数以下である単位期間を、切替時刻の候補と判定することができる。つまり、期間判定部１３０は、トランザクション件数が少ない時間帯であれば業務影響が小さいと判断し、該時間帯を切替時刻の候補とすることができる。期間判定部１３０による期間判定の具体例については後述する。なお、期間判定部１３０は、切替時刻の候補として判定した単位期間を、データベース移行システム６０のユーザ（管理者）に対して提示することができる。ユーザは、期間判定部１３０の提示に基づいて、業務影響の少ない切替時刻を決定することができる。
【００３５】
更新件数算出部１４０は、更新ログ取得部１００によって取得された更新ログに基づいて、旧データベースに対するトランザクション１件あたりのサイズ（例えばバイト数）を算出することができる。更新件数算出部１４０は、例えば、１つの更新ログのサイズを、該更新ログにおけるトランザクション件数で割ることにより、トランザクション１件あたりのサイズを算出することができる。また、更新件数算出部１４０は、更新ログ取得部１００によって取得された所定期間の更新ログに基づいて、該所定期間における単位期間（例えば１時間）ごとのトランザクション件数を算出することができる。
【００３６】
サイズ決定部１５０は、更新件数算出部１４０の算出結果に基づいて、固定ログ期間における更新ログのサイズを決定することができる。更新ログのサイズを小さくすると、更新ログ１ファイルあたりのトランザクション件数が少なくなり、更新ログの適用に要する時間を短くすることができる。しかしながら、更新ログのサイズを小さくすると、その分更新ログのファイル数が多くなってしまう。そのため、データ移行システム６０が旧データベースサーバ１０から更新ログを取得する回数が多くなるなど、更新ログの適用に伴うオーバヘッドが増加してしまう。
【００３７】
そこで、サイズ決定部１５０は、更新ログのファイル数が多くなりすぎないように、例えば、トランザクションがピークとなる単位期間（例えば１時間）における更新ログが１ファイルとなるように更新ログのサイズを決定することができる。具体的には、サイズ決定部１５０は、単位期間（例えば１時間）あたりの最大のトランザクション件数に、トランザクション１件あたりのサイズを乗じることにより、更新ログのサイズを決定することができる。なお、サイズ決定部１５０は、更新ログのサイズに余裕を持たせてもよい。例えば、サイズ決定部１５０は、単位期間（例えば１時間）あたりの最大のトランザクション件数に、トランザクション１件あたりのサイズを乗じ、さらに、安全係数（例えば１１０％）を乗じたものを更新ログのサイズとすることができる。
【００３８】
バックアップ取得部１６０は、旧データベースサーバ１０から旧データベースのバックアップを取得することができる。バックアップ取得部１６０は、例えば、旧データベースサーバ１０に対してバックアップの生成指示を出力し、該指示に応じて生成されたバックアップを取得することができる。また、旧データベースサーバ１０において、例えば定期的にバックアップが生成されている場合であれば、バックアップ取得部１６０は、すでに生成されているバックアップを旧データベースサーバ１０から取得することも可能である。また、バックアップ取得部１６０は、旧データベースサーバ１０からバックアップを取得する際に要した時間を計測することができる。
【００３９】
リストア指示部１７０は、旧データベースのバックアップを新データベースにリストアするための指示を新データベースサーバ２０に対して出力することができる。新データベースサーバ２０では、該指示に応じてバックアップのリストア処理が実行される。また、リストア指示部１７０は、バックアップのリストアに要した時間を計測することができる。例えば、リストア指示部１７０は、リストア処理の完了通知を新データベースサーバ２０から受領することにより、リストアに要した時間を計測することができる。
【００４０】
切替時刻記憶部１８０は、アプリケーションサーバ５０が使用するデータベースを旧データベースから新データベースに切り替える時刻である切替時刻を記憶することができる。例えば、切替時刻記憶部１８０は、データベース移行システム６０のユーザ（管理者）から切替時刻を受け付け、該切替時刻を記憶することとしてもよい。
【００４１】
更新ログ出力指示部１９０は、更新ログを強制的に出力させるための指示を旧データベースサーバ１０に対して出力することができる。旧データベースサーバ１０は、該指示を受け付けると、トランザクションの内容が記録された一時ファイルのサイズが所定サイズに達していなくても、該ファイルを更新ログとして出力することができる。本実施形態では、更新ログ出力指示部１９０は、例えば図４に示したように、切替時刻に近づくに従って短くなる間隔で、更新ログの出力指示を旧データベースサーバ１０に対して出力することができる。例えば、更新ログ出力指示部１９０は、図４に示した追い込み期間において、切替時刻に近づくに従って短くなる間隔で、更新ログの出力指示を出力することができる。なお、出力指示が出力される間隔は、切替前の所定期間において段階的に短くなっていけばよく、１回ごとに短くなっていなくてもよい。例えば、追い込み期間の開始から数回は２０分間隔、その後数回は１０分間隔などとしてもよい。また、更新ログ出力指示部１９０は、サイズ決定部１５０によって決定されたサイズで更新ログを出力させるための出力指示を旧データベースサーバ１０に対して出力することもできる。なお、更新ログ出力指示部１９０の指示に応じて出力される更新ログは、更新ログ取得部１００によって取得することができる。
【００４２】
更新指示部２００は、更新ログ取得部１００によって取得された更新ログに応じて新データベースを更新するための指示を新データベースサーバ２０に対して出力することができる。ここで、更新指示部２００は、更新ログ取得部１００によって更新ログが取得されたタイミングで、該更新ログを適用するための指示を新データベースサーバ２０に対して出力することができる。なお、更新指示部２００による適用対象の更新ログは、新データベースにリストアされた旧データベースのバックアップの生成後に、旧データベースサーバ１０において生成されたものである。
【００４３】
切替指示部２１０は、アプリケーションサーバ５０が使用するデータベースを旧データベースから新データベースに切り替えるための処理を実行する。具体的には、切替指示部２１０は、例えば、新データベースサーバ２０のサーバ名及びＩＰアドレスを、旧データベースサーバ１０のサーバ名及びＩＰアドレスに変更するための指示を新データベースサーバ２０に対して出力することができる。また、切替指示部２１０は、旧データベースサーバ１０のサーバ名及びＩＰアドレスを、別のサーバ名及びＩＰアドレスに切り替えるための指示を旧データベースサーバ１０に対して出力することができる。このように、新データベースサーバ２０のサーバ名及びＩＰアドレスを、旧データベースサーバ１０のサーバ名及びＩＰアドレスに変更することにより、アプリケーションサーバ５０は、データベースが切り替えられたことを意識せずに、新データベースに対してアクセスすることができる。
【００４４】
図８〜図１５を参照して、データベース移行システム６０における処理の一例について説明する。
【００４５】
図８は、切替時刻の決定を支援する処理の一例を示すフローチャートである。まず、更新ログ取得部１００は、旧データベースサーバ１０から、所定期間（例えば１か月）の更新ログを取得し、更新ログ記憶部１１０に格納する（Ｓ８０１）。更新件数表示部１２０は、取得された更新ログを参照し、例えば図７に示したように、単位期間（例えば１時間）ごとの更新件数（トランザクション件数）を示すトランザクションマップを出力する（Ｓ８０２）。このようにトランザクションマップが出力されることにより、データベース移行システム６０のユーザ（管理者）は、各時間帯におけるトランザクション件数を目視にて確認し、切替時刻に適した時間帯を検討することができる。
【００４６】
続いて、期間判定部１３０は、取得された更新ログを参照し、所定期間（例えば１か月）の中から、更新件数が所定件数以下の期間を検出する（Ｓ８０４）。ここで検出される期間は、切替時刻の候補となる期間である。図８に示す処理では、期間判定部１３０は、更新件数が最小の期間（例えば５分間隔）を検出している。そして、期間判定部１３０は、検出された期間の同曜日・同期間における更新件数を検出する（Ｓ８０５）。同曜日・同期間における更新件数の検出が行われるのは、曜日特性や時間特性を確認するためである。つまり、ある曜日のある時間帯の更新件数が、ほぼ毎回少ないようであれば、この期間は切替時刻に適した期間であると判断することが可能となる。また、期間判定部１３０は、更新件数が最小の期間の前後所定期間（例えば１時間）の更新件数を検出する（Ｓ８０６）。前後所定期間における更新件数の検出が行われるのは、切替の影響が少ない時間帯を確認するためである。そして、期間判定部１３０は、検出結果に基づいて、切替時刻に適した期間を判定する（Ｓ８０７）。
【００４７】
例えば、期間判定部１３０は、更新件数が最小の期間の同曜日・同期間の更新件数が所定件数以下である場合に、この曜日のこの期間を、切替時刻に適した期間として判定することができる。また、例えば、期間判定部１３０は、更新件数が最小の期間の前後所定期間の更新件数が所定件数以下である場合に、この期間を、切替時刻に適した期間として判定することができる。なお、期間判定部１３０は、同曜日・同期間における更新件数の検出結果と、前後所定期間における更新件数の検出との両方に基づいて、切替時刻に適した期間を判定することとしてもよい。また、期間判定部１３０は、各検出の結果や、切替時刻に適した期間の判定結果を、データベース移行システム６０のユーザ（管理者）に対して出力することとしてもよい。このように出力される検出結果や判定結果に基づいて、ユーザは、切替時刻に適した期間を決定することができる。また、期間判定部１３０は、週単位や月単位の更新件数等、任意の指標に基づいて、切替時刻に適した期間を判定することができる。
【００４８】
図９は、固定ログ期間における更新ログサイズを決定する処理の一例を示すフローチャートである。更新ログ取得部１００は、旧データベースサーバ１０から、所定期間（例えば１か月）の更新ログを取得し、更新ログ記憶部１１０に格納する（Ｓ９０１）。なお、図８に示した期間判定処理において既に更新ログが取得されている場合には、本処理における更新ログの取得処理はスキップすることができる。
【００４９】
更新件数算出部１４０は、取得された更新ログを参照し、更新ログのトランザクション１件あたりの件数を算出する（Ｓ９０２）。例えば、更新件数算出部１４０は、ある更新ログのファイルサイズを、該更新ログにおけるトランザクション件数で割ることにより、トランザクション１件あたりのサイズを算出することができる。また、更新件数算出部１４０は、取得された更新ログを参照し、単位期間（例えば１時間）ごとの更新件数（トランザクション件数）を算出する（Ｓ９０３）。
【００５０】
そして、サイズ決定部１５０は、トランザクション１件あたりのサイズと、単位期間（例えば１時間）ごとの更新件数とに基づいて、トランザクションがピークとなる単位期間における更新ログが１ファイルとなるように、固定ログ期間における更新ログのサイズを算出する（Ｓ９０４）。具体的には、例えば、サイズ決定部１５０は、単位期間（例えば１時間）ごとの更新件数の最大値にトランザクション１件あたりのサイズを乗じ、さらに、安全係数（例えば１１０％）を乗じた数値を、更新ログのサイズとすることができる。
【００５１】
図１０は、追い込み期間における更新ログの出力回数を決定する処理の一例を示すフローチャートである。まず、更新ログ出力指示部１９０は、出力回数をゼロに初期化する（Ｓ１００１）。更新ログ出力指示部１９０は、固定ログ期間の更新ログサイズにおける更新件数を、更新件数の初期値に設定する（Ｓ１００２）。
【００５２】
更新ログ出力指示部１９０は、更新件数を半分にし（Ｓ１００３）、出力回数に１加算する（Ｓ１００４）。そして、更新件数が所定の閾値（例えば５件）以下となるまで、更新件数を半分にして出力回数に１加える処理（Ｓ１００３，Ｓ１００４）を繰り返し実行する（Ｓ１００５）。これにより、図１１に示すように、固定ログ期間の更新ログを何回半分にしていけば、トランザクション件数が所定の閾値以下のサイズの更新ログとなるかを算出することができる。なお、ここでは更新件数を半分にすることとしたが、更新件数を減少させる程度は半分に限られない。
【００５３】
図１２は、追い込み期間における更新ログの出力タイミングを決定する処理の一例を示すフローチャートである。更新ログ出力指示部１９０は、更新ログを出力させるための出力指示の出力間隔の初期値を所定期間（例えば１時間）に設定する（Ｓ１２０１）。なお、更新ログ出力指示部１９０は、例えば図１０に示した処理で算出された出力回数に応じて、追い込み期間の長さを変更することとしてもよい。例えば、更新ログ出力指示部１９０は、算出された出力回数が多くなるに連れて追い込み期間を長くすることとしてもよい。
【００５４】
続いて、更新ログ出力指示部１９０は、出力指示の出力タイミングの初期値として、ゼロ回目の出力タイミングにゼロを設定し（Ｓ１２０２）、回数パラメータＮに初期値１を設定する（Ｓ１２０３）。
【００５５】
更新ログ出力部１９０は、出力間隔を半分にし（Ｓ１２０４）、Ｎ回目の出力タイミングを、（Ｎ−１）回目の出力タイミングに出力間隔を加えたものとする（Ｓ１２０５）。そして、更新ログ出力部１９０は、Ｎに１加算し（Ｓ１２０６）、Ｎが、例えば図１０に示した処理によって算出された出力回数となるまで、Ｎ回目の出力タイミングの算出処理（Ｓ１２０４，Ｓ１２０５）を繰り返し実行する（Ｓ１２０７）。なお、図１２に示す処理では、図１０に示した処理で出力回数を算出する際に更新件数が毎回半分にされたことに応じて、出力間隔が毎回半分にされている。つまり、更新ログ出力部１９０は、出力回数を算出する際の１回あたりの更新件数の減少量に応じて、出力タイミングを算出する際の出力間隔の減少量を決定することができる。
【００５６】
図１３には、出力間隔の初期値を１時間、出力回数が４回である場合の出力タイミングの算出例が示されている。まず、１回目の出力指示までの間隔は３０分（１時間の半分）であるから、１回目の出力タイミングは、追い込み期間の開始から３０分となる。２回目の出力指示までの間隔は１５分（３０分の半分）であるから、２回目の出力タイミングは、追い込み期間の開始から４５分となる。また、３回目の出力指示までの間隔は８分（１５分の半分：切り上げ）であるから、３回目の出力タイミングは、追い込み期間の開始から５３分となる。そして、４回目の出力タイミングは、切替時刻（追い込み期間の開始から１時間）となる。
【００５７】
図１４は、データベース切り替えのリハーサル処理の一例を示すフローチャートである。バックアップ取得部１６０は、旧データベースのバックアップの生成指示を旧データベースサーバ１０に出力する（Ｓ１４０１）。更新ログ出力指示部１９０は、サイズ決定部１５０によって決定されたサイズでの更新ログの出力指示を旧データベースサーバ１０に出力する（Ｓ１４０２）。バックアップ取得部１６０は、旧データベースサーバ１０で生成されたバックアップを取得し、バックアップに要した時間を計測する（Ｓ１４０３）。
【００５８】
リストア指示部１７０は、取得されたバックアップを新データベースにリストアするリストア指示を新データベースサーバ２０に出力する（Ｓ１４０４）。そして、リストア指示部１７０は、バックアップのリストアに要した時間を計測する（Ｓ１４０５）。
【００５９】
更新ログ取得部１００は、例えば旧データベースサーバ１０の所定フォルダを参照することにより、更新ログの生成を監視し、更新ログが検出されると該更新ログを取得する（Ｓ１４０６）。更新ログが取得されると、更新指示部２００は、更新ログの新データベースへの適用指示を新データベースサーバ２０に出力する（Ｓ１４０７）。リハーサル処理では、固定ログ期間における更新ログの適用処理が、例えば５回ほど繰り返される（Ｓ１４０８）。
【００６０】
その後、更新ログ出力指示部１９０は、追い込み期間の処理を開始する。具体的には、更新ログ出力指示部１９０は、回数パラメータＮに初期値１を設定する（Ｓ１４０９）。そして、更新ログ出力指示部１９０は、例えば図１２に示した処理で事前に決定されている出力回数Ｎ回目のタイミングで、更新ログの出力指示を旧データベースサーバ１０に発行する（Ｓ１４１０）。更新ログ取得部１００は、該指示に応じて生成される更新ログを旧データベースサーバ１０から取得する（Ｓ１４１１）。更新ログが取得されると、更新指示部２００は、該更新ログの新データベースへの適用指示を新データベースサーバ２０に出力する（Ｓ１４１２）。更新ログ出力指示部１９０は、回数パラメータＮを１加算し（Ｓ１４１３）、Ｎが事前に決定されている出力回数となるまで、追い込み期間の処理（Ｓ１４１０〜Ｓ１４１２）を繰り返し実行する（Ｓ１４１４）。
【００６１】
事前に決定されている出力回数までの追い込み期間の処理が完了すると（Ｓ１４１４：Ｙ）、更新ログ出力指示部１９０は、本リハーサル処理の実行結果のレポートを出力する（Ｓ１４１５）。このレポートには、例えば、バックアップに要した時間や、リストアに要した時間、固定ログ期間及び追い込み期間における各更新ログの適用時間などが含まれる。データベース移行システム６０のユーザ（管理者）は、例えば、このレポートを参照することにより、固定ログ期間における更新ログのサイズや、追い込み期間における更新ログの出力指示の出力回数やタイミング、切替時刻などを調整することができる。
【００６２】
図１５は、データベース切り替えの本番処理の一例を示すフローチャートである。切替時刻記憶部１８０は、データベース移行システム６０のユーザ（管理者）から切替時刻を受け付けて記憶する（Ｓ１５０１）。バックアップ取得部１６０は、旧データベースのバックアップの生成指示を旧データベースサーバ１０に出力する（Ｓ１５０２）。更新ログ出力指示部１９０は、サイズ決定部１５０によって決定されたサイズ、あるいは、ユーザによって調整されたサイズでの更新ログの出力指示を旧データベースサーバ１０に出力する（Ｓ１５０３）。リストア指示部１７０は、取得されたバックアップを新データベースにリストアするリストア指示を新データベースサーバ２０に出力する（Ｓ１５０４）。
【００６３】
切替時刻の所定時間前（例えば１時間前）までは、固定ログ期間の処理が実行される（Ｓ１５０５：Ｎ）。具体的には、更新ログ取得部１００は、例えば旧データベースサーバ１０の所定フォルダを参照することにより、更新ログの生成を監視し、更新ログが検出されると該更新ログを取得する（Ｓ１５０６）。更新ログが取得されると、更新指示部２００は、更新ログの新データベースへの適用指示を新データベースサーバ２０に出力する（Ｓ１５０７）。
【００６４】
切替時間の所定時間前（例えば１時間前）になると（Ｓ１５０５：Ｙ）、追い込み期間の処理が実行される。具体的には、更新ログ出力指示部１９０は、回数パラメータＮに初期値１を設定する（Ｓ１５０８）。そして、更新ログ出力指示部１９０は、例えば図１２に示した処理で事前に決定されている出力回数Ｎ回目のタイミング、あるいは、ユーザにより調整されたＮ回目のタイミングで、更新ログの出力指示を旧データベースサーバ１０に発行する（Ｓ１５０９）。更新ログ取得部１００は、該指示に応じて生成される更新ログを旧データベースサーバ１０から取得する（Ｓ１５１０）。更新ログが取得されると、更新指示部２００は、該更新ログの新データベースへの適用指示を新データベースサーバ２０に出力する（Ｓ１５１１）。更新ログ出力指示部１９０は、回数パラメータＮを１加算し（Ｓ１５１２）、Ｎが事前に決定されている出力回数、あるいはユーザによって調整された出力回数となるまで、追い込み期間の処理（Ｓ１５０９〜Ｓ１５１１）を繰り返し実行する（Ｓ１５１３）。
【００６５】
切替時刻における更新ログの適用処理が完了すると（Ｓ１５１３：Ｙ）、切替指示部２１０は、旧データベースサーバ１０に停止命令を発行する（Ｓ１５１４）。これにより、旧データベースサーバ１０におけるデータベース処理は停止される。そして、切替指示部２１０は、旧データベースサーバ１０から新データベースサーバ２０への切り替え処理を実行する（Ｓ１５１５）。具体的には、例えば、切替指示部２１０は、新データベースサーバ２０のサーバ名及びＩＰアドレスを、旧データベースサーバ１０のサーバ名及びＩＰアドレスに変更し、旧データベースサーバ１０のサーバ名及びＩＰアドレスを別のサーバ名及びＩＰアドレスに変更する。これにより、アプリケーションサーバ５０からは、切替前の旧データベースサーバ１０と同様に新データベースサーバ２０にアクセスすることができる。
【００６６】
以上、本実施形態について説明した。本実施形態によれば、データベース移行システム６０から旧データベースサーバ１０に対して、切替時刻に近づくに従って短くなる間隔で、旧データベースに対する更新内容を示す更新ログの出力指示を出力することができる。これにより、切替時刻に近づくに従って更新ログのサイズを小さくしていくことができる。そのため、切替時刻の近辺では更新ログのサイズが小さくなり、更新ログの適用に要する時間を短くすることが可能となり、データベース移行に伴うシステム停止時間を短縮することができる。これにより、例えば、情報処理システムのユーザである顧客と、情報処理システムの運用者との間であらかじめ定めた切替時刻に、データベースを切り替えることが可能となる。また、更新ログのサイズを常に小さくしている場合と比較して、更新ログのファイル数を少なくすることが可能となり、更新ログの適用に伴うオーバヘッドを削減することができる。
【００６７】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良され得るととともに、本発明にはその等価物も含まれる。
【００６８】
例えば、本実施形態では、データベース移行システム６０が、旧データベースの更新ログを取得して、該更新ログを新データベースに適用することとしたが、更新ログの取得及び適用は、ユーザによって行われることとしてもよい。この場合においても、データベース移行システムの制御によって、切替時刻に近づくに従って更新ログのサイズが小さくなるため、データベース移行に伴うシステム停止時間を短縮することができる。
【符号の説明】
【００６９】
１０  データベースサーバ（旧データベースサーバ）
２０  データベースサーバ（新データベースサーバ）
３０，４０  外部記憶装置
５０  アプリケーションサーバ
６０  データベース移行システム
１００  更新ログ取得部
１１０  更新ログ記憶部
１２０  更新件数表示部
１３０  期間判定部
１４０  更新件数算出部
１５０  サイズ決定部
１６０  バックアップ取得部
１７０  リストア指示部
１８０  切替時刻記憶部
１９０  更新ログ出力指示部
２００  更新指示部
２１０  切替指示部
【図１】
0005681667.tif 000002
【図２】
0005681667.tif 000003
【図３】
0005681667.tif 000004
【図４】
0005681667.tif 000005
【図５】
0005681667.tif 000006
【図６】
0005681667.tif 000007
【図７】
0005681667.tif 000008
【図８】
0005681667.tif 000009
【図９】
0005681667.tif 000010
【図１０】
0005681667.tif 000011
【図１１】
0005681667.tif 000012
【図１２】
0005681667.tif 000013
【図１３】
0005681667.tif 000014
【図１４】
0005681667.tif 000015
【図１５】
0005681667.tif 000016