- 博客(21)
- 资源 (6)
- 收藏
- 关注
原创 Oracle数据库物理删除数据文件后的快速修复
查看 recover 时,后台的告警日志: 可以看到,是自动使用 Online Redo Log Thread 1 Group 2进行恢复的。说明:数据库安装以后,没有做过任何的rman备份,但是只要该数据文件创建以来的redo日志没有覆盖,仍然可以恢复。恢复方式需要满足一个条件:需要完整的从数据文件创建到当前时间点的重做日志。当我们加错数据文件的位置时,一般会导致备份的失败,所以从alert日志中看到有如下报错。注意:没有任何rman备份的情况下,只要满足条件,仍可以执行下面操作。
2025-03-04 09:42:07
460
原创 如何判断数据库的 I/O 慢
如果响应时间发生显著变化,这可能是由于平均 IO 响应时间发生变化,即使新旧响应时间都小于可被视为标准的合理 IO 响应时间(例如,从 3 毫秒降级到 9 毫秒可能 对应用程序性能有重大影响,但在时间超过 20 毫秒之前,IO 可能不会被视为“慢”)。在 11g 之前,要查看的字段是"seconds since wait started",它显示了发生这个等待事件的时间从 11gR1 开始,要查看的字段是"total",即此次等待所用的总时间。要确认的字段是"total",表示等待的总时间。
2025-01-09 09:21:05
849
原创 如何使用AWR报告来诊断数据库性能问题
我们总是期望这里的值都是接近100%,但是因为应用的不同,如果这个部分的参数的某些值很小,也是可以认为没有问题的;Execute to Parse %只有94%,说明cursor重用不是很好,也侧面说明了top event的"db file sequential read"过多,表明这些SQL语句使用了selectivity不高的索引从而导致访问了过多不必要的索引块或者使用了错误的索引。这条语句的问题是它执行的太频繁了,19万次。它记录了这期间遇到的等待的总次数,等待所花费的总时间,每次等待的平均时间;
2025-01-07 14:04:02
2058
原创 国产操作系统未开启HugePages导致oracle数据库Hang死
新的项目接手一套Oracle11.2.0.4的数据库,运行在国产操作系统,通过初次巡检,发现并未开启大页,但是透明大页已经关闭,经过多方了解,之前的运维人员无法开启大页,所以做了一个定时任务每20min执行echo 3 > /proc/sys/vm/drop_caches的操作。因此,在生产环境中应谨慎使用。在实际生产环境中,Oracle数据库的链接进程比较多,每个进程都有自己的页表,如果每个进程都用到SGA的全部内存,那么按照上面计算,假设由100个进程,那么页表占用的内存空间就会达到12.8G。
2025-01-03 14:20:39
1923
原创 Oracle数据库如何找到 Top Hard Parsing SQL 语句?
因此,在数据库性能优化中,通常建议尽量减少硬解析的发生,通过使用绑定变量、优化SQL语句结构等方式来提高软解析的比例,从而提升数据库的整体性能。Oracle数据库中的硬解析(Hard Parse)是指在执行SQL语句时,数据库需要重新解析该SQL语句,并创建新的执行计划的过程。很多时候面对包或者存储过程,我们看到的"sql_id"仅仅是包或者存储过程本身的"sql_id",但对于包以及存储过程里面到底包含了哪些sql是不知道的,这时候就可以利用这一列,查出包或者存储过程里的一系列sql_id。
2025-01-02 10:20:08
480
原创 rpm报错Thread died in Berkeley DB library
您遇到的错误信息表明,系统上的 RPM 数据库存在问题,具体表现为数据库损坏或遭遇了严重错误。突然断电、系统崩溃或不正常的重启可能会导致数据库文件损坏,因为在关闭之前,数据库可能没有机会正常写入和关闭。如果多个进程(例如,两个不同的包管理器)同时访问 RPM 数据库,可能导致竞争条件,从而导致数据库损坏。手动删除或修改 RPM 数据库中的文件可能会导致重大错误,从而使交互式工具无法正确访问数据库。错误信息表明,系统上的 RPM 数据库存在问题,具体表现为数据库损坏或遭遇了严重错误。
2024-12-31 09:12:14
434
原创 使用导出ASH信息对Oracle进行问题分析
目前两条sql语句均使用索引IDX_TRANSCOR_T_SUBMIT_CUST,先进行索引范围扫描,然后回表查询相应的列值,组后做统计。发现集群等待的原因sql_id 1xc5agz3fxxa8和3gyrujtbxz66q相互等待sql语句持有的buffer,从而产生了大量的集群等待。发现涉及表T_COR相关的sql语句均为统计语句,此类语句执行对表的统计信息更新的及时性和索引选择依赖性较高。在列T_SUBMIT_DATE, BANK_ID_F,SERVICE_ID,TRF_CUR上创建复合索引。
2024-12-20 08:40:32
654
原创 Oracle数据库排查历史问题
通过上面查询已经找出出现问题时执行sql id,后续操作优化对应的SQL语句。导出数据库出现问题时间段的ASH信息。导入到其他数据库进行分析。
2024-12-19 09:25:48
337
原创 Oracle数据库启动报错ORA-07445
在Oracle数据库的启动过程中,在nomount阶段,Oracle实例启动但还未加载数据库文件时,需要操作系统分配内存以供后续使用。Oracle数据库的open阶段是数据库启动过程的最后一个阶段,这个阶段紧接着mount阶段之后。总结来说,open阶段是数据库启动过程的最终阶段,它涉及到打开数据库、启动必要的进程和服务、初始化SGA组件以及确保数据库的一致性和完整性。总结来说,nomount阶段是Oracle数据库启动的初始阶段,主要涉及参数文件的读取、实例的启动、SGA的分配和后台进程的启动。
2024-12-18 09:19:29
1001
原创 zabbix监控进程引发Oracle数据库无法启动
Linux服务器的IPC和信号量,IPC是指进程之间通信交换数据和信息的一种机制,不同进程之间通过IPC机制实现数据传输、同步和协作,而信号量是IPC实现机制中的一种方式,其他IPC方式还包括消息队列、共享内存和管道,信号量在进程间通信IPC机制中主要充当操作锁的方式,用于控制进程之间对同一资源的申请访问,避免多个进程出现同一时间访问同一资源的问题。一套之前可以正常启动的数据库,在一次重启之后,数据库无法正常启动,报信号量资源不足问题。检查信号集的使用情况,通过ipcs -s命令查看当前的信号集分配,
2024-12-17 15:48:34
800
原创 Oracle数据库的Linux内核参数优化
然而,这些参数的设置需要根据具体的硬件配置、网络环境和工作负载进行调整,并在调整后进行充分的测试和监控,以确保达到最佳的性能表现。kernel.panic_on_oops、kernel.softlockup_panic、kernel.unknown_nmi_panic 和 kernel.panic_on_unrecovered_nmi。分别设置TCP接收和发送缓冲区的最小值、默认值和最大值,这里均设置为4096字节(4KB)、87380字节(86KB)和16777216字节(16MB)。
2024-12-16 11:03:09
646
原创 Linux 操作系统调优参数的意义
该文件包含三个可配置值,这些值根据包含日志的文件系统上可用空间的数量(以百分比表示),控制何时开始和停止进程记帐。— 该文件与**/proc/sys/vm/buffermem**的工作内容一样,但它是针对文件的内存映射和一般高速缓存。— 该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。— 有选择的应答(SACK)是一种TCP扩展,允许接收方告诉发送方哪些数据包被成功接收,哪些丢失,从而提高数据传输的效率。这对于使用共享内存的应用程序非常重要。
2024-12-16 10:40:13
276
原创 RAC 环境中 gc block lost 和私网通信性能问题的诊断
不合适的MTU设置,例如:交换机上配置MTU=1500,但是服务器上的私网网卡配置成MTU=9000,这样会造成丢包,包的碎片和重组的错误,这些都会导致严重的性能问题和节点异常宕机。取决于设备的驱动程序和搜集到的统计信息数量,这类丢包是不容易被发现的,诊断这个层面的问题需要系统管理员和OS/设备的提供商的介入。监控交换机的异常,数据包处理事件,临时的或持续的吞吐量信息是非常重要的。网卡的双工模式不匹配是指,在同一个交互的链路上,一端使用的是全双工模式,另外一端使用的是半双工模式。
2024-12-11 10:40:10
811
原创 move table时报错ORA-00600 [25027]的处理
这允许开发者创建虚拟索引来查看相关执行计划而不用等到真实创建完索引才能查看索引对执行计划的影响,并且不会增加存储空间的使用。在对一张数据表进行move table方式收缩空间时,遇到ORA-00600: internal error code, arguments: [25027], [7], [0] 的错误,导致收缩失败。以ORA-00600: internal error code, arguments: [25027], [7], [0], [], [], [], [], 为例。
2024-12-04 08:54:40
828
原创 oracle19.3 RAC升级Oracle19.17
从MOS上我们可以看到19.6的RU 有GI和DB 2个版本,但从GI Patch的readme上看,GI 的Patch 已经包含了DB HOME和GI HOME的补丁,只需要用root用户执行opatchauto命令打GI的补丁即可。补丁readme中说明:GI版本更新19.17.0.0.221018包含了Oracle Grid Infrastructure home和Oracle Database home的更新,可以以滚动的方式应用。根据官方手册的说明,对于RU的升级,可以采用滚动升级的方式进行。
2024-12-02 09:46:06
1508
1
原创 undo表空间空间不释放原因及解决办法
因此,Oracle在每个数据块内部只允许存放有限数量的指针(每个指针对应一个更改块的事务),这些指针存储在块的ITL(Interested Transaction List)条目中。因此,在回滚操作中,需要维护一个事务中所有undo记录的正确排序(实际上是反向顺序)的指针链表。这意味着,管理undo块的方式与管理其他任何类型的数据块的方法是一致的,从而简化了数据库的管理和维护。当一个进程创建一条undo记录时,它通常会覆盖一个已经存在的指针,并将之前指针的值作为新undo记录的一部分保留下来。
2024-11-29 09:30:26
1084
原创 使用bbed修复ORA-01190 control file or data file 6 is from before the
ora1189也类似,之所以报这个错误,是因为datafile的某些信息跟其他的datafile的resetlog信息不同。想解决这个问题,就需要对datafile header的结构比较了解。此时创建控制文件时漏掉的datafile 现在变成了missing。方法2 使用 events 10015。删除新增数据文件重建控制文件。类似错误还有ora01189。1.模拟出ora1190。方法1 利用bbed修复。
2024-11-28 07:44:15
151
原创 通过systemstate dump转储文件分析a数据库hang原因
这个Bug在11.2.0.3上被修复,对于<=11.2.0.2的RAC,当系统中的lock element 很多的时候,如果执行level 10、266或者 267的systemstate dump时,可能会导致数据库hang或者crash,这种情况下可以采用level 258。当数据库出现严重的性能问题或者hang了的时候,非常需要通过systemstate dump来知道进程在做什么,在等待什么,谁是资源的持有者,谁阻塞了别人。生成数据库出现问题时段的 AWR 报告,也可以辅助确定数据库的相关操作。
2024-11-27 14:59:06
866
1
原创 使用bbed修复ORA-01210: data file header is media corrupt
当一个datafile处于fuzzy状态的时候,其kcvfhsta为0x04,这里是abort关闭,状态是04,不修改,如果是正常关闭,则是0x2000。查看trace文件,打开数据库时读取数据文件头1号块(文件头0号块只存放操作系统信息,包括文件大小和数据块大小,比如8192)rdba由文件号和块号组成,共4个字节,文件号占10bit,块号占22bit。修复文件头block的rdba地址(offset 4)修复文件头的表空间号(offset 332)修复文件头文件大小(offset 44)
2024-11-27 14:57:14
372
原创 bbed修改块信息
offset 8172 中包含了 col 长度信息,因此修改内容应从 8173 偏移量进行。通常 kcbh 中的 ub1 seq_kcbh @14 0xff 会标记为 oxff。使用 bbed 查询出坏块上面的相关信息。将重建新表的数据块 copy 到问题块。使用 bbed 找到当前表的相关信息。使用 verify 扫描坏块信息。## 问题 1:使用了错误的块。清除buffer cache。使用 copy 方式恢复坏块。使用 bbed 修改块内容。查看坏块临近块的信息。跳过坏块读取其他数据。
2024-11-27 14:45:46
226
原创 误删除表空间恢复操作
从归档中dump的信息中找到你之前的drop tablespace操作,找到上一个scn值。将里面所有关于原数据库的信息修改为新数据库实例名称。4.只对必须的表空间文件执行rename操作。8. 查看opt11.3操作代码的记录数量。1. 使用新pfile启动数据库。12.恢复目标表空间并跳过其他。13.开启新的数据库并查看数据。7. 查看注册归档里面的记录。用原数据库备份进行数据恢复。9.找到最开始的操作位置。创建测试表和测试表空间。原数据库生成pfile。切归档看下当前的日志。3.查看表空间备份集。
2024-11-27 14:39:22
345
p29909359_139400_Generic.zip
2019-10-29
p28186730_139400_Generic.zip
2019-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人