1 背景の紹介
ビジネス要件によりデータベースのローカライズが必要となるため、データは mysql データベースから国内の Dameng データベースに移行されます。mysql の各ライブラリを Dameng の異なるモードに移行する詳細なプロセスは次のとおりです。
2つの具体的なステップ
(1) Damengクライアントツールをインストールする
(2) クリックしてDM管理ツールを選択します
(3) スキーマとユーザーの作成
ユーザーメニューで、新しいテストモードと対応するユーザーを作成します。
(4) DM移行ツールを開く
(5) プロジェクトを作成する
DM 移行ツールの空白スペースを右クリックし、mysql という名前のプロジェクトを作成します。
(6) 移行タスクの作成
新しく作成したmysqlプロジェクトをクリックし、右クリックして移行し、新しい移行タスクmysqltransferを作成します。
(7) mysqlソースの設定
mysql の IP、ポート、ユーザー名、パスワードを順番に追加します。
(8) Damenデータベース情報の設定
Dameng データの IP、ポート、ユーザー名、パスワードを順番に追加し、今回は TEST ユーザーを選択します。
ターゲット モードとして TEST モードを選択し、[次へ] をクリックします
。すべてのデータベース テーブルを選択し、[次へ] をクリックします。
(9) 移行タスクの実行
[完了]ボタンをクリックしてデータベースの移行を開始します。mysql と Dameng データのデータ型が完全に一致していないため、移行が失敗する可能性があり、ログが生成され、ログに従って対応する問題を修正できます。
(10) 移行時によくある問題
mysqlの TIMESTAMP の時間タイプを
ON UPDATE CURRENT_TIMESTAMP に設定できる場合、データの更新時にフィールドを自動的に更新できます。Dameng
データベースには ON UPDATE CURRENT_TIMESTAMP タイプがありませんが、同様の操作を完了するトリガーを作成できます。 mysql の基礎となる層も、取得されたトリガーがこのイベント タイプを実装する必要があります。
ジオメトリタイプに関連する
- Dameng データベースで初めてジオメトリ タイプを使用する場合、ジオメトリ タイプを初期化する必要があります。初期化しないと、ジオメトリ タイプの設定フィールドに無効なデータ タイプとしてエラーが報告されます。
ジオメトリの初期化手順:
- SQL クライアントにデータベース管理者としてログインし、次のコマンドを使用してジオメトリ タイプを初期化します。
- SP_INIT_GEO_SYS(1);
- 次の SQL コマンドを発行して、ジオメトリ タイプが初期化されていることを確認します。 SELECT SF_CHECK_GEO_SYS;
- ジオメトリ タイプが初期化されている場合、コマンドは次を返します。
ライン | SF_CHECK_GEO_SYS |
---|---|
1 | 1 |
- Dameng データのジオメトリ タイプは st_geometry であり、テーブルを作成してタイプを入力するときに st_geometry を入力する必要があります。
- mysql からエクスポートされたテーブル データにジオメトリ タイプが含まれている場合、システムはその形式を ST_GeomFromText (フィールド) としてエクスポートします。これを Dream データベースにインポートするときは、DMGEO.ST_GEOMFROMTEXT (フィールド、0) に変更する必要があります。
中国語の文字に関する質問
LENGTH_IN_CHAR=0 varchar はバイト単位、gb18030 の中国語文字は 2 バイト、utf-8 の中国語文字は通常 3 バイト
LENGTH_IN_CHAR=1 varchar に格納されるバイト数は、次の特定の割合に従います。拡張時に、gb18030の場合はvarcharのバイト数が定義長2となり、文字セットがutf-8の場合は*
varcharのバイト数が定義長*
4となります。
範囲、フィールド長は適切に変更できます
テーブルフィールドの型変更
Damengにはロングテキスト型とJSON型が存在しないため、ストレージフィールドのデータ型をロングテキスト型をLONGVARCHAR、JSON型をvarchar、varchar2、char、clobなどに変更する必要があります。
データベースでロックタイムアウトが発生し、
ロックのあるセッションが検出されました
select a.*,b.NAME,c.SESS_ID from v$lock a
left join sysobjects b on b.ID=a.TABLE_ID
left join v$sessions c on a.TRX_ID=c.TRX_ID;
session_id に従って対応するロックを閉じます。
sp_close_session(sess_id);