当Linux内核升级后,Oracle 数据库需要relink 执行文件吗?
前几个月有个XD的客户遇到过linux bug导致OS频繁重启,当时整理了笔记
oracle 12c后 ‘日志文件分段’可能导致LGWR slow 等待’log file sync’
2c 引入了log segment功能,针对xml格式的alert log达到某大小后自动生成新文件,解决日志过大查看和监控采集的问题,我在很多年前专门写过listener log和alert log的text格式的shell用于切换,Log writer(LGWR)进程在switch时会写db alert log, 如果在写日志时有性能问题有可能会导致LGWR进程性能问题,导致实例出现等待log file sync。
Oracle、MySQL、PostgreSQL、openGauss、达梦、OB、Tidb数据库比较系列(二十): 事务隔离级别
事务隔离级别是数据库事务处理的基础,ACID 中的 “I”,即 Isolation,指的就是事务的隔离性。ANSI/ISO SQL 标准定义了4 种事务隔离级别,对于相同的事务,采用不同的隔离级别分别有不同的结果。这些隔离级别是根据3 个“现象”定义的,
Troubleshooting Oracle 19c Wrong result cdb_data_files caused by result cache
最近遇到一个oracle 19c(19.15)的多租户环境,在查询cdb_data_files时显示的文件大小偶尔不正确的现象,这可能影响我们对于数据库空间类检测,通过分析发现在多租户环境中查询CDB_或共享对象时(sharing=object ),递归查询中使用了result cache.简单记录。
Troubleshooting Oracle 19c ora_wNNN process memory usage high
近日一银行客户巡检发现一内存使用率高的oracle 19c(19.4) RAC数据库环境,因为是linuxone拆分的多机器,内存分配不是很充足,在当前动辄1T内存可能并不易发现,分析内存使用主要是因为Oracle的多个后台进程ora_wNNN_xxx进程,每个进程PGA使用近600MB。WNNN后台进程是SMCO(Space Management Coordinator Process)的slave进程,从oracle 11g引入的智能空间预分配space preallocation的新特性,在oracle 12c后SMCO也负责生命周期管理ILM(Information Lifecycle Management).由于SMCO 或W00n在完成space preallocation过程中遇到的问题时,可以考虑禁用该特性.
Troubleshooting ORA-01466: unable to read data – table definition has changed
当事务查询或使用了flashback query(如expdp中指定了flashback_scn)中指定的时间或SCN小于表及附属对象的LAST_DDL_TIME时,会遇到ORA-01466: unable to read data – table definition has changed的报错,因为一些alter table 或truncate table等DDL操作会使表相关的UNDO数据失效,导致查询之前的数据镜像报错,提示很明显,表的结构发生了变化,常见EXPDP导出过程中,报错如下:
Troubleshooting ORA-00600 [733] [TOP CALL HEAP] When Query V$SQL_PLAN
一套oracle 11gR2数据库环境, SQL监控工具在采集SQL性能指标时,报错 ORA-00600: internal error code, arguments: [733], [1258291280], [top call heap], 记录一下该问题。
Troubleshooting ORA-600 [kkdlfjou_1] after index rebuild online session killed
希望是龙年春节前的最后一个故障, 一客户Oracle 19c RAC环境中,做index rebuild online操作进行过程中,kill重建索引的会话,后面查询索引相关的表提示如下报错:ORA-00600: internal error code, arguments: [kkdlfjou_1], [], [], [], [], [], [], [], [], [], [], []
2024年了,某客户核心还在用Oracle 9i
上周有个客户咨询Oracle数据库历史时间SQL性能变慢的问题, 还是个偏重要的核心业务,当然最终确认因为人员的一些变更操作非专业性,导致JOB未运行,产生的数据累积,思考一些问题,Oracle 9i没有AWR, 没有ASH, 甚至当时或当前国内也是没有太多的技术团队储备,是不是像极了现在的国产库现状?
Oracle、MySQL、PostgreSQL、openGauss、达梦数据库比较系列(十九): 增加列default value会表重写吗?
之前曾经在《oracle add column xx default value 增强(二)》记录过,在日常运维中增加column是常见的操作,对于大表增加列时是否会导致回写表还是只修改数据字典影响DDL的执行时间和停机窗口长短。之前也在《“alter table ” modify column in Oracle、MySQL、PostGreSQL(数据库比较系列十三)》记录修改column时不同库的表现, 这里简单记录测试一下当前主流的几个库对于add column的现象。
Oracle 12c 在bigfile表空间可能dba_segment 显示不正确的大小
在Oracle存储空间中,表空间的大小(dba_data_files size)几乎等于空闲空间的大小(dba_free_space size)加上段的大小(dba_segments size)。通常情况下,这两个值之间的差异是很小的,可能是由于一些header和bitmap block未计算在其中,但这些差异通常是很小的,以KB或MB为单位。然而,同事遇到了在一个bigfile表空间发现巨大的差异,达到了10TB以上。现在的问题是,这些空间去了哪里?
Troubleshooting Oracle 12c 导出失败expdp ORA-31626 ORA-31637 ORA-12805, exp EXP-00064
最近遇到一套oracle 12c r2 RAC 多租户 +ADG的环境, 所有PDB中使用expdp导出失败报错 ORA-31626 ORA-31637 ORA-12805, 尝试改用exp更奇怪的现象是,exp部分表报EXP-00064错误,但该表确实不是嵌套表,而且CTAS创建一个复制表就可以正常导出exp, 但expdp同样报错,表列类型就只是number,char,blob。经过反复诊断测试找到问题并还原..
Troubleshooting Exadata X8 machine node reboot frequently rds_send_remove_from_sock
最近有个客户的Oracle Exadata x8 数据库主机操作系统总是频繁的重启,重启前在DB,CRS层没有任何错误信息, 当时的OS负载也比较低,仅从exawatcher的mpstat能发现在重启前15s左右部分CPU core sys使用达100%。 操作系统有配置kdump生成了dump信息,发现在CPU在等待Watchdog detected hard LOCKUP on cpu 11, 堆栈调用中包含rds_send_remove_from_sock,简单记录。
Oracle有没有可能move Segment对象到指定的数据文件在同一个表空间?
试想一种场景:如果一个tablespace有100个数据文件, 90%+表空间USED,后来drop table 70%, 现在因为ASM DISKGROUP 紧张,要回收部分datafile(drop)归还ASM 给其它TABLESPACE使用 , 原表空间move table/lob 都是按oracle内部算法find free extent 从所有可用datafile(bitmap in header for LMT ), 目前除了新扩存储空间,move到新表空间还有其他方法吗?这是一个难题。
如何在oracle PL/SQL loop中捕获异常Exception继续?
在Oracle PL/SQL中,在循环中捕获异常并继续执行可以通过使用异常块实现。如循环kill session 可能会遇到session marked killed报错中断,或flush shared pool 中的sql时,因为有部分sql keep, 遍历时会遇到ora-6596 错误 ,下面是一个简单的示例,演示了如何在PL/SQL循环中捕获异常并继续执行:
如何Onine Move LOB段到其它表空间在Oracle 12c+ ?
在Oracle 12c中你可以使用 “ALTER TABLE…MOVE ONLINE”, 在线移动LOB段 (Large Object)到其它表空间,而不会影响在线业务. 在移动空间或整理表空间碎片场景提供了遍历,此方法适用与CLOB和BLOB。 下面演示一下使用方法。
Oracle、Kingbase、OceanBase、TIDB、达梦数据库比较系列(十八): for update nowait 报错信息可读性
前几天看到有OB用户留言,提到OceanBase很可能是出于对他们需求的考虑,而应用中以前对ORACLE报错的依赖。这表明现在数据库厂家在满足各种甲方要求时也颇为无奈,在应用的兼容性上做了种种让步。就对于会话1事务中,会话2 select for update nowait相同的报错场景,我简单测试一下在其它国产库上是否还不如Oceanbase. 为了方便横向对比,这里我再简单的附上ORACLE 与OB的报错。
Troubleshooting Standby database recover failed with ORA-19906 ORA-10576 ORA-19909
常常有客户配置oracle dataguard 1对多或级连(cascade) standby, 当需要一个测试环境时,通常考虑拿一个standby激活或snapshot dg,但如果在激活为可读写数据库时(Failover),如果提前DG参数没有清理,可能导致剩余standby database无法继续应用日志,这里简单记录。
Troubleshooting oracle CRS start fail after OS reboot ASM device(udev) unable to open
最近一个客户的Oracle 11g RAC 一个节点操作系统(Linux7)重启后,CRS无法启动,另一个节点(NODE2)未重启暂时正常。查看GI日志是Vote disk无法读取,sd设备dd正常,kfed read asmdisk失败,使用udev映射,说明问题出在udev, 简单记录该问题。
Oceanbase不建议你模仿Oracle的错误编号(ORA-NNNNN)!
故事从一个客户正在将数据库平台从Oracle迁移到OceanBase的过程中说起。在并轨生产运行过程中,应用报告了ORA-54错误号,这让Oracle的数据库管理员感到震惊,并花费了大量时间来进行分析。然而,他们最终发现这个错误是由OceanBase的驱动程序报出的。在尤其有些客户一点儿问题全中心排查躁动,这类报错让Oracle DBA分析oracle数据库,确实会让人要想爆粗,浪费了甲方的付费的乙方资源,同时还不利于故障定位。 下面对比一下oracle和oceanbase的resource busy报错。