CASE_SENSITIVE参数的作用是标识符大小写敏感。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大 小写。取值范围:Y、y、1 表示敏感;N、n、0 表示不敏感。缺省值为 Y。可选参数。
此参数在数据库创建成功后无法修改,可通过系统函数SF_GET_CASE_SENSITIVE_FLAG()或 CASE_SENSITIVE()查询设置的参数置。
在linux系统中使用dmdba用户安装DM8数据库,安装完成后使用root用户注册DMAP服务
使用dminit工具初始化数据库,dminit使用较为灵活,参数较多。用户可用“dminit HELP”快速查看 dminit 版本信息和各参数信息。
[dmdba@localhost bin]$ ./dminit HELP
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-04-17
version: 03134284044-20230417-187846-20040
格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
关键字 | 说明(默认值) |
---|---|
INI_FILE | 初始化文件dm.ini存放的路径 |
PATH | 初始数据库存放的路径 |
CTL_PATH | 控制文件路径 |
LOG_PATH | 日志文件路径 |
EXTENT_SIZE | 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页 |
PAGE_SIZE | 数据页大小(8),可选值:4, 8, 16, 32,单位:K |
LOG_SIZE | 日志文件大小(256),单位为:M,范围为:256M ~ 8G |
CASE_SENSITIVE | 大小敏感(Y),可选值:Y/N,1/0 |
CHARSET/UNICODE_FLAG | 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR] |
SEC_PRIV_MODE | 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB] |
SYSDBA_PWD | 设置SYSDBA密码(SYSDBA) |
SYSAUDITOR_PWD | 设置SYSAUDITOR密码(SYSAUDITOR) |
DB_NAME | 数据库名(DAMENG) |
INSTANCE_NAME | 实例名(DMSERVER) |
PORT_NUM | 监听端口号(5236) |
BUFFER | 系统缓存大小(100),单位M |
TIME_ZONE | 设置时区(+08:00) |
PAGE_CHECK | 页检查模式(1),可选值:0/1/2 |
PAGE_HASH_NAME | 设置页检查HASH算法 |
EXTERNAL_CIPHER_NAME | 设置默认加密算法 |
EXTERNAL_HASH_NAME | 设置默认HASH算法 |
EXTERNAL_CRYPTO_NAME | 设置根密钥加密引擎 |
RLOG_ENCRYPT_NAME | 设置日志文件加密算法,若未设置,则不加密 |
RLOG_POSTFIX_NAME | 设置日志文件后缀名,长度不超过10。默认为log,例如DAMENG01.log |
USBKEY_PIN | 设置USBKEY PIN |
PAGE_ENC_SLICE_SIZE | 设置页加密分片大小,可选值:0、512、4096,单位:Byte |
ENCRYPT_NAME | 设置全库加密算法 |
BLANK_PAD_MODE | 设置空格填充模式(0),可选值:0/1 |
SYSTEM_MIRROR_PATH | SYSTEM数据文件镜像路径 |
MAIN_MIRROR_PATH | MAIN数据文件镜像 |
ROLL_MIRROR_PATH | 回滚文件镜像路径 |
MAL_FLAG | 初始化时设置dm.ini中的MAL_INI(0) |
ARCH_FLAG | 初始化时设置dm.ini中的ARCH_INI(0) |
MPP_FLAG | Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0) |
CONTROL | 初始化配置文件(配置文件格式见系统管理员手册) |
AUTO_OVERWRITE | 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖 |
USE_NEW_HASH | 是否使用改进的字符类型HASH算法(1) |
ELOG_PATH | 指定初始化过程中生成的日志文件所在路径 |
AP_PORT_NUM | 分布式环境下协同工作的监听端口 |
DFS_FLAG | 初始化时设置dm.ini中的DFS_INI(0) |
DFS_PATH | 启用dfs时指定数据文件的缺省路径 |
DFS_HOST | 指定连接分布式系统DFS的服务地址(localhost) |
DFS_PORT | 指定连接分布式系统DFS的服务端口号(3332) |
DFS_COPY_NUM | 指定分布式系统的副本数(3) |
DFS_DB_NAME | 指定分布式系统的中数据库名(默认与DB_NAME一致) |
SHARE_FLAG | 指定分布式系统中该数据库的共享属性(0) |
REGION_MODE | 指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略 |
HUGE_WITH_DELTA | 是否仅支持创建事务型HUGE表(1) 1:是 0:否 |
RLOG_GEN_FOR_HUGE | 是否生成HUGE表REDO日志(1) 1:是 0:否 |
PSEG_MGR_FLAG | 是否仅使用管理段记录事务信息(0) 1:是 0:否 |
CHAR_FIX_STORAGE | CHAR是否按定长存储(N),可选值:Y/N,1/0 |
SQL_LOG_FORBID | 是否禁止打开SQL日志(N),可选值:Y/N,1/0 |
DPC_MODE | 指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替 |
初始化实例的示例如下:设置页大小(PAGE_SIZE)为 32,日志大小(LOG_SIZE)为 2048,大小写(CASE_SENSITIVE)为敏感,字符集(CHARSET)为 GB18030。
./dminit PATH=/home/dm8/data PAGE_SIZE=32 LOG_SIZE=2048 CHARSET=0 CASE_SENSITIVE=Y
创建实例服务命令如下:
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /home/dm8/data/DAMENG/dm.ini
./DmServiceDMSERVER start
可以通过以下方式查看大小写是否敏感
SELECT CASE_SENSITIVE();
CREATE TABLE Abc(COL INT);
------对于创建表,在大小写敏感的情况下,表名Abc不加双引号,系统会自动转换成大写表名ABC
对比执行情况:
SELECT * FROM Abc; ------执行成功
SELECT * FROM ABC; ------执行成功
SELECT * FROM "Abc"; ------error:无效的表或视图名[Abc]
SELECT * FROM "ABC"; ------执行成功
CREATE TABLE "Abc"(COL INT);
------对于创建表,在大小写敏感的情况下,表名Abc加双引号,即创建的表为Abc
在执行以下操作前须保证前面创建的ABC表不存在
SELECT * FROM Abc; ------error:无效的表或视图名[ABC]
SELECT * FROM ABC; ------error:无效的表或视图名[ABC]
SELECT * FROM "Abc"; ------执行成功
SELECT * FROM "ABC"; ------error:无效的表或视图名[ABC]
执行情况如下:
注意:
在大小写敏感的情况下,如果表使用的是小写,系统会自动加上双引号
在查询的时候必须使用双引号来访问
CREATE TABLE a(C1 INT);
------对于创建表,在大小写不敏感的情况下,表名a是否加双引号,对查询结果没有影响
SELECT * FROM a; ------执行成功
SELECT * FROM A; ------执行成功
SELECT * FROM "a"; ------执行成功
SELECT * FROM "A"; ------执行成功
CREATE TABLE TTT(COL VARCHAR(100)); ---创建表TTT
INSERT INTO TTT VALUES('Abc'); ---插入数据Abc
INSERT INTO TTT VALUES('ABC'); ---插入数据ABC
大小写敏感
SELECT COUNT(*) FROM TTT WHERE COL='Abc'; ------结果为1
SELECT COUNT(*) FROM TTT WHERE COL='ABC'; ------结果为1
大小写不敏感
SELECT COUNT(*) FROM TTT WHERE COL='Abc'; ------结果为2
SELECT COUNT(*) FROM TTT WHERE COL='ABC'; ------结果为2
1.创建表:若表名或列名未添加双引号“”,则表名和列名会自动转换为大写形式
<1>若对表名或列名添加双引号“”,则会固定书写时的大、小写
<2>同名的数据库对象,如果大小写不同,那么则为两个不同的对象。
2.字段:若表名或列名未添加双引号“”,则表名和列名会自动转换为大写形式
3.DML 或 DDL 操作时:
<1>如果不对表名或列名添加双引号“”,那么表名和列名都自动转换为大写形式;
<2>对表进行 DML 操作时,如果没有小写形式的字段,不能采取小写加""的形式指定过滤字段,会被认定为无效的字段;
<3>如果对表名或列名添加‘“”,会固定书写时的大、小写形式,“”中是大写形式,则过滤字段就是大写字段,“”中是小写字段,则过滤字段就是小写字段;
<4>对其进行 DML 操作时,需要利用“”指定表名和字段名,否则默认会认定以大写形式去查询对象;
<5>查询时,‘’和“”界定符中字符串区分大小写,界定符中的字符串若是大写形式,那仅查询这个大写形式的对象,若是或小写形式,那仅查询这个小写形式的对象,DML 操作依旧。
1.创建表:无论对不对表名或列名添加双引号“”,表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;
2.字段:无论对不对表名或列名添加双引号“”,表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;
不允许相同的字段名,即使大小写不同;
查询时,''和""界定符不区分大小写,界定符中的查询或过滤条件即使是大写或小写,都可以查询到预期的结果集。
3.DML 或 DDL 操作时:
<1>无论对不对表名或列名添加"",表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;
<2>一个表中,不允许相同的字段名,即使大小写不同;
<3>查询时,''和""界定符不区分大小写,界定符中的查询或过滤条件即使是大写或小写,都可以查询到预期的结果集,进行 DML 操作时依旧
在大小写不敏感的情况下,以上情况均不允许存在同名的数据库对象,即使大小写不同,默认也只能存在一个。
文章
阅读量
获赞