一、启停数据库
启停数据库
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 列出当前数据库中的模式 \da 列出所有角色和用户 \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 [备份文件类型(一般无需手动指定)] -v [向屏幕输出详细信息] [文件路径,文件名(文件路径不需要-f选项)]
用 system 用户将 /backup/dump/sch_01.dmp 文件恢复到test数据库中
sys_restore -U system -d test /backup/dump/sch_01.dmp
不加 -f 选项
七、国产化替代
替换数据库
将数据库管理系统替换为国产化数据库管理系统
在国产数据库管理系统中创建相应的数据库、模式、数据表、用户和权限
将数据导入到国产数据库管理系统中,使用金仓数据库迁移工具完成或通过逻辑备份和还原完成
修改数据库连接
替换数据库连接驱动包,金仓数据库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语句结尾加分号
;




