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';
 
 

 
 
后续更精彩......
 
 
 
 
 
 
 
 
 
 










