- 博客(218)
- 收藏
- 关注
原创 oracle limit限制
摘要:本文探讨了Linux系统资源限制配置文件的优先级问题。网络观点认为优先级从高到低依次为:/etc/security/limit.d/20-nproc.conf、/etc/security/limit.conf、~/.bash_profile和/etc/profile。作者提出不同见解,认为用户级配置文件(~/.bash_profile)优先级最高,其次是/etc/profile,最后才是limit.d和limit.conf文件。文中详细说明了如何配置limits.conf文件(设置nproc和nofi
2026-02-11 11:25:31
557
原创 ORA-00800: soft external error, arguments: [Set Priority Failed], [VKTM] (Doc ID 2718971.1)
摘要:本文介绍了Oracle数据库系统优化配置的检查与调整步骤。主要包括:1)检查oradism文件权限设置;2)验证数据库进程优先级,确保VKTM为最高优先级;3)检查Cgroup配置,包括CPU实时运行时间参数(cpu.rt_runtime_us)的设置。对于临时修改使用echo命令,永久修改需通过编辑/etc/cgconfig.conf配置文件并重启cgconfig服务。最后建议重启服务器使所有配置永久生效。这些优化措施有助于提升Oracle数据库性能。
2026-02-11 11:22:22
1058
原创 ORA-01157 ORA-01110 ORA-27046(数据文件block size)
摘要:数据库恢复过程中发现8号数据文件因存储/虚拟化问题导致文件头损坏,文件大小未达到8K倍数(实际大小为3654145.921875块)。通过计算缺失640字节后,使用dd命令向文件末尾补零(dd if=/dev/zero bs=1 count=640 >>文件路径),使文件大小恢复为整数块(3654146*8192)。修复后成功继续恢复操作,但后续检查发现仍存在坏块需进一步处理。该问题凸显了存储异常对数据库完整性的影响及手工修复的关键作用。
2026-02-11 11:20:20
261
原创 脑裂细节(驱逐依据)
摘要:Oracle RAC从19c开始引入节点权重机制(CSS_CRITICAL)来决定脑裂时的节点保留策略。优先级顺序为:存活节点数(CohortSize) > 节点权重(Weight) > 最小节点号(lowestnumberednode)。可通过两种方式调整权重:1) 直接设置CSS_CRITICAL=yes并重启集群;2) 通过srvctl创建服务时指定权重。当cohortsize相同时,权重高的节点优先保留;若权重相同,则保留编号较小的节点。该机制需在CSSD日志中确认生效情况。(14
2026-02-11 10:16:13
320
原创 综合性进程梳理、学习
Oracle集群守护进程管理架构摘要: Oracle高可用服务守护进程(ohasd)作为核心进程,通过/etc/inittab启动后,会派生4个关键代理进程(oraagent、orarootagent、cssdagent、cssdmonitor)来管理集群初始化。这些代理进程分别负责启动特定的守护进程资源,如gipcd、gpnpd等用于集群引导,ctssd处理时间同步,cssd维护集群一致性。CRSD守护进程则管理其他集群资源,包括ASM实例、HAIP网络和集群健康监控(CHM)。整个启动过程呈现层级化管理
2026-02-11 10:13:58
324
原创 gipc介绍
摘要:Oracle集群中私网分为两类通信:1)集群层面的心跳和管理通信(如ocssd.bin、crsd.bin),由gipcd守护进程管理;2)数据库实例间高负载通信(如ASM/RAC实例),由HAIP负责。gipcd负责私网网卡发现、节点连接及故障处理,但不传输具体数据。当HAIP故障时仅影响数据库实例,而集群层面仍能保持一致性。这种架构实现了集群通信与业务通信的分离管理,提高了系统可靠性。(149字)
2026-02-11 10:12:28
291
原创 gpnp介绍
Grid Plug and Play(GPnP)是Oracle集群的自动配置机制,由GPnP Wallet和GPnP Profile组成。Profile是一个XML文件,存储集群启动所需信息(如网络配置、集群标识等),通过gpnptool工具管理。当配置变更时,GPnP守护进程(gpnpd)通过多线程协作实现信息同步:主线程加载Profile,派遣线程协调通信,推送线程传输更新到所有节点。若本地Profile丢失,可从OLR重建。该机制使集群配置更灵活,减少对OCR的依赖。
2026-02-11 10:10:51
293
原创 OLR介绍
摘要:Oracle 11g R2引入OLR(Oracle Local Registry)作为集群本地注册表,存储GI home、集群版本及初始化资源信息。OLR位于各节点的<gi_home>/cdata/<节点名>.olr,通过ocrdump-local可查看内容。与OCR不同,OLR仅在安装时自动备份,建议配置变更后手动备份(ocrconfig-local-manualbackup)。OLR损坏时只能使用本地备份恢复(ocrconfig-local-restore),并可通过ocr
2026-02-11 10:09:31
382
原创 Root.sh的作用
摘要:Oracle集群配置流程主要分为10个阶段。1节点首先读取初始化参数,完成前置检查后创建OLR和gpnp配置文件,部署启动脚本并启动ohasd服务。随后以独占模式启动集群,初始化ASM实例、OCR和裁决盘后转为普通模式运行,最终完成CRS资源配置。2节点启动时发现已有节点运行,直接以普通模式加入集群。整个流程通过检查点文件跟踪进度,涉及网络配置、时区设置等基础环境准备,以及多阶段资源初始化和集群模式切换。
2026-02-11 10:07:54
226
原创 buffer busy waits定位热块
摘要:实验演示了Oracle数据库中的"buffer busy waits"等待事件。通过创建测试表tb1并启动两个会话循环更新不同行数据(会话1更新id=2,会话2更新id=1),在第三个会话中查询发现两个会话都出现了buffer busy waits等待事件。进一步定位发现热点块(file#=4,block#=5471)属于HR用户的TB1表。这种现象通常发生在多个会话频繁访问相同数据块时,导致缓冲区争用。实验完整展示了从问题现象到定位热点对象的过程。
2026-02-11 10:02:36
302
原创 Buffer cache的逻辑I/O和物理I/O
摘要:本文介绍了Oracle数据库中的I/O操作分类及统计方法。逻辑I/O指在buffercache中完成的读取操作,分为一致读(select)和当前读(DML/DDL),通过v$sysstat可查看统计信息。物理I/O则涉及磁盘设备,统计时需区分块数和次数,IOPS和吞吐量是评估I/O性能的关键指标。文章还详细描述了逻辑I/O的执行流程,包括bufferpin锁的使用模式、数据从buffercache到PGA的复制过程,以及arraysize参数对逻辑读次数的影响。
2026-02-11 09:45:22
252
原创 CBC latch争用
摘要:本文分析了Oracle数据库中CBClatch的两种竞争情况:热链竞争(不同进程访问同一CBClatch保护的不同链表和BH)和热块竞争(访问同一链表下的同一BH)。通过实验模拟热链竞争场景,展示了如何定位特定数据块对应的latch地址及受保护的buffer对象。最后提出解决思路,包括调整隐藏参数_db_block_hash_latches和_db_block_hash_buckets来重新分配BH和HASH Bucket的对应关系,从而缓解竞争问题。案例基于SYS.SMON_SCN_TIME表进行演
2026-02-11 09:41:02
868
原创 SQL Tuning Advisor(STA)使用方式
本文介绍了Oracle SQL调优任务的创建和执行过程。首先通过CREATE_TUNING_TASK函数创建优化任务,指定SQL语句、执行用户、优化范围等参数。然后使用EXECUTE_TUNING_TASK执行任务,并通过DBA_ADVISOR_TASKS视图监控任务状态。最后使用REPORT_TUNING_TASK获取优化报告,报告中显示两个表缺少统计信息,建议收集BIGTAB和SMALLTAB表的统计信息以提高查询性能。优化报告还包含原始执行计划分析,显示当前查询使用了全表扫描和哈希连接操作。整个过程展
2026-02-11 09:35:47
553
原创 绑定执行计划
本文介绍了两种SQL优化方法:1)coe方法通过执行脚本coe_xfr_sql_profile.sql,输入SQL_ID和plan_hash_value生成并执行SQL Profile脚本;2)SQL Tuning Advisor(STA)方法通过dbms_sqltune包创建调优任务、执行任务并生成报告,报告包含优化建议和执行计划对比。测试案例中,对T1和T2表的连接查询进行了优化分析,STA方法推荐了更优的执行计划,并可通过accept_sql_profile存储过程接受优化建议,创建SQL Profi
2026-02-11 09:34:12
918
原创 ORA-39083 ORA-00904(扩展统计信息)
摘要:本文分析了Oracle数据库从11g迁移到19c时遇到的ORA-39083和ORA-00904错误,涉及扩展统计信息(extension statistics)的问题。通过创建测试表ZKM.TEST,对比了函数索引和普通索引的区别,发现函数索引会产生虚拟列(SYS_NC00004$)。使用DBMS_STATS.CREATE_EXTENDED_STATS创建扩展统计信息后,虽然导入可能不报错,但扩展统计信息实际缺失。建议可在迁移后直接在19c环境重建扩展统计信息,此错误可忽略处理。
2026-02-05 09:40:13
387
原创 ORA-00054: resource busy and acquire with NOWAIT specified
本文介绍了Oracle数据库中终止会话以解锁表的两种方法。第一种通过查询v$transaction和v$session视图找到锁定特定表(如DEF.D)的会话,生成kill语句终止会话;第二种简化版直接使用v$session和v$lock视图。文章还提供了自动生成kill语句的SQL脚本,包括固定表名版本和交互式输入版本(通过&owner和&table参数),可输出包含实例ID、会话ID等信息的完整kill命令。这些方法适用于需要强制解锁表以进行维护操作(如数据迁移)的场景。
2026-02-05 09:35:11
635
原创 log file sync排查方向
log file sync 数据库性能问题分析摘要:1.高频率事务处理(123万次提交,每秒339次);2.I/O瓶颈表现为logfile parallel write等待事件(正常应<20ms),需检查LGWR日志和I/O指标;3.日志缓冲区过大;4.CPU负载过高;5.RAC私有网络延迟导致LMS同步问题;6.控制文件争用(可能因RMAN、ASM磁盘I/O或v$视图频繁访问);7.已知Bug 11203(DocID13074706.8)。建议检查AWR报告中KeyInstanceA
2026-02-05 09:31:47
267
原创 oracle一次卡顿案例(九)
摘要:2025年1月10日08:20,hihis数据库出现卡顿,客户尝试重启服务器未果。工程师08:33介入排查,发现directpathwritetemp等待事件异常,定位到问题SQL(69w0duhr38pkt)导致PGA内存过度使用。分析发现该SQL存在多个执行计划且性能差异大,通过绑定更优执行计划(hashvalue3881640883)后业务恢复。08:55完成容灾切换,最终故障原因为SQL执行计划抖动导致PGA内存溢出。
2025-12-09 09:52:15
732
原创 oracle基础sql优化案例(一)
摘要:本文分析了AWR报告中抓取的SQL性能问题,针对包含5个UNION ALL部分的复杂查询进行了优化。通过评估各部分的表关联关系、选择性条件和索引使用情况,提出了创建组合索引(jzlx, send_flag, jlxh)和ms_brda表的brid索引等优化建议。优化后SQL的DBTIME下降了35%,成功从AWR报告中消除了该性能问题。主要优化点包括:识别低选择性条件、优化嵌套循环连接、统一相似查询部分的索引策略。
2025-12-09 09:41:55
473
原创 oracle轮流重启rac节点故障
摘要:2025年11月6日19:00起对HIS库1节点进行内存更换操作时出现业务中断。问题源于关库时存在未决分布式事务,导致19:46强制关库后触发RAC机制对未提交事务回滚,造成服务器资源崩溃。监控显示19:51-20:14期间IO满载,CPU等待队列过高,导致2节点关键服务异常。虽然20:15节点重启后IO恢复,但资源耗尽仍使业务无法连接,直至20:44完成SCAN切换后业务恢复。根本原因为长时间事务回滚引发的资源过载连锁反应。
2025-12-09 09:31:24
373
原创 oracle一次集群故障案例
故障简述客户RAC节点2集群无法启动。操作系统linux 6数据库版本11.2.0.4 RAC步骤动作【检查环境】检查集群日志,确认异常节点2集群无法读取Voting File导致。【OCR磁盘组修复】通过NFS临时添加OCR磁盘。添加成功,Voting File问题修复。【RAC部分进程端口号冲突】通过排查发现节点1、2的rac进程,发现节点1的gipc、mdns进程存在端口号占用问题,kill并恢复。【网络异常修复】节点2 CSSD无法启动,GIPCD网络通信异常,关闭防火墙。【重启测试】重启服务器操作
2025-02-06 10:30:38
902
原创 oracle一次卡顿案例(八)-latch free+mmon
mmnl进程从gv$session视图(从X$KSUSE基表获取)采集信息到中,并且被获取到X$ASH基表中,默认1秒一次(,单位毫秒)。视图从X$ASH基表读取数据,由mmon进程将视图信息持久化到基表中。视图从基表读取数据,默认10秒一次(,秒)。awr报告数据从视图获取。
2025-02-06 10:25:14
963
原创 ORA-15196: invalid ASM block header [kfc.c:26383] [endian_kfbh] [1] [5137] [255 != 1]
由于xx库在2024年5月31日上午出现归档日志异常增长现象,导致asm磁盘组空间被撑满。应急处理删除部分归档,后续规划进行磁盘组扩容,计划晚上添加两块1T磁盘。由此导致了DATA磁盘组的状态异常。本次故障由于添加磁盘组沟通检查不到位,误将原有rman备份磁盘(双节点共享盘,二节点mount)newdata03作为新增扩容磁盘添加进磁盘组导致。2024年5月31日22:38客户反馈,业务在2024年5月31日22:33左右无法连接。2024年5月31日7:59,反馈磁盘划分完成同步挂载2块1T磁盘。
2024-06-05 10:07:24
712
原创 ORA-04031 unable to allocate bytes of shared memory(无法分配xxxxx共享内存)(shared pool)
针对该次shared pool的问题进行的记录。XXX集团2024-05-09前经常受到ORA-04031报错困扰,一直报的是shared pool,所以客户自己将shared pool手动配置了20g,还是报错,再配40g,还是报错,找我司来进行排查。发现7个sub pool都是SQLA和KGLH0过高,加起来占6成左右。发现 SQLA和KGLH0过高,确认方向。在不同版本为不同bug.删除pdb级SHARED_POOL_SIZE和/或SGA_MIN_SIZE初始化参数。
2024-05-28 17:44:43
2274
原创 pg的mvcc机制
如果回卷前,比较事务id大小即可知道先后顺序,如果发生了回卷,小的id可能比大的id更时间靠后。解决回卷的问题,最早和最新的事务最多差231,超过就会把旧事务换成特殊的事务id,也就是FrozenTransactionId=2,冻结的事务id,再做比较,就会认为正常的事务id比冻结的id更新。所以数据库系统第一个正常的事务ID是从3开始的,然后连续递 增,达到最大值后,再从3开始。第一种:写新数据时,把原数据移到一个单独的位置,如回滚段中,其他用户读数据时,从回滚段中把原数据读出来。
2024-04-25 09:22:05
962
原创 pg的两阶段提交
3.各台数据库收到prepare transaction命令后,返回成功,数据库将自己处于如下状态:确保后续被要求commit、rollback的时候可以commit和rollback,2.事务协调器,连接每台数据库,通知他们准备提交(第一阶段的开始),pg中一般是调用。5.在第二阶段,如果有的数据库第一阶段失败,则事务协调器会发送回滚命令“1.各台数据库做操作,不提交事务。应用程序调用事务协调器中的提交方法。如果数据库无法完成此事务,它会直接返回失败给事务协调器。4.事务协调器接收所有数据库的响应。
2024-04-25 09:16:51
852
1
原创 pg用户、角色、权限
INHERIT|NOINHERIT:如果创建的用户拥有某个或某几个角色,这时若指定INHERIT,则表示用户自动拥有相应角色的权限,否则该用户没有相应角色的权限。·IN ROLE role_name [,...]:指定用户成为哪些角色的成员,请注意,没有任何选项可以把新角色添加为管理员,只有使用独立的GRANT命令才行。·LOGIN|NOLOGIN:创建出来的用户是否有LOGIN权限,可以临时禁止用户的LOGIN权限,此时用户无法连接到数据库。当然只有超级用户才能创建超级用户。
2024-04-25 09:14:29
1180
原创 sql server非域控alwayson搭建
Power Shell 脚本: New-Cluster -Name hzmc.noad.com -Node WIN-150,WIN-151,WIN-152 -StaticAddress 192.168.238.153 -AdministrativeAccessPoint DNS(需要修改的,具体情况具体分析,跑之前记得确认前面改完机器名有没有。既然节点没有加入域,那么就不能用域认证,只能用证书认证,因此需要创建证书和端点。节点上都添加一个用户,且用户名以及密码每个节点都一致(在计算机管理里设置)
2024-04-18 16:41:33
2051
原创 oracle rac节点重构(增删节点)的常见报错
跑addNode.sh过程中一般会碰到2个常见报错。PRKC-1025 : Failed to create a file under the filepath /oracle because the filepath is not executable or writable 。Exception java.lang.OutOfMemoryError: Java heap space occurred.. java.lang.OutOfMemoryError: Java heap space
2024-04-18 15:11:49
656
原创 oracle gpnp介绍
功能是保存需要访问的gpnp profile文件的客户签名信息,当客户访问gpnp profile时通过wallet中的签名信息进行验证,确保只有指定的客户能访问profile文件。如果本地的gpnp profile丢失,可以通过OLR中的信息重新构建gpnp profile。gpnp profile中部分信息是集群信息(集群名称、公网私网定义等等),那么这些信息改变后,如何实现信息的同步?表示集群的私网信息。1)将集群的基本配置信息保存在本地,以便在启动集群时能够从本地文件中获得足够的信息,而。
2024-04-16 17:45:41
2505
原创 oracle control file sequential read处理
从异常时间点和正常时间点AWR中对比control file 相关evvent waits和IOStat by Filetype summary, 发现正常时1小时也有800多万次wait,但是平时AWR 控制文件读avg time为300 us, 所以判断问题时是I/O 比平时慢了。(block#) 40 * (confile file block size) 16k/ (_asm_stripewidth) 128k=5. 第1条带的第5个AU 上,第1个128k.
2024-04-16 09:00:00
1132
原创 ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O(添加asm磁盘,rebalance)
添加磁盘的时候碰到的,rebalance到最后,时间0,但是就没成功,asm日志报错了。等待,大约20+分钟才成功。不需要重启集群和实例。
2024-04-12 12:05:42
531
原创 ORA-24001: cannot create QUEUE_TABLE, SYS.KUPC$DATAPUMP_QUETAB_1 already
5、到此没有无效组件,如果有,重启实例,继续报错。2、删除datapump queue表。无效对象中有datapump组件。
2024-04-12 11:57:10
464
原创 ORA-00445:backaround process “w000“ did not start after 120 seconds
在oracle中,多个进程共享相同地址的共享内存,特别是父进程派生出子进程的时候,父进程告诉子进程的内存对象地址,应该是一致的。启用了ASLR,如果是不同的进程读取,就会给随机的offset偏移量,导致不同的进程,即使是同一个对象,得到的地址是不同的。linux系统有个内核新特性ASLR,是一种针对缓冲区溢出的安全保护技术, 内存地址随机化机制,当内存不足的时候就会出现预警,查看数据库服务器发现64G内存紧张时只剩几百兆,结论为数据库内存不足时导致数据库hang住,无法处理新的进程,导致卡住。
2024-04-12 11:50:53
1365
原创 sql server Alwayson查看传输进度
log_send_rate:主副本实例在上一个活动期间(kb (KB)。log_send_queue_size:主数据库中尚未发送到辅助数据库的日志记录量 (KB)。redo_queue_size:辅助副本的日志文件中尚未重做的日志记录量 (KB)。redo_rate:在给定的辅助数据库上重做日志记录的平均速率(kb (KB)。在给定的辅助数据库上重做日志记录的平均速率(kb (KB)。主数据库中尚未发送到辅助数据库的日志记录量 (KB)。辅助副本的日志文件中尚未重做的日志记录量 (KB)。
2024-04-11 14:17:52
793
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅