- 博客(209)
- 收藏
- 关注
原创 YashanDB Docker镜像制作
数据库镜像(image)是一种轻量级、可执行的独立软件包,它包含运行数据库所需的所有内容,把操作系统、数据库打包好形成⼀个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成 Docker 容器实例,类似 Java 中 new 出来一个对象。
2024-09-30 17:48:02 1107
原创 崖山数据库的共享集群机制初探
本文作者:YashanDB高级服务工程师周国超YashanDB共享集群是崖⼭数据库系统(YashanDB)的⼀个关键特性,它是⼀个单库多实例的多活数据库系统。⽤⼾可以连接到任意实例访问同⼀个数据库,多个数据库实例能够并发读写同⼀份数据,同时保证实例之间读写的强⼀致性。这种设计赋予了系统⾼可⽤性、⾼扩展性和⾼性能的特点。共享集群基于YashanDB内核持续演进,硬件上依赖共享存储实现shared-Disk的架构,同时引⼊了Cohesive Memory核⼼技术实现Shared-Cache能⼒。
2024-09-30 14:45:27 927
原创 【YashanDB知识库】GBK库,生僻字插入nvarchar2字段后乱码问题
utf8的终端,gbk的yasql,gbk的服务器情况下,插入汉字后, 数据是utf8编码,但是当成gbk编码转换成utf16,导致存储的数据不对。输入的数据 (客户终端编码) →(转换)数据为 服务端编码(gbk)(如果yasql客户端同服务端编码相同,则不做转换,直接发送输入数据到服务端。下图显示,yasdb存放的就是上面的编码。gbk生僻字,客户端转换数据为gbk编码时,生僻字转换失败,发送给服务端存储的数据缺失,导致显示问题。客户端和服务端编码不同,服务端是gbk时,gbk生僻字,插入不正常。
2024-09-29 11:43:44 591
原创 【YashanDB知识库】崖山数据库Outline功能验证
本文内容来自YashanDB官网,具体内容请见(https://www.yashandb.com/newsinfo/7488286.html?templateId=1718516)1、相同版本下,新增表数据量,使统计信息失效。优化器优先使用outline的计划。2、相同版本下,绑定参数执行场景下,优化器优先使用outline的计划。3、单机主备环境,优化器优先使用outline的计划。4、升级数据库版本后,优化器优先使用outline的计划。持续新增200w数据,使得两张表统计信息失效点击查看代码
2024-09-29 10:32:20 358
原创 【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢
hist_head中存放了列的普通统计信息,histgrm中存放了列的普通统计信息,histgrm中存放了列的普通统计信息,histgrm中存放了列的直方图信息。
2024-09-27 11:36:18 845
原创 【YashanDB知识库】decode函数中的子查询被不必要地多次执行
由于子查询b中有4条记录,分别为1 2 3 4,decode中只会匹配1,所以decode中对a表的全表扫描只有一次。由于表a的pctfree设置了99,所以每个数据块中只有一条记录。此时这个表的全表扫描会有1000个左右的数据块。decode函数在执行时判断有误,即使没有匹配到这个分支,这个分支中的子查询依然会被执行。但是如果yashandb存在decode函数的执行问题,也就是异常情况,所以,正常情况下,整个select语句会有1000多的一致读。整个select语句会有4000多的一致读。
2024-09-26 17:20:44 306
原创 【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包
迁移评估任务中,oracle迁移YashanDB,YMP不兼容语句:grant execute on sys.dbms_stats to user1;】在实现上和oracle有点差异,崖山中包DBMS.STATS不在sys用户下,调用DBMS.STATS也不需要特殊授权。】将目标端DDL中不兼容的这一行去掉,不影响迁移结果。】YMP迁移oracle不兼容给用户授权高级包。本文转自YashanDB官网,具体内容请见。】YMP 23.2.1.7及之前版本。】oracle迁移,高级包授权。
2024-09-26 17:06:15 464
原创 用户体验分享 | YashanDB V23.2.3安装部署
近期崖山新版体验过程中,总能看到用户提问:openssl版本问题、monit命令找不到问题、yashan用户权限问题、数据库重装问题。今日整理了多位用户的安装经验,希望能够帮助到大家~,Q3赛季投稿时间将在9月30日截止~也欢迎大家分享自己实践经验~
2024-09-26 14:37:54 1006
原创 【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
yashandb在访问远端oracle的数据时,拉取了表的所有列。并且每批次只拉取16条数据,在网络有时延时(现场网络时延0.4ms),会有额外的网络传输耗时。使用oci编程可以验证yashandb访问oracle dblink远端表在不同情况下的性能表现。yashandb通过dblink访问oracle性能不佳,影响业务运行效率及客户体验。规避方式为在远端oracle侧创建视图,只查询需要的列。使用OCI驱动编程使用示例 中提供的例子可以分析oci的耗时。1、只从dblink拉取查询需要的列数据。
2024-09-25 14:30:16 617
原创 【YashanDB知识库】多表更新报错 YAS-04344 multi-table update is not supported
在崖山环境执行类似以下语法进行多表更新报 YAS-04344 multi-table update is not supported错误。】该语法属于MySQL数据库支持的语法,YashanDB 暂不支持这种语法做多表更新。本文内容来自YashanDB官网,具体内容请见。
2024-09-25 11:46:42 228
原创 【YashanDB知识库】查询YashanDB表空间使用率
需要查询相应的YashanDB系统表,计算表空间使用率。】YashanDB使用过程中,如何查询表空间的使用率。本文转自YashanDB官网,具体内容请见。
2024-09-25 11:37:36 229
原创 【YashanDB知识库】YAS-04110 invalid variant name
字段中含有保留字,应使用双引号包裹字段名称。本文转自YashanDB官网,具体内容请见。修改字段名称,或者使用双引号包裹字段名称。】执行特定sql时,遇到相应报错。
2024-09-25 11:16:13 200
原创 【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
yashandb jdbc 1.7.1及以后版本在连接串中提供了productName选项,可以指定为Oracle(activiti是支持oracle的)。可以看到,并不支持yashandb。所以yashandb的jdbc驱动要加一个配置参数productName,可以在这种情况下返回Oracle。conn.getMetaData().getDatabaseProductName()方法返回的YashanDB,进而抛出异常退出。如果输出为Oracle,那么支持;如果输出为YashanDB,那么不支持。
2024-09-25 10:44:46 500
原创 【YashanDB知识库】客户端字符集与数据库字符集兼容问题
期望是两个都失败(强检测字符集),或者两个都成功(弱检测字符集,直接将字符当做数据存储,不关心数据内容是什么),而不是一个成功一个失败。李强虽然是UTF8编码,但是在yasql按照GBK解析成功了(也是乱码,但是只要能等价转换就没有问题)。但是李不行,因为字符长度不对。看UTF8编码和GBK编码的原理,以及命令行、客户端、数据库都是如何处理字符的。尽量不要将命令行、客户端、数据库这三者的字符集配成不相同的。修改字符集到bash、yasql、yasdb的字符集一致。SQL语句执行失败。
2024-09-25 10:31:05 506
原创 【YashanDB知识库】单机升级典型问题及应急措施
官网上提供的升级rollback是针对数据库升级的rollback,对升级过程中存在的数据转换使用备份的数据做回退(ctrl/redo/undo),前提是数据库升级之前的操作都没有问题。因此,如果需要查看升级失败的日志,需要查看yasagent.log,路径是$YASDB_HOME/om/{cluster-name}/log/yasagent.log(每天一个日志文件,如果需要查看历史日志可以根据需要查找)升级过程,由于空间不足,数据库会变为readonly状态,导致升级中断。
2024-09-14 17:20:07 895
原创 【YashanDB知识库】yasql对字符串中分号的判定
oracle和崖山目前对分号的处理方法是读取一行,如果这一行的末尾是分号,就认为当前SQL结束了。而本质问题是这个分号产生了歧义,数据库并不知道究竟是操作员写错了语句,还是语句本身就是这样。这个问题发生在从pg向崖山进行数据迁移的过程中,通过pg_dump将数据导出到文件后进行执行,第一条语句执行报错,在pg上执行是不会报错的,在崖山和oracle上执行均报错。目前这个问题已经在进行修复,碰到之后可以通过修改语句解决。通过源码和oracle、pg对比测试得到问题原因。SQL语句执行报错,数据插入不成功。
2024-09-14 16:51:15 343
原创 【YashanDB知识库】yasql对字符串中分号的判定
oracle和崖山目前对分号的处理方法是读取一行,如果这一行的末尾是分号,就认为当前SQL结束了。而本质问题是这个分号产生了歧义,数据库并不知道究竟是操作员写错了语句,还是语句本身就是这样。这个问题发生在从pg向崖山进行数据迁移的过程中,通过pg_dump将数据导出到文件后进行执行,第一条语句执行报错,在pg上执行是不会报错的,在崖山和oracle上执行均报错。目前这个问题已经在进行修复,碰到之后可以通过修改语句解决。通过源码和oracle、pg对比测试得到问题原因。SQL语句执行报错,数据插入不成功。
2024-09-14 16:48:59 231
原创 【YashanDB知识库】数据库获取时间和服务器时间不一致
【问题原因分析】YashanDB并没有时区的概念,数据库的时间以数据库启动时的系统时间为准。出现这个情况有可能是数据库部署时服务器时间为0时区,因此数据库以0时区拉起,后来系统修改为东八区,但是数据库仍然为0时区,导致数据库获取时间和服务器时间不一致。检查当前客户机器的timedatectl的Time zone是否已设置为Asia/Shanghai。【问题描述】数据库获取的时间和服务器时间不一致。然后重启数据库,让数据库获取当前服务器时区信息。【关键字】服务器时间、数据库时间。【影响范围】当前所有版本。
2024-09-14 11:37:42 539
原创 【YashanDB知识库】archivelog磁盘满导致数据库abnormal
【问题原因分析】测试环境未配置备份,archivelog自动清理的忽略模式为默认值NONE,导致一直没有触发archive日志自动清理的机制,archivelog占用空间持续膨胀,直到占满磁盘。【问题描述】数据库状态变更为abnormal,检查V$DIAG_INCIDENT视图,发现提示信息为archive日志无法正常写入,磁盘无剩余空间。【关键字】磁盘空间满,archivelog日志,archivelog自动清理。【影响范围】当前所有版本。【问题分类】功能使用。
2024-09-14 11:23:44 478
原创 【YashanDB知识库】YAS-02025 no free space in virtual memory pool
【解决/规避方法】报virtual memory pool不足时,可根据实际环境调大VM_BUFFER_SIZE参数,调整后需要重启数据库生效。【问题描述】在崖山环境查询数据提示报错 YAS-02025 no free space in virtual memory pool。【标题】YAS-02025 no free space in virtual memory pool。【问题原因分析】virtual memory pool资源不足。【关键字】YAS-02025。【问题分类】业务SQL执行。
2024-09-14 11:08:22 463
原创 【YashanDB知识库】DBeaver无法访问数据库
【问题原因分析】首先通过ping和telnet检测网络连通情况,如果网络不可通,那么判断是否是由于数据库监听网段缺失导致的;然后检查JDK版本,如果JDK版本过高,那么可能是由于使用了IPV6网络。【解决/规避方法】修改DBeaver的JVM配置文件,增加如下参数:-Djava.net.preferIPv4Stacktrue。【问题描述】数据库部署完成后,无法通过DBeaver进行访问。【关键字】DBeaver无法访问数据库。【标题】DBeaver无法访问数据库。【影响范围】所有版本。
2024-09-14 10:52:55 239
原创 实时分析都靠它→揭秘YashanDB列式存储引擎的技术实现
在列存的基础下,要实现快速的查询分析,首先需要尽可能的过滤数据,减少需要处理的数据量;其中NotNull向量和Offset向量是可选的,NotNull向量用于表示列的空值信息,Offset向量用于记录变长数据的长度信息,以及完成某行数据的快速定位。基于稀疏索引的块级过滤,提前将不满足条件的Block过滤掉,降低了IO/解压/解码/行级过滤/结果集生成等步骤的开销,极大的提升了查询性能。如上图中的PN节点,其本身不持久化任何数据,元数据通过DN获取,数据从对象存储获取,因而可以根据业务需要快速的扩缩。
2024-09-14 10:08:39 766
原创 技术干货 | YashanDB+Zabbix搭建监控可视化平台,手把手实操!
Zabbix由几部分构成,Zabbix server、Zabbix proxy、Zabbix agent、Zabbix UI和DB。
2024-09-13 18:25:50 1031
原创 【YashanDB知识库】执行sql语句时报YAS-04401 data type - expected, but BLOB got异常
net驱动组装的sql语句的where中对表的每一列都组装了xx = yy的语句。修改sql语句,不要使用blob字段直接比较,影响性能,使用主键或者唯一索引定位要查询或者修改的行,或者使用dbms_lob.compare。sql语句在解析(带绑定变量)或者直接执行(不带绑定变量)时,在where语句中使用了where blob_col_name = xxxx。.net驱动的修改为更新时使用rowid进行定位具体的行,不使用具体的列比较进行定位。使用审计抓取执行的sql语句,提高问题分析效率。
2024-09-13 17:46:33 376
原创 【YashanDB知识库】修改字段长度后,jdbc驱动接口报YAS-04007 Message:result set metadata changed异常
使用jdbc接口获取PreparedStatement以后,修改表的字段长度,再用前面获取的PreparedStatement继续执行向yashandb发送请求,yashandb就会抛出YAS-04007 Message:result set metadata changed异常。现网的druid中间件开启了pool-prepared-statements,所以会触发这个异常。客户的业务在访问yashandb时异常出错,影响使用。成功以后,继续执行前面java代码。规避方法:重启业务java进程。
2024-09-06 18:14:50 389
原创 【YashanDB知识库】表数据量不多,lob数据段有大量空间,插入数据报错
lob数据因为太大,被删除后,lob自己就是一份undo数据,不插入到undo空间,所以需要保留undo_retention时间后,才能复用。2、undo_retention,如果业务插入数据频繁,且插入数据量多,建议配置小一些,按具体业务插入数据量。创建一个maxsize为3G的表空间,mydata,在该表空间创建表tmp1,该表有3个clob字段,如上。lob类型删除后,空间不会立即复用,需要等待UNDO_RETENTION时间后,空间才会复用。空间不够,插入报错,影响业务。1、往tmp1表插入数据。
2024-09-06 17:54:59 228
原创 【YashanDB知识库】主备延迟故障分析方法
【标题】主备延迟故障分析方法【问题分类】故障分析【关键字】Yashandb、主备延迟【问题描述】当数据库备机出现回放延迟时,需要通过一些手段分析延迟的原因。通过数据库的系统视图或操作系统监控数据可以辅助分析回放延迟的瓶颈。【问题原因分析】
2024-09-05 09:53:39 420
原创 依托自研力量,给共享集群存储服务一个优选
YFS作为YashanDB共享集群的存储组件,为了满足集群高可用性而研发,提升了集群存储的IO性能、解决集群元数据同步问题、承载集群部分高可用能力。内核模块确实具备最高的系统权限,可以访问从硬件相关的底层特性,到进程资源、状态等信息,不过YFS是面向YAC这样特定业务的文件系统,服务对象简单的多,在用户态有其他方案可以实现同等效果,而且成本可控。YashanDB共享集群的部署环境较复杂,内核版本繁杂,还有一些厂商定制内核,我们希望YFS是一个便携的服务,不依赖特定的内核版本。
2024-09-04 17:01:49 1115
原创 无缝连接!YashanDB DBLink技术应用实践
通过在YashanDB中创建和使用DBLink,我们验证了便捷地通过SQL访问其他的Oracle或者YashanDB数据库实例中的数据,实现方便地跨库数据访问。2)在数据库实例中实现跨实例的数据查询和更新,如Oracle DBLink。7、通过指向Oracle实例的DBLink向Oracle实例的T1表中插入数据、更新数据、删除数据。4、通过DBLink向另一个YashanDB实例的T1表中插入数据、更新数据、删除数据。6、通过指向Oracle实例的DBLink查询Oracle实例T1表中的数据。
2024-08-20 09:39:40 451
原创 【YashanDB知识库】生成迁移报告失败,“报错未知类型错误异常:“
【解决/规避方法】将java版本更新为8或者11,更新完版本之后,历史的任务需要删除重建(不然历史任务下载还是会报这个错)。【问题原因分析】java版本不对,ymp仅支持java 8和11版本,用户环境用的21版本。【问题描述】下载迁移报告时报错“未知类型错误异常:”,一长串英文。【关键字】迁移报告、未知类型错误异常。【影响范围】23.2.1.0。【问题分类】迁移报告。
2024-08-19 15:34:24 394
原创 【YashanDB知识库】共享集群YAC换IP
共享集群换IP,如果共享集群是yasboot工具部署的,那么首先要修改yasboot工具的IP配置信息。【需求描述】客户需要将已经部署的YAC集群更换IP,从测试网段切换生产网段。修改集群配置,需要关闭掉整个集群,也就是说,此时数据库不能对外提供服务。【关键字】安装部署,更换IP,运维,配置变更,高可用,YAC。【需求原因分析】YAC部署IP,从测试网段切换生产网段。核心命令:(在yasboot部署机上操作)【需求分类】安装部署,配置变更。【标题】共享集群YAC换IP。yasboot配置修改。
2024-08-19 14:57:37 254
原创 【YashanDB知识库】YMP元数据阶段二报错YAS-04204
【问题描述】数据库采用最小规格部署,机器配置2C8G,使用YMP进行数据和对象迁移,在元数据阶段二创建索引时报错:YAS-04204 number of PARALLEL must be between 1 and 4。【问题原因分析】数据库采用最小规格部署,数据库创建索引容许的最大并发度为CPU核数*2,但是YMP在配置文件中写死了创建索引并发度为5,超出数据库创建索引并发度上限。【关键字】YMP迁移,YAS-04204。【问题分类】YMP迁移。
2024-08-15 15:24:12 213
原创 运维实战来了!如何构建适用于YashanDB的Prometheus Exporter
在3.1小节中,我们通过prometheus.MustRegister(exporter)注册实例后,再通过mux.Handle(*metricsURL, promhttp.HandlerFor(prometheus.DefaultGatherer, opts))就可以完成Metrics接口的构建。综上所述,本方案中实现YashanDB监控的关键点在于——实现适用于YashanDB的Prometheus Exporter,后续我们称其为:YashanDB Exporter。小崖又收到用户投稿啦。
2024-08-14 14:48:17 793
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人