2026年01月20日/ 浏览 10
KES服务的启停
查看服务是否已设为开机自启
systemctl list-dependencies |grep kingbase

除了使用systemctl和service还可以使用sys_ctl管理KES服务

也可以到安装目录下的Server/bin/目录下执行sys_ctl命令
sys_ctl -D /../data/ start
问题:人大金仓数据库连接人数过多解决方法:
先执行:select * from pg_stat_activity;
再执行:SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state=idle
命令行工具--KSQL
kingbase命令行连接方式
一、使用SOCKET方式登录数据库
ksql -d test -U SYSTEM (参数详解看一下help:ksql --help)
注意使用此方式连接无需用户密码
二、使用TCP/IP方式登录数据库
1.切换登录用户
2.切换连接的数据库
3.同时切换登录的用户和数据库
执行脚本
登录test库使用“\i”执行/tmp/test.sql脚本
非交互方式执行SQL(单条SQL)
非交互方式执行SQL(多条SQL)
把多条SQL语句写在一个脚本里然后执行
用户与角色
创建和修改用户
修改用户密码,(普通用户无密码不能登录)
修改用户的并发连接数
修改用户密码有效期为永久
修改属主,删除用户
创建角色
角色默认不能登录,需要授予登录权限:alter role角色名 login;
创建角色并允许登录:
create role user01 connection limit 2 password kingbase valid until 2030-12-31 login;
利用角色对多个用户批量授权
加入到角色的用户默认将自动继承该角色拥有的所有权限
将用户加入到角色中
加入角色的第二种方法
create user 用户名 IN ROLE 角色名;
对象的访问权限入门
使用KSQL 元命令查看权限信息
查看用户对模式对象拥有的权限(\dp)
使用KSQL查权限的输出信息解读
授权与转授权
改变对象所有者
移除用户对表的权限
数据库、模式、表空间
数据库
查——>列出集簇中现有数据库的清单
\l
增——>创建数据库
改、查——>修改和查看修改后的数据库的属主和名称(\l+)”+“表示详细输出
删——>非属主/非超级用户或库正在使用不能删除
模式
查——>列出test库中的模式清单
增——>创建模式
改——>修改模式
查——>检查模式修改结果
删——>删除模式
表空间
查——>列出表空间的清单
增——>创建表空间
规划表空间对应的文件系统目录新建表空间tbs01
改——>修改表空间
修改数据库默认表空间
移动表到新的表空间
查看现有表空间是\db,数据库列表是\l查——>检查表空间修改结果
删——>删除表空间
当提示非空,删除失败时:简单巡检
使用sys_ctl -V——查看版本
使用version函数查看版本
ksql test system -c select version()
查看license有效期
ksql test system -c select get_license_validdays()
查看KES实例启动时间和运行时常
select sys_postmaster_start_time();
查看KES无故障运行时长
select date_trunc(second,current_timestamp - sys_postmaster_start_time()) as uptime;
查看数据库列表
ksql test system -l
使用数据字典查看数据库列表
select datname from sys_database;
查看数据库占用的磁盘空间
1.统计当前数据库占用的磁盘空间select sys_database_size(current_database())/1024/1024 || MB MB;
2.统计所有数据库占用的磁盘空间总量select (sum(sys_database_size(datname))/1024/1024) || MB MB from sys_database;
查看表和索引的大小
统计表的空间占用
1. select sys_relation_size(public.t02)/1024|| KB KB;
2. select sys_size_pretty(sys_relation_size(public.t02));
统计表和与表关联的索引占用空间总量
1. select sys_total_relation_size(public.t02)/1024|| KB KB;
2. select sys_size_pretty(sys_total_relation_size(public.t01));
统计表的记录
select count(*) || rows "rows" from public.t02;
查看时区时间
查看最近一次加载参数文件的时间
select sys_conf_load_time();
查看时区
show timezone;
查看当前日期或时间
#日期
select current_date;
#日期加时间
select now(); select current_timestamp; select sysdate;查看当前登录数据库的名称
select current_catalog;
select current_database();
查看当前会话信息
1.查看当前会话的客户端IP和端口(注意如果使用缺省方式登录则不会显示信息)
select inet_client_addr(),inet_client_port();
2.查看当前会话的服务器IP和端口(注意如果使用缺省方式登录则不会显示信息)
select inet_server_addr(),inet_server_port();
3.查看当前会话的后台进程ID
select sys_backend_pid();
#方法二
\! ps -ef|grep 30343|grep -v grep
查看数据库中的连接信息
查看所有会话执行的SQL信息
1.设置参数track_activities为on
show track_activities;
2.查看所有会话执行的SQL信息
select datname,usename,client_addr,client_port from sys_stat_activity;
3.只看正运行的SQL信息
select datname,usename,query,state^Jfrom sys_stat_activity ^Jwhere state not like idle%;
查看耗时较长的SQL
select current_timestamp - query_start as runtime,datname,usename,pid,query from sys_stat_activity where state != idle order by 1 desc;事务阻塞绘画的简单处理
一、关闭自动提交后删除记录
select sys_backend_pid();
二、删除相同记录时发生锁等待事件
三、查询会话状态
select datname,usename,query,wait_event,pid from sys_stat_activity where datname=test;
后续更精彩......