![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle内核
文章平均质量分 75
汪灵骅
资深DBA,oracle ACE
展开
-
oracle gpnp介绍
功能是保存需要访问的gpnp profile文件的客户签名信息,当客户访问gpnp profile时通过wallet中的签名信息进行验证,确保只有指定的客户能访问profile文件。如果本地的gpnp profile丢失,可以通过OLR中的信息重新构建gpnp profile。gpnp profile中部分信息是集群信息(集群名称、公网私网定义等等),那么这些信息改变后,如何实现信息的同步?表示集群的私网信息。1)将集群的基本配置信息保存在本地,以便在启动集群时能够从本地文件中获得足够的信息,而。原创 2024-04-16 17:45:41 · 1396 阅读 · 0 评论 -
oracle执行计划访问路径详解,优化小白必看
就是组合索引写的不好,where谓词的列没写在前头,选择性高的没写在前头,要么是写个好点的组合索引(我的想法),要么直接skip的列直接建一个索引(书上说法,让INDEX RANGE SCAN[索引范围扫描]代替INDEX SKIP SCAN[索引跳跃扫描])不错了,如果有伴随着回表,就将查询的列也加入索引,建立组合索引,如果查询范围是大的就会消除掉回表并从INDEX RANGE SCAN变为INDEX FAST FULL SCAN,如果范围小的就会只消除掉回。(因为一般情况下>100的范围很大)原创 2024-01-26 10:21:25 · 1072 阅读 · 0 评论 -
oracle一次truncate慢处理案例
truncate的实质是在不修改数据块的情况下,通过修改segment header的data_object_id,hwm,extent map,aux map等信息来实现清空表的目的,其中还涉及数据字典基表以及L1、L2位图块的修改,所以说truncate操作只是存储数据的数据块没有产生任何redo和undo,但是segment header,位图块,数据字典基表还是会产生redo和undo。当我们排查问题没有思路的时候,不妨尝试下10046跟踪去细细查看执行此语句的会话全过程,或许就会明朗了。原创 2024-01-26 10:08:47 · 609 阅读 · 0 评论 -
bbed修复truncate表(未被覆盖)
修改的部分segment header(dataobj#、LHWM、HHWM、extent map、aux map以及extents个数)tabobj(dataobj#)可以不改L1,L2。原创 2024-01-26 09:51:32 · 853 阅读 · 0 评论 -
oracle数据结构散记
表id建好不会变,但是段id会变,比如truncate表后,原本的段被删除,再为表建个新的段。答案是使用标记位,如果0-2号区被占,那标记位的值为3,如果3-4也被占了,那标记位增加到5,此时2号区被释放了,那标记位变2.表大小,小于1m时,每个区64k,当表超过1m时,再分配新区,区大小将是1M。开启闪回drop,drop了表,区不会被释放,所以标记位不会下降,drop只是改名,并不会真正删除表。默认创建,不指定区大小,就是系统管理区大小。11g,插入一行,默认分配第一个区,没插数据,空表不分配区。原创 2024-01-18 13:12:07 · 943 阅读 · 0 评论 -
oracle逻辑读过程
oracle逻辑读,cbc链表原创 2023-12-26 16:50:36 · 366 阅读 · 0 评论 -
oracle Buffer pin锁的过程(Buffer busy waits)
申请一个buffer,数据从undo和老的buffer中克隆到新的里,老的buffer状态从XCUR改成CR,给读用,新的buffer状态从0改成XCUR,成为新的当前读buffer。申请一个buffer,数据从undo和老的buffer中克隆到新的里,新的buffer状态从0改成CR,给读用。最后一个读被堵塞,buffer busy waitsBuffer busy waits原理、处理,见本人另外一篇文章。原创 2024-01-09 10:09:40 · 777 阅读 · 0 评论 -
oracle buffer busy waits等待的含义
LGWR写的慢是IO慢,加快IO写的性能,可以提高log buffer中空闲空间比例,可以增加redo产生的速度,减少独占buffer pin锁的持有时间。在pga中记录后映象数据,传到共享池,然后传到log buffer中,如果log buffer没空间,进程会先等LGWR刷新log buffer中的空间,腾出空间后才能继续(此时等待为log buffer space)。一个会话读、另个会话写这个buffer,写的同时又有个会话读这个buffer产生等待buffer busy waits。原创 2023-12-29 14:29:03 · 433 阅读 · 0 评论 -
oracle集群因子介绍
集群因子大且约接近总行数,回表时读的块更多。1.降低集群因子(方法见上)2.减少回表或者消除回表(方法见 oracle SQL优化——概念——索引回表)3.表中所有数据块缓存在buffer cache中,不需要物理io。原创 2024-01-09 10:19:52 · 473 阅读 · 0 评论 -
oracle 检查点队列链表CKPT-Q
update,只是修改buffer cache中的buffer,改完后,update算完工。buffer和磁盘中的block就不一致了,buffer中的最新数据没有写入磁盘。脏块由DBWR进程统一写入磁盘,DBWR写脏块的过程也叫刷新脏块。更改1234号块时,在CBC latch保护下,块状态被改为脏块。定义哪些buffer是脏块,需要一个链表把所有脏buffer串起来,DBWR写脏块时,按照这个链表顺序来。这样的链表有2个,CKPT-Q(检查点队列链表)和LRUW。原创 2023-12-29 14:49:10 · 820 阅读 · 0 评论 -
oracle ORA-01157 ORA-01110 ORA-27048(被勒索的情况)
数据文件的0号块(OS块信息)被更改导致。原创 2024-01-16 16:43:25 · 371 阅读 · 0 评论 -
oracle索引内核过程
3.根据每个hash bucket独有的一个 指向CBC链表(cache buffers cache chains list)的链表头(我愿称之为指针),找到对应的CBC链表。如果唯一索引列使用等值条件查询时(id是唯一索引的索引列,语句为where id=某个值),那索引的根块、枝块、叶块、表块都共享CBC latch。4.从CBC链表的链表头——CBC链表,中间的CBC latch锁设成S模式(共享锁)9.在共享CBC latch锁的保护下,根据BH中的BA地址,查询buffer中的数据。原创 2024-01-17 10:45:49 · 273 阅读 · 0 评论 -
oracle硬解析、软解析、软软解析(open_cursors)散记
无论是硬解析,软解析还是软软解析,ORACLE在解析和执行目标SQL时,始终会先去当前SESSION的PGA中寻找是否存在匹配的缓存Session Cursor.原创 2024-01-12 15:04:14 · 1228 阅读 · 0 评论 -
oracle 历史视图视图,看这一篇就够了
采样到DBA_HIST_ACTIVE_SESS_HISTORY中的频率,默认为10s一次开启采样到DBA_HIST_ACTIVE_SESS_HISTORY,设置为false则即使创建快照也不会刷新数据到DBA_HIST_ACTIVE_SESS_HISTORY视图中ASH buffers满了多少以后会写出,默认为66%禁用和启用ASH采样设置为true,则所有会话都会被采样,包括处于空闲等待的会话,默认是falseASH采样间隔时间,默认为1000msASH buffers大小。原创 2024-01-12 17:57:07 · 1161 阅读 · 0 评论 -
oracle assm(自动段管理)与mssm(手动段管理)的区别
9i引入了assm技术,freelist被位图取代。在assm管理下,insert通过扫描位图来查找可用的block,即使block可用空间低于PCTFREE,也不会从位图中剔除(mssm中,块会被剔除freelist),所以PCTUSED不再需要。而PCTFREE还是需要的,需要它指示需要保留多少空间来给后续update增长使用,freelist和freelist group也无效了。ASSM的一个大优势是位图数组能减轻缓冲区等待(buffer busy wait)的负担。原创 2024-01-17 11:23:01 · 1645 阅读 · 0 评论 -
oracle assm(自动段管理)为什么可以提高插入并发(散记)
而assm由L1/L2/L3管理块,一般L3可以管16个块(多的64也有),假如L2管200个那这一层就3200了,同时3200个进程一起插入操作没问题,随机分配到3200个块里。4.全表扫描的流程,查询:根据数据字典视图(dba_segments)找到L3——L3里的区地图(Extent Map)——辅助地图(Auxillary Map)——具体L1——具体块。3.assm判断从哪个块插入的步骤,插入:数据字典确定L3——L2——随机一个高水位下的L1——L1下的随机块——插入块。原创 2024-01-17 11:13:21 · 383 阅读 · 0 评论