![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle体系架构
文章平均质量分 83
czmmiao
这个作者很懒,什么都没留下…
展开
-
Oracle rman change tracking CTWR(原创)
block change tracking介绍Block chage tracking是Oracle10g的一个新特性,Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。 为此Oracle引入了一个新的后台进程,C...2014-04-25 11:10:42 · 309 阅读 · 0 评论 -
SCN之delayed block cleanout
Block的cache header部分,记录着一个block scn,它是当前块最后一次变更的时间戳(确切说,这个更新并不是指itl上的scn的最新更新,在接下来delayed block cleanout下的slot重用情况下,可以看到block scn并不等于itl上的最后一次更新的scn)。可以通过dump获得block scn/last itl scn 和发布ora_rowscn语...原创 2014-06-07 16:09:17 · 162 阅读 · 0 评论 -
Oracle 10g/11g Latch机制的变化
Oracle 10g/11g Latch机制的变化:前面曾经提到,Oracle的Latch机制采用spin来进行持有CPU的不断尝试,虽然通常Latch的获取会非常快(一般在微秒级),但是很多时候Latch竞争还是会引发极为严重的CPU争用。所以从Oracle 10g开始,Oracle尝试引入一种新的机制来代替传统的Latch机制,这就是Mutex机制,也就是互斥机制。和Latch相比,一个...原创 2013-01-09 18:57:07 · 90 阅读 · 0 评论 -
ASM内部原理(原创)
ASM的SGA组成ASM实例的SGA包括Buffer Cache,Share Pool,Large Pool等。 需要注意的是Share Pool,因为Extent Map要放在这部分的内存中,需要根据数据量来估计Extent Map的大小做相应的调整。 Extent Map的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:Select sum(bytes)...2012-12-24 21:55:48 · 888 阅读 · 0 评论 -
ASM的元数据(原创)
概述ASM Filesystem是建立在ASM Diskgroup上的,并且有元数据描述其内容布局,并且这些元数据也是记录在磁盘组上的,故ASM Diskgroup是自描述的。ASM的元数据分成两类:Physical Metadata和Virtual MetadataPhysical Metadata:这类数据位于磁盘的固定位置,用于描述Diksgroup的信息...2012-12-18 21:16:37 · 282 阅读 · 0 评论 -
深入理解重建索引(原创)
什么时候需要重建索引索引在普遍意义上能够给数据库带来带来提升,但索引的额外开销也是不容小视的,而索引的重建也是维护索引的重要工作之一。经过维护的索引可带来以下好处:1、CBO对于索引的使用可能会产生一个较小的成本值,从而在执行计划中选择使用索引。2、使用索引扫描的查询扫描的物理索引块会减少,从而提高效率。3、于需要缓存的索引块减少了,从而让出了内存以供其他组件使用。...2012-04-10 16:58:30 · 877 阅读 · 0 评论 -
Oracle中B-TREE索引的深入理解(原创)
索引概述索引与表一样,也属于段(segment)的一种。里面存放了用户的数据,跟表一样需要占用磁盘空间。只不过,在索引里的数据存放形式与表里的数据存放形式非常的不一样。在理解索引时,可以想象一本书,其中书的内容就相当于表里的数据,而书前面的目录就相当于该表的索引。同时,通常情况下,索引所占用的磁盘空间要比表要小的多,其主要作用是为了加快对数据的搜索速度,也可以用来保证数据的唯一性。...2012-04-09 20:59:01 · 587 阅读 · 0 评论 -
深入理解Oracle中的latch(原创)
串行化概述串行化 - 数据库系统本身是一个多用户并发处理系统,在同一个时间点上,可能会有多个用户同时操作数据库, 多个用户同时在相同的物理位置上写数据时,不能发生互相覆盖的情况,这叫做串行化,串行化会降低系统的并发性,但这对于保护数据结构不被破坏来说则是必需的。在Oracle数据库中,通过闩锁(latch)和锁定(lock)来解决这两个问题。闩锁和锁定既有相同点又有...2012-04-04 18:17:00 · 1087 阅读 · 0 评论 -
深究Oracle中的锁之锁的基础架构(原创)
Lock概述Lock,首先代表一种控制机制,其次在这个机制中有一个成员也叫LOCKLOCK框架包含三个组件:Resource Structure(资源)、Lock Structure(锁)和Enqueue(排队机制)。Resource和Lock是数据结构,Enqueue是算法。Resource StructureOracle对于每个需要进行“并发控制”的...2012-03-26 23:19:33 · 154 阅读 · 0 评论 -
oracle三种复制技术之比较
oracle提供三种高级备份功能高级复制(Advanced Replication)流复制(Streams Replication)备库(Data Guard)一 dataguard:dataguard在高可用及容灾方面一般是dba的首选,不管是物理备用库(physical standby database)还是逻辑备用库(logical standby...原创 2011-12-07 10:26:15 · 221 阅读 · 0 评论 -
SCN之fast cleanout
SQL> select dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block#, dbms_rowid.rowid_row_number(rowid) row# from scn_test ; FILE# BLOC...原创 2014-06-07 16:13:31 · 194 阅读 · 0 评论 -
Oracle(block clean out)的块清除
Oracle(block clean out)的块清除Clean out有2种: fast commit cleanout,delayed block cleanout1.如果一个事务(transaction)修改不超过10%buffer cache的数据块时,oracle做的是fast commit leanout。2.如果一个事务(transaction)修改的块超过10% buffer ...原创 2014-06-16 21:09:31 · 159 阅读 · 0 评论 -
Oracle 锁与锁争用
大多数的锁都是行级锁,它们防止两个会话修改相同的行。事务的ACID(原子性、一致性、隔离性和持久性)属性,特别是一致性,它要求Oracle限制对表数据的并发修改。锁(lock)机制用于管理对共享资源的并发访问,Oracle也会在其他多个级别上使用锁,从对多种不同的资源提供并发访问。例如过程,当一个过程正在运行时,过程本身会以某种模式锁定,它允许其他的用户执行这个过程,但不允许其他的用户以任何的...原创 2015-05-08 02:13:55 · 469 阅读 · 0 评论 -
SSM自动段空间管理 简介
因为ASSM的官方文档很少,经过多次的查证之后,终于弄明白了ASSM管理(BMB段管理)的内部机理,现在发表给大家共享.因为资料有限,如果有错误,请大家指正 为了进一步让大家明白ASSM,先说明ASSM的基本情况! -----------------------------------------------------------------------------------------...原创 2014-03-27 19:46:56 · 118 阅读 · 0 评论 -
undo表空间相关(原创)
DML语句与undo 当我们发出一条DML(比如update t set col1='B' where col1='A')语句时,其执行过程可大致概括为以下几步。 1、在shared pool里进行解析,从而生成执行计划。 假设根据执行计划,得出col1='A'的记录存放在10号数据文件的54号数据块里。 2、服务器进程在buffer cache里找一个可用的undo数据块,...2014-03-25 21:48:45 · 101 阅读 · 0 评论 -
Bitmap Index vs B-tree Index(原创)
IntroductionConventional wisdom holds that bitmap indexes are most appropriate for columns having low distinct values--such as GENDER, MARITAL_STATUS, and RELATION. This assumption is not complete...2014-03-08 21:09:05 · 157 阅读 · 0 评论 -
bitmap索引的深入研究
位图(bitmap)索引是另外一种索引类型,它的组织形式与B树索引相同,也是一棵平衡树。与B树索引的区别在于叶子节点里存放索引条目的方式不同。从前面我们知道,B树索引的叶子节点里,对于表里的每个数据行,如果被索引列的值不为空的,则会为该记录行在叶子节点里维护一个对应的索引条目。而位图索引则不是这样,其叶子节点里存放的索引条目如下图所示。 假设某个表T里所有的记录在列C1上只具有三个值...原创 2014-03-08 14:59:12 · 90 阅读 · 0 评论 -
Oracle SQL Parsing
Stages of SQL ProcessingFigure 7-3 depicts the general stages of SQL processing: parsing, optimization, row source generation, and execution. Depending on the statement, the database may omit some...原创 2014-07-30 22:24:46 · 265 阅读 · 0 评论 -
Oracle 11g中的direct path read(原创)
在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了。 在10g中,都是通过gc buffer来读的,所以不存在direct path read的问题。direct path read较高的可能原因有:1.与直接读取相关联的等待事件。当ORACLE将数据块直接读入会话的PGA(进程全局区)中,同时绕过SGA(系统全局区)。P...2014-06-16 23:01:45 · 758 阅读 · 0 评论 -
深入解析direct path read
传统读取数据的方式是服务器进程通过读取磁盘,然后把数据加载到共享内存中,这样后面的进程就可以通过共享内存访问这些数据,不用再通过缓慢的磁盘读取来 完成。direct path read读取数据块方式,是指服务器进程直接读取数据文件,不经过buffer cache,这种方式读取的数据块会加载到服务器进程的PGA内中当中,不会进入buffer cache中。11G之 前的direct pa...原创 2014-06-16 22:35:02 · 305 阅读 · 0 评论 -
ORA-01555和延迟块清除
01555, 00000, "snapshot too old: rollback segment number %swith name \"%s\" too small"// *Cause: rollback records needed by a reader for consistent read// are overwritten by other writers// *...原创 2014-06-16 21:13:23 · 544 阅读 · 0 评论 -
pctfree,pctused,initrans,maxtrans(原创)
pctfree 当一个块的使用空间达到100-pctfree值时,这个块从自由列表脱离。比如pctfree为10,那么当这个块使用90%的时候将会脱离freeelist,后续的insert将不会用到这个block。 如果一张表中的数据插入后经常需要进行DML,那么我们须要把PCTFREE参数设置的大一些,以避免行迁移和行链接的现象出现。如果一张表插入数据后不做修改和删除,那么我们是不是可以...2011-12-06 15:33:33 · 424 阅读 · 0 评论 -
Oracle redo日志相关(原创)
redo相关的视图 V$LOG Displays the redo log file information from the control file V$LOGFILE Identifies redo log groups and members and member status V$LOG_HISTORY Contains log history informati...2011-12-06 14:12:47 · 122 阅读 · 0 评论 -
PGA管理
PGA的概念及其包含的内存结构PGA按照Oracle官方文档解释,叫做程序全局区(Program Global Area),但也有些资料上说还可以理解为进程全局区(Process Global Area)。这两者没有本质的区别,它首先是一个内存区域,其次,该区域中包含了与某个特定服务器进程相关的数据和控制信息。每个进程都具有自己私有的PGA区,这也就意味着,这块区域只能被其所属的进程进...原创 2011-12-02 17:32:45 · 161 阅读 · 0 评论 -
Rman备份之configure语法
CONFIGURESyntaxCONFIGURE {ARCHIVELOG DELETION POLICY {CLEAR | TO {APPLIED ON STANDBY | NONE}} | AUXNAME FOR DATAFILE datafileSpec {CLEAR | TO ' filename '...原创 2011-10-28 11:08:31 · 263 阅读 · 0 评论 -
Oracle监听配置及访问方式完全解析(原创)
Oracle 网络配置 三个配置文件 listener.ora 、sqlnet.ora 、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin 目录下。1. sqlnet.ora----- 作用类似于linux 或者其他unix 的nsswitch.conf 文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。 例如我们客户端输入 sql...2011-02-27 14:56:56 · 956 阅读 · 0 评论 -
深究Oracle的隔离级别(原创)
多用户环境下的数据并发访问及数据一致性简介在只有单一用户的数据库中,用户可以任意修改数据,而无需考虑同时有其他用户正在修改相同的数据。但在一个多用户数据库中,多个并发事务中包含的语句可能 会修改相同的数据。数据库中并发执行的事务最终应产生有意义且具备一致性的结果。因此在多用户数据库中,对数据并发访问(data concurrency)及数据一致性(data consi...2011-02-25 20:30:50 · 765 阅读 · 0 评论 -
Oracle段的概念总结(原创)
段概述段(segment)由一组数据扩展(extent)构成,其中存储了表空间内各种逻辑存储结构的数据。例如,Oracle能为每个表的数据段(data segment)分配数据扩展,还能为每个索引的索引段(index segment)分配数据扩展。数据段简介在Oracle数据库中,一个数据段可以供以下方案对象(或方案对象的一部分)容纳数据:1、非...2011-02-24 19:01:53 · 262 阅读 · 0 评论 -
Oracle区概念总结(原创)
数据区概述 数据扩展(extent)是由一组连续的数据块(data block)构成的数据库逻辑存储分配单位。而段(segment)则是由一个或多个数据扩展构成。当一个段中已有空间已经用完,Oracle为这个段分配新的数据扩展。数据区何时被分配 当用户创建数据表时,Oracle为此表的数据段分配一个包含若干数据块的初始数据扩展(initial extent)。虽然此时数据表中还没有数...2011-02-24 00:07:24 · 259 阅读 · 0 评论 -
Oracle数据块的概念总结(原创)
Oracle数据内部的逻辑存储 Oracle存储数据的最小粒度(finest level of granularity)被称为数据块 (data block)(也叫做逻辑块 (logical block),Oracle块 (Oracle block)或页 (page))。一个数据块对应于磁盘上数个字节(byte)的物理数据库空间。处于数据块之上的逻辑数据库空间是数据扩展 (ext...2011-02-22 19:34:31 · 285 阅读 · 0 评论 -
Sql*Plus网络访问基本原理及相关名词解析
sql*plus 网络访问运行基本机理: listener.ora文件 SID_LIST_LISTENER = #命名规则 SID_LIST_+上面定义的监听器名称 (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = OR...原创 2011-02-20 16:46:23 · 157 阅读 · 0 评论 -
LUN详解(原创)
LUN概述LUN的全称是Logical Unit Number,也就是逻辑单元号,是SCSI中的概念。我们用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。早期的SCSI系统采用3个ID,一个SCSI总线上只能接驳8个设备,除了SCSI控制卡占用了一个ID外,只剩7个设...2011-08-31 11:08:11 · 980 阅读 · 0 评论 -
Oracle的OFA架构
最优灵活体系结构(Optimal Flexible Architecture,简称OFA)OFA其实就是一种Oracle的一种规范,其意义就是用一种统一的给文件和文件夹的规则,和文件存放目录的规则做一个约定。这样,我们不管是安装多个版本的Oracle Database也好,因为目录规范,命名规范,这样软件不会冲突,方便管理,文件也方便查找。通过遵循OFA的指导,使得整个系统可以更加...2011-05-23 09:00:55 · 131 阅读 · 0 评论 -
v$session视图学习
V$SESSION是基础信息视图,用于找寻用户SID或SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例:SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句。如果为null或0,那就说明这个session没有执行任何SQL语句。PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被session...原创 2011-12-31 11:07:37 · 84 阅读 · 0 评论 -
Oracle数据块深入分析总结
最近在研究块的内部结构,把文档简单整理了一下,和大家分享一下。该篇文章借助dump和BBED对数据库内部结构进行了分析,最后附加了一个用BBED解决ORA-1200错误的小例子。在总结的过程中参考了《Disassembling the Oracle Data Block》以及网上的翻译版本。 dump说明 创建表空间和测试表: create tablespace tes...原创 2012-04-23 12:51:32 · 198 阅读 · 0 评论 -
Oracle自动共享内存管理
从Oracle 10g开始,Oracle提供了自动SGA的管理(简称ASMM,即Automatic Shared Memory Management)新特性。所谓ASMM,就是指我们不再需要手工设置shared pool、buffer pool等若干内存池的大小,而是为SGA设置一个总的大小尺寸即可。Oracle 10g数据库会根据系统负载的变化,自动调整各个组件的大小,从而使得内存始...原创 2011-12-01 15:25:37 · 153 阅读 · 0 评论 -
实例恢复的原理
当数据库突然崩溃,而还没有来得及将buffer cache里的脏数据块刷新到数据文件里,同时在实例崩溃时正在运行着的事务被突然中断,则事务为中间状态,也就是既没有提交也没有回滚。这时数据文件里的内容不能体现实例崩溃时的状态。这样关闭的数据库是不一致的。下次启动实例时,Oracle会由SMON进程自动进行实例恢复。实例启动时,SMON进程会去检查控制文件中所记录的、每个在线的、可读写的数据文件的...原创 2011-12-01 15:19:23 · 199 阅读 · 0 评论 -
Oracle进程详解--DBWn,CKPT,LGWR
DBWn我们DBWn进程负责将脏数据块写入磁盘。它是一个非常重要的进程,随着内存的不断增加,一个DBWn进程可能不够用了。所以从Oracle 8i起,我们可以为系统配置多个DBWn进程。初始化参数db_writer_processe决定了启动多少个DBWn进程。每个DBWn进程都会分配一个cache buffers lru chain latch。DBWn作为一个后台进程,只有在某...原创 2011-12-01 14:44:51 · 594 阅读 · 0 评论 -
Buffer Cache详解
Buffer Cache概述众所周知,读取磁盘的速度相对来说是非常慢的,而读取内存的速度相对则要快得多。因此为了能够加快处理数据的速度,Oracle必须将读取过的数据缓存在内存里。而Oracle对这些缓存在内存里的数据起了个名字:数据块缓存区(Database buffer cache),通常就叫做buffer cache。按照Oracle官方的说法,buffer cache就是一块含...原创 2011-12-01 00:45:07 · 210 阅读 · 0 评论 -
log buffer详解
深入理解log buffer为了避免,或者说为了修复这些状况所导致的数据丢失现象,Oracle引入了日志缓冲区和日志文件的概念。所谓日志,就是将数据库中所有改变数据块的操作,都原原本本地记录下来。这些改变数据块的操作不仅包括对数据表的DML命令或者引起数据字典内容变化的DDL命令,还包括对索引的改变、对回滚段数据块的改变等。只有将数据库中所有的变化都记录下来,当发生数据库损坏时...原创 2011-11-30 15:28:11 · 2913 阅读 · 0 评论