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 ROLEtest=# create database db03 owner user05 template template0test-# encoding 'utf8' connection limit 10;CREATE DATABASEtest=# \x扩展显示已打开.test=# \l+ db03数据库列表-[ RECORD 1 ]---------名称 | db03拥有者 | user05字元编码 | UTF8校对规则 | zh_CN.UTF-8Ctype | zh_CN.UTF-8存取权限 |大小 | 12 MB表空间 | sys_default描述 | 改、查——>修改和查看修改后的数据库的属主和名称(\l+)”+“表示详细输出 删——>非属主/非超级用户或库正在使用不能删除 模式 查——>列出test库中的模式清单 增——>创建模式 改——>修改模式 查——>检查模式修改结果 删——>删除模式 表空间 查——>列出表空间的清单 增——>创建表空间
新建表空间tbs01 改——>修改表空间 修改数据库默认表空间 移动表到新的表空间
查——>检查表空间修改结果 删——>删除表空间
简单巡检 使用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(); 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'; 后续更精彩......