一、数据库安装
1.DM6数据库安装
使用“./DMInstall.bin -i”命令,运行数据库安装程序
(1)选择key文件
(2)选择安装类型
①1 Typical 典型安装
②2 Server 服务器安装
③3 Client 客户端安装
④4 Custom 自定义安装
(3)输入数据库安装目录
(4)确认安装路径
(5)选择是否初始化数据库
(6)是否初始化安装演示数据库
(7)输入初始化路径
(8)确认初始化路径
(9)是否修改数据库初始化参数
(10)是否修改SYSDBA密码
(11)是否修改SYSAUDITOR密码
(12)确认安装摘要
(13)安装确认
2.DM7数据库安装
(1)创建用户及用户组
(2)挂载镜像文件
(3)运行数据库安装程序
(4)root用户执行脚本
(5)初始化实例
(6)配置启动脚本
(7)启动数据库
二、迁移方案
1.DM数据迁移工具(DTS)
DTS工具支持达梦数据库之间的迁移、其他数据库迁移至达梦、达梦迁移到其他数据库、文件迁移到达梦以及达梦迁移到文件,根据不同的场景灵活运用不同的方式实现数据迁移工作。
在使用梦数据库之间的迁移、其他数据库迁移至达梦、达梦迁移到其他数据库时,要保证DTS工具能够同时访问到两台数据库,连接源端与目的端后,选择要迁移的数据库名称、模式名称、表名、触发器、存储过程及函数。
2.DMHS数据同步工具
DMHS数据同步工具也可以实现数据迁移的功能,在目的端数据库创建好数据库、用户以及添加权限后,可以一次性将所需数据copy到目的端数据库,与DTS工具不同的地方在于DMHS数据同步工具部署完成后可以实现后续新增数据的实时同步,可用于数据迁移完成后,源库还需使用的情况下使用,而DTS工具则只能将现有数据迁移到目的库,如果源库后续有数据更新的情况下,只能再使用DTS工具再次进行迁移,建议在源端库迁移完成后不再使用的情况下使用。
三、迁移步骤
背景介绍:在测试环境部署两台测试数据库服务器,一台部署了DM6一台部署了DM7, 且两台服务器均能进行公网访问,后续DM6将不再使用,所以选择DM数据迁移工具 (DTS)进行数据迁移
1.目的端迁移准备
(1)创建表空间
填写表空间名称,添加数据文件,填写数据文件路径及名称,可根据需求增加多个数据文件
(2)创建用户
填写用户名、密码以及选择表空间
选择角色
2.表结构及数据迁移
(1)打开DM数据迁移工具(DTS),点击黄色按钮新建工程,填写工程信息后点击确定
(2)点开工程,如下创建新的迁移
(3)填写相关迁移信息后点击确定
(4)点击“下一步”
(5)选择迁移类型,根据不同场景及需求选择不同的迁移类型,这里选择“DM6=>DM7”
(6)将DM6源端示例库BOOKSHOP迁移至DM7,填写源端数据库连接信息,并填写要迁移的数据库名称
(7)填写目的端数据库连接信息
(8)选择数据库下要迁移的模式
(9)点击选择可全选表,也可单独选择某个表,点击转换可根据需求进行修改迁移策略
也可对列映射进行修改,点击下方的“应用当前选项到其他同类对象”,可对选中的所有表进行相同的修改
(10)查看预览信息发现存在一个存储过程一个函数,一起迁移可能出现很多报错,,点击上一步,先将存储过程和函数勾选掉,点击下一步
(11)预览迁移任务信息,勾选下方“以文本显示执行任务”以文本方式显示执行任务,勾选“同步生成迁移日志”生成迁移过程中的日志文件,点击“完成”进行迁移
(12)迁移过程中可能会出现报错,如下图报错信息显示为创建索引时冲突导致报错,点击“查看详细信息”=>“详情”
(13)将SQL语句复制出来在DM7数据库中执行未发现报错,错误解决
3.存储过程及函数迁移
(1)关闭迁移并保存
(2)双击打开之前创建的迁移点击“下一步”
(3)重复之前的步骤选择含有存储过程及函数的模式,点击“下一步”
(4)选择存储过程及函数,点击“下一步”
(5)查看预览信息,无问题后点击“完成”
(6)迁移过程发现函数报错,点击“查看详细信息”,“详情”将SQL复制到客户端
(7)将报错SQL复制到客户端执行发现与DTS报错一致
因DM6划分了数据库而DM7只有一个数据库和不同的模式,所以进行了如下修改,删除了“AT BOOKSHOP”
删除后SQL正常执行
4.数据对比
数据对比主要是对比迁移前后的表结构、表记录数、存储过程及函数是否一致,正常需要手动进行比对,因DM8工具中的DTS包含对比功能,这里介绍一下使用方法。
(1)与DM7 DTS迁移工具一致,创建工程后,新建对比
(2)连接源端库与目的库
(3)选择模式
(4)添加源端库表与目的端库表,点击“添加目的”=>“选择”=>勾选去掉“同步添加相同对象的源对象”=>“确定”
点击“添加源”=>“选择”=>勾选去掉“同步添加相同对象的目的对象”=>“确定”
这样源与目的表就相互匹配上了且是所有的表都展示出来了
(5)点击“按源行数排序”和“按目的行数排序”,统计源表行数与目的表行数,进行表数据行数对比
(6)点击下一步后,预览对比信息,点击“完成”后进行对比
(7)显示对比信息
(8)点击“查看对比报告”查看详细的对比信息,选中一条记录,点击“详细”,查看具体差异,因DM6与DM7存在表结构差异且存储过程及函数在语法方面也存在一些差异,经对比并未发现问题
5.更新统计细信息
更新统计信息便于在执行SQL语句时执行计划根据代价选择SQL执行的方式,提高SQL执行效率。
(1)客户端方式
打开客户端,连接数据库,数据库名称右键选择更新统计信息,点击完成后,弹出的更新统计信息窗口消失后即更新完成。
(2)命令方式生成统计信息
①.针对特定对象生成:
SP_TAB_INDEX_STAT_INIT:对指定表的索引生成统计信息。
SP_TAB_INDEX_STAT_INIT ( schname varchar(128),tablename varchar(128) )
参数说明:schname:模式名,tablename:表名
例:CALL SP_TAB_INDEX_STAT_INIT ('SYS', 'SYSOBJECTS');
SP_INDEX_STAT_INIT:对指定索引生成统计信息。
SP_INDEX_STAT_INIT ( schname varchar(128),indexname varchar(128) )
参数说明:schname:模式名,indexname:索引名
例:CALL SP_INDEX_STAT_INIT ('SYSDBA', 'IND');
SP_COL_STAT_INIT:对指定列生成统计信息。
SP_COL_STAT_INIT ( schname varchar(128), tablename varchar(128), colname varchar(128) )
参数说明: schname:模式名,tablename:表名,colname:列名
例:CALL SP_COL_STAT_INIT ('SYS', 'SYSOBJECTS', 'ID');
SP_TAB_COL_STAT_INIT:对指定表的所有列生成统计信息。
SP_TAB_COL_STAT_INIT ( schname varchar(128), tablename varchar(128) )
参数说明: schname:模式名,tablename:表名
例:CALL SP_TAB_COL_STAT_INIT ('SYS', 'SYSOBJECTS');
SP_TAB_STAT_INIT:对指定表或索引生成统计信息。
SP_TAB_STAT_INIT ( schname varchar(128), tablename varchar(128) )
参数说明: schname:模式名,tablename:表名或索引名
例:CALL SP_TAB_STAT_INIT ('SYS', 'SYSOBJECTS');
②.针对整个数据库生成:
SP_DB_STAT_INIT:对数据库中所有用户表及其索引生成统计信息。
SP_DB_STAT_INIT ( )
例:CALL SP_DB_STAT_INIT ();
SP_SQL_STAT_INIT:对 SQL 查询语句中涉及的所有表和过滤条件中的列(不包括大字段、
ROWID)生成统计信息。
SP_SQL_STAT_INIT ( sql varchar(8187) )
可能返回的错误提示:
1) 语法分析出错,sql 语句语法错误
2) 对象不支持统计信息,统计的表或者列不存在,或者不允许被统计
参数说明:sql:sql 语句
例:CALL SP_SQL_STAT_INIT ('SELECT * FROM SYSOBJECTS');
③.按采样率生成:
SP_STAT_ON_TABLE_COLS:对指定表的所有列按指定采样率生成统计信息。
SP_STAT_ON_TABLE_COLS(
SCHEMA_NAME VARCHAR(128),TABLE_NAME VARCHAR(128),E_PERCENT INT )
参数说明:schname:模式名 ,tablename:表名 ,E_PERCENT:采样率(0-100]
例:CALL SP_STAT_ON_TABLE_COLS ('SYS','SYSOBJECTS',90);
(3)删除统计信息的方式:
针对特定对象删除:
SP_INDEX_STAT_DEINIT:删除指定索引的统计信息。
SP_INDEX_STAT_DEINIT ( schname varchar(128), indexname varchar(128) )
参数说明: schname:模式名,indexname:索引名
例:CALL SP_INDEX_STAT_DEINIT ('SYSDBA', 'IND');
SP_COL_STAT_DEINIT:删除指定列的统计信息。
SP_COL_STAT_DEINIT (
schname varchar(128), tabname varchar(128), colname varchar(128) )
参数说明: schname:模式名 ,tabname:表名 ,colname:列名
例:CALL SP_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS', 'ID');
SP_TAB_COL_STAT_DEINIT:删除指定表的所有列的统计信息。
SP_TAB_COL_STAT_DEINIT ( schname varchar(128),tablename varchar(128) )
参数说明: schname:模式名,tablename:表名
例:CALL SP_TAB_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS');
SP_TAB_STAT_DEINIT:删除指定表的统计信息。
SP_TAB_STAT_DEINIT ( schname varchar(128), tablename varchar(128))
参数说明: schname:模式名,tablename:表名
例:CALL SP_TAB_STAT_DEINIT ('SYS', 'SYSOBJECTS');
(4)升级和迁移统计信息
SP_UPDATE_SYSSTATS:用于升级和迁移统计信息。
SP_UPDATE_SYSSTATS( flag int )
参数说明:flag:标记,取值 0、1、2、3、4、99。 0:回退版本;1:创建统计信 息升级辅助表; 2:升级 SYS.SYSSTATS 表结构; 3:导入 SYS.SYSSTATS 表数据;4:删除升级辅助表;参数 99:理想状态下使用,集合了参数 1、2、3、4 的功能。
例:如果想要将老库升级,需要手动升级,升级步骤如下:
SP_UPDATE_SYSSTATS(99);
或者
SP_UPDATE_SYSSTATS(1);
SP_UPDATE_SYSSTATS(2);
SP_UPDATE_SYSSTATS(3);
SP_UPDATE_SYSSTATS(4);
如果想使用老库,且使用了之前的加列版本服务器且升级失败,那么需要先回退版
本,再升级:
SP_UPDATE_SYSSTATS(0);
SP_UPDATE_SYSSTATS(99);
统计信息对于数据库优化器选择合适的查询计划至关重要。缺乏或过时的统计信息可能导致查询性能下降。因此,定期更新统计信息对于保持数据库性能至关重要。
这里使用“SP_DB_STAT_INIT ( )”更新全库统计信息
文章
阅读量
获赞