更新时间:2022-08-16 GMT+08:00

前提条件

执行自定义数据库脚本

执行数据库自定义脚本是为了支持目标数据库某些版本中不存在的关键字。这些脚本在迁移之前需在目标数据库中执行一次。

DSC/scripts目录中的自定义脚本如表1所示。有关如何执行自定义脚本的详细信息,请参见配置自定义数据库脚本

表1 自定义数据库脚本

自定义脚本

说明

date_functions.sql

Oracle日期函数的自定义数据库脚本

environment_functions.sql

Oracle环境函数的自定义数据库脚本

string_functions.sql

Oracle字符串函数的自定义数据库脚本

pkg_variable_scripts.sql

Oracle软件包变量函数的自定义数据库脚本

sequence_scripts.sql

Oracle序列函数的自定义数据库脚本

mig_fn_get_datatype_short_name.sql

Teradata函数的自定义数据库脚本

mig_fn_castasint.sql

用于迁移CAST AS INTEGER的自定义数据库脚本

vw_td_dbc_tables.sql

用于迁移DBC.TABLES的自定义数据库脚本

vw_td_dbc_indices.sql

用于迁移DBC.INDICES的自定义数据库脚本

表2 自定义数据库脚本 (Oracle至GaussDB T)

自定义脚本

说明

create_user_and_temptable_enable.sql

Oracle软件包的创建用户和创建本地临时表的自定义数据库脚本

pkg_variable_scripts.sql

Oracle包变量函数的自定义数据库脚本

按照以下步骤执行自定义数据库脚本:

  1. 通过以下任一方法在要执行迁移的所有目标数据库中执行所需脚本:

    • 使用gsql
      • 使用gsql连接到目标数据库并将SQL文件中的所有内容粘贴到gsql,粘贴的内容将自动执行。

        执行以下命令连接到数据库:

        gsql -h <host_addr_xxx.xxx.xxx.xxx> -d <database_name> -U <user_name> -W <password> -p <port_number> -r
      • 使用gsql连接到目标数据库并执行SQL文件。

        执行以下命令连接到数据库并执行SQL文件:

        gsql -h <host_addr_xxx.xxx.xxx.xxx> -d <database_name> -U <user_name>  -W <password>  -p <port_number> -f <filename.sql> -o <output_filename> -L <log_filename.log>  -r
    • 使用Data Studio。

      使用Data Studio连接到目标数据库,然后在Data Studio中打开并执行SQL文件。

配置自定义数据库脚本

用户可以使用自定义数据库的SQL脚本从Teradata/Oracle迁移那些不直接存在于目标数据库的关键字。

迁移之前,这些脚本必须在每个目标数据库中执行一次。

打开发布包中的scripts文件夹,文件目录如表3所示。

SQL文件包含自定义迁移函数。GaussDB(DWS)数据库需要通过这些函数支持Teradata/Oracle的具体特性。

表3 DSC自定义数据库脚本

文件夹

脚本文件

描述

-- scripts

-

文件夹:所有脚本

------ oracle

-

文件夹:Oracle函数和脚本

-------- sequence

-

文件夹:配置Oracle序列的脚本

-

sequence_scripts.sql

脚本:启动Oracle序列的迁移。详情请参见序列

-------- package

-

文件夹:配置Oracle包变量的脚本

-

pkg_variable_scripts.sql

脚本:启动Oracle安装包变量的迁移。详情请参见包变量

-------- function

-

文件夹:配置Oracle系统函数的脚本

-

date_functions.sql

脚本:启动Oracle日期函数的迁移

-

environment_functions.sql

脚本:启动Oracle环境函数的迁移

-

string_functions.sql

脚本:启动Oracle字符串函数的迁移

------ teradata

-

文件夹:Teradata函数和脚本

-------- view

-

文件夹:配置视图的脚本

-

vw_td_dbc_tables.sql

脚本:启动Teradata中DBC.TABLES的迁移

-

vw_td_dbc_indices.sql

脚本:启动Teradata中DBC.INDICES的迁移

-------- function

-

文件夹:配置Teradata系统函数的脚本

-X

mig_fn_get_datatype_short_name.sql

脚本:启动Teradata中DBC.COLUMNS的迁移

-

mig_fn_castasint.sql

脚本:启动CAST AS INTEGER的迁移

--------db_scripts

-

文件夹:启动Teradata自定义函数的脚本

-

mig_fn_get_datatype_short_name.sql

脚本:启动Teradata中DBC.COLUMNS的迁移

--------core

-

文件夹:Teradata关键脚本

-

teradatacore.pm

脚本:执行Perl迁移的脚本

配置DSC和迁移属性

DSC配置涉及DSC/config目录中的配置文件,请根据表4配置对应的参数。

表4 DSC配置参数

迁移场景

配置文件

配置参数

Teradata SQL迁移

deleteToTruncate=True/False
distributeByHash=one/many
extendedGroupByClause=True/False
inToExists=True/False
rowstoreToColumnstore=True/False
session_mode=Teradata/ANSI
tdMigrateDollar=True/False
tdMigrateALIAS=True/False
tdMigrateNULLIFZero=True/False
tdMigrateZEROIFNULL=True/False
volatile=local temporary/unlogged

Oracle SQL迁移

exceptionHandler=True/False
TxHandler=True/False
foreignKeyHandler=True/False
globalTempTable=GLOBAL/LOCAL
onCommitDeleteRows=Delete/Preserve
maxValInSequence=0..9223372036854775807
mergeImplementation=WITH/SPLIT
RemoveHashPartition=True/False
RemoveHashSubPartition=True/False
RemoveListPartition=True/False
RemoveListSubPartition=True/False
RemoveRangeSubPartition=True/False
MigSupportSequence=True/False

Teradata Perl迁移

add-timing-on=True/False
db-bteq-tag-name=bteq
db-tdsql-tag-name=sql_lang
logging-level=error/warning/info
migrate-variables=True/False
remove-intermediate-files=True/False
target_files=overwrite/cancel
migrate-executequery=True/False

MySQL SQL迁移

table.databaseAsSchema=true
table.defaultSchema=public
table.schema=
table.orientation=ROW
table.type=HASH
table.partition-key.choose.strategy=com.huawei.hwclouds.scs.dws.DWSPartitionKeyChooserStrategy
table.partition-key.name=
table.compress.mode=NOCOMPRESS
table.compress.level=0
table.compress.row=NO
table.compress.column=LOW
table.database.template=template0

Netezza SQL迁移

  • DSC: application.properties
  • Netezza配置: features-netezza.properties
rowstoreToColumnstore=false

DB2语法迁移

  • DSC: application.properties
exceptionHandler=True/False
TxHandler=True/False
foreignKeyHandler=True/False
globalTempTable=GLOBAL/LOCAL
onCommitDeleteRows=Delete/Preserve
maxValInSequence=0..9223372036854775807
mergeImplementation=WITH/SPLIT
RemoveHashPartition=True/False
RemoveHashSubPartition=True/False
RemoveListPartition=True/False
RemoveListSubPartition=True/False
RemoveRangeSubPartition=True/False
MigSupportSequence=True/False