DM 关键字、屏蔽关键字

通过V$RESERVED_WORDS查看dm关键字
DM 关键字、屏蔽关键字

以关键字LIST为例,由于LIST是关键字,所以作为列的别名时sql会报语法分析错误。

SQL> select * from V$RESERVED_WORDS where keyword='LIST';

行号     KEYWORD LENGTH      RESERVED RES_SQL RES_PL RES_SCHEMA RES_VARIABLE RES_ALIAS RES_FIXED
---------- ------- ----------- -------- ------- ------ ---------- ------------ --------- ---------
1          LIST    4           Y        Y       Y      N          N            N         N

已用时间: 0.762(毫秒). 执行号:1401.

SQL> select id LIST from t1;
select id LIST from t1;

select id LIST from t1;
                     * 
第 1 行, 第 22 列[LIST]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.166(毫秒). 执行号:0.

Dm屏蔽关键字有两种方法

通过指定EXCLUDE_RESERVED_WORDS参数屏蔽关键字

--设置EXCLUDE_RESERVED_WORDS值为LIST,并重启数据库使其生效

SQL> SP_SET_PARA_STRING_VALUE(2, 'EXCLUDE_RESERVED_WORDS','LIST');
DMSQL 过程已成功完成
已用时间: 8.807(毫秒). 执行号:1403.

--EXCLUDE_RESERVED_WORDS生效后再查看V$RESERVED_WORDS中已经没有LIST了,

SQL> select * from V$RESERVED_WORDS where keyword='LIST';
未选定行

--LIST关键字被屏蔽,可以作为列名使用

已用时间: 0.546(毫秒). 执行号:401.
SQL> select id LIST from t1;

行号     LIST       
---------- -----------
1          1

已用时间: 2.158(毫秒). 执行号:402.

通过配置dm_svc.conf文件来屏蔽关键字

  • 32 位的 DM 安装在 Win32 操作平台下,此文件位于%SystemRoot%\system32 目录;
  • 64 位的 DM 安装在Win64 操作平台下,此文件位于%SystemRoot%\system32 目录;
  • 32 位的 DM 安装在 Win64操作平台下,此文件位于%SystemRoot%\SysWOW64 目录;
  • 在 Linux 平台下,此文件位于/etc 目录
[dmdba@DM ~]$ vi /etc/dm_svc.conf 
##添加:
dm1=(192.168.3.88:5236) ##ip:port
[dm1] ##自定义服务名
KEYWORDS=(LIST) ##多个关键字以逗号隔离
[dmdba@DM ~]$ disql SYSDBA/SYSDBA@dm1 ##用服务名登录

服务器[192.168.3.88:5236]:处于普通打开状态
登录使用时间 : 1.150(ms)
disql V8
SQL> select id LIST from t1;

行号     LIST       
---------- -----------
1          1

已用时间: 1.806(毫秒). 执行号:600.
上一篇:DM数据库迁移工具使用


下一篇:解析dm数据库的逻辑结构