• [问题求助] [BUG]For Key Share等语句执行报错信息优化
    执行如下SQL语句:SELECT 1 FROM ONLY BasicEntityTest x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x报错: For Key Share and For No Key Update is not support for ustore.错误提示语法有问题,建议: The USTORE storage engine does not support For Key Share and For No Key Update.参考: cid:link_0
  • 数据库的三权分立模式是什么
    三权分立模式下系统管理员权限限制解析1. 三权分立的核心逻辑三权分立是将传统系统管理员权限拆分为三类独立角色:系统管理员(System Admin):负责基础设施管理(如创建实例、分配资源)。安全管理员(Security Admin):负责权限与审计管理(如用户创建、审计策略配置)。数据库管理员(Database Admin):负责数据操作(如表创建、数据读写)。2. 常见问题选项描述正确性原因解析系统管理员不再具有OPRADMIN权限正确OPRADMIN权限通常用于操作管理(如备份、恢复),三权分立后划归安全管理员或数据库管理员。系统管理员不再具有CREATEROLE权限正确CREATEROLE(创建角色)属于安全管理范畴,三权分立后由安全管理员负责。系统管理员不再具有AUDITADMIN权限正确AUDITADMIN(审计管理)属于安全控制权限,三权分立后从系统管理员权限中剥离。系统管理员只有对自己作为所有者的对象有权限错误系统管理员仍保留基础的系统资源管理权限(如实例监控、存储分配),并非仅局限于“自己创建的对象”。对象权限(如表读写)由数据库管理员负责。3. 三权分立前后权限对比权限类型传统单管理员模式三权分立模式系统资源管理系统管理员全量拥有系统管理员保留(如服务器配置、实例启动)安全与审计系统管理员全量拥有安全管理员负责(用户创建、审计策略)数据操作权限系统管理员全量拥有数据库管理员负责(表创建、数据读写)角色与权限管理系统管理员全量拥有安全管理员负责(角色创建、权限分配)4. 常见的错误混淆点“系统管理员只有对自己作为所有者的对象有权限”这一描述错误,原因在于:对象权限与系统权限的区分:系统管理员的核心职责是管理底层基础设施(如硬件、实例),而非数据对象(如表、视图)。数据对象权限由数据库管理员分配,与“对象所有者”无关。最小权限原则的应用:三权分立限制的是“跨领域权限”(如系统管理员不能管理审计),但未完全剥夺其系统层面的管理权限。总结三权分立的核心是通过权限拆分实现“权责分离”,系统管理员的权限被限制在基础设施管理范畴,而安全、审计、数据操作等权限被剥离给其他角色。常见的说法:“系统管理员只有对自己作为所有者的对象有权限”是错误的,因为系统管理员的权限范围不局限于对象所有权,而是保留系统级管理职责。
  • [问题求助] 客户开发坐席系统java代码需要调用平台gaussdb数据库,通过sql语句查询gaussdb获取一些话单数据,请问有相关的代码工程示例吗?
    【问题来源】汉口银行AICC项目【问题摘要】客户开发坐席系统java代码需要调用平台gaussdb数据库,通过sql语句查询gaussdb获取一些话单数据,请问有相关的代码工程示例吗?【AICC解决方案版本】AICC: 22.200.0Gaussdb :ITInfra_2.2.0_GaussDBT1.5.0客户座席系统开发语言:Java【期望解决时间】2025年6月24日
  • [问题求助] 线下DWS 8.1.1.5版本的升级途径是多少?
    目前的DWS 版本8.1.1.5的升级稳定版本的途径是不是8.1.1.5-》8.1.3-ESL.8.SP1 -》8.2.1-ESL.8目前这种升级方式有银行据点升级过没?使用上是否有什么问题?有直升8.1.1.x-》8.2.1.x的版本发布计划?
  • GaussDB PG 支持的标准日期时间类型​​详解
    一、GaussDB PG 支持的标准日期时间类型​​GaussDB PG 完全兼容 PostgreSQL 的日期时间类型体系,常用类型包括:类型名称描述存储空间示例值DATE仅存储日期(年、月、日)4 字节2025-05-20TIME [WITHOUT TIME ZONE]仅存储时间(时、分、秒),默认无时区8 字节14:30:45TIMESTAMP [WITHOUT TIME ZONE]存储日期和时间(年、月、日、时、分、秒),默认无时区8 字节2025-05-20 14:30:45TIMESTAMP WITH TIME ZONE存储日期、时间及时区信息(实际存储为 UTC 时间+时区偏移)12 字节2025-05-20 14:30:45+08​​二、“DATETIME”类型的替代方案​​若您习惯使用 DATETIME 类型(常见于 MySQL),在 GaussDB PG 中可通过以下方式替代:​​1. 直接使用 TIMESTAMP WITHOUT TIME ZONE​​DATETIME 在标准 SQL 中通常等价于 TIMESTAMP WITHOUT TIME ZONE(无时区的日期时间)。GaussDB PG 完全支持此类型,可直接替代:-- 创建表时使用 TIMESTAMP 替代 DATETIMECREATE TABLE example ( id INT, event_time TIMESTAMP WITHOUT TIME ZONE -- 等价于 MySQL 的 DATETIME);-- 插入数据(格式兼容)INSERT INTO example VALUES (1, '2025-05-20 14:30:45');​​2. 若需有时区信息,使用 TIMESTAMP WITH TIME ZONE​​若业务需要记录时区(如跨时区的日志),推荐使用 TIMESTAMPTZ(TIMESTAMP WITH TIME ZONE 的缩写):CREATE TABLE timezone_example ( log_id INT, log_time TIMESTAMPTZ -- 存储带时区的时间戳(自动转换为 UTC 存储));-- 插入带时区的时间(会自动转换为 UTC)INSERT INTO timezone_example VALUES (1, '2025-05-20 14:30:45+08'); -- 实际存储为 2025-05-20 06:30:45 UTC​​三、注意事项​​​​类型别名与兼容性​​GaussDB PG 支持部分类型别名(如 TIMESTAMPTZ 是 TIMESTAMP WITH TIME ZONE 的别名),但建议使用标准名称以避免歧义。​​时间格式解析​​GaussDB PG 支持多种时间格式(如 YYYY-MM-DD HH24:MI:SS、YYYYMMDDHH24MISS),插入时需确保格式与声明的类型匹配。若需自定义格式,可使用 TO_TIMESTAMP 函数显式转换:-- 将字符串 '20250520143045' 转换为 TIMESTAMPSELECT TO_TIMESTAMP('20250520143045', 'YYYYMMDDHH24MISS'); -- 结果:2025-05-20 14:30:45​​时区处理​​TIMESTAMP WITHOUT TIME ZONE 仅存储本地时间,不涉及时区转换,适合业务逻辑明确不跨时区的场景(如本地业务日志)。TIMESTAMP WITH TIME ZONE 存储的是 UTC 时间+时区信息,适合需要跨时区同步的场景(如全球用户行为记录)。​​四、总结​​GaussDB PG 模式下​​完全支持标准的日期时间类型​​,若需替代“DATETIME”,推荐使用 TIMESTAMP WITHOUT TIME ZONE(无时区)或 TIMESTAMP WITH TIME ZONE(有时区)。根据业务需求选择即可,两者均能满足大部分日期时间存储与计算场景。
  • Roach工具与OpenGauss备份适配性
    ​​Roach工具(GaussRoach.py)支持对OpenGauss数据库的备份​​,但需注意其适用范围和功能特点。以下是关键信息总结:✅ 1. ​​Roach与OpenGauss的兼容性​​Roach(通过GaussRoach.py脚本调用)是​​专为GaussDB(基于OpenGauss内核)设计的物理备份工具​​,适用于分布式集群环境。它支持对OpenGauss集群的​​全量物理备份​​,包括数据文件、WAL日志、配置文件等,确保备份一致性。🔧 2. ​​支持的备份类型与功能​​​​物理备份​​:全量备份:备份集群所有数据节点(DN)、协调节点(CN)、GTM节点及配置文件。增量备份:通过--backup-mode=PTRACK参数启用基于页面跟踪的增量备份。​​多存储介质支持​​:可备份至本地磁盘(DISK)、华为云OBS、NBU(Veritas NetBackup)、EISOO等。​​高级管理功能​​:支持备份集删除、校验、断点续传,以及双集群容灾恢复。⚠️ 3. ​​使用限制​​​​仅限分布式集群​​:Roach​​不支持集中式单节点部署​​的OpenGauss,仅适用于多节点集群。​​依赖归档模式​​:备份前需​​开启WAL归档​​(命令:python3 GaussRoach.py -t config --archive=true -p)。​​需主节点执行​​:备份操作必须在集群主节点发起。🔄 4. ​​备份恢复流程​​​​备份命令示例​​:python3 GaussRoach.py -t backup --media-type DISK --media-destination /backup_path ​​恢复命令示例​​:python3 GaussRoach.py -t restore --media-type DISK --media-destination /backup_path --backup-key <备份ID>  5. ​​替代方案(单节点OpenGauss)​​若使用集中式单节点OpenGauss,可选用以下工具替代Roach:​​gs_probackup​​:专为单机设计的物理备份工具,支持增量备份和PITR。​​gs_dump​​:逻辑备份工具,导出SQL脚本或归档文件,适用于小规模数据迁移。📌 ​​总结​​Roach是OpenGauss分布式集群的​​首选物理备份工具​​,提供全量/增量备份及多介质支持,但需注意其​​不适用于单机环境​​。对于单节点部署,建议使用gs_probackup或gs_dump。具体工具选择需结合集群架构和备份需求。
  • [问题求助] gaussdb未知错误,怎么排查
    系统内存报错
  • [运维管理] 删除数据库权限怎么限制?怎么回收?
    删除数据库权限怎么限制?怎么回收?
  • 请问如何申请华为GaussDB的技术认证?就是证明产品能在GaussDB上正常运行的证书
    请问如何申请华为GaussDB的技术认证?就是证明产品能在GaussDB上正常运行的证书
  • [问题求助] tpops的kafka日志报错
    tpops的kafka日志报错如图,这是什么问题?怎么处理/zookeeper-service-cli-dbs-lite.log
  • [问题求助] 求助数据库专家帮忙解释GaussDB的各种模式
    GaussDB数据库模式从不同的资料可以看到存在 A,B,C,M,MYSQL,ORA,TD等。请问下这些分别是什么含义?他们之间有什么差异?在M和A模式下,是否能够使用PostgreSQL的语法和关键字? 在A模式下,是否能够使用MySQL的语法和关键字?
  • [最新活动] HCCDA-GaussDB 认证代金券兑换及购买指南
    一、代金券获取注意事项1、获取代金券前前提实名认证是代金券的获取前提,请务必先完成实名认证。因代金券根据“华为云账号”进行发放,如您是在某活动计划中申请获取代金券,在申请后至代金券发放前这期间,请勿修改华为云账号(修改后原账号会失效),否则代金券会发放失败。2、如何知道自己获取了代金券?您可在账号中心 绑定邮箱、手机,以便系统在发放代金券会及时通知您,避免您错过代金券有效期。3、在哪里查看自己获取的代金券?您可以在华为云控制台-费用中心-优惠折扣-优惠券 查看自己已获取的代金券及适用范围二、购买GaussDB入门级开发者认证(HCCDA-GaussDB)1、打开华为云官网登录界面用户登录—华为云2、进入华为云认证点击 华为云认证 页面,进入以后往下滑,找到“开发者认证”模块,点击“HCCDA-GaussDB”。3、购买HCCDA-GaussDB认证进入“GaussDB入门级开发者认证”购买页面,点击购买认证。点击“立即购买”。注意:1)若有“填写销售人员账号”,请选择“不涉及”,同意协议及授权,点击“去支付”;若没有,请忽略。2)选择对应的代金券,勾选“协议及授权”后,进行付款。4、付款成功后,点击“我的开发者认证”,即可返回个人中心,找到购买的HCCDA-GaussDB认证,进行学习和考试。
  • [问题求助] 除了JAVA语言, GaussDB应用开发者是否只能够在Linux进行应用开发和调试?
    阅读了GaussDB数据库驱动: cid:link_0 相关内容, 发现GaussDB只提供了 Euler、Hce、Kylinv等操作系统有关的驱动。 打开里面的压缩包,只有ODBC存在Windows版本。 这个驱动包发布乱糟糟的(1)jdbc驱动是不区分操作系统的,被分开放到了不同的操作系统目录下面,开发者不知道Windows/MacOS该用哪个目录下面的发布包;(2)只有ODBC提供了Windows版本, 而且Windows版本还被放到了Euler、Hce、Kylinv等操作系统目录下面;(3)Libpq、Python等没有提供Windows和MacOS版本。 应用程序开发通常都是在Windows/MacOS开发的, 请问下GaussDB对于Windows/MacOS的开发者是怎么考虑的?特别是C、Python等开发者, 是不是GaussDB不支持开发者使用Windows/MacOS开发,只能在Linux环境开发?对于Python开发者,有没有什么开发建议,毕竟大多数开发者还是不熟悉Linux环境开发测试。
  • [技术干货] GaussDB分布式数据库的调优方法总结
    1.  数据库分布键调整【分布键选取原则】   分布式表的分布策略有几种,其中主要是有复制分布、HASH分布、范围分布,其中对于Hash分区表,Hash分布表的分布列选取至关重要,需要满足以下原则:1、 列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列。2、 在满足第一条原则的情况下尽量不要选取存在常量filter的列。例如,表dwcjk相关的部分查询中出现dwcjk的列zqdh存在常量的约束(例如zqdh=’000001’),那么就应当尽量不用zqdh做分布列。3、 在满足前两条原则的情况,考虑选择查询中的连接条件为分布列,以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量。4、 对于Hash分表策略,如果分布列选择不当,可能导致数据倾斜,查询时出现部分DN的I/O短板,从而影响整体查询性能,不同DN的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列。 业务表在分布式场景下,分布键如果不指定默认用第一列,对这边第一列大部分都是xxxxx字段,而这个字段的值都是9999,从而导致数据都分布在一个节点上。本次根据实际业务情况,调整了800张左右表的分布列,对于小表且改动比较少采用复制表方式,其他表是参照列值的散列情况及索引创建等按hash方式进行分布,调整后系统性能得到初步改善;【数据分布检查语句】select * from pgxc_get_table_skewness where schemaname=’xxxxx’ order by skewratio desc;若skewratio大于0.1,需要重点关注。2.  XLOGS分盘将XLOG日志文件目录单独放在一块nvme盘上,方式通过软链接方式实现,从而减轻数据盘压力,提高数据库整体IO能力。如:ln -s /data/dn_6001/pg_xlog  /data/cluster/data/dn/dn_6001/pg_xlog3.   数据库参数调整针对关键参数进行调整GaussDB参数参数说明推荐值默认值分类名称资源消耗内存max_process_memory设置一个数据库节点可用的最大物理内存(物理内存大小 - vm.min_free_kbytes)* 0.7 / (1 + 主节点个数)Cn:110GBDn:320GB视系统、部署情况而定shared_buffers设置GaussDB Kernel使用的共享内存大小;建议设置shared_buffers值为内存的40%以内,如果设置较大的shared_buffers需要同时增加checkpoint_segments的值,因为写入大量新增、修改数据需要消耗更多的时间周期Cn:4GBDn:160GB视系统、部署情况而定work_mem设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY,DISTINCT和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到128MB视系统情况而定maintenance_work_mem设置在维护性操作(比如VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUM FULL、CLUSTER、CREATE INDEX的执行效率。建议设置此参数的值大于work_mem,可以改进清理和恢复数据库转储的速度1GB视系统情况而定max_prepared_transactions设置可以同时处于"预备"状态的事务的最大数目。增加此参数的值会使GaussDB Kernel比系统默认设置需要更多的System V共享内存 1200 内核资源消耗max_files_per_process设置每个服务器进程允许同时打开的最大文件数目。如果操作系统内核强制一个合理的数目,则不需要设置。1024 1024 最大连接数Max_connections数据库会话最大连接数18000根据实际情况而定  线程池开启enable_thread_pool控制是否使用线程池功能,一般都开启On on 控制线程池功能的详细属性thread_pool_attr设置线程池功能的详细属性。该参数分为3个部分:1) thread_num:线程池中的线程总数,取值范围是0~4096。其中0的含义是数据库根据系统CPU core的数量来自动配置线程池的线程数,如果参数值大于0,线程池中的线程数等于thread_num。2) group_num:线程池中的线程分组个数,取值范围是0~64。其中0的含义是数据库根据系统NUMA组的个数来自动配置线程池的线程分组个数,如果参数值大于 0,线程池中的线程组个数等于group_num。3) cpubind_info:线程池是否绑核的配置参数。Cn:2048,2,(nobind)Dn:4096,2,(nobind)根据实际情况设置4.  慢SQL调优4.1查询top SQL的语句:select n_calls,unique_sql_id,substr(query,1,50) as query,total_elapse_time/n_calls/1000 as avg_time,total_elapse_time/1000 as runtime from dbe_perf.statement where user_name='cbsprd' and n_calls>10 and avg_time>5 order by runtime desc;4.2慢SQL存在主要几种表现:1) 存在重分布(分布式数据库独有现象),即选择分布列不合理,导致数据在DN之间需要进行重分布,从而影响性能调整分布列前:在***_jyyxrz表存在重分布,这个表的分布为piljybss;而***_jykzhq的分布列为pljyzbsh,两个表关联存在重分布情况。优化方案:将***_jyyxrz的分布列也调整为pljyzbsh,且两表关联也是带这个条件的,其执行情况如下:优化结果:消除dn节点间数据重分布,时间从原来13ms提升至7ms。2) 未走索引,全表扫描从上图可以看出,若出现“seq scan on ……”即表示表未走索引,增加耗时。在***_jyyxrz_0704上增加索引后,如下图:优化结果:走上索引扫描,运行时间从361ms降为6.6ms3) 未使用最佳索引此问题出现在***_sfdjbu的索引上,kcgb_sfdjbu_idx10是创建一个(shoufdma,jiluztai,shouqibz,kehuzhao,sfkhuzhh,guiylius)复合索引,但该语句的where中sfkhuzhh字段上使用了or,故不能采用一个复合索引,由此创建两个索引新建索引字段如下:增加索引后,SQL语句改走这两个,时间从原来的95ms缩减到9.5ms4) SQL改写因分布式场景及gaussdb和oracle的SQL语法差异性,存储少数复杂SQL的改写,具体如下:改写前:改写后的SQL语句:将or exist改写为union all的方式,来减少数据的遍历,从而提升性能,时间从原来的89秒降低到82毫秒。5)加SQL PATCH:总之,单SQL优化是多方面的,是一个持续过程,直到满足性能要求为止。
  • 一招解决MRS作业中shell节点获取Hive SQL执行结果
    在DataArts作业中,Shell节点可以通过以下方式获取MRS Hive SQL节点执行的结果:使用EL表达式:当MRS Hive SQL节点的输出结果只有一个字段时,可以使用#{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput(\"前一节点名\"),\"]\"),\"[\"),\"\\\\\"\")}这种形式的EL表达式来获取结果值。这种方法适用于前一SQL节点的输出结果只有一个字段,且输出结果值数据类型为String的场景。通过For Each节点:当MRS Hive SQL节点的输出结果为多个字段时,可以使用For Each节点来循环获取数据集中二维数组的值。具体配置如下:For Each节点数据集:#{Job.getNodeOutput('前一节点名 ')}For Each节点子作业参数:#{Loop.current[索引 ]}这种方法适用于输出结果值数据类型为String的场景,但需要将作业拆分为主作业和子作业。示例假设在DataArts Studio中有一个作业,其中包含一个MRS Hive SQL节点和一个Shell节点,MRS Hive SQL节点执行了一个查询并返回了一个结果集,Shell节点需要获取这个结果集并进行后续处理。MRS Hive SQL节点配置:假设MRS Hive SQL节点执行了如下查询:SELECT COUNT(*) FROM student_score;这个查询返回了一个单字段的结果集,例如[],表示student_score表中的记录数为100。Shell节点配置:在Shell节点中,可以使用以下EL表达式来获取MRS Hive SQL节点的输出结果:result=$(#{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("mrs_hive_sql_node"),"]"),"["),"\\\"")})echo "Student score count: $result"这个Shell脚本将获取MRS Hive SQL节点的输出结果,并将其存储在变量result中,然后打印出来。作业执行结果:当作业执行时,Shell节点将输出:Student score count: 100通过这种方式,Shell节点成功获取了MRS Hive SQL节点执行的结果,并在后续的脚本中进行了处理。在DataArts作业中,如果MRS Hive SQL节点执行失败,Shell节点可以通过以下方式进行处理:配置失败重试:在作业的高级参数中,可以配置MRS Hive SQL节点的失败重试策略。例如,可以设置最大重试次数和重试间隔时间,以便在节点执行失败后自动重试。后续节点处理策略:可以配置当前节点失败后,后续节点的处理策略。例如,可以选择终止后续节点执行计划、终止当前作业执行计划、继续执行下一节点或者挂起当前作业执行计划。日志分析和错误处理:Shell节点可以通过分析MRS Hive SQL节点的日志来确定失败原因,并采取相应的处理措施。例如,可以检查SQL语法错误、资源不足或者权限问题等。通知和报警:可以配置通知机制,当MRS Hive SQL节点执行失败时,通过邮件、短信或者其他方式通知相关人员,以便及时处理问题。数据恢复和修正:如果MRS Hive SQL节点的执行失败导致数据不一致或者丢失,Shell节点可以执行数据恢复和修正操作,以确保数据的完整性和准确性。人工干预:在某些情况下,可能需要人工干预来解决MRS Hive SQL节点执行失败的问题。例如,当遇到复杂的业务逻辑错误或者数据问题时,人工检查和修正可能是必要的。通过上述方法,Shell节点可以有效地处理MRS Hive SQL节点执行失败的情况,确保作业的稳定性和数据的准确性。在DataArts中,可以通过以下方式在Shell节点中判断MRS Hive SQL节点是否执行成功:使用Job内嵌对象的getNodeStatus方法:可以使用#{Job.getNodeStatus("mrs_hive_sql_node")}这种形式的EL表达式来获取MRS Hive SQL节点的执行状态。如果节点执行成功,该方法将返回success;如果执行失败,则返回fail。分析MRS Hive SQL节点的日志:Shell节点可以通过分析MRS Hive SQL节点的日志来确定执行是否成功。例如,可以检查日志中是否存在错误信息或者异常堆栈。检查MRS Hive SQL节点的输出结果:如果MRS Hive SQL节点有输出结果,可以在Shell节点中使用#{Job.getNodeOutput("mrs_hive_sql_node")}这种形式的EL表达式来获取输出结果,并检查结果是否符合预期。使用For Each节点进行条件判断:可以使用For Each节点来循环检查MRS Hive SQL节点的输出结果,并根据结果进行条件判断。例如,可以使用#{Loop.current}这种形式的EL表达式来获取循环中的当前元素,并进行条件判断。配置通知和报警机制:可以配置通知机制,当MRS Hive SQL节点执行失败时,通过邮件、短信或者其他方式通知相关人员,以便及时处理问题。人工干预和检查:在某些情况下,可能需要人工干预来检查MRS Hive SQL节点的执行情况,例如,当遇到复杂的业务逻辑错误或者数据问题时,人工检查可能是必要的。通过上述方法,Shell节点可以有效地判断MRS Hive SQL节点是否执行成功,并采取相应的处理措施。
总条数:383 到第
上滑加载中