作者:瑞风大姑娘_214 | 来源:互联网 | 2023-09-18 09:37
CASE_SENSITIVE官方含义:标识符大小写敏感,默认值为Y。当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;当大小写不敏感时,系统不自动转换标识符的
CASE_SENSITIVE 官方含义:
标识符大小写敏感,默认值为 Y。当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写。
CASE_SENSITIVE大小敏感(Y),可选值:Y/N,1/0
注意:该参数属于初始化参数,在创建实例时候定下来的,在参数配置文件dm.ini里没有记录。
大小写敏感通常涉及到2种对象:
测试环境规划
创建2个实例:PRODA(大小写不敏感),PRODB(大小写敏感)
序号 |
实例名称 |
访问端口 |
数据存放路径 |
大小写是否敏感 |
备注 |
---|
1 |
PRODA |
5237 |
/dmA/data |
否 |
CASE_SENSITIVE=N |
2 |
PRODB |
5238 |
/dmB/dataB |
是 |
CASE_SENSITIVE=Y |
1. 创建数据库存放路径
[root@gs08 ~]# mkdir -p /dmA
[root@gs08 ~]# chown -R dmdba:dinstall /dmA
[root@gs08 ~]# ll -ld /dmA
drwxr-xr-x 2 dmdba dinstall 4096 Aug 29 09:48 /dmA
[root@gs08 ~]# mkdir -p /dmB
[root@gs08 ~]# chown -R dmdba:dinstall /dmB
[root@gs08 ~]# ll -ld /dmB
drwxr-xr-x 2 dmdba dinstall 4096 Aug 29 09:49 /dmB
2. 创建实例PRODA
[root@gs08 ~]# su - dmdba
Last login: Mon Aug 29 09:44:03 CST 2022 on pts/1
[dmdba@gs08 ~]$ cd dmdbms/bin
[dmdba@gs08 bin]$ ./dminit PATH=/dmA/data DB_NAME=PRODA instance_name=PRODA SYSDBA_PWD=Dameng123 PORT_NUM=5237 CASE_SENSITIVE=N
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-05-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dmA/data/PRODA/PRODA01.log
log file path: /dmA/data/PRODA/PRODA02.log
write to dir [/dmA/data/PRODA].
create dm database success. 2022-08-29 09:50:37
3. 创建实例PRODB
[dmdba@gs08 bin]$ ./dminit PATH=/dmB/dataB DB_NAME=PRODB instance_name=PRODB SYSDBA_PWD=Dameng123 PORT_NUM=5238 CASE_SENSITIVE=Y
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-05-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dmB/dataB/PRODB/PRODB01.log
log file path: /dmB/dataB/PRODB/PRODB02.log
write to dir [/dmB/dataB/PRODB].
create dm database success. 2022-08-29 09:50:47
4. 注册服务并启动实例
PRODA
[root@gs08 root]# cd /home/dmdba/dmdbms/script/root
[root@gs08 root]# ./dm_service_installer.sh -t dmserver -p PRODA -dm_ini /dmA/data/PRODA/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicePRODA.service to /usr/lib/systemd/system/DmServicePRODA.service.
创建服务(DmServicePRODA)完成
[root@gs08 root]# su - dmdba
Last login: Mon Aug 29 09:50:22 CST 2022 on pts/1
[dmdba@gs08 ~]$ cd dmdbms/bin
[dmdba@gs08 bin]$ ll |grep Dm
-rwxr-xr-x 1 dmdba dinstall 13833 Aug 18 12:22 DmAPService
-rwxr-xr-x 1 dmdba dinstall 14497 Aug 18 12:22 DmAuditMonitorService
-rwxr-xr-x 1 dmdba dinstall 13661 Aug 18 12:22 DmInstanceMonitorService
-rwxr-xr-x 1 dmdba dinstall 14134 Aug 18 12:22 DmJobMonitorService
-rwxr-xr-x 1 dmdba dinstall 16461 Aug 18 13:31 DmServiceDMTEST
-rwxr-xr-x 1 dmdba dinstall 16459 Aug 29 13:17 DmServicePRODA
[dmdba@gs08 bin]$ ./DmServicePRODA status
DmServicePRODA is stopped
[dmdba@gs08 bin]$ ./DmServicePRODA start
Starting DmServicePRODA: [ OK ]
[dmdba@gs08 bin]$ ./DmServicePRODA status
DmServicePRODA (pid 6328) is running.
PRODB
[root@gs08 ~]# cd /home/dmdba/dmdbms/script/root
[root@gs08 root]# ./dm_service_installer.sh -t dmserver -p PRODB -dm_ini /dmB/dataB/PRODB/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicePRODB.service to /usr/lib/systemd/system/DmServicePRODB.service.
创建服务(DmServicePRODB)完成
[root@gs08 root]# su - dmdba
Last login: Mon Aug 29 13:17:27 CST 2022 on pts/0
[dmdba@gs08 ~]$ cd dmdbms/bin
[dmdba@gs08 bin]$ ll |grep Dm
-rwxr-xr-x 1 dmdba dinstall 13833 Aug 18 12:22 DmAPService
-rwxr-xr-x 1 dmdba dinstall 14497 Aug 18 12:22 DmAuditMonitorService
-rwxr-xr-x 1 dmdba dinstall 13661 Aug 18 12:22 DmInstanceMonitorService
-rwxr-xr-x 1 dmdba dinstall 14134 Aug 18 12:22 DmJobMonitorService
-rwxr-xr-x 1 dmdba dinstall 16461 Aug 18 13:31 DmServiceDMTEST
-rwxr-xr-x 1 dmdba dinstall 16459 Aug 29 13:17 DmServicePRODA
-rwxr-xr-x 1 dmdba dinstall 16460 Aug 29 13:22 DmServicePRODB
[dmdba@gs08 bin]$ ./DmServicePRODB status
DmServicePRODB is stopped
[dmdba@gs08 bin]$ ./DmServicePRODB start
Starting DmServicePRODB: [ OK ]
[dmdba@gs08 bin]$ ./DmServicePRODB status
DmServicePRODB (pid 8942) is running.
测试大小写不敏感的PRODA实例
[dmdba@gs08 bin]$ ./disql sysdba/Dameng123:5237
服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 1.501(ms)
disql V8
SQL> select name,instance_name,status$ from v$instance;
行号 name instance_name status$
---------- ----- ------------- -------
1 PRODA PRODA OPEN
已用时间: 2.074(毫秒). 执行号:55400.
SQL> select value,sys_value from v$parameter where name='GLOBAL_STR_CASE_SENSITIVE';
行号 VALUE sys_value
---------- ----- ---------
1 0 0
SQL> SELECT CASE_SENSITIVE();
行号 CASE_SENSITIVE()
---------- ----------------
1 0
SQL> CREATE TABLE a(C1 INT);
操作已执行
已用时间: 13.279(毫秒). 执行号:55412.
SQL> SELECT * FROM a;
未选定行
已用时间: 0.621(毫秒). 执行号:55413.
SQL> SELECT * FROM A;
未选定行
已用时间: 0.447(毫秒). 执行号:55414.
SQL> SELECT * FROM "a";
未选定行
已用时间: 0.477(毫秒). 执行号:55415.
SQL> SELECT * FROM "A";
未选定行
已用时间: 0.443(毫秒). 执行号:55416.
SQL>
SQL> CREATE TABLE tt(C1 VARCHAR(100));
操作已执行
已用时间: 11.609(毫秒). 执行号:55417.
SQL> INSERT INTO tt VALUES('a');
影响行数 1
已用时间: 0.549(毫秒). 执行号:55418.
SQL> INSERT INTO tt VALUES('A');
影响行数 1
已用时间: 0.380(毫秒). 执行号:55419.
SQL> COMMIT;
操作已执行
已用时间: 1.514(毫秒). 执行号:55420.
SQL> SELECT COUNT(*) FROM tt WHERE C1='a';
行号 COUNT(*)
---------- --------------------
1 2
已用时间: 0.675(毫秒). 执行号:55421.
SQL> SELECT COUNT(*) FROM tt WHERE C1='A';
行号 COUNT(*)
---------- --------------------
1 2
已用时间: 0.637(毫秒). 执行号:55422.
SQL>
测试大小写敏感的PRODB实例
[dmdba@gs08 bin]$ ./disql sysdba/Dameng123:5238
服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 1.322(ms)
disql V8
SQL> select name,instance_name,status$ from v$instance;
行号 NAME INSTANCE_NAME STATUS$
---------- ----- ------------- -------
1 PRODB PRODB OPEN
已用时间: 1.067(毫秒). 执行号:55400.
SQL> select value,sys_value from v$parameter where name='GLOBAL_STR_CASE_SENSITIVE';
行号 VALUE SYS_VALUE
---------- ----- ---------
1 1 1
SQL> SELECT CASE_SENSITIVE();
行号 CASE_SENSITIVE()
---------- ----------------
1 1
已用时间: 0.518(毫秒). 执行号:55408.
SQL> CREATE TABLE a(C1 INT);
操作已执行
已用时间: 9.894(毫秒). 执行号:55409.
SQL> SELECT * FROM a;
未选定行
已用时间: 0.600(毫秒). 执行号:55410.
SQL> SELECT * FROM A;
未选定行
已用时间: 0.470(毫秒). 执行号:55411.
SQL> SELECT * FROM "a";
SELECT * FROM "a";
第1 行附近出现错误[-2106]:无效的表或视图名[a].
已用时间: 0.249(毫秒). 执行号:0.
SQL> SELECT * FROM "A";
未选定行
已用时间: 0.435(毫秒). 执行号:55412.
SQL> CREATE TABLE tt(C1 VARCHAR(100));
操作已执行
已用时间: 8.216(毫秒). 执行号:55413.
SQL> INSERT INTO tt VALUES('a');
影响行数 1
已用时间: 0.514(毫秒). 执行号:55414.
SQL> INSERT INTO tt VALUES('A');
影响行数 1
已用时间: 0.374(毫秒). 执行号:55415.
SQL> COMMIT;
操作已执行
已用时间: 1.326(毫秒). 执行号:55416.
SQL> SELECT COUNT(*) FROM tt WHERE C1='a';
行号 COUNT(*)
---------- --------------------
1 1
已用时间: 0.869(毫秒). 执行号:55417.
SQL> SELECT COUNT(*) FROM tt WHERE C1='A';
行号 COUNT(*)
---------- --------------------
1 1
已用时间: 0.643(毫秒). 执行号:55418.
SQL>
小结
综上所述得出如下结论:
- DM数据库在默认情况下是大小写敏感的;
- 大小写不敏感的情况下,对表名称加不加双引号都可以,对查询没有影响;
- 大小写敏感的情况下,创建表名称不建议加上双引号,因为实际存储在字典中已全部转大写了。但是如果表名称里存在小写则必须加上双引号;
- 在大小写敏感情况下,是严格区分大小写的,在插入存在字母大小写的数据后,查询结果不受影响;在大小写不敏感情况下,是不区分大小写的,在插入存在字母大小写的数据后查询结果会受到影响。
- 因此建议使用达梦数据库时候一定要选大小写敏感。
参考链接:https://eco.dameng.com/document/dm/zh-cn/start/