背景
有时我们执行的SQL语句正确,但是系统仍然提示语法错误。
这时我们需要考虑是不是因为存在关键字导致的误判,通过设置屏蔽关键字的参数,可以将其取消掉。
报错示例
例如:创建自定义类型明明没有错误,但是就是出现语法错误:
CREATE TYPE GOO IS OBJECT(ID NUMBER);
于是自己又重新建了一个实例来测试,结果却创建成功:
分析是数据库某项参数配置有问题,
于是查看《DM8系统管理员手册》发现的确有屏蔽关键字的参数:
于是在之前报错的环境上查看此参数:
SELECT * FROM "V$DM_INI" WHERE PARA_NAME LIKE 'EXCLUDE_RESERVED_WORDS';
果然,由于已将【TYPE】设为关键字,因此会报错。
解决办法
方法1:去除掉该关键字
但是要考虑:如果把该关键字TYPE去除掉,其他SQL是否会受影响。
确认可以取消该关键字的话,执行如下:
SF_SET_SYSTEM_PARA_VALUE('EXCLUDE_RESERVED_WORDS','',1,2);
由于该参数是静态参数,重启数据库后生效;
方法2:在dm_svc.config里面配置
(必须修改应用服务器上的这个文件)
vi /etc/dm_svc.config
TIME_ZONE=(480)
LANGUAGE=(cn)
DM=(10.10.11.11:5236)
KEYWORDS= TYPE