[dmdba@server01 ~]$ dminit help
initdb V8
db version: 0x7000c
格式: ./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,范围为:64M ~ 2G
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
1、CASE_SENSITIVE参数说明。
参数说明:CASE_SENSITIVE为dminit工具的一个参数。决定数据库对大小的敏感与否,可选值:Y/N,1/0。
2、测试环境准备。
分别创建两个数据库:
TESTDB1 设置CASE_SENSITIVE值为0(即对大小写不敏感);
TESTDB2 设置CASE_SENSITIVE值为1(即对大小写敏感);
TESTDB1:实例名为TESTDB1,库名为TESTDB1,端口号为5235,大小写不敏感。
1.初始化数据库TESTDB1。
dminit path=/dmdata INSTANCE_NAME=TESTDB1 DB_NAME=TESTDB1
PORT_NUM=5235 CASE_SENSITIVE=0
2.注册数据库服务。
[root@server01 root]# cd /opt/dmdbms/script/root/
[root@server01 root]# ./dm_service_installer.sh -t dmserver -p testdb1 -dm_ini /dmdata/TESTDB1/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicetestdb1.service to /usr/lib/systemd/system/DmServicetestdb1.service.
创建服务(DmServicetestdb1)完成
[root@server01 root]# systemctl status DmServicetestdb1
● DmServicetestdb1.service - DM Instance Service(DmServicetestdb1).
Loaded: loaded (/usr/lib/systemd/system/DmServicetestdb1.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[root@server01 root]# systemctl enable DmServicetestdb1
[root@server01 root]# systemctl start DmServicetestdb1
[root@server01 root]# systemctl status DmServicetestdb1
● DmServicetestdb1.service - DM Instance Service(DmServicetestdb1).
Loaded: loaded (/usr/lib/systemd/system/DmServicetestdb1.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-04-22 21:32:28 CST; 9s ago
[root@server01 root]# su - dmdba
[dmdba@server01 ~]$ disql sysdba/SYSDBA@192.168.118.101:5235
服务器[192.168.118.101:5235]:处于普通打开状态
登录使用时间 : 6.467(ms)
disql V8
SQL>
TESTDB2:实例名为TESTDB2,库名为TESTDB2,端口号为5236,大小写敏感。
1.初始化数据库TESTDB2。
dminit path=/dmdata INSTANCE_NAME=TESTDB2 DB_NAME=TESTDB2 PORT_NUM=5236 CASE_SENSITIVE=1
2.注册数据库服务。
[root@server01 root]# cd /opt/dmdbms/script/root/
[root@server01 root]# ./dm_service_installer.sh -t dmserver -p testdb2 -dm_ini /dmdata/TESTDB2/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicetestdb2.service to /usr/lib/systemd/system/DmServicetestdb2.service.
创建服务(DmServicetestdb2)完成
[root@server01 root]# systemctl enable DmServicetestdb2
[root@server01 root]# systemctl start DmServicetestdb2
[root@server01 root]# systemctl status DmServicetestdb2
● DmServicetestdb2.service - DM Instance Service(DmServicetestdb2).
Loaded: loaded (/usr/lib/systemd/system/DmServicetestdb2.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-04-22 21:42:59 CST; 15s ago
[root@server01 root]# su - dmdba
[dmdba@server01 ~]$ disql sysdba/SYSDBA@192.168.118.101:5236
服务器[192.168.118.101:5236]:处于普通打开状态
登录使用时间 : 6.591(ms)
disql V8
SQL> EXIT
修改2个数据库的服务名
[dmdba@server01 ~]$ vim /etc/dm_svc.conf
[dmdba@server01 ~]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
dmsvc=(192.168.118.101:5234)
testdb1=(192.168.118.101:5235)
testdb2=(192.168.118.101:5236)
3、针对CASE_SENSITIVE参数的不同场景进行测试。
3.1测试大小写敏感对表名的影响。
1.在testdb1库进行如下操作:
disql sysdba/SYSDBA@testdb1
SELECT CASE_SENSITIVE();
CREATE TABLE "T1" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T1" ("ID", "NAME") VALUES (1,'ZHANGSAN');
SELECT * FROM "t1";
2.在testdb2库进行如下操作:
disql sysdba/SYSDBA@testdb2
SELECT CASE_SENSITIVE();
CREATE TABLE "T1" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T1" ("ID", "NAME") VALUES (1,'ZHANGSAN');
SELECT * FROM "t1";
SELECT * FROM "T1";
库1(0,不敏感)中查询“T1”和“t1”都能返回结果;
库2(1,敏感)中查询“T1”能返回结果,查询“t01”不能返回结果。
说明大小写敏感对表名有影响。
3.2测试大小写敏感对模式名的影响。
1.在testdb1库进行如下操作:
SQL> SELECT CASE_SENSITIVE();
CREATE SCHEMA "SCHEMA01" AUTHORIZATION SYSDBA;
drop schema "schema01" restrict;
SQL> drop schema "schema01" restrict;
操作已执行
已用时间: 69.001(毫秒). 执行号:802.
2.在testdb2库进行如下操作:
CREATE SCHEMA "SCHEMA01" AUTHORIZATION SYSDBA;
drop schema "schema01" restrict;
SQL> drop schema "schema01" restrict;
drop schema "schema01" restrict;
第1 行附近出现错误[-2103]:无效的模式名[schema01].
已用时间: 0.224(毫秒). 执行号:0.
drop schema "SCHEMA01" restrict;
SQL> drop schema "SCHEMA01" restrict;
操作已执行
已用时间: 43.685(毫秒). 执行号:502.
库1(0,不敏感)中删除 “schema01” 成功;
库2(1,敏感)中删除“schema01” 删除失败,删除 “SCHEMA01” 删除成功。
说明大小写敏感对表名有影响。
3.3测试大小写敏感对字段名设置的影响。
1.在testdb1库进行如下操作:
disql sysdba/SYSDBA@testdb1
SELECT CASE_SENSITIVE();
CREATE TABLE "T1" ("ID" number,NAME varchar2(20));
INSERT INTO "T1" values (01,'ZHANGSAN');
SELECT * FROM "T1";
CREATE TABLE "T2" ("ID" number,name varchar2(20));
INSERT INTO "T2" values (01,'ZHANGSAN');
SELECT * FROM "T2";
CREATE TABLE "T3" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T3" values (01,'ZHANGSAN');
SELECT * FROM "T3";
CREATE TABLE "T4" ("ID" number,"name" varchar2(20));
INSERT INTO "T4" values (01,'ZHANGSAN');
SELECT * FROM "T4";
2.在testdb2库进行如下操作:
disql sysdba/SYSDBA@testdb2
SELECT CASE_SENSITIVE();
CREATE TABLE "T1" ("ID" number,NAME varchar2(20));
INSERT INTO "T1" values (01,'ZHANGSAN');
SELECT * FROM "T1";
CREATE TABLE "T2" ("ID" number,name varchar2(20));
INSERT INTO "T2" values (01,'ZHANGSAN');
SELECT * FROM "T2";
CREATE TABLE "T3" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T3" values (01,'ZHANGSAN');
SELECT * FROM "T3";
CREATE TABLE "T4" ("ID" number,"name" varchar2(20));
INSERT INTO "T4" values (01,'ZHANGSAN');
SELECT * FROM "T4";
说明:在大小写不敏感的库中,建表时创建的字段名大小写会自动区分。
在大小写敏感的库中,建表时创建的字段名大小写除非字段名用双引号引起来,否则都会按照大写来处理。
3.4测试大小写敏感对基于字段名做DML操作时的影响。
1.在testdb1库进行如下操作:
SELECT CASE_SENSITIVE();
CREATE TABLE "T3" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T3" ("id","name") values (02,'LISI');
select * from "T3";
2.在testdb2库进行如下操作:
SELECT CASE_SENSITIVE();
CREATE TABLE "T3" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T3" ("id","name") values (02,'LISI');
INSERT INTO "T3" ("ID","NAME") values (02,'LISI');
select * from "T3";
说明:大小写敏感时,往某张表插入数据,会严格判断字段名大小写是否正确;大小写不敏感时,往某张表插入数据,字段名大小写是否一致对操作无影响。
3.5测试大小写敏感对字段值的影响。
1.在testdb1库进行如下操作:
SELECT CASE_SENSITIVE();
CREATE TABLE "T4" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T4" ("ID","NAME") values (01,'ZHANGSAN');
select * from "T4";
DELETE FROM "T4" WHERE "NAME"='zhangsan';
2.在testdb2库进行如下操作:
SELECT CASE_SENSITIVE();
CREATE TABLE "T4" ("ID" number,"NAME" varchar2(20));
INSERT INTO "T4" ("ID","NAME") values (01,'ZHANGSAN');
select * from "T4";
DELETE FROM "T4" WHERE "NAME"='zhangsan';
DELETE FROM "T4" WHERE "NAME"='ZHANGSAN';
说明:大小写敏感库的中,以字段值为判断依据进行delete where操作时,会严格判断字段名大小写是否一致;大小写不敏感的库中,以字段值为判断依据进行delete where操作时,操作不受字段值大小写是否一致的影响。
4、关于对CASE_SENSITIVE参数用法的总结。
- 当CASE_SENSITIVE值为0,即大小写不敏感时。模式名、表名、字段名、字段值,大小写会自动区分,不用单独加双引号表示小写,查询添加中不区分大小写字符,查询结果中字段值也不区分大小写字符。
- 当CASE_SENSITIVE值为1,即大小写敏感时。模式名、表名、字段名、字段值,默认小写会转为大写,除非双引号括起来表示小写,对于查询条件中是区分大小写字符的,查询结果中字段值也是区分大小写字符的。
社区地址:https://eco.dameng.com




