前提条件
执行自定义数据库脚本
执行数据库自定义脚本是为了支持目标数据库某些版本中不存在的关键字。这些脚本在迁移之前需在目标数据库中执行一次。
DSC/scripts目录中的自定义脚本如表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的自定义数据库脚本 |
自定义脚本 |
说明 |
---|---|
create_user_and_temptable_enable.sql |
Oracle软件包的创建用户和创建本地临时表的自定义数据库脚本 |
pkg_variable_scripts.sql |
Oracle包变量函数的自定义数据库脚本 |
按照以下步骤执行自定义数据库脚本:
- 通过以下任一方法在要执行迁移的所有目标数据库中执行所需脚本:
- 使用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
- 使用gsql连接到目标数据库并将SQL文件中的所有内容粘贴到gsql,粘贴的内容将自动执行。
- 使用Data Studio。
- 使用gsql。
配置自定义数据库脚本
用户可以使用自定义数据库的SQL脚本从Teradata/Oracle迁移那些不直接存在于目标数据库的关键字。
迁移之前,这些脚本必须在每个目标数据库中执行一次。
打开发布包中的scripts文件夹,文件目录如表3所示。
SQL文件包含自定义迁移函数。GaussDB(DWS)数据库需要通过这些函数支持Teradata/Oracle的具体特性。
文件夹 |
脚本文件 |
描述 |
---|---|---|
-- 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配置对应的参数。
迁移场景 |
配置文件 |
配置参数 |
---|---|---|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
rowstoreToColumnstore=false |
|
|
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 |