本文给出CentOS上金仓数据库部署执行和ksql常用脚本,用于指导平时日常工作,同时备忘。以下脚本在金仓V8R6中均经过多次测试,毫无问题。操作系统版本:CentOS 7.9。
1、清理旧用户
groupdel kingbase
userdel kingbase
2、创建用户
groupadd kingbase
useradd kingbase -u 10000 -g kingbase
--设置用户密码
passwd kingbase
--密码设置为:kbase!@#
3、规划和创建安装目录
mkdir -p /KingbaseES/V8 /KESData /backup /archive /install
chown -R kingbase:kingbase /KingbaseES
chown -R kingbase:kingbase /backup
chown -R kingbase:kingbase /archive
chown -R kingbase:kingbase /KESData
chown -R kingbase:kingbase /install
chmod -R 775 /KingbaseES
chmod -R 775 /backup
chmod -R 775 /install
chmod -R 775 /archive
chmod -R 700 /KESData
--检查目录
ls -l / | grep kingbase
4、使用root用户将安装文件上传到/install下
cd /install
ls -l
md5sum KingbaseES_V008R006C007B0024PS003_Lin64_install.iso
mount -o loop KingbaseES_V008R006C007B0024PS003_Lin64_install.iso /mnt
ls -l /mnt
--使用kingbase用户复制挂载后的安装文件到/install下
mkdir -p /install/KES-V8R6C7B24-INSTALL
cp -r /mnt/* /install/KES-V8R6C7B24-INSTALL/
ls -l /install/KES-V8R6C7B24-INSTALL
du -sm /install/KES-V8R6C7B24-INSTALL
du -sm /mnt
5、上传授权文件
--设置授权文件的属主和权限并验证
cd /install
ls -l license_*
chown kingbase:kingbase license_*
ls -l license_*
6、登录kingbase用户,运行安装程序
cd /install/KES-V8R6C7B24-INSTALL
ls -l
bash setup.sh -i console
--指定授权文件
/install/license_33313_0.dat
--指定安装路径
/KingbaseES/V8
--指定数据目录位置
/KESData
--密码
kbase!@#
7、将KES服务注册为linux系统服务
su - root
whoami
bash /KingbaseES/V8/install/script/root.sh
--重启linux确认KES服务自动启动
ps -xf |grep -v grep |grep -i 'kingbase'
--查看安装过程日志,确认没有错误记录
cd /install/KES-V8R6C7B24-INSTALL
ls -l *.log
8、检查服务状态和操控服务
-- 使用ksql工具测试能否连接到数据库
/KingbaseES/V8/Server/bin/ksql test system
--查看服务是否已设为开机自启
systemctl list-dependencies |grep kingbase
chkconfig --list |grep kingbase
--确认KES服务状态
systemctl status kingbase8d.service
--停止KES服务
systemctl stop kingbase8d.service
--启动KES服务
systemctl start kingbase8d.service
--重启KES服务
systemctl restart kingbase8d.service
--查看sys_ctl语法大纲
export LANG=zh_CN.UTF-8
/KingbaseES/V8/Server/bin/sys_ctl --help
--kingbase用户使用sys_ctl管理KES服务进程
su - kingbase
--kingbase用户使用sys_ctl停止KES服务进程
/KingbaseES/V8/Server/bin/sys_ctl stop -D /KESData
--kingbase用户使用sys_ctl启动KES服务进程
/KingbaseES/V8/Server/bin/sys_ctl start -D /KESData
--kingbase用户使用sys_ctl查看KES服务进程状态
/KingbaseES/V8/Server/bin/sys_ctl status -D /KESData
--kingbase用户使用sys_ctl重启KES服务进程
/KingbaseES/V8/Server/bin/sys_ctl restart -D /KESData
--kingbase用户使用kingbase命令启动KES服务
/KingbaseES/V8/Server/bin/kingbase -D /KESData >log1 2>&1 &
--定位金仓sys_ctl的路径
find /KingbaseES -name sys_ctl
--定位主数据目录
ps -ef|grep '\ -D\ '
9、修改KINGBASE_DATA和PATH环境变量
-- 在.bashrc文件最后添加环境变量
vim /home/kingbase/.bashrc
export KINGBASE_DATA=/KESData
export PATH=/KingbaseES/V8/Server/bin:$PATH
--让环境变量生效
source /home/kingbase/.bashrc
--设置变量后能简化停止和启动服务命令
sys_ctl stop -D $KINGBASE_DATA
sys_ctl start -D $KINGBASE_DATA
--设置变量后能简化kingbase启动命令
kingbase -D /KESData >log1 2>&1 &
10、卸载
--使用root用户执行rootuninstall.sh脚本移除KES开机自启服务
su - root
bash /KingbaseES/V8/Scripts/rootuninstall.sh
--卸载KES应用程序
--以kingbase用户执行bash /KingbaseES/V8/Uninstall/Uninstaller -i console
bash /KingbaseES/V8/Uninstall/Uninstaller -i console
--清除安装目录下残留文件
--直接删除安装目录
rm –fr /KingbaseES/V8
--或者将安装目录改名
mv /KingbaseES/V8 /KingbaseES/V8.bak
11、第一个实验
--sys_ctl stop默认选项是-m fast
--执行一个长SQL
ksql test system
SELECT sys_sleep(600);
--使用-m smart选项不能关闭KES,提示:等待服务器进程关闭 .........
sys_ctl stop -m smart -D /KESData
---使用m fast能断开客户连接,提示:等待服务器进程关闭 .... 完成 服务器进程已经关闭
sys_ctl stop -m fast -D /KESData
12、ksql使用
--ksql使用“\h”列出所有的SQL命令清单
ksql test system
\h
--ksql使用“\h <sql命令>”列出某个SQL命令的语法大纲
\h delete
--ksql查看元命令帮助
\?
--使用SOCKET方式登录数据库,在服务器端不使用“-h”选项登录数据库并查看前会话的客户端IP和端口
ksql -d test -U system
SELECT inet_client_addr(),inet_client_port();
--使用TCP/IP方式登录数据库,服务器端使用“-h”选项登录数据库,并查看前会话的客户端IP和端口
ksql -h 192.168.40.111 -p 54321 -d test -U system
SELECT inet_client_addr(),inet_client_port();
--使用连接串方式登录数据库并查看前会话的客户端IP和端口
ksql kingbase://system@192.168.40.111:54321/test
SELECT inet_client_addr(),inet_client_port();
ksql 'hostaddr=192.168.40.111 port=54321 user=system dbname=test'
SELECT inet_client_addr(),inet_client_port();
13、创建用户和数据库
--删除模式
DROP SCHEMA IF EXISTS upreport CASCADE;
--删除用户
DROP USER IF EXISTS upreport;
--创建用户
CREATE USER upreport PASSWORD 'upreport';
--创建数据库
CREATE DATABASE upreport OWNER upreport;
--创建模式
CREATE SCHEMA upreport AUTHORIZATION upreport; -- 暂未用
--切换登录用户
\c - upreport
\conninfo
--切换登录数据库
\c upreport
\conninfo
--同时切换登录的用户和数据库
\c upreport upreport
\conninfo
--查看用户和角色信息
\du
\du upreport
--查看数据库信息
\l
--查看数据库upreport信息
\l+ upreport
--查看模式信息
\dn+
\dn+ upreport
14、执行建库脚本
--执行建库脚本,
--脚本upreport-0914.sql在oracle 11G SP2中执行没有任何报错,到金仓V8R6中执行后也没有任何报错
\i /install/upreport-0914.sql
--查看字典表
\dt+ dict_*
--查看业务表
\dt+ t_*
--查看统计表
\dt+ stat_*
--列式显示模块打开(再次运行关闭)
\x
--查询表dict_disease第一条记录
select * from dict_disease where rownum = 1;
--查看表dict_disease的概要信息
\dt+ dict_disease
--查看表dict_disease的详细结构信息
\d+ dict_disease
--查看视图v_adv_msde的概要信息
\dv+ v_adv_msde
--查看视图v_adv_msde的详细信息
\d+ v_adv_msde
--第二个实验;销毁表dict_hospital_type并在upreport模式中重建。
--销毁表
DROP TABLE IF EXISTS dict_hospital_type;
--创建表
create table upreport.dict_hospital_type (
id varchar2(64) not null,
name varchar2(256) not null,
code varchar2(32) not null,
remark varchar2(1024) default '-' not null,
create_date date not null,
update_date date not null,
create_user varchar2(64) not null,
update_user varchar2(64) not null,
status varchar2(1) default '1' not null,
source varchar2(1) not null,
simulation varchar2(1) default '2' not null,
archive_date date,
constraint pk_hospital_type_id primary key(id));
create unique index idx_hospital_type_code on upreport.dict_hospital_type(code);
insert into upreport.dict_hospital_type(id,name,code,remark,create_date,update_date,create_user,update_user,status,source,simulation,archive_date) values(sys_guid(), '非医院','000', '-', sysdate, sysdate, 'admin', 'admin', '1', '9', '2', null);
insert into upreport.dict_hospital_type(id,name,code,remark,create_date,update_date,create_user,update_user,status,source,simulation,archive_date) values(sys_guid(), '综合医院','100', '-', sysdate, sysdate, 'admin', 'admin', '1', '9', '2', null);
insert into upreport.dict_hospital_type(id,name,code,remark,create_date,update_date,create_user,update_user,status,source,simulation,archive_date) values(sys_guid(), '中医医院','200', '-', sysdate, sysdate, 'admin', 'admin', '1', '9', '2', null);
insert into upreport.dict_hospital_type(id,name,code,remark,create_date,update_date,create_user,update_user,status,source,simulation,archive_date) values(sys_guid(), '中西医结合医院','300', '-', sysdate, sysdate, 'admin', 'admin', '1', '9', '2', null);
insert into upreport.dict_hospital_type(id,name,code,remark,create_date,update_date,create_user,update_user,status,source,simulation,archive_date) values(sys_guid(), '民族医医院','400', '-', sysdate, sysdate, 'admin', 'admin', '1', '9', '2', null);
--查看upreport模式下dict_hospital_type对象详细信息
\d+ upreport.dict_hospital_type
15.创建表空间
--从ksql中退出
\q
--在root创建目录
su - root
mkdir -p /upreport
chown -R kingbase:kingbase /upreport
chmod -R 700 /upreport
--进入kingbase用户
su - kingbase
--使用超级管理员进入ksql
ksql test system
--创建表空间
CREATE TABLESPACE tbs_upreport LOCATION '/upreport';
--查看表空间
\db+
\db+ upreport