一、达梦8数据库解决列名涉及达梦关键字无法执行问题

我们再开发过程中遇到一些列名称是达梦的关键字,导致语句无法执行。 举例:LESS

select keyword,reserved from v$reserved_words where keyword='LESS'; #查询单词是否设计达梦关键字

解决方法一:用“”包住设计关键字的列名

解决方法二:修改表列名

将设计关键字的列名修改比如将LESS改成LESS_VAL

alter table "模式名称"."表名" alter column "LESS" rename to "LESS_VAL"; #将表的列名LESS修改为LESS_VAL

修改了列名之后,就不会设计到达梦关键字了。 推荐方法二,完全解构,日后维护更方便,并且更安全!

二、达梦8获取达梦的建表语句DLL方法

select DBMS_METADATA.GET_DDL ('TABLE','表名','模式名')

SELECT TABLEDEF('模式名','表名');

call SP_TABLEDEF('表名','模式名');

三、开启达梦慢查询日志

先找到dm.ini配置文件的位置

ps -ef | grep dmserver

cd /dmdata/DAMENG/ #进入达梦的数据路径

grep SVR_LOG dm.ini #查看配置的值

配置改成1之后保存

在这里插入图片描述 同级目录下:修改sqllog.ini文件配置

BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)

BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)

BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)

[SLOG_ALL]

FILE_PATH = /dmdata/DAMENG/log

PART_STOR = 0

SWITCH_MODE = 2

SWITCH_LIMIT = 128

ASYNC_FLUSH = 1

FILE_NUM = 5

ITEMS = 0

SQL_TRACE_MASK = 1

MIN_EXEC_TIME =500 #单位毫秒

USER_MODE = 0

USERS =

重启数据库DM8服务配置生效!

service DmServiceDMSERVER restart

也可以动态执行SQL修改配置文件dm.ini的值无需重启服务SQL如下:

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

执行SQL之后查看路径/dmdata/DAMENG/log

tail -f dmsql_DMSERVER_20221028_161317.log #日志会输出过滤的SQL

动态更改sqllog.ini的值,马上生效执行sql,讲sqllog.ini配置加载到内存去,马上生效!

SP_REFRESH_SVR_LOG_CONFIG();

笔者简介 国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: