一、启停数据库
启停数据库
sys_ctl start -D /data
stop
restart
未配置环境变量需要加-D /data参数
二、连接数据库
ksql -d [数据库] -h [地址] -U [用户名] -p [端口号] -f [文件名] -c [命令]
-f 链接时执行某个文件
-c执行耽搁命令
用system用户连接,地址为192.168.121.128,端口号23456的student数据库
ksql -U system -h 192.168.121.128 -p 23456 -d student;
用system用户连接,地址为192.168.121.128,端口号23456的student数据库,并运行/backup/query.sql文件
ksql -U system -h 192.168.121.128 -p 23456 -d student -f '/backup/query.sql';
三、元命令
\l 列出所有数据库
\d 列出表、视图、索引
\db 列出表空间
\dn 列出当前数据库中的模式
\du 列出所有角色和用户
\dt 列出所有的表
\dv 列出所有的试图
\c 切换数据库
\i 执行SQL文件
四、数据对象管理
1、创建表空间
CREATE TABLESPACE [表空间名] LOCATION ['目录'];
用/home/kingbase/ts01目录创建名为ts01的表空间
CREATE TABLESPACE ts01 LOCATION '/home/kingbase/ts01';
2、创建数据库
CREATE DATABASE [数据库名] TABLESPACE [表空间];
在表空间ts01中创建数据库db01
CREATE DATABASE db01 TABLESPACE ts01;
3、创建模式
CREATE SCHEMA [模式名];
创建模式sch_01
CREATE SCHEMA sch_01;
4、创建表
创建数据库时如果不手动指定模式则默认将表默认创建在public模式中
CREATA TABLE [(模式名).表名]([属性名][属性类型],...);
在sch_01中创建t01数据库包含id(int)属性,name (varchar(20))属性
CREATR TABLE sch_01.t01(id int,name varchar(20));
5、查询
SELECT [要查询的属性、表达式、聚集函数] FREOM [(模式名).表名]
WHERE [查询条件]
GROUP BY [用于分组的属性]
ORDER BY [属性名][asc(asc升序\desc降序)]
查询student表中专业(sdept)的个数
SELECT sdept,COUNT(*) FROM student
GROUP BY sdept;
从student表中查询所有学生信息,并按照降序排列
SELECT * FROM student
ORDER BY sdept desc;
6、更新
UPDATE [表名] SET [属性名 = 新值] WHERE [条件];
7、添加数据
INSERT INTO [表名] VALUES();
INSERT INTO [表名] [子查询];
8、删除数据
DELETE FROM [表名] WHERE [条件];
五、体系结构与参数设置
1、用户访问控制
配置文件位置
/data/sys_hba.conf
字段名称 | 说明 |
---|---|
TYPE | 类型 |
DATABASE | 数据库 |
USER | 用户名 |
ADDRESS | 地址 |
METHOD | 身份认证类型 |
eg:
host db01 rg01 192.168.121.0/24 scram-sha-256
2、服务端参数配置
查询方法
1、show
SHOW work_mem;
2、查询sys_settings视图
查询单个参数的信息
SELECT * FROM sys_settings WHERE name = 'work_mem';
SELECT name,setting,context FROM sys_settings WHERE name = 'work_mem';
查询参数总个数
SELECT COUNT(*) FROM sys_settings;
修改参数
编辑kingbase.conf
位置 /data/kingbase.conf
不需要重新启动的参数
sys_ctl reload
需要重新启动的参数
sys_ctl restart
ALTER SYSTEM命令修改参数
ALTER SYSTEM SET [参数名] = [修改后的参数值];
ALTER SYSTEM SET work_mem = '16MB';
SET命令修改参数
只在会话等级修改
SET [参数名]=[修改后的参数值];
SET work_mem = '16MB';
在事务等级修改
SET LOCAL [参数名] = [修改后的参数值];
SET LOCAL work_mem = '16MB';
查看修改参数后是否需要重启
查询视图sys_settings视图,通过context字段进行判断
SELECT name,setting,context FROM sys_settings WHERE name = [参数名];
SELECT name,setting,context FROM sys_settings WHERE name = 'work_mem';
常用context字段说明
字段名称 | 说明 |
---|---|
user | 无需重启服务器,只会影响当前用户 |
kingbase | 需要重启服务器 |
恢复参数为默认值/初始值
恢复指定参数为默认值/初始值
ALTER SYSTEM RESET [参数名];
ALTER SYSTEM RESET work_mem;
恢复所有参数为默认值/初始值
ALTER SYSTEM RESET ALL;
常用参数列表(使用查询语句可以直接在数据库中查询官方说明)
内存相关
参数名 | 说明 | 官方简介 |
---|---|---|
shared_buffers | 缓冲区,从硬盘读取的数据都缓存在这里 | 设置服务器使用的共享内存缓冲区的数量 |
wal_buffers | 临时数据更改缓冲区 | 为 WAL 设置共享内存中磁盘页缓冲区的个数 |
work_mem | 工作内存大小 | 设置查询工作空间使用的最大内存数 |
maintenance_work_mem | 维护性操作中使用的最大内存量 | 设置维护操作使用的最大内存数. |
temp_buffers | 存放临时表缓冲区的区块大小 | 设置每个会话可使用的临时缓冲区的最大数量 |
查询语句
SELECT name,setting,context,short_desc,extra_desc FROM sys_settings WHERE name IN ('shared_buffers','wal_buffers','work_mem','maintenance_work_mem','temp_buffers');
日志相关参数
参数名 | 说明 | 官方简介 |
---|---|---|
logging_collector | 是否开启日志 | 启动一个子进程用来捕获stderr输出或csvlogs,写到到日志文件中 |
log_destination | 日志格式 | 设置服务器日志输出目标 |
log_directory | 日志目录 | 设置日志文件目的目录(可以指定为data目录的相对目录或绝对目录) |
log_statement | 日志记录类型 | 设置记录语句的类型 |
查询语句
SELECT name,setting,context,short_desc,extra_desc FROM sys_settings WHERE name IN ('logging_collector','log_destination','log_directory','log_statement');
其他
参数名 | 说明 | 官方简介 |
---|---|---|
max_connections | 最大连接数 | 设置并发联接的最大个数 |
port | 端口号 | 设置服务器监听的 TCP 端口号. |
查询语句
SELECT name,setting,context,short_desc,extra_desc FROM sys_settings WHERE name IN ('max_connections','port','logging_collector');
六、备份与恢复
逻辑备份
sys_dump -U [用户]
-d [数据库]
-f [备份文件输出目录,文件名]
-F [文件格式(参数见下表)]
-n [备份指定模式]
-N [备份指定模式以外的模式]
-t [备份指定表]
-T [备份指定表以外的表]
-a [只转储表的数据,不包括对象的定义]
文件格式对照表 -F | 选项 | 格式 | | – | – | | -Fp | SQL(缺省) | | -Fc | dump(.dmp) | | -Fd | 目录 | | -Ft | tar(打包)|
用system用户将test数据库中的sch_01模式用dump格式备份到/backup/dump/sch_01.dmp中
sys_dump -U system -d test -Fc -n sch_01 -f '/backup/dump/sch_01.dmp'
用system用户将test数据库中国sch_01.t01表用明文(SQL)格式备份到/backup/t01.sql中
sys_dump -U system -d test -Fp -t sch_01.t01 -f '/backup/t01.sql'
逻辑恢复
sys_restore -U [用户名]
-d [数据库]
-f [文件路径,文件名]
-F [备份文件类型(一般无需手动指定)]
-v [向屏幕输出详细信息]
用system用户将/backup/dump/sch_01.dmp文件恢复到test数据库中(这个命令无法正常运行,提示-d和-f选项无法同时使用)
sys_restore -U system -d test -f /backup/dump/sch_01.dmp
七、国产化替代
替换数据库
将数据库管理系统替换为国产化数据库管理系统
在国产数据库管理系统中创建相应的数据库、模式、数据表、用户和权限
将数据导入到国产数据库管理系统中,使用金仓数据库迁移工具完成或通过逻辑备份和还原完成
修改数据库连接
替换数据库连接驱动包,金仓数据库kingbase位置在安装KESV8的机器的/KingbaseES/V8/KESRealPro/V008R006C008B0014/Interface/jdbc路径下 可以使用
find /KingbaseES -name kingbase*.jar
命令进行查找
修改配置文件中的连接信息,包括驱动类名、连接字符串(含连接名称、IP、端口、数据库)、用户名、密码
替换应用系统中不兼容的SQL语句
八、注意事项
在题目指定模式的情况下表名要用
[模式名].[表名]
表示,如
shc01.t01
SQL语句中注意一些属性(如目录,varchar类型属性,参数名)要使用单引号’ ’
SQL语句关键字不区分大小写,如
CREATE DATABASE db01 TABLESPACE ts01;
create database db01 tablespace ts01;
都对
SQL语句结尾加分号
;