- 博客(488)
- 收藏
- 关注
原创 KingbaseES 连接数限制
前言我们经常碰到由于数据库连接数太多导致耗费太多服务器内存,除了连接池,我们可以在数据库上限制应用连接数。真实连接数限制整个数据库实例的连接数限制参数是max_connections为超级用户保留的连接数量参数是superuser_reserved_connections,默认值是3。它是为超级用户保留的连接数量。而在Oracle数据库没有对应此类参数功能,这个为超级用户保留连接的参数...
2024-04-01 15:32:00
1476
原创 KingbaseES中sao用户被锁定并解锁
sao用户登录失败次数达到最大值后被锁定,这时,需要sso用户解锁sao用户。我们先了解一下三权分立的概念,顾名思义,三权分立是把过于集中的系统权限分到三个用户身上,分工管理权限。系统管理员(system)主要负责执行数据库日常管理的各种操作和自主存取控制。安全管理员(sso)主要负责强制访问规则的制定和管理,监督审计管理员和普通用户的操作,不能创建和操作普通对象。审计管...
2024-04-01 15:32:00
712
原创 KingbaseES V8R6运维案例之---手工执行wal归档
案例说明:在KingbaseES V8R6数据库wal归档是通过sys_rman的archive_push实现,当wal日志切换时,自动执行归档,也可以通过sys_rman执行手工归档,本案例描述如何使用sys_rman执行手工归档。适用版本: KingbaseES V8R61、查看数据库归档配置如下所示,数据库归档配置:[kingbase@node102 data]$ cat es_r...
2024-04-01 15:32:00
617
原创 使用auto_explain插件分析存储过程运行卡住案例
一. 文章概述Kingbase中,auto_explain 是对explain强有力的补充,explain配合analyze、buffers等命令查看sql语句执行计划在一般场景下已经足够,但是procedure、function里的SQL则无法分析到,配置auto_explain将自动在日志中输出procedure、function里每条SQL语句的执行计划结果,从而避免了手动去执行exp...
2024-04-01 15:31:00
541
原创 PLSQL中的使用utl_http来调用webservice
文章概要:KingbaseES提供的utl_http能够支持对webservice的调用,这也是该接口的最重要的应用方式之一。本文基于POST协议的方式展示了webservice接口的简单调用例子。一,搭建环境本文需要基于一个写好的webservice发布包,在windows的IIS管理器上部署。首先需要下载一个webservice服务端的发布包,下载链接如下,这个包是使用visual ...
2024-04-01 15:31:00
1188
原创 kingbaseES 如何使用并行
KingbaseES 能使用多核 CPU 来加速一个 SQL 语句的执行时间,这种特性被称为并行查询。由于现实条件的限 制或因为没有比并行查询计划更快的查询计划存在,很多查询并不能从并行查询获益。但是,对于那些可以从并行查 询获益的查询来说,并行查询带来的速度提升是显著的。很多查询在使用并行查询时查询速度比之前快了超过两倍, 有些查询是以前的四倍甚至更多的倍数并行相关参数kingbase E...
2024-04-01 15:30:00
590
原创 KingbaseES 避免wal日志占用大量磁盘空间
背景wal日志一直增长很快,查看归档目录也在执行归档,归档无异常,是归档执行太慢的原因吗?还是wal 日志生成的太快了的原因呢?现场环境wal日志的磁盘空间比较小。分析首先我们分析可否加速归档速度呢,因为如果能加快归档速度就可以缓解wal日志所在磁盘空间紧张的问题,答案是不可以。archive_command指定外部shell命令来进行归档,判定归档是否正常的方法,ps -ef 查看arc...
2024-03-29 18:39:00
563
原创 KingbaseES 普通用户逻辑导入时权限不足错误
逻辑导入时权限报错:ERROR: must be member of role "system"实验:1、在超级用户system下新建用户与schema:create user user1;create schema s1;修改user1的默认权限:test=# alter default privileges in schema s1 grant all on tables to...
2024-03-29 18:39:00
823
原创 KingbaseES V8R3备份恢复案例之---backup_label does not exist in KINGBASE_DATA
案例说明:在KingbaseES V8R3集群主库执行sys_rman的全备时,出现‘backup_label does not exist in KINGBASE_DATA’的故障,如下图所示:适用版本: KingbaseES V8R3一、问题现象如下所示,数据库执行sys_rman物理备份:[kingbase@node201 bin]$ ./sys_rman -U system -...
2024-03-29 18:39:00
576
原创 KingbaseES 索引unusable的使用
前言KingbaseES中,索引不可用原则介绍oracle数据库中,如果索引不可用(unusable),在进行DML操作时,会触发报错:索引不可用。在KES中如果设置索引不可用,插入数据不会报错,因为当索引被置为不可用状态后,如果要重新启动索引需要rebuild索引,此时会在新索引中重新组织表tuple数据。insert into t1 select generate_series(1,...
2024-03-29 18:38:00
402
原创 KingbaseES Reindex concurrently过程
前言KES中我们经常遇到表膨胀情况,然而索引也会膨胀,随着业务DML语句的增长,稍不留神索引就会膨胀的很严重,膨胀后的索引只有VACUUM FULL才会真正释放磁盘空间,对于新构建的索引往往比更新的旧索引提供更好的访问性能。所以,我们需要重建膨胀的索引。REINDEX命令需要ACCESS EXCLUSIVE锁,这是最高级别的锁,阻塞一切业务语句。所以我们会用到CONCURRENTLY 选项,...
2024-03-29 18:38:00
551
原创 KingbaseES行级安全策略
什么是行级安全策略(RLS)?行安全策略就是对不同用户,不同行数据的可见性,和可修改性。是表权限的一种扩展。默认情况下表没有任何安全策略限制。这样用户根据自身对表持有的权限来操作表数据,对于查询或更新来说其中所有的行都是平等的。当在一个表上启用行安全性时,所有对该表的操作都必须被一条行安全性策略所允许。如果为一个表启用了行级安全策略但是没有适用的策略存在,将假定为一种 “默认否定”策略,这...
2024-03-29 18:38:00
465
原创 KingbaseES数据库案例之---输出数据库日志到syslog服务器
案例说明:生产中心需对数据库日志建立审计,需要将数据库服务器的日志发送到日志服务器集中存储并建立审计。适用版本: KingbaseES V8R3/R6案例主机架构:node201 192.168.1.201 # 数据库主机、syslog客户端 node202 192.168.1.202 # syslog服务器一、构建syslog服务器Syslog服务器可以用作一个网络中的...
2024-03-29 18:38:00
1044
原创 数据库对象大小统计脚本
获取数据库排名前20的表select t.table_catalog as db, n.nspname as schemaname, c.relname, c.reltuples::numeric as rowcount, sys_size_pretty(sys_table_size ( '"' || nspname || '"....
2024-03-29 18:38:00
166
原创 KingbaseES中的ora_statement_level_rollback参数
文章概述参数 ora_statement_level_rollback 控制KingbaseES 是否实现类似oracle 语句级的回滚。当该参数打开时,如果事务操作失败,仅会回滚触发异常的语句,避免了全部操作的回滚。默认情况下该参数为OFF,也就是说DML语句在PLSQL块中出错后默认是全部回滚:---查看数据库默认的ora_statement_level_rollback配置为OFFt...
2024-03-29 18:37:00
399
原创 KingbaseES中的OID和ROWID
一,数据库中OID每个表都有几个系统字段,其中有一个比较特殊的系统字段OID,使用\d并不会显示,且默认情况下创建也不会有OID。---本文验证版本test=# select version();test-# / version--------------------- KingbaseES V008R006C007B0024 on x86_64-pc-linux-gnu, com...
2024-03-29 18:37:00
1612
原创 KingbaseES V8R6运维案例之---归档日志批量解析
案例说明:KingbaseES V8R6数据库的wal日志归档如果通过sys_rman工具执行,默认日志将归档在备份目录下,归档日志被压缩及日志文件名包含随机字符串,在执行sys_waldump时,必须解压缩和改名后才能被识别。适用版本:KingbaseES V8R6一、数据库归档及备份配置1、归档配置如下所示,归档通过sys_rman执行:[kingbase@node201 bi...
2024-03-29 18:36:00
581
原创 KingbaseES LWLock buffer_mapping 等待
在KingbaseES数据库中,会话在将数据块与共享缓冲池的缓冲区相关联时,会触发“LWLock buffer_mapping”等待事件。这类事件涉及到一种轻量级锁(lwlock),类似于Oracle中的闩锁。这个锁在不同的数据库中可能有不同的名称,但通常被称为buffer_mapping或BufMappingLock。它主要用于实现对HASH BUCKET的有序访问。在KingbaseES,...
2024-03-28 15:34:00
218
原创 KingbaseES 临时表
临时表在数据库管理和数据处理中有着广泛的应用,主要用于存储临时数据或进行中间计算。临时表中的数据对会话是私有的,每个会话只能看到和修改自己会话的数据。KingbaseES支持本地临时表和全局临时表。创建临时表时若不指定GLOBAL或LOCAL,则默认值指定为LOCAL。本地临时表和全局临时表有如下四点区别:1.本地临时表在临时模式下,用户不可以指定;但是全局临时表创建在用户指定模式下;2...
2024-03-28 15:33:00
365
原创 KingbaseES 执行计划常见节点介绍
KingbaseES中explain命令来查看执行计划时最常用的方式。其命令格式如下:explain [option] statement其中option为可选项,常用的是以下5种情况的组合:analyze:执行SQL并且显示实际的运行时间和其他统计信息,默认FALSE。注意:加了analyze会真正执行SQL语句verbose:显示附加信息,比如计划树中每个节点输出的字段名等,默认F...
2024-03-28 15:33:00
464
原创 KingbaseES Create Index include 介绍
在数据库性能优化的世界中,索引始终扮演着至关重要的角色。KingbaseES创建索引语法中的INCLUDE关键字为索引创建提供了额外的灵活性,允许在 B-Tree索引中包含额外的非键(Non-Key)列。这些列虽然不参与索引的排序或搜索过程,但可用于提高某些查询的效率,尤其是在执行索引覆盖扫描(Index-Only Scans)时。使用“INCLUDE”的最大优势在于它提供了一种方法,使得...
2024-03-28 15:33:00
346
原创 KingbaseES 通过触发器实现查看表的创建时间
从oracle迁移至KingbaseES的用户,经常会问在KingbaseES中怎么查询表的创建时间。由于KingbaseES本身并不直接存储表的创建时间,所以获取这一信息通常需要依赖于间接方法或日志记录。如果确实有这种需求,可以通过创建事件触发器的将相关的信息保存下来。建立保存信息的数据表CREATE TABLE table_ddl_info( id serial P...
2024-03-28 15:33:00
510
原创 KingbaseES查找慢查询语句和阻塞会话
在处理数据库性能问题时,识别和分析慢查询及阻塞会话是至关重要的步骤。数据库管理员和开发人员常常需要依赖特定的工具和查询语句来追踪这些性能瓶颈。当数据库响应变慢或出现处理延迟时,第一步通常是查找那些执行时间过长的查询,这些查询通常被称为“慢查询”。同时,阻塞会话即那些因等待资源(如锁)而暂停执行的会话也是导致性能问题的常见原因。通过对这些慢查询和阻塞会话的有效监控和分析,我们不仅可以识别当前...
2024-03-28 15:33:00
456
原创 KingbaseES自动生成列介绍
在KingbaseES中create table语句支持GENERATED column(生成列)。生成列是一种特别的列类型,它的值基于其他列的值计算得出。因此,生成列之于列,有点像视图之于表的关系。存在两种类型的生成列:存储生成列和虚拟生成列。存储生成列在数据被写入(插入或更新操作)时进行计算,并且像常规列那样,它们在存储上占据空间。相比之下,虚拟生成列并不占用存储空间,它们的值是在被读取...
2024-03-28 15:33:00
353
原创 KingbaseES参数track_activity_query_size介绍
背景同事A在客户现场,最近注意到客户的主数据库性能有所下降,尤其是在高峰时段。怀疑可能有一些复杂的查询影响了数据库的性能,但尚未确定具体是哪些查询。为了诊断问题,A决定查看高峰期正在执行的查询,先通过sys_stat_activity视图看下当前有哪些sql在运行:SELECT pid, usename, query, state FROM sys_stat_activity WHERE ...
2024-03-28 15:32:00
344
原创 Oracle 触发器迁移至KingbaseES常见的问题
oracle数据库的触发器迁移到KingbaseES的时候经常会出现一下两类错误:1.SQL 错误 [42809]: 错误: "xxxxxxxx" 是一个视图。Detail: 视图上的触发器不能有转换表。2.SQL 错误 [0A000]: 错误: 不能为具有多个事件的触发器指定转换表这两类问题都可以通过使用触发器函数来进行改写。下面来看下具体的例子:示例1oracle触发器内容:C...
2024-03-28 15:32:00
361
原创 KingbaseES角色和权限介绍
KingbaseES 使用角色的概念管理数据库访问权限。为了方便权限管理,用户可以建立多个角色,对角色进行授权和权限回收,并把角色授予其他用户。数据库初始化时,会创建一个超级用户的角色:system(默认,可修改)。任何操作都是从该用户开始的。创建角色CREATE ROLE name [ [ WITH ] option [ ... ] ]where option可以是: SUPER...
2024-03-28 15:32:00
468
原创 KingbaseES生成动态SQL
1. 动态SQL动态SQL在程序启动时会根据输入参数替换相应变量。使用动态SQL可以创建更强大和灵活的应用程序,但在编译时SQL语句的全文不确定,因此运行时编译会牺牲一些性能。动态SQL可以是代码或SQL语句的一部分,动态部分要么由开发人员输入,要么由程序本身创建。1.1 动态SQL使用场景在PL/SQL函数或过程中有时需要生成动态命令,因为命令涉及不同表或数据类型,仅在运行时才能确定具体...
2024-03-28 15:32:00
461
原创 KingbaseES特殊权限介绍
用户需求:新建一个用户B,需要能够查询A用户的所有表,并且对以后新建的表也要有select权限。对于现有的表可以通过动态sql批量进行授权,但是未来新建的表要如何进行授权呢?查询了帮助文档发现通过alter default privileges命令可以实现。命令描述ALTER DEFAULT PRIVILEGES允许你设置将被应用于未来要创建的对象的特权(它不会影响分配给已经存在的...
2024-03-28 15:31:00
325
原创 KingbaseES创建外键与Mysql的差异
Mysqlmysql> select version();+-----------+| version() |+-----------+| 8.0.23 |+-----------+1 row in set (0.00 sec)mysql> create table dept (deptno int ,dname varchar(10),loc varchar...
2024-03-28 15:31:00
408
原创 KingbaseES 表中隐藏字段说明
在KingbaseES中,当我们创建一个数据表时,数据库会隐式增加几个系统字段。这些字段由系统进行维护,用户一般不会感知它们的存在。例如,以下语句创建了一个简单的表:create table test(col number);insert into test(col) values (1),(2),(3);从定义上来看,表 test 中只有一个字段;但是当我们查询数据字典表 sys_at...
2024-03-28 15:31:00
350
原创 KGIS支持的扩展介绍
1.postgispostgis的基本核心功能,仅支持地理图形(矢量要素),在其他Extension前启用。2.postgis_raster对栅格数据的支持。3.postgis_topology拓扑功能的支持。4.postgis_sfcgal这个Extension主要是集成了CGAL(Computational Geometry Algorithms Library,计算几何算法库...
2024-03-28 15:31:00
307
原创 KingbaseES中查询对象大小的SQL及函数区别
--查看所有数据库大小select sys_database.datname, sys_size_pretty(sys_database_size(sys_database.datname)) AS size from sys_database;--查看指定表中所有索引大小select sys_size_pretty(sys_indexes_size('tablename'));--...
2024-03-28 15:30:00
438
原创 oracle_fdw扩展使用中异常问题
Oracle_fdw 的使用介绍已经在之前的文章中介绍过了,具体见:https://www.cnblogs.com/kingbase/p/14846479.html。本篇文章介绍一下可能碰到的问题处理:1.OCIEnvCreate错误错误信息:error:error connecting to Oracle: OCIEnvCreate failed to create environmen...
2024-03-28 15:30:00
279
原创 KingbaseES V8R6数据库运维案例之---用户权限导致的备份恢复故障
案例说明:由于限制了用户对数据库的访问,导致在执行‘sys_backup.sh init’初始化物理备份时,执行失败。适用版本: KingbaseES V8R6一、问题现象如下所示,执行‘sys_backup.sh init’初始化物理备份:1、执行初始化失败[kingbase@node201 bin]$ sh sys_backup.sh initERROR: Configured ...
2024-03-28 15:29:00
460
原创 kingbase ES like 语句优化
KingbaseES 产品支持基于 Like 表达式的通配符模式匹配,通过合理的应用索引,可以提高查询性能。like子句分以下四种情况1、精确匹配型like 'values'2、右%号匹配like 'values%'3、左%号匹配like '%values'4、双%号匹配like '%values%'针对这四种情况优化使用的索引也不一样精确匹配型like 'values'创建...
2023-10-19 19:49:00
90
原创 KingbaseES V8R3 运维案例 -- 单实例环境升级用户认证sha-256
案例说明:默认KingbaseES V8R3用户认证采用md5加密,有的生产环境对安全要求较高,需要将md5升级到sha-256;如果口令使用 scram-sha-256 设置加密,那么它可以被用于认证方法 scram-sha-256 和 md5、password (但后一种情况中口令将以明文传输)。如果口令使用 md5 设置加密,那么它仅能用于 md5 和 password 认证方法说明(同...
2023-09-20 14:12:00
478
原创 KingbaseES恢复被删除数据
生产环境操作请先备份整个data目录或cp 当前数据目录/home/kingbase/pg_data到新的data目录,然后在备份的data目录进行恢复被删除数据操作。通过新备份的路径恢复数据之后,确认数据完整性(确认业务数据完整性)。再把数据从备份环境导出重新导入到生产环境。使用到的系统工具:sys_resetwalsys_waldump准备测试环境:使用initdb初始化数据...
2023-09-20 14:11:00
526
原创 KingbaseESV8R6手工vacuum带有全局分区索引的分区表的影响
背景客户现场有这样一个案例,有张500个分区的大表,每个分区有20万条记录。有update 非常频繁,经常会触发autovacuum。由于表很大,autovacuum 耗时很长。据现场同事反馈,手工vacuum分区时,有报错:“multiple backends attempting to wait for pincount 1”,大致意思是手工vacuum和autovacuum进程冲突了。经...
2023-09-20 14:11:00
245
原创 化腐朽为神奇的QueryMapping
化腐朽为神奇的QueryMapping老车除了报废没别的方法?应用系统就像老车,经过十几二十年的使用,积累了大量里程数据,但是英雄迟暮,反应迟钝,时不时还要病休。但就这样报废,推到重来,如果没有充足的预算,实在是下不了这个决心,不知道该怎么办,让这辆老车焕发第二春。人们习惯,难以改变缓慢的启动已经在驾驶室坐好,发动机已经启动,人也准备妥当,就是老车慢热。已经过去了十分钟,老车还是不能出...
2023-09-19 18:39:00
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅