Redo wastage产生的原因
Redo wastage产生的原因[@more@]Redo wastage产生的原因在v$sysstat中有一个统计是redo wastage,这个究竟是什么意思,为什么汇产生这个问题哪?reod wastage会对系统的性能产生影响吗?1、为什么会产生redo wastage?我们都熟知产生的redo会先写入到redo buffer中,然后Oracle中的LGWR进程会根据某些触发条件将redo buffer中的redo写入到redo文件中。redo文件一般块是512,除去每个块有16字节的块头,真正能够使用的部分512-16。而redo文件在逻辑上是有redo record组成。LGWR写入redo的时候,会在redo文件中留下一些没有使用的空间,例如
关于直接路径插入的工作原理
关于直接路径插入的工作原理[@more@]关于直接路径插入的工作原理关于直接路径插入的工作原理可以从三个形式的插入来说:1、串行直接路径插入到分区或者非分区表这个比较容易理解,就是一个单独的进程将数据直接插入到表数据段上每一个分区段的高水位之上的空间。这里说的直接路径是指不经过数据缓冲区。2、并行直接插入到分区表这个和第一中情况类似,每一个进程对应一个或者多个分区段,但是每一个分区段最多只能有一个进程对应,一个单独的进程将数据直接插入到表数据段上每一个分区段的高水位之上的空间。3、并行直接插入到非分区表这个
library cache lock和library cache pin区别总结
library cache lock和library cache pin区别总结[@more@]library cache lock和library cache pin区别总结library cache locklibrary cache pin共同点同属于数据字典锁,目的是为了:1、保持数据字典的一致性2、为事务提供一致的对象定义视图锁对象是为了请求library cache对象句柄是为了请求library cache数据heap先后关系必须先期得到这个锁必须在得到library cache lock之后才能获得这个锁获取时间在parse call阶段在call execution阶段用途排他模式:使用在父和子句柄上共享模式:使用在所有的依赖关系对象句柄上NULL模式:侦察不可用的
OFFLINE都做什么了
OFFLINE都做什么了[@more@]OFFLINE都做什么了脱机在对象上区分有脱机表空间和数据文件的区别,如果安装操作方式来区分有normal/immediate的区别。正常状态脱机表空间1、checkpoint表空间上的所有的数据块,而在offline datafile的时候就不会做这些,所以在讲datafile online的时候,是需要恢复的。2、更新数据文件的头和控制文件立即脱机表空间1、只是更新控制文件2、需要恢复数据文件3、由于需要恢复操作,这个操作只能在ARCHIVELOG的模式下操作在做normal offline的时候,做的工作是checkpoint所有的数据文件,设置STOP SCN,清除fuzzy
当从READ ONLY到READ WRITE都做什么了
当从READ ONLY到READ WRITE都做什么了[@more@]当从READ ONLY到READ WRITE都做什么事情了1、STOP SCN被设置为0xFFFFF,在线fuzzy bit被设置2、文件被checkpoint(注意这里的只是文件头,而没有数据块被checkpoint,这个应该是很好理解的)
切换为READ ONLY都做什么事情了
切换为READ ONLY都做什么事情了[@more@]切换为READ ONLY都做什么事情了1、这个表空间的所有文件都checkpoint2、所有的文件的REDO都被写入磁盘3、每一个表空间伤的文件和控制文件伤文件状态STOP SCN都被更新为最新的checkpoint SCN。数据文件上的在线的fuzzy bit被清除4、表空间上相应的TS$.SCNBAS和TS$.SCNWRP都被设置为最新的的checkpoint SCN
数据文件的SCN和数据块的SCN有何区别
数据文件的SCN和数据块的SCN有何区别[@more@]数据文件的SCN和数据块的SCN有何区别这个问题是PUB上一个朋友的问题,总结一下数据文件scn是指的是数据文件第一个块上的SCN,这个块指的是表空间头tablespace header,里面记录这很多信息。其实在第一个块上有很多SCN。例如:create SCN 数据文件添加时候的SCNcheckpoint SCN recovery SCn 等现在就按照数据文件SCN理解为表空间头块上的checkpoint SCN来说这个SCN和数据块上的SCN之间的相同点都是SCN(废话,呵呵),都具有SCN相同大小的结构。都是6个字节。(都是废话)1、数据块上有一个SCN和
CLUSTER内部结构的总结(4)
CLUSTER内部结构的总结(4)[@more@]以下的部分就是数据的指针地址部分:0x1a:pri[0] offs=0x1f830x1c:pri[1] offs=0x1f640x1e:pri[2] offs=0x1f450x20:pri[3] offs=0x1f26以上是c_t的数据0x22:pri[4] offs=0x1f790x24:pri[5] offs=0x1f5a0x26:pri[6] offs=0x1f3b0x28:pri[7] offs=0x1f1c以上是t1的数据0x2a:pri[8] offs=0x1f120x2c:pri[9] offs=0x1f080x2e:pri[10] offs=0x1efe0x30:pri[11] offs=0x1ef4以上是t2的数据以下的部分就是数据的实现部分:tab 0, row 0, @0x1f83 --第一个表的第一行,后面是偏移地址tl: 21 这一行的长度(
CLUSTER内部结构的总结(3)
CLUSTER内部结构的总结(3)[@more@]将这个块dump出来,这部分是数据块的头:Start dump data blocks tsn: 18 file#: 5 minblk 12 maxblk 12buffer tsn: 18 rdba: 0x0140000c (5/12)scn: 0x0000.00318001 seq: 0x01 flg: 0x02 tail: 0x80010601frmt: 0x02 chkval: 0x0000 type: 0x06=trans dataHex dump of block: st=0, typ_found=1这部分是ITL,这里需要注意的是在9i之前数据的ITL最小是1,在Oracle 10g之后默认的最小是2。但是在9i时候custer的ITL的最小是2。Block header dump: 0x0140000c Object id on Block? Y seg/obj: 0xcbcb csc
CLUSTER内部结构的总结(2)
CLUSTER内部结构的总结(2)[@more@]什么是cluster键这个很号理解,就是多个表上共有的列,cluster表是按照这个Cluster键来存储,是在添加Cluster的时候指定的。这里有一些限制:例如:1、在这个集群上的每一个表上的列必须有同样的类型和长度。2、最大是16个列(通常不会用到这么长,假如真的是这么长,性能更加无法保证了)3、键的值不能超过块可用的空间的一半。4、集群键更新是允许的,但是性能比较差如何规定集群数据块的格式:SIZE这个参数限制每一个块的键的最大数目。每一个块的最小只有一个集群键。内部结构分析建立一个测试cluste
CLUSTER内部结构的总结(1)
CLUSTER内部结构的总结(1)[@more@]总结:康标email:kang_biao@hotmail.comCluster是Oracle数据存储的一个可以选择的模式,平常我们对于数据的存储是采用一种叫做堆的方式进行存储的。所谓的cluster就是将一组表,由于他们有同样的列,而且是这些列通常在查询的时候是连接的条件之一,重要就可以将这些表按照相同的列存储在同一个数据块中。这样会带来好处,同时也会有坏处。优点是:在查询的时候在两个存储在同一个cluster的表按照cluster键连接的时候会提升性能。这个应该是很好理解的,例如我们在对两个表进行多表查询的时候,假如需要查
函数索引的存储
函数索引的存储[@more@]函数索引做一个很有意思的试验:SQL> create table t as select rownum a from all_objects where rownum < 11; Table createdSQL> select table_name,column_name from user_tab_cols;TABLE_NAME COLUMN_NAME------------------------------ ------------------------------T ASQL> create index t_ind on t(a+100);Index createdSQL> select table_name,column_name from user_tab_cols;TABLE_NAME COLUMN_NAME-----------
SHARED_POOL解析
SHARED_POOL解析[@more@]SHARED_POOL解析共享池是SGA中的一部分,主要由以下几部分组成:n 库缓存n 数据字典缓存n 用户全局区(共享服务器模式)在这里需要注意的是,共享池的大小定义是由参数SHARED_POOL_SIZE来控制,要合理调整这个参数的大小,以为共享池的内容要比数据库数据缓存更消耗系统的资源。而调整共享池的重点是调整库缓存的命中率上来,因为,在解析时使用的算法中需要把持内存中的数据字典地时间要比库缓存数据的时间要长。优化SHARED_POOL有以下的好处:1、 避免过渡的SQL文的解析,这样可以节约服
Checkpoint总结
Checkpoint总结[@more@]Checkpoint总结Checkpoint就是一个重做流中的一个点,是一个SCN。所有的在这个点之前的所有发生的脏数据块将在检测点发生之后写入到磁盘中。检测点能够多个事件触发,例如数据库的关闭,线程的关闭,热备份等。由于触发方式的不同使得检测点有不同的分类:n 数据库、全局检测点n 线程、本地检测点(RAC)n 数据文件检测点n 增量检测点n 最小检测点(DDL基础)数据库、全局检测点产生的原因:1) 日志切换2) 初始化参数触发3) Alter system checkpoint触发执
Latch总结笔记
Latch总结笔记[@more@]Latch总结笔记Latch的目的n 串行访问1) 保护在SGA中的数据结构2) 保护共享内存的分配n 串行执行防止对某些关键的代码同步执行;防止corruption Latch和enqueue的区别EnqueueLatchAccessSeveral modesMostly exclusiveacquisitionFIFONondeterministicatomicityNoyes
锁的总结笔记
锁的总结笔记[@more@]锁的总结笔记数据字典锁数据字典锁是保护的是在数据字典中定义的数据库对象被引用时,保持数据的一致性,主要是保护这些对象在使用的时候,不被删除,改变。为事务提供一致性的对象定义视图。主要有三种类型的数据字典锁:n 行缓存锁n 库缓存锁n 库缓存pins行缓存锁1、 存储的是数据字典行2、 是共享池的一部分3、 可以减少对SYSSTEM表空间的IO争用4、 使用行缓存锁来实现数据字典行的find-grain锁锁的应用:1、 这些缓存的行为资源结构2、 锁结构是从共享池中被动态分配;3、 类型QA。。。QZ参数_row_cache_instance
ENQUEUE总结笔记
ENQUEUE总结笔记[@more@]ENQUEUE总结笔记Oracle锁的类型n 数据字典锁(DDL)n 数据操作锁(DML)n 内部锁和闩n 分布式锁n 并行缓存管理锁队列是一个服务,是由kernel Service Enqueues (KSQ)层来提供。其他层在使用的是调用这个层的函数来使用。队列是一种用来管理共享资源联系的机制。是一个本地的能够串行连接共享资源的锁。这些共享资源可以使重做线程,表和事务。这种管理方式可以在一个实例上使用,也可以在所有的实例上实现。 在队列的使用中,有请求,转换和释放队列的使用方式和过程。
update的机制问题
update的机制问题[@more@]update的机制问题update 的时候,如果存在索引字段的更新,则删除原索引条目(不是真正的删除数据,仅仅是在该行标记为 删除)插入新的索引条目对于row本身的更新,是在行物理地更改,如果行的长度增加到当前位置无法容纳,则行的位置被提到 block的最上面一条记录的位置之上,假如该块已经无法容纳,则在原来行的物理位置保留一个指针,行被迁移到新的block,而保留的指针就是指向新的block的位置。这时索引中rowid不用发生变化,查询的时候先找到 那保留的指针,再去找 实际的新的位置。假如行迁移后再发生upda
关于块清除
关于块清除 [@more@]关于块清除 块清除是为了满足快速的当事务提交时,正常情况下应该清除影响的数据块上的ITL事务链表,更新row directory,反映出delete操作的行标识,但是如果事务较大,影响的数据块非常多,超过了缓冲区的10%,此时commit不会清除数据块上面的相关信息,而是保留到下次对这些数据块的访问的时候,这样导致下次访问数据块的速度比正常情况下慢很多(特别是大型的批处理),他要清除上面的ITL链表,row directory,SCN号等,此时还会产生redo信息(select也会)commit操作而引入的,他使得Oracle在进行数据提交时尽量快的完成,使事务提交平
关于enqueue的一些认识
关于enqueue的一些认识[@more@]关于enqueue的一些认识我也谈谈自己的想法:请大家批评指正1、enqueue是实现lock的一个机制,之所以这样说,是因为相对于latch。2、对于每一个资源就有一个Resource Structure相对应。而且每一个资源有且不只一个Resource Structure和它对应,因为同一个资源,会有不同的类型的锁,例如表就有TM和TX类型。3、Resource Structure和Lock Structures只是enqueue物理实现的形式,4、Lock Structures是和回话有关系,当一个会话发出访问资源的请求的话,就会提出一个Lock Structures。5、Resource Structure和Loc