KES服务的启停
查看服务是否已设为开机自启
systemctl list-dependencies |grep kingbase
除了使用systemctl和service还可以使用sys_ctl管理KES服务
也可以到安装目录下的Server/bin/目录下执行sys_ctl命令
问题: 人大金仓数据库连接人数过多解决方法:
先执行: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
增——>创建数据库
test=# create user user05 password 'kingbase';
CREATE ROLE
test=# create database db03 owner user05 template template0
test-# encoding 'utf8' connection limit 10;
CREATE DATABASE
test=# \x
扩展显示已打开.
test=# \l+ db03
数据库列表
-[ RECORD 1 ]---------
名称 | db03
拥有者 | user05
字元编码 | UTF8
校对规则 | zh_CN.UTF-8
Ctype | zh_CN.UTF-8
存取权限 |
大小 | 12 MB
表空间 | sys_default
描述 |
改、查——>修改和查看修改后的数据库的属主和名称(\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';
后续更精彩......