目录

kingbase人大金仓数据库的常用知识点与简单巡检

目录

kingbase(人大金仓)数据库的常用知识点与简单巡检

KES服务的启停

查看服务是否已设为开机自启

systemctl list-dependencies |grep kingbase

https://i-blog.csdnimg.cn/blog_migrate/5736a71e01350ee2040c66d94bc9fc1b.png

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

https://i-blog.csdnimg.cn/blog_migrate/a31ebcfe63ce773ec9070779597bf630.png

也可以到安装目录下的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)

注意使用此方式连接无需用户密码

https://i-blog.csdnimg.cn/blog_migrate/b319a43ac10b8f84653b7bca7744c92c.png

二、使用TCP/IP方式登录数据库

https://i-blog.csdnimg.cn/blog_migrate/4545253956e5027a8dd67c3a08be4111.png

1.切换登录用户

2.切换连接的数据库

3.同时切换登录的用户和数据库

https://i-blog.csdnimg.cn/blog_migrate/02e3c5ced2bbc9bbe6825ba13ac3afce.png

执行脚本

登录test库使用“\i”执行/tmp/test.sql脚本

非交互方式执行SQL(单条SQL)

https://i-blog.csdnimg.cn/blog_migrate/5b01797758ff30fca423d6b35450e130.png

非交互方式执行SQL(多条SQL)

把多条SQL语句写在一个脚本里然后执行

https://i-blog.csdnimg.cn/blog_migrate/23b9db2cf309dada78408902565b0dbd.png

https://i-blog.csdnimg.cn/blog_migrate/e772c6eddfc3722060acb9b3432af65a.png


用户与角色

创建和修改用户

https://i-blog.csdnimg.cn/blog_migrate/ec44a25a1970a8db84e43a5c48fb7f0f.png

修改用户密码,(普通用户无密码不能登录)

https://i-blog.csdnimg.cn/blog_migrate/3723f94d75999a137833f7a320fe651d.png

修改用户的并发连接数

https://i-blog.csdnimg.cn/blog_migrate/0e21aaec0507a14da4423c2e3f55b5cf.png

修改用户密码有效期为永久

https://i-blog.csdnimg.cn/blog_migrate/2a7f3451d2ff1333f3d0c60aba9fb371.png

修改属主,删除用户

https://i-blog.csdnimg.cn/blog_migrate/56f141120aef18c6b23ae3776d1edf4b.png

创建角色

https://i-blog.csdnimg.cn/blog_migrate/8e8fc30ed5a5c42846f6d96997883a36.png

角色默认不能登录,需要授予登录权限:

alter role角色名 login;

创建角色并允许登录:

create role user01 connection limit 2 password ‘kingbase’ valid until ‘2030-12-31’ login;

利用角色对多个用户批量授权

https://i-blog.csdnimg.cn/blog_migrate/c0d0a9855ccaeef943450d53570519be.png

加入到角色的用户

默认将自动继承

该角色拥有的所有权限

将用户加入到角色中

https://i-blog.csdnimg.cn/blog_migrate/1a0fb44dbc2545eaeff411408ea17bae.png

加入角色的第二种方法

create user 用户名 IN ROLE 角色名;


对象的访问权限入门

使用KSQL 元命令查看权限信息

https://i-blog.csdnimg.cn/blog_migrate/45ac97aa16c343655c12c7d594fb3676.png

查看用户对模式对象拥有的权限(\dp)

https://i-blog.csdnimg.cn/blog_migrate/7c14e38c15f0d6898e2179365d90a62c.png

使用KSQL查权限的输出信息解读

授权与转授权

https://i-blog.csdnimg.cn/blog_migrate/0cc454002f4540235474cd2a8a47207b.png

改变对象所有者

https://i-blog.csdnimg.cn/blog_migrate/9584b2ab6fb7fc2ea28d80d461e3e0b0.png

移除用户对表的权限

https://i-blog.csdnimg.cn/blog_migrate/9cd7a742b1fe4b2481ba36353a3037ea.png

https://i-blog.csdnimg.cn/blog_migrate/5770e4280b0a7d461522f6a841dee349.png


数据库、模式、表空间

数据库

查——>列出集簇中现有数据库的清单

\l

https://i-blog.csdnimg.cn/blog_migrate/b480de97f74b5d50d6d6888381c3de91.png

增——>创建数据库

https://i-blog.csdnimg.cn/blog_migrate/28593a92a21c311fe231c47a1eb301cb.png

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+)”+“表示详细输出

https://i-blog.csdnimg.cn/blog_migrate/ed91a4f5fb54a628d0a7a45451e3e357.png

https://i-blog.csdnimg.cn/blog_migrate/34caf77cac755bc29426bbb17502ca35.png

删——>非属主/非超级用户或库正在使用不能删除

https://i-blog.csdnimg.cn/blog_migrate/a1d50a40aef1917f83736f9a506ff18d.png

https://i-blog.csdnimg.cn/blog_migrate/7dbe966e06f83a265d979ee75f86932a.png

模式

查——>列出test库中的模式清单

https://i-blog.csdnimg.cn/blog_migrate/47b11e93040557838a030effa47d411b.png

增——>创建模式

https://i-blog.csdnimg.cn/blog_migrate/54b6846bb5c8a5751d78f384bd8f67fe.png

改——>修改模式

https://i-blog.csdnimg.cn/blog_migrate/9f62ba1842d789a7317105db21a7193d.png

查——>检查模式修改结果

https://i-blog.csdnimg.cn/blog_migrate/f1bbb8f47143a5b4a2728d7f214279fd.png

删——>删除模式

https://i-blog.csdnimg.cn/blog_migrate/2ba0a0f41bb10271544d40cb0825acab.png

表空间

查——>列出表空间的清单

https://i-blog.csdnimg.cn/blog_migrate/f4df94cb474ee7daf5e61497b1f95cd1.png

https://i-blog.csdnimg.cn/blog_migrate/8439e68b1bc275510d88e81c87181652.png

增——>创建表空间

  • 规划表空间对应的文件系统目录

https://i-blog.csdnimg.cn/blog_migrate/84c430b3fc0b2db8273459dfcdc322a2.png

https://i-blog.csdnimg.cn/blog_migrate/b22e8c884580f59ad1f22ca12c50c997.png

新建表空间tbs01

https://i-blog.csdnimg.cn/blog_migrate/fbeda20e2230f1e1e2ff2b3dc954d645.png

https://i-blog.csdnimg.cn/blog_migrate/8f304698f3cef3d72a635e0913c0ba4b.png

改——>修改表空间

https://i-blog.csdnimg.cn/blog_migrate/306528cddc8833c20dd41e2abcfdf2d2.png

修改数据库默认表空间

https://i-blog.csdnimg.cn/blog_migrate/98f1d9c476859a0e3233153bb4593012.png

移动表到新的表空间

  • 查看现有表空间是\db,数据库列表是\l

https://i-blog.csdnimg.cn/blog_migrate/8cd4daa88ca9fd6cf0609f2f094b2202.png

https://i-blog.csdnimg.cn/blog_migrate/0465482685265a8668c18f087f0d2025.png

查——>检查表空间修改结果

https://i-blog.csdnimg.cn/blog_migrate/eb57653eafd11e77dc7874b75e9c5816.png

删——>删除表空间

  • 当提示非空,删除失败时:

https://i-blog.csdnimg.cn/blog_migrate/f6ff6276ea69c33ff574ae576baf03b0.png

https://i-blog.csdnimg.cn/blog_migrate/410de364726b02a8bf2c1d741ea7a3a5.png

https://i-blog.csdnimg.cn/blog_migrate/35e1095b2d74714c84eda1e6ef264be0.png

https://i-blog.csdnimg.cn/blog_migrate/0623aa5b273f7944e3de03672131aa14.png

https://i-blog.csdnimg.cn/blog_migrate/82a947c2315f73d0a6fd81cc26b65e5b.png


简单巡检

使用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;

查看数据库占用的磁盘空间

统计当前数据库占用的磁盘空间

select sys_database_size(current_database())/1024/1024 || ‘MB’  MB;

统计所有数据库占用的磁盘空间总量

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();

https://i-blog.csdnimg.cn/blog_migrate/d67ca71b2cf88bb0746716edc161bcdd.png

2.查看当前会话的服务器IP和端口(注意如果使用缺省方式登录则不会显示信息)

select inet_server_addr(),inet_server_port();

3.查看当前会话的后台进程ID

select sys_backend_pid();

#方法二

! ps -ef|grep 30343|grep -v grep

https://i-blog.csdnimg.cn/blog_migrate/87393a92b98b09eba818fcbc1c0bbd41.png

查看数据库中的连接信息

https://i-blog.csdnimg.cn/blog_migrate/f8d4a3404ff1e05eb86e48dda73c53d9.png

查看所有会话执行的SQL信息

1.设置参数track_activities为on

show track_activities;

2.查看所有会话执行的SQL信息

select datname,usename,client_addr,client_port from sys_stat_activity;

https://i-blog.csdnimg.cn/blog_migrate/0a24fb3faaeb54f41e5f0ad8eb8df8e8.png

3.只看正运行的SQL信息

select datname,usename,query,state^Jfrom sys_stat_activity ^Jwhere state not like ‘idle%’;

https://i-blog.csdnimg.cn/blog_migrate/07106d9831f8abb346aa10fb4ca2312d.png

查看耗时较长的SQL

select current_timestamp - query_start as runtime,datname,usename,pid,query

from sys_stat_activity

where state != ‘idle’

order by 1 desc;

https://i-blog.csdnimg.cn/blog_migrate/5a26ac80e28fd9051c39677da066ae61.png

事务阻塞绘画的简单处理

一、关闭自动提交后删除记录

select sys_backend_pid();

https://i-blog.csdnimg.cn/blog_migrate/ae85af932d21bd01052fbda231b47142.png

二、删除相同记录时发生锁等待事件

https://i-blog.csdnimg.cn/blog_migrate/c0a74ca6434f31802b4fa890406147c6.png

三、查询会话状态

select datname,usename,query,wait_event,pid from sys_stat_activity where datname=‘test’;

https://i-blog.csdnimg.cn/blog_migrate/b2e34d06550a7864619393b63dcdef7d.png

后续更精彩……