一.使用服务名连接数据库

1数据库集群配置文件放置路径

//dm_svc.conf 配置文件linux放到/etc目录下,window系统放到C:\Windows\System32,windows系统放配置文件一定要删除再放入配置文件,不能直接覆盖。

2数据库集群配置文件说明

//dm_svc.conf放置配置文件后,应用程序、中间件、客户端需要重启才能加载到配置信息,集群名称可以自定义

//dm_svc.conf 配置文件内容

TIME_ZONE=(+8:00)

LANGUAGE=(en)

LOGIN_MODE=(1)

SWITCH_TIME=2000

SWITCH_INTERVAL=10

DM_SPCZ_RWW=(10.20.129.85:5236,10.20.129.86:5236) //这个()里的ip可以是一个,也可以是多个,用逗号隔开。

//服务名和斜体的服务名保持一致,名称可以自定义

下图就是改用服务名连接的界面

4a7570eb07292a8f3e1b475b561af3c7.png

3数据库集群应用jdbc连接说明

//JAVA应用程序配置

// 定义DM JDBC驱动串

String jdbcString = “dm.jdbc.driver.DmDriver”;

// 定义DM URL连接串

String urlString = “jdbc:dm:// DM_SPCZ_RWW:5236”;

// 定义连接用户名

String userName = “用户名”;

// 定义连接用户口令

String password = “密码”;

二.日常工作中的一些小问题

1.登录失败次数限制

517724d93e0e5c442a4e31ac824fea77.png

当登录数据库报这个错的时候,说明你的当前用户设置了登录失败次数限制,使用SYSDBA用户登录进行修改。

alter user “用户名” limit failed_login_attemps unlimited;

还有一个就是口令过期导致应用连接不上也是这么改:

alter user “用户名” limit password_life_time unlimited;

//做本操作一定要告知客户,看是否符合他们的要求,要是客户要求就是这样,就不能改动。

2.备份还原遇到的问题以及解决办法

利用备份文件-备份片恢复数据

(1)还原的数据库一定要保持和源库数据库初始化参数一致。

不一致会报错:数据文件初始化参数不一致

(2)保证还原数据库的空间足够

空间不够会报数据文件损坏,这个报错很有迷惑性,会让人误以为数据文件真的损坏导致的。

(3)利用备份片进行恢复的命令:

Dmrestore.exe INI_PATH=D:\dm_windows\DAMENG\dm.ini FILE=D:\dm_windows*******.bak

3.查看达梦数据库的初始化参数

日常工作中会涉及到迁移,数据的导入导出等都会遇到了解源端和目的端的初始化参数。以下是了解各个初始化参数的命令:

–获得系统建库时指定字符集

SELECT SF_GET_UNICODE_FLAG ();

–0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR

–获得系统建库时指定的页大小

SELECT SF_GET_PAGE_SIZE ();

–获得系统建库时指定的簇大小

SELECT SF_GET_EXTENT_SIZE ();

–获得大小写敏感信息

SELECT SF_GET_CASE_SENSITIVE_FLAG();

–1:敏感 0:不敏感

**数据导入导出一定要保证源端和目的端版本一致,数据库的管理工具版本一致,初始化参数一致

4.工作中会涉及到key过期,更换key的事情

(1)拿到最新的key文件,一般这个key文件都不是正好的,我们需要先更改文件的名字,如:

Mv dm20190318.key dm.key

(2)然后删除或者移走原来的key文件,把已经修改好的key文件挪过来。

(3)有三种方法使最新的key文件生效,

第一:直接重启数据库(这个方式可能现场客户不同意,生产库不能随便停。)

第二:命令的方式(sql窗口执行:sp_load_lic_info();)

第三:第二天会自动生效。

5.应用表示对一张表进行修改的时候报错

我遇到的一种情况

用户在对一张表进行update操作的时候报错

解决办法:首先查询会话信息,找到该表的活动信息,当时是因为对这个表有个update操作没有提交导致。查找该条信息的会话ID

e7de9493fbb0274ffd58af4fd6cd4a1a.png

最后手动提交或者利用sp_close_session(sess_id);命令杀掉该会话信息,

如:sp_close_session(13865240);

6.oracle到达梦的迁移报错解决

场景:某客户需要进行oracle 11g到DM7的数据迁移,于是按照迁移手册对oracle数据库进行迁移,但是在迁移其中一张表的时候出现迁移失败的问题,

出错表的信息如下,常规字段(char、number、date等)400个,clob字段1个,常规字段最大长度为4000,clob字段实际数据最大长度为2036。

解决方式及问题原因:当时初步推测是因为clob字段过大导致,后经过验证,于clob字段大小无关,最后在查询字段信息的时候发现,该表的字段数很多,达到了386个字段,再次推测是否是因为字段数的原因导致的,在oracle中单表的字段数是有不能超出1000个的限制的,而且超出255个字段的表,那么oracle将选择多个行片保存,后经多次验证,只要字段中有CLOB字段,且字段个数超出255个,就会导致迁移失败,解决方式为使用ETL工具进行单表数据迁移,但此方式只适用于数据量不是特别大的情况。

总结:在做DTS数据迁移时,需要对表的字段数做一下统计,提前找出有CLOB字段且字段个数超出255限制的数据表,使用其他方式迁移。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐