高级DBA带你解决达梦8数据库解决列名涉及达梦关键字无法执行问题全网唯一

一、达梦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余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个问题可能是因为当前用户没有执行该对象的权限或者该对象不存在。您可以执行以下步骤解决问题: 1. 确认是否为当前用户授权了执行该对象的权限。 2. 检查该对象是否存在,可以通过查询系统表来确认。 3. 如果对象确实存在且用户有执行权限,则可能是由于该对象依赖于其他对象,而这些对象可能不存在,或者没有正确的权限。在这种情况下,您需要递归地检查依赖关系,以确保所有的对象都存在且具有正确的权限。 4. 如果问题仍然存在,请尝试重新编译该对象,以确保其正确性。 5. 如果仍然无法解决问题,请联系DBA或系统管理员进行进一步的调查和解决方案。 ### 回答2: 达梦B数据库报没有执行[ET]对象权限通常是因为当前用户没有对指定的对象具有执行权限。 在达梦B数据库中,对象权限被授予给用户或用户组,用于控制对特定对象的操作权限。当用户尝试执行某个对象(如表、视图、存储过程等)时,达梦B数据库会检查用户是否具有执行该对象的权限。如果用户缺乏相应的权限,就会报没有执行[ET]对象权限的错误。 为了解决这个问题,需要进行以下步骤: 1. 检查当前用户是否具有执行该对象的权限。可以使用授权管理工具或查询系统视图来查看当前用户的权限情况。 2. 如果当前用户确实没有执行该对象的权限,可以尝试获取权限。可以联系数据库管理员(DBA)或授权管理员请求授予相应的权限。 3. 在授予权限之后,重新尝试执行该对象,看是否仍然报没有执行[ET]对象权限的错误。 需要注意的是,权限管理是数据库安全的重要组成部分,因此应谨慎授予对象权限,只授予必要的权限,以防止未经授权的操作。 总之,达梦B数据库报没有执行[ET]对象权限通常意味着当前用户缺乏执行指定对象的权限。通过检查用户权限、获取相应权限并重新尝试操作,可以解决这个问题。 ### 回答3: 达梦B数据库报没有执行[ET]对象权限是指在使用达梦B数据库时,用户尝试执行一个对象(可能是表、视图、函数等)上的某个操作时,数据库返回了没有权限的错误信息。 在达梦B数据库中,每个用户都有自己的权限控制,用来限制其对数据库中不同对象的操作。这些权限包括SELECT、INSERT、UPDATE、DELETE等,以及其他特定对象的权限,如创建表、删除视图等。 报没有执行[ET]对象权限错误可能有以下几个原因: 1. 用户权限不足:用户所属的角色或用户自身没有被授予执行该对象操作的权限。这时需要管理员或拥有相应权限的用户给予该用户合适的权限。 2. 对象不存在:用户尝试操作的对象可能在数据库中不存在。这可能是由于对象被删除,或者用户没有指定正确的对象名称。用户需要确认对象是否存在并提供正确的对象名称。 3. 调用方式错误:用户可能使用了错误的调用方式,导致无法执行操作。这可能是由于错误的语法、错误的参数传递等。用户需要仔细检查调用方式并做出必要的更正。 为解决该错误,用户需要首先确认自己的权限和对象是否存在,并通过审查调用方式来排除可能的语法错误。若确认以上均无误,用户需联系管理员或拥有相应权限的用户,以获取合适的权限来执行该对象操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值