暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

GBase 8s 项目运维经验总结

原创 杨凯同学 2022-02-28
28316

1. 项目背景

某省发改委社会信用服务管理平台中心建设覆盖全区企业、个人信用基础数据库和信用信息共享平台,推进社会信用体系和联合奖惩机制建设。

2.部署环境

GBase 8s Database Server Version 12.10 vs 中标麒麟v7
官方文档硬件要求如下:

image.png

3 .常见运维命令

3.1 导出一个库的对象结构

1)导出数据库中所有的表结构到文件db.sql
dbschema -d your_database -t all db.sql
2)导出数据库中所有的存储过程到文件db.sql
dbschema -d your_database -f all db.sql
3)导出数据库中的所有对象(包含表,存储过程,触发器…)到文件db.sql
dbschema -d your_database db.sql
4)导出数据库中一个表的结构到文件db.sql
dbschema -d your_database_name -t your_table_name db.sql
5)导出一个存储过程定义到文件db.sql
dbschema -d your_database_name -f your_procedure_name db.sql
6)如果导出更多的表的信息(EXTENT…) 到db.sql
dbschema -d your_database_name -s db.sql
7)导出数据库中对用户或角色的授权信息
dbschema -d your_database_name -p all
dbschema -d your_database_name -r all
8)导出数据库中的同义词
dbschema -d your_database_name -s all

3.2 如何创建数据库用户并附权限

Gbase8s的用户就是操作系统用户,因此要给数据库创建用户,就想当于给操作系统创建用户。
useradd zr_xbzx
passwd zr_xbzx
然后用数据库客户端工具连接到数据库上执行以下语句,给用户赋权:
connect
这是级别最低的一种数据库级别的用户权限。拥有该权限的用户可以执行select、insert、update和delete语句,针对数据表执行存储过程,创建数据表的视图,创建临时表(这样的临时表可以有索引,也可以没有索引)。
Resource
拥有该权限的用户除拥有connect的全部权限以外,他还可以创建新的表,并可以对它自己所创建的表执行alter和drop操作,并可以对这些表创建索引。
DBA
数据库的建立者和拥有者被自动赋予这种权限。拥有该权限的用户除拥有resource的全部权限以外,他还可以对其他用户赋予或解除connect、resource和DBA权限,可以对其它用户创建的表的视图执行drop和alter操作。甚至他还可以对数据库执行drop、start、stop和recover操作。
grant dba to “zr_xbzx”;
grant resource to “zr_xbzx”;
grant connect to “zr_xbzx”;

取消权限:
REVOKE 权限 FROM 用户名

3.3 如何强制并发查询

在查询前执行以下语句
set pdqpriority 80;

3.4 如何强制脏读

在查询前执行以下语句
set isolation to dirty read;

3.5 如何查询前几行数据

如下是查500000到500099行。
select skip 500000 first 100* from tbook_1

3.6 如何修改表的锁模式

alter table tablename lockmode(row);

3.7 kettle如何连utf8字符集的gbase 8s数据库

下载gbase-connector-java.jar包,可以在gbase社区网站上下载
将下载好的jar包放入D:\kettle\data-integration\ext-lib
image.png
custom connection ulr:设置如下
gbasedbt-sqli://192.168.197.138:9088/test2:GBASEDBTSERVER=gbaseserver;CLIENT_LOCALE=zh_cn.GB18030-2000;DB_LOCALE=zh_cn.GB18030-2000;IFX_LOCK_MODE_WAIT=100;NEWCODESET=GB18030,GB18030-2000,5488;DBDATE=Y4MD;

3.8 jdbc连接字串

jdbc:gbasedbt-sqli://192.168.120.196:9088/testdb:GBASEDBTSERVER=gbaseserver;CLIENT_LOCALE=zh_cn.GB18030-2000;DB_LOCALE=zh_cn.GB18030-2000;IFX_LOCK_MODE_WAIT=100;NEWCODESET=GB18030,GB18030-2000,5488;DBDATE=Y4MD;

3.9 怎么查询数据库的字符集

SELECT dbs_collate FROM sysmaster:sysdbslocale WHERE dbs_dbsname=‘testdb’;
zh_CN.57372对应的是utf-8
zh_CN.5488对应的是zh_cn.GB18030-2000

3.10 数据库慢应当怎么查

从onstat -u|grep PX看,一般应该没有,如果常有,说明写盘有问题
iostat -xnC2看b%和w%

3.11 长事务的进度如何查看

我早上有一个表删除数据长事务kill后,到现在还没回滚完,有两个小时了
onstat -x|grep RPX
250b562b8 –-RPX–- 23161092 npmuser - 400 435 476617 322481 100809

onstat- x|grep A-R
250c598f0 A-R–- 250b562b84 354766 187899 187903 0x88d23c0 COMMIT 0

187899-187903两个一样了,就回滚完了。

3.12 启动/关闭实例

启动前注意事项
以root或gbasedbt用户登录
确认已指定所需的环境变量、sqlhosts文件、onconfig文件。
第一次启动实例:
oninit -ivy
-i参数为初始化实例时使用,非第一次启动时使用会报错。
非第一次启动实例:
oninit -vy
启动成功后会显示如下结果:

Creating periodic thread…succeeded
Starting scheduling system…succeeded
Verbose output complete: mode = 5
检查当前数据库状态:
onstat -
在线模式时会显示如下结果:
GBase 8s Database Server Version 12.10.FC4G1AEE – On-Line – Up 00:03:28 – 208516 Kbytes
注:On-Line表示在线模式

关闭实例:
onmode -ky
关闭成功后用“onstat -”检查会得到以下结果:
shared memory not initialized for GBASEDBTSERVER ‘servername’

3.13 创建数据空间

1.创建数据文件
创建数据空间需要在先文件系统中创建对应的数据文件
该文件需要属于gbasedbt组、属于gbasedbt用户、权限为660
*建议:我们建议将所有数据文件存放于统一目录下以便管理。
通常,我们需要创建1个根数据空间 rootdbs(需要在数据库初始化之前创建)、至少1个数据空间 datadbs,至少1个临时数据空间tempdbs、1个物理日志空间 plogdbs、1个逻辑日志空间 llogdbs,1个大对象空间sbspace
*rootdbs在数据库实例初始化时已经建好,不需要手动添加。
创建方法:
(1)创建文件(以存储在/opt/dbs目录下为例)
cd /opt/dbs
touch datadbs tempdbs plogdbs llogdbs subspace
chown gbasedbt:gbasedbt datadbs tempdbs plogdbs llogdbs subspace
chmod 660 datadbs tempdbs plogdbs llogdbs subspace
(2)创建物理日志空间:
onspaces -c -d plogdbs -p /opt/dbs/plogdbs -o 0 -s 200000;
-c - 新建一个数据空间
-d - 数据空间名称
-p - 存储文件路径
-o - 偏移量
-s - 数据空间大小(KB)
(3)创建逻辑日志空间
onspaces -c -d llogdbs -p /opt/dbs/llogdbs -o 0 -s 200000;
(4)创建临时数据空间
onspaces -c -d tmpdbs1 -p /opt/dbs/tmpdbs1 -o 0 -s 200000 -t -k 8k;
-t - 创建临时数据空间
-k - pagesize 页大小(默认为2K)
(5)创建数据空间
onspaces -c -d datadbs -p /opt/dbs/datadbs1 -o 0 -s 500000-k 8k;
(6)创建大对象空间
onspaces -c -S sbspace1 -p /opt/dbs/sbspace1 -o 0 -s 500000 -k 8k;
-S - 创建大对象空间
移除数据空间
移除数据空间命令
onspaces -d datadbs –y
-d - 移除一个数据空间
-y - 过程中自动确认
为数据空间添加chunk
只能给数据空间、大对象空间添加chunk
命令:
onspaces -a datadbs1 -p /opt/dbs/datadbs1_2 -o 0 -s 200000
-a - 为数据空间添加chunk
-p - 存储文件

3.14 数据库运行状态

数据库运行时可以使用“onstat”命令配合参数查看一系列系统运行状态。
“onstat”会根据当前环境变量读取对应数据库实例的共享内存,得到想要的结果。
“onstat”用法有很多,这里列出一些常用的供参考。
onstat - 查看最基本的状态信息
onstat -d 查看dbspace和chunk信息
onstat -l 查看物理日志和逻辑日志信息
onstat -p 查看实例整体运行情况
onstat -m 查看数据库实例运行日志(online.log)最后20行信息
onstat -g glo 查看虚拟CPU信息
onstat -g seg 查看内存使用情况
onstat -g ses 查看数据库会话状态(ses后加会话ID可查看指定会话状态)

3.15 gbase 类型

text 不支持用sql插入, 内容不多可以用varchar(320000)代替
bool就是boolean,值是 ‘T’=true, ‘F’= false

3.16 分页查询

select * from user limit 10, 10 可以工作,但是该种模式下,位置不能通过PreparedStatement参数来设置,不要用于编程环境
select skip 2 first 2 * from user 也可以工作,该模式可以通过PreparedStatement参数来设置,推荐在程序中使用

3.17 JDBC解决中文问题(JDBC抛出SQLEXCEPTION,提示出现Locale mismatch)

先以原来身份进入
unset DB_LOCALE CLIENT_LOCALE
解决方案,要在…/profile.gbaseserver 设置
export CLIENT_LOCALE=zh_cn.utf8
export DB_LOCALE=zh_cn.utf8
export SERVER_LOCALE=zh_cn.utf8
执行source …/profile.gbaseserver后,重新导入

最后修改时间:2022-04-06 17:42:18
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论