一.使用服务名连接数据库
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可以是一个,也可以是多个,用逗号隔开。
//服务名和斜体的服务名保持一致,名称可以自定义
下图就是改用服务名连接的界面
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.登录失败次数限制
当登录数据库报这个错的时候,说明你的当前用户设置了登录失败次数限制,使用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
最后手动提交或者利用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限制的数据表,使用其他方式迁移。