Oracle19c 建议的 One-off patch之disable LAST SUCCESSFUL LOGIN TIME

之前分享过12c后关于用户登录的新特性笔记《Oracle 12c New Feature: Last Login Time for Non-Sys Users》, 此特性对于分别哪些用户长时间未登录(不使用)非常有用,从是从12c开始一直到当前最新的RU19.12 ,都没有在RU中打包关闭该特性的方法。前几年在12c就遇到过较高的library cache lock是与该特性有关,用户无法登录,当时的SQL 更新user$, namespace为Last_Successful_Logon_Time,此问题特性只到21C base版本才引入了隐藏参数来禁用。

,

Oracle Audit write syslog(数据库审计写系统日志)

之前分享过如何把GoldenGate写入syslog的笔记 Oracle goldengate write syslog(ogg 写系统日志),今天有同事问如何把audit 日志记录syslog, 简单研究一下,syslog是操作系统级协议,

,

如何在Oracle 数据库内格式化SQL 或PL/SQL ?

有时在输理复杂的SQL或pl/sql代码逻辑时最好是格式化一下文本,当然我们有toad或plsql developer等其它第三方客户端程序,如果能在数据库内容可以格式化一下SQL更佳,当前数据库12C以后的的软件安装介质中已经包含了Oracle SqlCL或Oracle SQL Developer, 使用这两个自带的任一工具中的java lib的 dbtools-common.jar 中的 oracle.dbtools.app.Format 函数就可以实现。

SQL: 如何让一个查询SQL持续多少秒

像TanelPoder的snapper 工具一样,有时比如需要让一个SQL执行多少秒,当然不是为了应用代码里故意给后期应用优化留下点“小惊喜”,目前能想到的几种方式

Troubleshooting select ‘hang’/spin on 12C Active DataGuard

今天遇到一套oracle 12c RAC数据库,查询一个分区表的某一个分区,其实就1条记录,段大小也就4M,在primary db查询秒出,但是在standby db查询十几分钟不出结果,注意性能问题hang和spin是两个类型,卡住不动是hang,死循环是spin, 通过v$session.seq也可以判断,当然也可以从call stack判断,

Oracle 19c新特性: Listener自动清理(Network Log File Segmentation)

在 Oracle 19c 上,Oracle 引入了两个有关listener管理的新参数。我们可以在Oracle内配置日志轮换,而无需在OS shell 脚本上进行任何额外配置,实现logrotate功能。该特性叫做“Oracle Network Log File Segmentation”

Oracle 12cR2 : DataGuard 、 ZDLRA、REDO_TRANSPORT_USERT

在 DataGuard 环境中,默认情况下,当使用密码文件时,SYS 用户的密码用于验证重做传输会话。但出于安全原因,您可能不希望仅将如此高特权的用户用于重做传输。为了克服这个问题,Oracle 实现了 REDO_TRANSPORT_USER 初始化参数。
REDO_TRANSPORT_USER是在DATAGUARD环境中用于 redo transport 远程密码认证指定数据库用户名,

,

Troubleshooting 19c ORA-00600 [kkpapDIPObjNum1] when split partition

之前分享过oracle split分区的内部检查方式《 oracle fast split partition 》,我们一个客户目前还是人肉拆分区模式,每月10余万的分区, 最近遇到一个Oracle 19c(19.9) 拆分区时ora-600 错误[kkpapDIPObjNum1] , 问题是当split分区时递归的分区检索SQL, 分区列上只有全局分区,分区裁剪的分区未发现任何分区数据。

Alert: Oracle 19c ORA-30481 or ORA-7445 [qecgoc2()] _optimizer_aggr_groupby_elim

oracle升级是一项大工程,性能、语法、函数变化都可能导致应用无法使用,最近几年升级19c的较多,一定要做足升级前测试,并不是只有wm_concat函数没了,再手动创建一个那么easy, 前几年升级12c是发过一个案例《Troubleshooting ORA-00979: not a GROUP BY expression after upgrade Oracle 12C》 ,也是同一个SQL在升级后提示语法错误。 这里演示一个19c 的另一个语法问题,后面会陆续在微信公众号分享 《oracle19c 避雷系列》。

12c 新特性rowsets(_rowsets_enabled=true) bug,19c bug ORA-00600 [qesrLoopOverSetRowP:rows]

“rowsets”这是一个新的 Oracle 12c 特性, 是SQL层执行计划相关的内部优化,在12.1 中存在wrong result的bug, 解决办法同样是禁用rowsets或使用event 10055禁用特定的使用场景。如果在12.1中是建议禁用rowsets, 但毕竟是一个优化项,19c 版本也做了扩展建议保持启用

, ,

再续PGA 和max_map_count、_realfree_heap_pagesize

《PGA 一点认识》《Know more about PGA_AGGREGATE_LIMIT 12c 19c》 看到限制PGA的参数有_PGA_MAX_SIZE、 _SMM_(PX)_MAX_SIZE、PGA_AGGREGATE_TARGET、PGA_AGGREGATE_LIMIT ,最近看到一个案例在执行存储过程时,为了提高SQL性能手动增加_PGA_MAX_SIZE参数值,如在数据仓库环境可能更明显,当把参数_PGA_MAX_SIZE 调到4GB以上时(default 2GB),依旧遇到了ora-4030 错误, trace 文件中显示上限达4GB的上限,Process Map Dump 达65537行。

, ,