KES 修改大小写比较敏感

1     大小写敏感说明

区分大小写是实例级参数,只能通过initdb初始化实例时修改,无法针对数据库单独进行设置。如果需要修改大小写敏感设置,通过initdb工具对数据库实例重新初始化(注意之前的data数据备份)

1、大小写不敏感其实是 做大小比较时,如上图

2、没有使用界定表示符时,表名、列名,会默认转为小写

1.1   大小写敏感的特点

在安装数据库时,默认是大小写敏感的(enable_ci = off),其特性如下:

1) 没有使用界定标识符(双引号)引起来的表名、列名,会默认转为小写。

2) 使用界定标识符引起来的表名、列名,将以引起来的大小写进行存储(引号里面的字符全部是大写或者小写默认转换成小写),以及后续的查询匹配。

1.2   大小写不敏感的特点

在安装时,如果选择了(enable_ci = on),则数据库会被初始化为大小写不敏感。大小写不敏感的表现:

1) 在创建表时,没有使用界定标识符(双引号)引起来的表名、列名,默认以当前输入的大小写进行存储,查询时也以全小写进行匹配。

2) 在查询时,没有使用界定标识符(双引号)引起来的表名、列名,默认都转为小写进行匹配。

3) 使用界定标识符引起来的表名、列名,将以引起来的大小写进行存储,以及后续的查询匹配。

上述显示在initdb 时未指定 --enable-ci 参数,初始实例后默认为off

1.3   比较和总结

1) 不管大小写敏感与否,使用双引号引起来的表名、列名,都是按照引起来的大小写进行匹配。只有不使用界定标识符时有很大的差异。

2) 大小写敏感,适合于迁移Oracle数据库。大小写不敏感,适合于迁移MySQL和SQL Server数据库, PG模式只能设置大小写敏感;

默认比较时 大小写敏感,开启后 大小写比较时不敏感。

1.4   大小写敏感的查看

show enable_ci ;

在数据库中,执行SQL语句即可查看: 

2    设置大小写参数方法:

 方法一、  重新安装数据库时设置,如果数据库中有数据,一定要做好数据库备份,可以参考下面第三章的备份操作。

 在重新安装的时候,选择大小写敏感参数how enable_ci,off是敏感,on是不敏感

 方法二、 重新初始化数据库data目录,设置大小写敏感

下面的方法以Linux操作为例,Windows上对应的工具在安装目录\Server\bin下面。

2.1   备份原始数据

使用sys_dump将整个原始库dump出来,做备份,如:

sys_dump ‐U SYSTEM ‐W kingbase test > test_20221009.sql

如果有多个数据库,需要对每个数据库进行单独备份。

可备份所有 sys_dumpall -U system -f /dbbak/alldb.sql

2.2   停止数据库

sys_ctl stop -D /dbdata

2.3   备份数据库data目录

注意:由于需要重新初始化数据库,需要将原来的data目录清空,因此最好先把当前的data目录做一个备份。

cp -r /dbdata /dbbackup/

2.4   清空原始目录

rm -rf /dbdata/*

这里还要清空自建表空间不在/dbdata下的数据,否则数据还原时会报错

\db+ 查看表空间存储目录

rm -rf /data_tbs01/*

rm -rf /home/kingbase/tbs02/*

2.5   重新初始化数据库

重新初始化数据库为大小写不敏感 initdb -U system -W --enable-ci -D /dbdata 注意:这里的用户名和输入的密码根据需要进行调整,最好是和之前保持一致

2.6   同步数据库配置文件

将备份的data目录中的对应配置文件拷贝到新的data目录中:

sys_hba.conf

kingbase.conf

kingbase.auto.conf

2.7   启动数据库

sys_ctl start -D /dbdata

2.8   检查数据库是否已经启动

ksql test system -c "select now();"

ksql test system -c "show enable_ci"

2.9 还原数据

ksql test system -f /dbbackup/alldb.sql

注意:

1、如果有其它表空间不是存储在/dbdata目录下的,需要先清除自建表空间所存储目录的数据 ,否则会报错

比如我在恢复时没清除 自建表空间存储目录的数据 会报错

查看全备份文件 alldb.sql 发现 报错所在行 104 为建库语句,数据库db01存储目录在自建表空间 tbs01

CREATE DATABASE db01 WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'zh_CN.UTF-8' LC_CTYPE = 'zh_CN.UTF-8' TABLESPACE = tbs01;

表空间创建 语句 CREATE TABLESPACE tbs01 OWNER system LOCATION '/data_tbs01';

清除/data_tbs01 目录下内容 rm -rf /data_tbs01/*

后就可以成功执行恢复了(所有其它存储下的数据都需要清除)

3、忽略大小写验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值