“alter table ” modify column in Oracle、MySQL、PostGreSQL(数据库比较系列十三)
‘alter table’ DDL操作后期运维时比较常规的操作,但在oracle,MySQL,PostGreSQL中行为并不相同,Oracle还是三者中代价最低的,但是在Oracle DBA转向其它数据库运维时,以O的经验维护像MySQL、PostGreSQL时修改列的小动作可能会出现故障,比如空间耗尽、持续时间长、锁、执行计划变等现象。这篇分别测试一下三个数据库在ALTER TABLE modify column上的影响。
Troubleshooting ORA-00600: internal error code, arguments: [kcbbxsv_nwp] and opatch fail one-off patch
几年前在某个客户查看Oracle数据库 RAC补丁时发现节点间存在不一致的现象,当时在这篇《Using ‘opatch lsinventory’ show patched is real? (看到的补丁信息真的靠谱么?) 》记录过, 最近又遇到了一片“沼泽地”环境,运维人的窘境是无法要求建设阶段如何规范化,什么样的环境都要接,即使到处是坑。这里再分享一例有个ora-600错误引起的一系列问题。
如何在Oracle 19c expdp/impdp 脚本中不使用密码?
MySQL中容易泄露数据库用户密码的地方,如shell、SQL的历史记录、主从复制等,当然也包括部署的一些数据库脚本,如逻辑导出,Oracle也不例外,好多用户在用户密码复杂度上很苛刻,但如在数据库中部署的如RMAN、EXPDP等脚本还是明文的密码那就比较不规范,
PCTFRR for index and HOW to find index blocks by key value?
pctfree常用于控制block中预留的空间,对于table insert是发现超过pctfree后分析新空间,但是对于index对象PCTFREE只是在创建索引时(create or rebuild)生效,平时的DML后并不会保留该空间甚至会耗尽做index block split, 之前写过一篇Oracle 12c: index treedump, 这里再延伸一篇,如果根据index key entry查看index block.
如何检查Oracle Dataguard Gap?
Oracle DataGuard是Oracle DATABASE的容灾方案,在负载不是极高的情况下,异步模式最大性能下确实像宣传的那样可以压秒级同步(async), 也有一些金融客户对容灾要求极高配置DG为同步(sync)最大可用模式,会牺牲一些提交时的性能确认standby 反馈后给应用进程完成commit。 那常用的异步最大性能模式如何查询primary与standby之前的gap时延差异,oracle提供了一些view
Oracle Data Redaction 19c 数据脱敏
前几天见有客户咨询表列数据只让部分用户可见的访问控制问题,Oracle数据库在数据安全上的解决方案也是相当优秀的, 除了权限配置,还有加密与脱敏功能与组件,如列级TDE加密和Data masking对真实数据有修改,同时安全访问还有VPD、DV、 Data Redaction白皮书此类不修改原始数据。这里简单总结分享Data redaction功能特性。在EDB数据库发现同样实现了该功能。
RHEL7(Linux7)安装Oracle 12c RAC 问题小结
之前总结过一篇RHEL7(Linux7)安装Oracle 11g R2(11.2.0.4) RAC 问题小结, 这里记录一个12c安装姊妹篇, 现阶段oracle数据库版本虽然已经不在主推12c,但存在一些客户安装12c时的问题, 这个版本确实存在很多不成熟的地方,在DB安装OUI阶段可能就几个问题。
How to trace DB processes system calls using Strace -k
当前数据库种类较多,像oracle等闭源数据库在诊断特殊疑难问题时需要分析内部C函数的call stack, 目前的oradebug short_stack或errorstack,linux系统中的pstack只是dump当前的调用, 还有现在的开源数据库虽然可以查看源代码,但是没法较方便的方法在运行的进程过程中持续跟进多个内部调用的call stack. 增加了故障分析的复杂性和诊断时间, 这里看到了一种使用strace跟踪的方法记录一下。
Troubleshooting ORA-00600: internal error code, arguments: [ktubko_1] Instance terminated
前不久广州某客户Oracle 11.2.0.2 on Linux一套虚机环境,在线扩容了cpu和memory后数据库出现在ora-600 [ktubko_1] 反复重启, 一个事务回滚相关的内部错误,当然在线修改硬件资源这个操作是不建议的,这里记录一下ra-600 [ktubko_1]应急处理方法。
LOB 不当的RETENTION 会导致严重的空间浪费(二)
之前记录过一篇关于lob 《 LOB 不当的chunk size会导致严重的空间浪费》,最近一个案例关于enq:hw 的wait event在lob段,而SQL语句是一个update,发现也存另一种情况因为retention过大,导致的lob快速扩展,简单记录。
再议oracle 19c 密码 “password” “spare4”
之前已经记录过多篇关于用户密码的问题, 今天又看到一则19c 在XTTS升级时,用户创建拼密码SQL脚本失败的问题,对于拼接user$.password和user$.spare$列时值错误,导致密码不能登录问题,对于19c中2个字段值哪种情况下没有值,简单的测试记录。
Troubleshooting CRS Node Evictions on RHEL7 hang messages show ‘NMI watchdog: BUG: soft lockup’
最近上海某客户一套ORACLE RAC发生1节点驱逐, 问题前CPU利用率并不高, CRS日志有I/O响应和IPC超时错误, 部分进程hang死,操作系统是RHEL7.5, 在操作系统meesage提示如下信息:
“kernel: NMI watchdog: BUG: soft lockup – CPU#25 stuck for 22s!”
oracle add column xx default value 增强(二)
oracle11g add default values columns(增加默认值列的改进)11年前 学习oracle初期测试过oracle 11g相对oracle 10g的增强, 对于增加列default not null 时只增加数据字典定义,而不有update 表现有数据,给对于大表比如上亿记录的列增加带来不小的提升, 今天看到同事在使用ogg 从19c to 11g同步DDL 又看到了这个现象。
Troubleshooting Oracle 11.2.0.4 frequently ORA-8103 on Local non-prefixed index
最近遇到了2个客户出现在11.2.0.4环境中频繁出现ora-8103的问题,基本上都是索引对象object mismatch, 重建后过段时间会再现, 该类问题使用rman validate logical 还无法发现,算是当前oracle软件的一个未知bug.
Oracle background process DBWR trace file not found?
近日分析一个数据库checkpoint long time 未完成的一个case时,本想分析dbwr trace file中看看是否有报错,发现dbwr的trace file并不存在,并且重启数据库后也并未生成,发现这并非个案,好多环境中dbwr trace不存在, 下面记录一种启用方式。
Oracle logminer笔记(四) 19c 多租户
10多年前测试过10g的logmnr用于从redo或archivelog中分析DDL DML记录, 当做一些误操作无法flashback技术恢复或无备份时,可以尝试用来从redo log中恢复一些操作, 最近测试了一个19c多租户环境中的logmnr,记录如何恢复某个PDB中deleted 记录。
Troubleshooting Oracle 19c RAC CSSD process cannot get real-timepriority
When CSSD process is unable to get real-time priority and is not running in real-time, it may lead to various HA issues. From 19c, this is treated as a fatal error.CSS cannot start normally if failed to get real-time priority.
Performance tuning ‘free buffer waits’ and ‘db file async I/O submit’
环境Oracle 11g(11.2.0.4) on RHEL6.9, 文件存储在SATA SSD的文件系统,每秒redo 50-100MB, 存在部分时间段40多组2GB online redo logfile 同时”active”状态的现象,cpu使用率60%左右。除了优化checkpoint外发现有2个少见的TOP event, 查看FG top event为’free buffer waits’, BG top event为 ‘db file async I/O submit’。
multi-version read consistency in Oracle、MySQL、PostGreSQL(数据库比较系列十二)
ANSI/ISO SQL 标准定义了4 种事务隔离级别,对于相同的事务,采用不同的隔离级别分别有不同的结果。这些隔离级别是根据3 个“现象”定义的,在Oracle 中READ COMMITTED 则有得到读一致查询所需的所有属性,在其他数据库中的读READ COMMITTED 可能会有不同的答案, 最近有个客户在测试migrate oracle to postgreSQL测试发现一个批处理的结果并非一致,
VIEW dependencies in Oracle、MySQL、PostGreSQL(数据库比较系列十一)
在有些程序员开发习惯中,喜欢为了应用代码的简洁或复用,而在数据库创建一个复杂关连查询的VIEW,甚至是VIEW套VIEW嵌套使用, 这里就有个问题如果上线后如发现依赖的表字段类型或长度不足时,修复一个view依赖的table列时发现在oracle、mysql、postgresql(本篇等同pg)中有不同的表现, 尤其是使用postgresql的用户需要格外注意, 因为pg 不允许直接修改