Oracle等待事件之enq: TM – contention
执行DML期间,为防止对与DML相关的对象进行修改,执行DML的进程必须对该表获得TM锁。P1 = name|modeP2 = object #P3 = table/partition SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like 'enq
Oracle 12.2 physical standby备库收集AWR报告
Oracle 12.2提供了收集备库AWR的功能。确定备库角色和打开状态SQL> select inst_id, open_mode, database_role from gv$database order by 1; INST_ID OPEN_MODE &
oracle等待事件之enq: CF – contention
Enqueue 是一种保护共享资源的锁定机制,避免因并发操作而损坏数据,Enqueue 采用排队机制,即 FIFO(先进先出)来控制资源的使用。在任何需要读取控制文件的动作时,就会发生等待事件enq: CF – contention,CF locks被用来串行化controlfile事务,在读和写控制文件的时候使用该锁。通常该锁的分配时间非常短,比如在下面事件中会分配该锁,那么也就可能发生enq:
mysql5.7 General tablespace使用说明
General tablespaceGeneral tablespace是一种共享的innodb表空间,有点类似ibdata1。可以在一个表空间数据文件下存储多张表,即使这些表来自不同的schame。 General tablespace的优点 类似系统表空
mysqldump --single-transaction一致性的研究
--single-transaction的含义是,在开始dump前,设置隔离级别为RR,并且start transaction. 通过将导出操作封装在一个事务(Repeatable Read)内来使得导出的数据是一个一致性快照。 测试数据库版本:mysql> select version();+------------+
mysql锁之死锁
死锁是事务绕不开的话题,mysql当然也不例外,本文主要模拟一下mysql的死锁,以及应对措施。 首先看一个参数,默认innodb_print_all_deadlocks参数是关闭。开启后可以将死锁记录到error.log中。否则只能通过show engine innodb status查看。mysql&
oracle 12c中CDB和PDB的备份还原实验
本文档分为两部分:1.单个pdb备份还原2.只cdb备份还原1.rman只备份pdbSQL> show pdbs CON_ID CON_NAME  
oracle 12c中CDB和PDB的备份还原实验
本文档分为两部分:1.单个pdb备份还原2.只cdb备份还原1.rman只备份pdbSQL> show pdbs CON_ID CON_NAME  
Mysql锁之行级锁和表级意向锁
Innodb存储引擎实现了两种行级锁:l 共享锁l 排他锁这两种锁之间的兼容关系如下图所示共享锁排他锁共享锁兼容不兼容排他锁不兼容不兼容关于行级锁比较容易理解。下面介绍一下表级意向锁。Innodb存储引擎支持多粒度的锁定,换句话说,允许事务在表级和行级上同时持有锁。意向锁是一种表级锁,它是由存储引擎自己维护的,不需要用户手动命令干预。如果事务想要给表中几行数据加上行级共享锁
oracle固定对象到共享池
PL/SQL一般来说很大,将这样的对象装载到共享池中,需要去寻找大段的连续内存空间,如果连续装载的话,那么必然会将很多热点内存age out出共享池。这样一来势必会影响数据库性能。所以将常用的PL/SQL或者SQL游标固定到共享池中,可以解决上述问题。包括可能出现的ORA-04031报错。1.固定PL/SQL到共享池SYS@cdbtest1(MING
oracle 12c non-cdb升级成cdb模式
oracle 12c non-cdb升级成cdb模式相同主机下,有一个non-cdb数据库,再创建一个cdb的实例。SQL> select name,cdb from v$database;NAME CDB-----------
oracle等待事件之cursor:pin S wait on X
cursor:pin S wait on X 什么是cursor:pin S wait on X 等待事件?当一个会话尝试得到一个mutex pin的时候,但是其他会话正在以exclusive模式持有相同cursor object的mutex,此时申请mutex pin的会话等待事件即为cursor:pin S wait on X 。造成该等待事件的原因:1.shared pool设置太
oracle等待事件之cursor:pin S wait on X
cursor:pin S wait on X 什么是cursor:pin S wait on X 等待事件?当一个会话尝试得到一个mutex pin的时候,但是其他会话正在以exclusive模式持有相同cursor object的mutex,此时申请mutex pin的会话等待事件即为cursor:pin S wait on X 。造成该等待事件的原因:1.shared pool设置太
Oracle清理SYSAUX表空间
11g的数据库因为BUG,导致与AWR相关的分区表不会自动split,这样一来,oracle自动清理策略不会生效,导致AWR数据越来越大,撑满SYSAUX表空间。12c不存在这个问题。检查快照实际保留时间与设定值的差异14:51:28 SQL> col ash for a3014:51:41 SQL> col SNAP for a3014:51:46 SQL> col RETEN
standby_file_management为manual造成dataguard延迟
dataguard的standby_file_management参数设置为manual,主库加表空间数据文件导致dg端出现延迟。alert日志中报错如下:2019-06-05T09:10:26.028762+08:00Errors in file /u01/app/oracle/diag/rdbms/ssdapdg01/ssda/trace/ssda_pr00_5363.trc:ORA-0111
Oracle一致性读(consistents gets)
很多数据库的并发控制方式是通过MVCC(多版本并发控制)实现的。这种方式使得数据库可以通过读取数据块的快照,而不会发生读操作阻塞写操作的情况。Oracle通过undo回滚段实现一致性读取。当一条sql在读取数据块的时候,会记录读取时刻的SCN1,并且将这个SCN1与读取数据块头部ITL槽中的SCN2做比
Oracle high version count子游标过多问题定位
子游标过多问题 2019年4月1日,在优化emc库sql的时候,发现一条sql下面有60多个子游标,其实不算太多,但是出于好奇还是想看看是什么原因导致了这么多的子游标无法共享的问题。之前处理过上千个子游标的问题,定位子游标无法共享原因的方法其实比较简单。 l 如果子游标没有那么多,比如这里就只有60多个,
oracle ORA-22992问题
create /*source only*/ table mingshuo.tmp_ms_19031403 as select * from backupwt.tmp_ms_19031403@dblk_e1在利用上面的通过dblink搬迁数据的时候,发生报错ORA-22992: cannot use LOB locators selected from remote tablesSQL
Oracle ORA-14148问题
Oracle12.1的库里一张表上存在一个隐藏列,需要把它删掉。隐藏列可以通过sys.dba_tab_cols查看。使用下面的命令alter table A drop unused columns;alter table A drop column "SYS_NC00027$";以上语法都没有能把列删掉。第一条没有任何报错,第二条报错如下:ORA-14148: DML and
Oracle Rac利用keep pool解决索引高聚簇因子问题
什么是聚簇因子?Oracle中的表用的最多的是堆表,堆表是无序的;而索引是有序的。体现两者之间无序程度就是聚簇因子。一般来说,理想的聚簇因子应该近乎接近表上的块数,而差的聚簇因子十分接近表的行数。索引聚簇因子高了以后,会使得索引使用成本偏高,造成本来应该走索引的执行计划变成了全表扫描,对sql效率危害极大。如何解决索引聚簇因子高?1.按照索引顺序重建表。但是这种方法弊端要考虑清楚,如果表上有其他索