数据库ORA-01000错误 数据表truncate缓慢 Redhat9.4安装oracle19c-rac集群 SQL运行超时 一体机计算节点扩容失败 批量任务执行缓慢 Oracle数据库国产操作系统业务积压 坏块导致备份失败 gi安装互信步骤无法通过 OGG空间告警,数据trail文件无法自动删除 OGG复制进程延迟很高
数据库ORA-01000错误
1.3 新炬建议
1)深入理解错误本质
ORA-01000错误的直接原因 此错误通常指示数据库中的open_cursors参数设置不足以满足当前会话的游标需求。然而,这仅仅是表象,背后可能隐藏着更深层次的问题。 分析参数调整的效果 在初次尝试将open_cursors从300增加到1000后,问题未解决,这提示我们单纯增加参数值可能不是解决问题的根本方法。
参数调整的合理性 当业务研发提出将open_cursors增加到2000时,应谨慎评估这一需求的合理性。过高的参数值不仅可能掩盖潜在的程序问题,还可能带来不必要的资源消耗和性能影响。 逐步测试与反馈 在调整参数后,应通过实际业务测试来验证效果,并密切关注数据库的性能和资源使用情况。
代码审查与优化 业务团队应仔细审查应用程序中与数据库交互的代码,特别是游标的使用情况。确保每个打开的游标在完成其工作后都能被及时关闭,避免资源泄露。 资源管理策略 在应用程序中实施有效的资源管理策略,如使用连接池管理数据库连接和游标,以减少资源消耗和提高性能。
数据表truncate缓慢
数据库的结构和参数设置会随着业务的发展而逐渐变得不合理,因此定期审查和优化数据库结构是非常必要的。
通过定期审查,可以发现并解决潜在的性能问题,优化表结构和参数设置,提高数据库的整体性能和稳定性。在本案例中,如果定期进行了数据库结构的审查和优化,或许就能更早地发现并解决表初始值过大的问题。
redhat9.4安装oracle19c-rac集群
./gridSetup.sh -applyRU ./Patch/36233126 -applyOneOffs ./Dbru/36233263,./Ojvm/36199232
./runInstaller -applyRU ./Patch/35037840 -applyOneOffs ./MLR/35859251
确认软件版本兼容性 在安装之前,必须详细检查Oracle官方文档或MOS(Metalink Online Support,现更名为My Oracle Support)上的兼容性矩阵,确保Oracle 19c RAC支持Redhat9.4。在本案例中,虽然Oracle 19c本身不支持直接安装在Redhat9.4上,但通过升级补丁包可以实现兼容性。 规划升级路径 由于Oracle 19.3安装包最初不支持Redhat9.4,我们需要明确升级的具体步骤和所需的补丁包。这包括Grid Infrastructure和Oracle Database的PSU(Patch Set Update)、DBRU(Database Rollup Patch)和MLR(Media Life Rollup)等补丁。
下载并验证补丁包 从Oracle官方网站或MOS下载所需的补丁包,并验证其完整性和适用性。确保下载的补丁包与当前安装的Oracle版本和操作系统版本完全兼容。 执行补丁升级 按照Oracle官方文档或MOS文章(如本案例中的MOS参考文章2982833.1)的指示,正确执行补丁升级。在升级过程中,应密切关注任何错误消息或警告,并及时解决。 测试验证 在升级完成后,进行全面的测试验证,以确保Grid Infrastructure和Oracle Database的性能和稳定性未受影响。
创建磁盘组 在Grid Infrastructure安装完成后,根据实际需求创建磁盘组。这包括规划磁盘组的名称、大小、冗余级别等参数。 安装Oracle Database 使用升级后的Oracle安装包执行数据库安装。在安装过程中,注意选择正确的安装选项和配置参数。 数据库创建与配置 使用DBCA(Database Configuration Assistant)创建数据库,并根据业务需求进行必要的配置。
SQL运行超时问题
4.1 现象
可以通过增大日志大小来减少日志切换频率来缓解。
将临时表建立在不同于数据表所在的磁盘组, 分布IO到不同的磁盘,优化IO性能。
增大REDO LOG的容量 在处理SQL运行超时的问题时,发现大量“log file switch checkpoint incomplete”事件是导致性能瓶颈的重要因素。这表明当前REDO LOG的容量不足以应对高频率的日志切换。通过增大REDO LOG的容量,可以有效减少日志切换的频率,从而避免因此类等待事件导致的性能下降。此外,合理配置REDO LOG组的大小和数量,可以进一步提高数据库的健壮性和恢复能力。 监控与调优 除了增大REDO LOG容量外,还需要定期对日志切换的频率和性能进行监控,以确保系统稳定运行。同时,根据业务负载的变化,适时调整REDO LOG的配置,以应对可能的性能挑战。
临时表空间与数据表空间的分离 在处理过程中,观察到大量“direct path read temp”和“direct path write temp”等待事件,这通常是由于临时表空间与数据表空间共享同一磁盘资源导致的IO争用。通过将临时表空间建立在不同于数据表空间的磁盘组上,可以有效分散IO负载,提高数据库的整体性能。此外,合理的磁盘布局和配置也是确保数据库高效运行的关键因素。 存储资源评估与规划 在进行数据库设计时,应充分考虑存储资源的评估与规划。根据业务需求和性能要求,合理规划数据表空间、临时表空间、REDO LOG等关键存储组件的布局和配置,以确保系统的高性能和可扩展性。
及时更新数据库补丁 在处理过程中,发现数据库节点重启后异常停止是由于BUG导致的。这再次强调了及时更新数据库补丁的重要性。数据库厂商会定期发布补丁来修复已知的安全漏洞和性能问题,因此,及时关注并应用这些补丁是确保数据库安全稳定运行的关键措施。 补丁管理流程 建立完善的补丁管理流程,包括补丁的收集、测试、审批和部署等环节。在部署补丁前,应进行充分的测试以确保补丁的兼容性和稳定性。同时,保持与数据库厂商的密切沟通,及时了解最新的补丁信息和安全漏洞情况。
一体机计算节点扩容失败
新增节点前期环境配置(交换机端口、域名解析、用户属组、互信等); 检查数据库备份; 拷贝GI软件; 添加新增节点; 创建三个节点实例; 启动实例验证节点添加是否正常。
添加了三次都是异常终止,没有明显报错,之后一次添加一个节点创建成功两个节点,第三个节点不能加入;提SR后回复是19.5版本的RAC最多支持添加10个节点。 因为我们扩容之前是8个节点,前两次尝试是一次性添加三个节点,共11个节点,所以报错。如果需要扩容计算节点至10个节点以上,需要升级至19.20以上。
同时,也需要关注新版本的功能特性、性能改进以及潜在的兼容性问题,确保升级过程的顺利进行和升级后的系统稳定运行。
批量任务执行缓慢
检查之前SQL的索引使用情况; 检查当前活动连接; 收集统计信息; 收集信息过程中,检查活动连接; 执行测试SQL; 观察新的索引使用情况; 重新收集统计信息后,问题成功解决。
此外,对于频繁变化的表或查询,可以考虑设置自动更新统计信息的策略,以减少人工干预的成本和风险。
Oracle数据库国产操作系统业务积压
提前协调网络侧对要进行的dg源端和目标端同步主机进行限速; 在dg duplicate同步脚本的通道上使用rate 100m参数也进行限速; 尽量把duplicate同步脚本放到晚上业务低峰期跑。
opatch version
./opatch: line 839: [: too many arguments
./opatch: line 839: [: too many arguments
Java (1.7) could not be located. OPatch cannot proceed!
OPatch returns with error code = 1
rm -rf OPatch/jre
cp -r $ORACLE_HOME/jdk/jre OPatch/
--执行这条命令会提示没有权限,看上去是互信问题
cluvfy comp admprv -n hn103f0601rs1,hn103f0602rs1 -o user_equiv -sshonly -verbose
--执行这条命令会提示PRVG-0282报错
cluvfy stage -pre crsinst -n hn103f0601rs1,hn103f0602rs1
找到/oracle目录下所有的cvu_config文件,确认是否都去掉了oel5的注释#
Find oracle -name cvu_config
#CV_ASSUME_DISTID=OEL5
把这行的注释#去掉,修改后
CV_ASSUME_DISTID=OEL5
提前规划与协调 在进行大规模的数据库DG同步时,必须提前与网络团队协调,确保有足够的带宽资源。同时,制定详细的网络使用计划,避免高峰时段进行高带宽消耗的操作。 限速措施 在DG同步脚本中采用限速参数(如rate 100m),以减少对网络的冲击。此外,还可以考虑使用网络设备的QoS功能来进一步管理带宽。 时间管理 将高带宽消耗的操作安排在业务低峰期进行,以减少对正常业务的影响。这要求项目团队具备高度的灵活性和时间管理能力。
严格版本控制 在升级Opatch或其他关键工具时,必须严格控制版本兼容性。对于旧版本的数据库软件,避免升级到过高版本的Opatch,以免出现兼容性问题。 环境一致性 确保所有数据库节点的环境配置一致,包括JDK/JRE版本、环境变量等。这有助于减少因环境差异导致的补丁安装问题。 详细日志与错误排查 在补丁安装过程中,开启详细日志记录功能,以便在出现问题时进行快速排查。同时,对于常见的错误代码和提示信息,应提前准备相应的解决方案。
深入排查互信问题 当遇到看似互信问题但实际上互信验证通过的情况时,应深入排查系统配置和权限设置。特别是针对新版本的数据库软件,可能存在未知的兼容性问题或配置要求。 修改配置文件 在某些情况下,修改系统配置文件(如cvu_config)以匹配特定的环境要求可能是必要的。然而,在修改前务必备份原始文件,并确保了解修改的影响。 权限管理 确保所有关键目录(如/tmp)具有正确的权限设置。尽管某些目录看似权限无误,但在特定操作或软件版本下仍可能出现问题。因此,在出现问题时应重新检查并调整权限设置。
坏块导致备份失败
rman-03009 ora-19566:exceeded limit of 0 corrupt blocks for file ....
--通过添加参数允许在备份中包含1个损坏的快,参考文档Doc ID 1900424.1 set maxcorrupt for datafile 229 to 1; --重新格式化不属于任何对象的坏块,参考文档Doc ID 336133.1 这个操作起来步骤就比较多了,主要过程是新建一个对象,把这个损坏的块分给这个新对象以让这个逻辑坏块重新被格式化。
考虑引入更高级的数据保护技术,如数据镜像、快照或云备份等,以提高数据的安全性和可用性。
gi安装互信步骤无法通过
PRVF-4008 :User equivalence unavailable on all the specified nodCause: User equivalence doesn't
PRVF-4098:User equivalence not found for node ""xxxxxxxx""
$ ssh ***1 date
Warning: Permanently added 'xxxxxxxx' (ECDSA) to the list of known hosts.
Thu Aug 8 17:44:46 CST 2024
PRVG-2019 : Check for equivalence of user ""grid"" from node ""xxxxxxx1"" to node ""xxxxxxxx2"" failed
PRKC-1044 : Failed to check remote command execution setup for node xxxxxxxx2 using shells /usr/bin/ssh and /usr/bin/rsh
xxxxxxxxx: Connection refused
su – grid
ssh ***db1 date
ssh ***db1-priv date
ssh ***db2 date
ssh ***db2-priv
网络配置或安全加固设置(如防火墙、SELinux、SSH配置等)可能会影响节点之间的互信配置。务必检查网络配置是否允许所需的通信协议和端口,以及安全加固设置是否会阻止必要的网络操作。通过系统日志和网络配置检查,确保所有相关设置不会干扰正常的互信过程。
ogg空间告警,数据trail文件无法自动删除
stop pum-p
命名规范 确保源端和目标端的Trail文件在命名上有明显的区分,例如通过前缀或后缀来区分,以便管理进程能够准确识别并处理。 配置明确 在GoldenGate的配置文件中,明确指定源端和目标端Trail文件的存储路径和命名规则,避免混淆。
定期审查日志 建立定期审查GoldenGate日志的机制,特别是关注与清理策略、文件切换等相关的日志信息。 增强日志记录 如果当前日志记录不够详细,可以考虑调整GoldenGate的配置,增加相关日志记录的详细程度,以便更好地跟踪问题。
在本案例中,由于usecheckpoints参数的使用,管理进程在清理文件时过于保守,导致大量不再需要的Trail文件被保留。
OGG复制进程延迟很高
调大的trail文件保留时间。 查询延迟时段的慢SQL,优化慢SQL,主要是调整统计信息。 夜间业务较多,将原来的复制进程拆成多个进程。
新炬运维避坑指南连载合集链接:

本文作者:秘而不宣(上海新炬中北团队)
本文来源:“IT那活儿”公众号





