[DBMoto]データを暗号化し保存するデータベース移行方法

DBMotoは異種データベース間リアルタイムレプリケーションツールです。複製元テーブルにデータの更新があった場合、更新されたデータを複製先テーブルにリアルタイムで反映することができます。このレプリケーションの機能では、スクリプトを設定しデータを加工することも可能です。本記事ではスクリプトを活用し、テーブル内のデータを暗号化してレプリケーションを行う手法を3ステップでご紹介します。

手順1. 暗号化関数の作成

DBMotoでは、C#/VBでスクリプトを記述できます。下記はAES方式の暗号化を行う関数を実装するスクリプトです。こちらをDBMotoのグローバルスクリプトに記述します。

[c language=”#”]
using System;
using System.Data;
using DBMotoPublic;
using DBMotoScript;

using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace DBRS{

public class GlobalScript : IGlobalScript{

public static string Encrypt(string text, string iv, string key){
using (RijndaelManaged myRijndael = new RijndaelManaged()){
myRijndael.BlockSize = 128;
myRijndael.KeySize = 128;
myRijndael.IV = Encoding.UTF8.GetBytes(iv);
myRijndael.Key = Encoding.UTF8.GetBytes(key);

ICryptoTransform encryptor = myRijndael.CreateEncryptor(myRijndael.Key, myRijndael.IV);

byte[] encrypted;
using (MemoryStream mStream = new MemoryStream()){
using (CryptoStream ctStream = new CryptoStream(mStream, encryptor, CryptoStreamMode.Write)){
using (StreamWriter sw = new StreamWriter(ctStream)){
sw.Write(text);
}
encrypted = mStream.ToArray();
}
}
return (System.Convert.ToBase64String(encrypted));
}
}
}
}
[/c]

手順2. マッピングの設定

レプリケーションを作成する際、複製先テーブルのカラムと複製元テーブルのカラムの紐付けを行うマッピング設定があります。このマッピング設定でグローバルスクリプトに記載した関数を使用するよう設定します。下記画像では、mailカラムのレプリケーションに対し暗号化を行うEncrypt関数が設定されています。

手順3. レプリケーションの実行

関数を設定したレプリケーションを実行します。Encrypt関数を設定したカラムのデータが複製先テーブルで暗号化されていることが確認できます。

DBMotoではスクリプトを併用することで簡単にデータを暗号化された状態でレプリケーションすることが出来ます。個人情報や大切なデータを保管したデータベースのデータ移行や連携等で、ぜひDBMotoをご検討ください。

※同じように復号する関数を用意頂き、マッピング設定で復号の関数を記述いただければ、暗号化したデータを元に戻すことも出来ます。復号方法はこちらの記事をご覧ください。

コメントする -->

保護中: DBMoto 9.5.1.14 リリースノート

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

コメントを読むにはパスワードを入力してください。 -->

DBMotoによるInformixのデータ連携について

DBMotoは2008年春からデータ連携の複製元、複製先としてInformix のサポートを開始し、2008年6月にIBMからInformix Dynamic Serverの認定を受けました。

当初はトリガー・ベースのレプリケーションのみをサポートしておりましたが、現在はInformix のトランザクションログ・ベースのレプリケーションもサポートしております。ログの参照方法としてログ・サーバー・エージェント方式を採用しているため、DBMotoサーバーにClient SDKが必要になります。

参考:DBMoto差分レプリケーション方式 x 3について

 

トランザクションログ・ベースでデータ連携を行う際に必要な設定

Informixで必要な設定

  1. Informix IDSデータベースバージョン11.5 FC3以上を使用していることを確認します。
  2. データベース管理者(DBA)に問い合わせて、データベースに付属のスクリプトsyscdcv1.sqlを実行して、データベースsyscdcvを作成します。このテーブルがDBMotoで必要です。
  3. レプリケートするソースデータを含むデータベースがログを有効にして作成されていることを確認します。ログが有効になっていない場合、DBAはondblogユーティリティを使用してロギングモードを変更できます(ロギングモードが変更された後にonbarユーティリティを使用してデータベースをバックアップします)。
  4. DBMotoからデータベースに接続するために使用するユーザーIDには、ソースデータベースとsyscdcv1データベースの両方にCONNECT権限とDBA権限を付与します。例えば:

grant connect to “dbmotouser1”
grant dba to “dbmotouser1”

  1. ユーザーIDがinformix-adminグループにあることを確認します。

 

DBMotoサーバーで必要な設定

  1. .NET Data Providerと最新のInformix Client SDKをESQLオプションでインストールします。
  2. SetNet32ユーティリティを使用してサーバーを定義します。
  3. ILogin.exeデモを使用して、データベースへの接続を確認します。
  4. Windowsサービスを作成および削除するためにDBMotoを実行するWindowsユーザーの権限を設定します。

 

タグ:

[DBMoto] Log Server Agentの設定方法 SQL Server編

DBMoto 9.5より、Log ReaderとTrigger方式以外にLog Server Agent方式で
ミラーリング、シンクロナイゼーションを行うことができるようになりました。

Log Server Agent方式を使用することでSQL Serverのdistributorを使用し、
単一の接続ですべてのレプリケーションの変更点を読み取ります。

読み取った変更点はDBMoto独自の形式のバイナリログとして指定したフォルダに保存し、DBMotoは保存したバイナリログからレプリケーションを実行します。
従来のLog Readerを使用する方式と比較し、データベースへの接続数が最適化されることにより、効率的なレプリケーションを実現できます。

以下、設定手順となります。
1.DBMotoをインストールしたマシンから接続できるパスに、ログフォルダを新規に作成します。

2.トランザクション有効化ウィザードを開きます。

3.トランザクション方式としてLog Server Agentを選択します。

4.ディストリビューターを設定するために認証情報を入力します。

5.バイナリログを保存しておくログフォルダを指定します。(手順1にて作成したフォルダです。)
6.接頭語フィールドではログファイル名に指定するPrefix、サービス名の名前フィールドには作成するWindows サービス名を指定します。

7.完了をクリックし、セットアップを終了します。

以上でLog Server Agentの設定は終了です。

コメントする -->

[DBMoto] リモートディストリビュータの設定方法

通常DBMotoにおいてSQL Serverよりレプリケーションを実行する場合、
元のデータが存在するSQL Serverにディストリビュータを設定します。

しかし負荷分散などの目的で、別のSQL ServerからオリジナルのSQL Serverに対してディストリビュータを設定することができます。

DBMotoではリモートディストリビュータをGUIコンソール上から設定することができます。

DBMotoのコンソールより、SQL Serverの接続プロパティを表示後、
トランザクションの設定にて下記画像のようにリモートディストリビュータ用
のSQL Serverと、ディストリビュータが使用するデータベース、ログイン情報を指定します。

※「ディストリビュータ用のインストールパスを指定」は通常指定する必要はありませんが、
リモートディストリビュータ設定時に問題が発生した場合は、
この中にディストリビュータを作成するフルパスを入力する必要があります。

 

コメントする -->

PostgreSQLからの差分連携(LSA)セットアップ手順【Syniti DR】

Syniti DR (旧DBMoto)では、PostgreSQLからの差分レプリケーションが実施できます。これにより、PostgreSQLからOracleやSQL Server、AS/400といった異種データベースへの差分連携や、Amazon RDSやAzure SQL Databaseなどのクラウド環境へのレプリケーションも実施可能です。

 

PostgreSQLからの差分レプリケーション実施時は、Log Server Agent(LSA)方式Trigger(トリガー)方式のいずれかから選択できます。
レプリケーション方式の違いの詳細は、こちらのブログに記載しておりますが、PostgreSQLの場合、LSA方式は低負荷で実施できる点が、トリガー方式は双方向連携(シンクロナイゼーション)に対応している点が、それぞれのメリットとなります。

今回のブログでは、LSA方式を使用した場合のセットアップ手順について記載します。

LSA方式では、レプリケーションスロットというPostgreSQLの機能を使用して実施します。レプリケーショスロットを介して Syniti LSAWALログの情報を取得、バイナリログとして差分情報を保持するという流れです。これに伴い、PostgreSQLからの差分連携をLSA方式で実施する場合は、下記の要件を満たす必要があります。

————————————–
<Syniti DR(DBMoto)の要件>
・Syniti DR or DBMoto 9.5以降

・バイナリログファイルを保存する領域

<PostgreSQL DBの要件>
・PostgreSQL 9.5以降

・スーパーユーザー権限を持ったPostgreSQLユーザ

・レプリケーション対象テーブルへの物理的なPK設定

・PostgreSQLサーバのWALログレベル等の設定変更

<注意点>
・LSA方式では片方向差分連携(ミラーリング)のみ対応しています。
 ※双方向(シンクロナイゼーション)実施にはトリガー方式を使用してください。

————————————–

以下、実際のセットアップ手順となります。

 

■デフォルトのPostgreSQLプラグイン(test_decoding)を使用したセットアップ手順

基本的には、本デフォルトのPostgreSQLプラグインを使用する手順でLSA方式のセットアップが実施できます。

1.まずは、WALログレベル等のPostgreSQL側の設定変更を行います。レプリケーション対象PostgreSQLのpostgresql.confファイルを編集し、下記設定に変更します。変更後は設定を反映させるため、PostgreSQLデータベースサービスを再起動します。
———————–
wal_level = logical

max_replication_slots = 3

track_commit_timestamp = on
———————–

 

2.SynitiをインストールしたWindowsマシンから接続できるパスに、ログフォルダ(バイナリログを保存するフォルダ)を新規に任意のフォルダ名で作成します。

 

3.Syniti管理画面を開き、ソースDB接続作成ウィザードからPostgreSQLの接続設定を行います。この際PostgreSQLのユーザには、スーパーユーザー権限を持ったユーザ情報を入力します。

 
4.次にトランザクションログのセットアップウィザードから差分連携設定を行います。今回はLSA方式のセットアップを行うので、Log Server Agentを選択します。

 

5.次の画面では、デコードプラグインとして「test_decoding(default)」を選択したままとし、レプリケーションスロットでは「新しいスロットを追加する」を選択、スロットの新規作成も行うようにします。

 

6.次にLSAの設定を行います。ログフォルダ設定では、手順2で作成したフォルダを指定し、接頭語サービス名のフィールドに、任意の名前を指定します。
その後、ウィザードを進め、終了することで、LSA方式のセットアップが完了です。

 

 

■Synitiライブラリファイルを使用したセットアップ手順

以下のセットアップ手順は、デフォルトのPostgreSQLプラグイン(test_decoding)を使用できる場合は不要です。

このデフォルトプラグインがPostgreSQL側に存在しない場合などには、Synitiライブラリファイルを配置することでも実施できます。必要となるSynitiライブラリファイルは、ご使用のPostgreSQLのバージョンやOSによって異なります。必要な場合は、PostgreSQLのバージョン(10.3など)と、使用しているOSの情報と共に、弊社サポートまでお問い合わせください。

Synitiライブラリファイルは下記のように「XXX_dbm_decoding_」という形で命名されているので、PostgreSQLのOSがWindowsの場合は「XXX_dbm_decoding.dll」、Linuxの場合は「XXX_dbm_decoding.so」にファイル名を変更してから、PostgreSQLのlibフォルダに配置します。

 

以降は、上記「デフォルトのPostgreSQLプラグイン(test_decoding)を使用したセットアップ手順 」と同様に、PostgreSQLのWALログレベル等を変更し、Syniti画面からPostgreSQLの接続設定を行っていきます。

その後、トランザクションログのセットアップウィザードのデコードプラグインを選択する画面で、「dbm_decoding」を選択します。これにより Synitiライブラリファイルを使用したLSA方式のセットアップが実施できます。

タグ: , , ,

DBMoto ver9.5 新機能リスト PostgreSQLからの差分レプリケーション, JSONファイル/データ型へのレプリケーションなど

異種データベース間のレプリケーションツールDBMoto。新バージョン9.5ではPostgreSQLからの差分レプリケーションやJSONファイル形式へのレプリケーションが実施可能になるなどの、機能強化が行われています。この記事では追加された機能についてリスト形式でご紹介いたします。

  1. PostgreSQLからの差分レプリケーション
  2. JSONファイル/データ型へのレプリケーション
  3. ログサーバエージェントの対応拡張
  4. バルクミラーリング機能
  5. スキーマ更新情報の自動認識

・PostgreSQLからの差分レプリケーション

PostgreSQLからも変更データのみの差分レプリケーションが可能となりました。PostgreSQLのレプリケーションスロット機能を利用して差分を感知します。もちろんOracleやSQL Serverといった異種データベースへとレプリケーションすることも可能です。詳細はこちら

JSONファイル/データ型へのレプリケーション

任意のデータベースからJSON形式のファイルとしてレプリケーションすることや、JSONデータ型へのレプリケーションが実施できます。また、テーブルフィールドとJSONファイル間のマッピングのためのファイル構造を設定するために、DBMoto管理画面から選択したテーブルのJSONスクリプトを表示するダイアログも搭載されています。

・ログサーバエージェントの対応拡張

差分レプリケーション時に、ログサーバエージェント方式でレプリケーション可能なデータベースの種類が追加されました。v9.5で対応しているデータベースは、Oracle、 SQL Server、 AS/400、 IBM Infomix、MySQL、PostgreSQLです(差分レプリケーション方式についてはこちらの記事をご参照ください)。また差分レプリケーション方式を設定する専用ウィザードも追加されています。

・バルクミラーリング機能

変更データを一括で反映するバルクミラーリング機能が搭載されています。レプリケーション先データベースがOracle、SQL Server、MySQL、PostgeSQLのいずれかであれば使用することが可能です。この機能により多量の更新データをより高速に反映することができます。

・スキーマ更新情報の自動認識

レプリケーション対象テーブルに対するカラム変更などのスキーマ更新情報を検知する機能が追加されました。検知した場合、整合性保持のためレプリケーションを停止するといったことも可能です。対応DBはOracle、 SQL Server、 AS/400、MySQL、DB2 LUWです。

タグ: , ,

保護中: DBMoto 9.5.0.20 リリースノート

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

コメントを読むにはパスワードを入力してください。 -->

[DBMoto] ジャーナルの起動イメージが「*AFTER」の場合にミラーリングを行う方法

DBMotoを使用し、AS/400からミラーリングを行う場合、
ジャーナルを参照して変更点をターゲットDBに対して転送を行います。

AS/400のジャーナル起動イメージが「*BOTH」の場合は問題なくミラーリングを行うことができますが、
「*AFTER」で起動している場合、そのままではミラーリングが実行できないため、
追加で下記の設定を実施する必要があります。

・ターゲットテーブルに対してINT系のカラムを追加
・DBMotoのフィールドマッピング設定にて、AS/400のRecord IDと追加したカラムをマッピング

ターゲットテーブルに対してINT系のフィールドを追加する

ターゲットテーブルに対してINT系のカラムを追加する必要があります。
※Syniti DR(DBMotoのVersion 9.6以降)をご利用の場合、Decimal型、サイズ:15でカラムを追加する必要があります。

DBMotoのテーブル作成画面から作成する際には、下記画面のようにSQLで指定します。
※SPL_IDというINT型のカラムを作成しました。

すでにテーブルが作成されている場合は、クライアントツールなどを使用しターゲットテーブルに対して直接カラムを追加してください。

カラムを追加後、DBMotoコンソールより対象テーブルを右クリック、主キーの設定をクリックします。

すでにテーブルに定義されている主キーをDBMotoコンソールより解除し、
追加したSPL_IDカラムを主キーとして設定します。

上記のようにSPL_IDカラム主キーとして設定されていることを確認します。

DBMotoのフィールドマッピング設定にて、AS/400のRecord IDと追加したカラムをマッピング

DBMotoでレプリケーションを作成します。
トランザクションIDを取得する際に以下の警告メッセージが表示されますが、「はい」をクリックします。

フィールドをマッピングする時に追加したSPL_IDカラムを右クリックし、
関数へのマッピングをクリックします。

関数プログラム画面にて、左下ペインの「値」より、「ログフィールド」を選択、
右下ペインより「!RecordID」 をダブルクリックし設定が赤枠内に反映されていることを確認します。

下記画面のように設定ができていれば完成です。

タグ: ,

Dockerfilesを使用してSQL Server Dockerコンテナを構成

ソフトウェアコンテナによって可能になるIT管理の可能性の1つは、SQL Serverなどのバックエンドデータベースシステムを展開するためにそれらを使用することです。 コンテナを使用すると、数秒で新しいデータベースインスタンスを導入することができ、開発と運用の機敏性と効率性が向上します。

以前は、Windows Server 2016のコンテナをインストールし、SQL Server 2016 Express Editionをコンテナ内で実行するために、Microsoftから事前に作成されたDockerイメージを使用する方法を示しました。 次に、SQL Server 2016 Standard Editionのコマンドラインインストールと組み合わせて、Windows Server Coreイメージを使用してカスタマイズされたSQL Serverイメージを構築する方法を示しました。 これにより、指定した機能で構成されたSQL Serverイメージを作成することができますが、これには時間がかかり、繰り返し操作でエラーが発生する可能性のある手動の手順が多数含まれています。

幸いにも、Dockerfileというツールは、コンテナを構築する作業を自動化します。 Dockerfilesを使用してSQL ServerのDockerコンテナ構成プロセスを合理化する方法については、こちらを参照してください。

Dockerfilesとは

Dockerfilesは使用するのがかなり簡単ですが、特定のコマンドにはある程度の知識が必要です。 本質的に、Dockerファイルは、Dockerイメージを作成するためのビルドコマンドを含むファイル拡張子のないテキストファイルです。 これらのイメージには、アプリケーションやSQL Serverなどのサービスを実行するために必要なソフトウェア層が含まれています。 DockerビルドコマンドをDockerfileとともに使用すると、Dockerfileの仕様に基づいたイメージが作成されます。

Dockerファイルは、Dockerイメージのコードコンパイラのように考えることができます。 Dockerfilesを使用すると、特定のイメージをすばやく簡単に再作成できます。 さらに、Dockerfileを変更することで、Dockerfileの初期仕様に基づいた派生的なイメージを作成することができます。

SQL ServerのDockerファイルの内部構造

図1は、SQL Server 2016 Expressイメージを構築するためのサンプルDockerfileを示しています。

 

図 1 SQL Serverコンテナを構築するためのDockerfile

Dockerfilesでは、コメント行は#文字で始まります。 コマンドを使用して、どのコマンドを実行するかを記述することができます。 この例では、画像で使用するDockerビルドコマンドとDocker実行コマンドを文書化することから始めました。 これらのコマンドについては、次のセクションで詳しく説明します。

そこから、FROMコマンドラインはコンテナの構築に使用されるベースイメージを識別します。 このケースでは、Windows Server CoreとSQL Server 2016 Express Editionのプリインストールされたインスタンスを含むMicrosoftのイメージです。 イメージがローカルリポジトリに存在しない場合は、オープンソースのDocker技術の背後にあるDocker Inc.によって運営されているリポジトリサイトであるDocker Hubからダウンロードされます。

イメージがインスタンス化されると、RUNステートメントを使用してコマンドを開始できます。 イメージがWindowsイメージの場合は、ここにあるように、コマンドシェルやPowerShellコマンドなどのWindowsコマンドの種類でなければなりません。 イメージがLinuxイメージの場合、コマンドは通常Bashコマンドになります。

図1では、PowerShellを使用して、SQLDataという名前のイメージにディレクトリを作成しています。 RUNステートメントのコマンドは、ホストシステムではなくコンテナイメージで実行されることに注意してください。 Dockerfileのこれらのコマンドはコンテナイメージで実行され、必要な属性を持つコンテナイメージを構築できます。

次に、2つのCOPYコマンドを使用して、Dockerfileのインストールディレクトリからイメージ内の新しく作成されたSQLDataディレクトリにファイルをコピーします。 最初のコマンドはサンプルAdventureWorks 2014データベースのAdventureWorks2014_Data.mdfファイルをコピーし、2行目はAdventureWorks2014_Log.ldfファイルをコピーします。 COPYコマンドには、*と?の両方を含めることができます。 ワイルドカード文字、? 単一の文字を置換するために使用されます。 たとえば、複数のMDFファイルとLDFファイルをc:¥ディレクトリにコピーする場合は、次のコマンドを使用できます。

COPY *.mdf C:/

COPY *.ldf C:/

Dockerファイルの例では、AdventureWorks2014データベースを構成するデータファイルとログファイルがコピーされます。 これにより、コンテナの起動時にAdventureWorks 2014データベースが自動的に添付されます。

最後にEXPOSEコマンドを使用して、ホストシステム上のTCPポート1433を開きます。 これがSQL Serverで使用されるデフォルトのポートです。 ポート1433は、SQL Serverで使用される既定のポートです。 ポート1433を開くと、SQL Server Management Studioやネットワーク接続されたシステムの他のアプリケーションや管理ツールを使用して、コンテナ内のSQL Serverインスタンスにリモートアクセスできます。

Dockerファイルを使ってイメージを構築する

この例は比較的単純ですが、実際のDockerfilesは、カスタマイズされたDockerコンテナ設定のための長いセットの仕様ではるかに広範囲になります。 Dockerビルドコマンドを使用して、これらの仕様を使用して新しいイメージを作成します。

 

Michael Oteyの質問:

Dockerfilesを使用してSQL Serverコンテナの展開を自動化していますか?

これを行うには、Dockerfileとその他のインストールファイル(AdventureWorks2014_Data.mdfファイルやAdventureWorks2014_Log.ldfファイルなど)を含むディレクトリに移動し、次のようなコマンドを実行します。

cd c:\sqlexpressbuild

docker build -t sqlexpress .

この例では、-t(またはtag)パラメータを使用して、新しいイメージの名前をsqlexpressにすることができます。 値は、現在のディレクトリがビルド操作に使用されることを示します。 新しいイメージが作成されたら、図2に示すように、Docker imagesコマンドを使用して使用可能なイメージを一覧表示できます。

 

図 2 使用可能なDockerイメージのローカルリポジトリへのリスト

この時点で、新しい標準化されたイメージに基づいて複数のコンテナをスピンアップする準備が整いました。 次のDocker Runコマンドでコンテナを起動できます。

docker run -d -e sa_password=9a55w0rd#1 -e ACCEPT_EULA=Y -e attach_dbs=”[{‘dbName’:’AdventureWorks2014′,’dbFiles’:[‘C:\\SQLData\\AdventureWorks2014_Data.mdf’,’C:\\SQLData\\AdventureWorks2014_Log.ldf’]}]” sqlexpress

このコマンドは、-dパラメータを使用して、コンテナがデタッチされていることを示します。つまり、バックグラウンドで実行され、UIはありません。コンテナの起動時にウィンドウが開きません。 代わりに、バックグラウンドプロセスとして実行されます。 -e sa_passwordパラメータには、組み込みのシステム管理者アカウントの初期パスワードを指定します。 ソフトウェア使用許諾契約に同意し、SQL Server Expressコンテナを開始するには、-e ACCEPT_EULA = Yパラメータが必要です。 -e attach_dbsパラメーターは、ファイルがDockerfileセットアッププロセスの一部としてコンテナにコピーされたAdventureWorks 2014データベースを接続するために使用されます。

Dockerfilesを使用すると、Dockerコンテナの構成とSQL Serverの展開プロセスを自動化し標準化するのに役立ちます。 開発者は、SQL Serverコンテナを使用することで、インストールや復元のプロセスが長引くのを待つことなく、データベースを使用して数秒で新しいSQL Serverインスタンスを実行できるため、優れています。

タグ: ,

保護中: [DBMoto] Oracle TDEによる暗号化テーブルへの対応方法: TDEテーブルに接続可能でウォレットがオープンされていればレプリケーション対象テーブルとしてサポート

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

タグ: , ,

IBM 【Webセミナー】3月 1日開催:分析したいデータが眠っていませんか? DBMotoデモ録画

IBM 【Webセミナー】3月 1日開催:分析したいデータが眠っていませんか? IBM Cloudを利用したデータ分析ことはじめ。 ~インフラ検討編~ 
IBM社が Db2 Warehouse on Cloud、クライムがDBMotoを紹介

DBMotoとDb2 Warehouse on Cloudとの連携デモ録画:

DBMotoとIBM Db2 Warehouse on Cloudとの接続、データ連携 from 株式会社クライム on Vimeo.

タグ:

データベース接続情報の変更手順:DBMoto(Syniti)

異種データベース間レプリケーションツールDBMoto(Syniti)。下記の構成図のようにDBMotoサーバはレプリケーションにおける中間サーバとして構成し、異種間のデータベースを連携します。

これにより、もしレプリケーション対象データベースの接続情報が変更される際は、DBMoto(Syniti)側の接続設定も変更する必要があります。セキュリティや運用面の兼ね合いでデータベースのIPアドレス情報を変更する場合や、開発用から本番用のデータベースに接続先を変更する場合などが該当します。差分レプリケーション元となるデータベースの接続情報が変更される場合は、トランザクションログ設定も考慮する必要があります。

例えば、差分レプリケーション(Log Reader)を実施しているOracleデータベースの接続情報を変更する場合は、下記手順でDBMoto側の接続設定を変更します。
※変更例として、接続識別子「orcl162」から 「orcl166」へと変更しています。

1.レプリケーションサービス(DBMoto Data Replicatorサービス)を停止します。
  ※Synitiの場合は「Syniti Replication Agentサービス」となります。

 

2.念のため、メタデータバックアップを取得しておきます。


3.レプリケーション(グループ)を右クリック > プロパティ(グループの場合はレプリケーションの編集)から全レプリケーションのレプリケーションモードをリフレッシュに変更します。

※もし、サプリメンタルロギング削除の警告が出た場合は、今後も別のDBMotoマシン等から「orcl162」(変更前DB)テーブルからの差分レプリケーションを実施するのであれば、「すべていいえ」の選択を推奨します。


注意
シンクロナイゼーションモードを使用しており、逆方向のレプリケーション時に関数を適用している場合、リフレッシュモードに変更後、再度シンクロナイゼーションに戻した際に逆方向の関数設定が削除されてしまいますので、後ほど逆方向の関数も再設定いただく必要があります。設定変更前に逆方向レプリケーションに設定されている関数を把握いただけますようお願いいたします。


 

4.【v9.0以前の場合】接続情報を変更するデータベースを右クリック > プロパティ > トランザクションログの種類から「トランザクション使用」のチェックを外します。


【v9.5以降の場合】接続情報を変更するデータベースを右クリック > プロパティ > トランザクションセットアップ > 無効化を選択し、ウィザードを進めます。適用をクリックします。


5.接続情報を変更するデータベースを右クリック > プロパティ > 接続からData Source項目に変更後の接続情報を入力します。テストボタンをクリックし、接続できていることを確認します。OK > 適用をクリックします。


6.再度手順4の画面を開き、トランザクションを有効化します。

【v9.0以前の場合】確認をクリックし、サプリメンタルロギング設定が有効となっているかを確認します。
※有効となっていない場合は、「インストール」ボタンから有効化します。


【v9.5以降の場合】トランザクションセットアップ > 有効化を選択し、ウィザードを進めます。適用をクリックします。

7.手順3で変更したレプリケーションモードを元に戻し、適用をクリックします。
※異なるOracleデータベースに変更した場合は、トランザクションIDも再取得します。

元々シンクロナイゼーションと設定していたレプリケーションで、逆方向レプリケーションに関数が適用されていた場合は、マッピングボタンから、逆方向レプリケーションへの関数設定も行います。

8.接続先を変更したDBのスキーマ情報を更新します。接続したDBを右クリック > スキーマ情報更新をクリックします。

9.全レプリケーションを選択し右クリック > レプリケーションの検証から「検証」ボタンをクリックし、問題が表示されないかどうかチェックします。操作結果にエラーが表示された場合は、「再ビルド」ボタンをクリックします。

10.レプリケーションサービスを再開し、レコード更新が適切に反映されるかチェックします。

コメントする -->

ODBC(オープン・データベース・コネクティビティ)

オープン・データベース・コネクティビティ(ODBC)は、アプリケーション・プログラマーがどのデータベースにもアクセスが可能ととするオープン・スタンダードのアプリケーション・プログラミング・インターフェース(API)です。ODBCプログラミングサポートの主な提案者および提供者はマイクロソフトですが、ODBCはOpen Groupの標準SQL(Structured Query Language)コール-レベル・インターフェイス(CLI)を基にしています。Open Groupは、Oracle、IBM、Hewlett Packard Enterpriseを含む多くの主要ベンダーがスポンサーで、このコンソーシアムはTOGAF(The Open Group Architecture Framework)を開発しています。The Open GroupのCLI仕様に加えて、ODBCはデータベースAPI用のISO / IECにも準拠しています。

ODBCのしくみ

ODBCは4つのコンポーネントで構成され、機能を有効にするために連携して動作します。ODBCは、プログラムがデータベースへの独自のインターフェースを知らなくてもデータベースにアクセスするSQLリクエストを使用できるようにします。ODBCはSQLリクエストを処理し、それを各データベースシステムが理解できるリクエストに変換します。

ODBCは次の4つの個別コンポーネントから構成されます。

Application: ODBC関数を処理して呼び出し、SQLステートメントを送信します。

Driver manager:各アプリケーションのドライバを起動させます。

Driver: ODBCファンクション・コールを処理し、データ・ソースに対してSQLリクエストを送信します。

Data source:アクセスされるデータとデータベース管理システム(DBMS)OS

OBDCは、MyODBCと呼ばれるドライバとMySQLと連携することもできます。 これは、MySQL Connecter / ODBCと呼ばれることもあります。

JDBC vs. ODBC

Java Database Connectivity(JDBC)APIは、Javaプログラミング言語を使用してデータベースにアクセスします。ユーザはJDBC APIを使用してJava言語でプログラムを作成する場合、JDBC-ODBCブリッジを含むソフトウェアを使用して、ODBCでサポートされるデータベースにアクセスすることができます。

ただし、APIコールはJDBCブリッジを介してODBCドライバに渡され、次にネイティブのデータベース接続インターフェイスに渡される必要があるため、パフォーマンス・オーバーヘッドが発生するため、JDBC-ODBCブリッジ(またはJDBCタイプ1ドライバ)を移行アプローチとして考える必要があります。また、JDBC-ODBCブリッジはJava Development Kit(JDK)8で削除され、Oracleはこれをサポートしません。 JDBC-ODBCブリッジではなく、データベース・ベンダが提供するJDBCドライバを使用することを推奨します。

Open Database Connectivityの歴史

ODBCはSQL Access Groupに作成され、1992年の9月に最初にリリースされました。
Microsoft WindowsはODBC製品を初めて提供しましたが、UNIX、OS/2、Macintoshプラットフォーム用のバージョンも存在します。 ODBCは2016年6月に最新バージョン4.0を開発していると発表しましたが、2017年9月時点ではリリースされていません。

Common Object Request Broker Architecture(CORBA)と呼ばれる新しい分散オブジェクト・アーキテクチャーでは、Persistent Object Service(POS)はCLIとODBCの両方のスーパーセットです。

ODBCは1992年のスタート以来広く普及を続けて、すべてのプラットフォームとデータベースに対応したドライバを提供しています。 しかし、シンクライアント・コンピューティングは、HTMLが中間フォーマットとして成長したため、企業におけるOBDCの使用度は縮小されました。

タグ: , , , ,

保護中: DBMoto 9.0.9.7 リリースノート

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

タグ: