Troubleshoot DDL递归SQL触发的row cache lock deadlock(死锁)
两个同时启动的JOB, truncate 了不同的对象DDL, 递归触发了DDL trigger的审计操作,在insert DDL日志表时,遇到了回收站空间再利用,再次递归触发了drop table BIN$ purge, 又属于DDL操作, 并且申请的回收站对象的row cache enqueue时,在2个跨实例会话互相等待对方持有对象lock造成死锁
提供综合数据库运维服务与优化方案(不限Oracle MySQL PG GaussDB GoldenDB OceanBase等), 微信/Tel:(+86)134-365-60330
数据库oracle
两个同时启动的JOB, truncate 了不同的对象DDL, 递归触发了DDL trigger的审计操作,在insert DDL日志表时,遇到了回收站空间再利用,再次递归触发了drop table BIN$ purge, 又属于DDL操作, 并且申请的回收站对象的row cache enqueue时,在2个跨实例会话互相等待对方持有对象lock造成死锁
the wait event “inactive transaction branch” are related to externally coordinated transaction branches, typically from XA clients.
A wait on this event typically means that the XA client/s have asked different sessions to work on the same transaction branch concurrently.
几日朋友有套数据库升级到oracle 12C r2后出现了ORA-4031, 是一套on Linux x86 64-bit 2节点的RAC数据库,Hard parse并不高,并且没有使用AMM, ASMM。SGA分配80G, shared pool固定在13Gb.”gc index split transaction”也是在持续增长,符合bug 27163928.
Oracle 12C R2的AWR top event是”Failed Logon Delay”, 发现12c 在安全方面又有几个参数的变化,这个等待事件常常是因为有程序尝试使用错误的用户密码登录数据库, 如暴力破解程序.
前段时间遇到的一个案例,朋友开始给我说是数据库连接数很高,让我帮分析一下。这是一套 11.2.0.4 2nodes RAC on Sun OS 5.11环境,大多数会话等待enq: sq – contention, log file switch (checkpoint incomplete) , checkpoint 无法完成…
整理几个12c 关于password几个新特性:1. 新的password hash算法
2. 新的password verify function
3. 密码文件可以存储到ASM
4. 密码自动从primary同步到standby端在Dataguard环境中
5. 新的密码认证协议
Oracle MOS中新发布预警对于版本和对应版本的已安装PSU高于11.1.0.7.20,11.2.0.7.57(for Windows), 11.2.0.3.9,11.2.0.3.29 (for Windows), 11.2.0.3 BP22(for Exadata), 11.2.0.4,12.1.0.2 ,12.2.0.1 的Oracle 数据库, 将在2019年06月23日后自动调整SCN的增长速率为更大的上限,DBLINK 在不同数据库之间访问时会同步SCN, 为了避免不同SCN 上限数据库之间因SCN拒接访问,建议所有DBLINK访问的数据库升级为相同的SCN 兼容性。
[ GPNP]clsgpnpkwf_initwfloc: [at clsgpnpkwf.c:471] Result: (7) CLSGPNP_IO. (:GPNP01002:)Failed to open wallet file. dir ‘peer’ in ‘/u01/app/12.1.0/grid/gpnp/ccwlracnode01/wallets/’, cannot check wallet home.
2018-03-26 09:23:57.675: [ GPNP]clsgpnpkwf_initwfloc: [at clsgpnpkwf.c:469] (:GPNP01002:)SlfFopen2
因为一先特性原因PDB$SEED数据库损坏后,影响使用pdb$seed创建新的PDB, 这里演示了几种修改PDB$SEED的方法:1. 使用建库时保存的脚本
2. 使用rman 恢复pdb$seed(前提有备份)
3. 使用同一个CDB的其它较干净的已存在的PDB创建PDB$SEED(不用备份)
4. 使用其它CDB的PDB$SEED复制PDB$SEED
What is the meaning of “_enable_shared_pool_durations” parameter?
With sga_target set, the shared pool and the streams pool have of subpools subpools for 4 durations.
The durations are “instance”, “session”, “cursor”, and “execution”.
当前oracle 18c on-premise 还没正式发布,我只是用XD版简单测试几个小功能::
Feedback sql id
private temporary table
CANCEL SQL statement
SEQUENCE增强
Read-only Oracle Home (ROOH)
DBMS_SESSION.SLEEP
Inline External Table
Oracle RAC环境中有时常因为LMS进程取不到足够的CPU而hang,最终在lmhb监控进程发现lms hung超过70秒后而终止实例。lmhb是11G R2引入的RAC环境中新的后台进程,用于监控LMON、LMD、LMSn等RAC关键的后台进程
众所周知, oracle临时表空间是用于存储数据库的排序数据和全局临时表数据,tempfile不同于datafile因为不存在控制文件中,在恢复数据库后需要重建tempfile,也可以在standby环境中配置不同的temp表空间。用监控数据表空间间的脚本也许看到临时表空间使用率100%,但并且有时并非真实,DBA_FREE_SPACE 不会记录临时表空间的可用空间,使用v$sort_segments, V$TEMP_SPACE_HEADER 和v$tempseg_usage监控临时表空间的使用,如果临时表空间不足会提示ORA-1652错误。
朋友有套数据库出现了ora-600 [kclfadd_1]引起数据库实例crash, 数据库版本10.2.0.2 2-nodes RAC, 找我帮分析原因,定位BUG后,在不升级版本并安装oneoff patch后,节点2实例无法启动,在startup 过程种从alert log看在提示了一些后台进程启动后,到LCK0 进程启动后没有任何报错挂起,节点1正常
ORA-00600: [kwqidrdq: loop] reported on dequeue of a message from an Advanced Queueing (AQ) Multi-Consumer Queue Table.
cell03存储主机的文件系统异常,导致ASM Hang,数据库实例crash, 虽然是NORMAL级别的冗余,但是数据库实例此时不能于ASM通信,重启CRS进程恢复,可使用剩余的2条CELL继续为数据库提供服务。 在延长了disk_repair_time时间后,等待时间后强置重启CELL03主机操作系统后,一切恢复。
12C R2 3Nodes RAC on Linux using multipath 环境的crash总是不定时的crash(几天一次), 使用的是LINUX的多路径软件的默认配置。从日志看是CKPT进程hang超过了70秒所以LMON进程终止了实例, 从CKPT的trace文件中Call Stack看I/O的可能性较大。
点1的活动会话已接近4000,几乎全是Library cache lock的会话,blocker session 在等待DFS lock handle ,当shared pool里的对象需要为新的对象释放空间时如sql cursor, LCK进程降低Row Cache 大小期间使数据库临时hang, 因为在RAC环境中LCK进程负责释放持有row cache的用户进程协调工作及Library cache 的请求, 如果LCK出现性能问题也就会导致library cache object无法请求和会话补KILL后的释放row cache堵塞。
数据库当前的请求SCN大于当前最大允许SCN时会提示ORA-600[2252], 最大允许SCN是有本地系统时间决定。一个可能性是本地库主机时间向前调了,还有个可能性是通过DBLINK 分布式事务同步SCN时,远程库 SCN大于本地允许的最大scn.
We limit the default display of database character sets that can be used for a new database in Oracle Database 11 via DBCA (Database Creation Assistant) based on the recommended list.