`
jihongbin12329
  • 浏览: 39599 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多

 

Oracle 实例是指 SGA同后台进程
SGA包括共享池,数据缓冲区,重做日志缓冲区,其他结构如锁管理,统计数据。还可以包括两个其他不一定
必须的缓存池:大池同JAVA池

SGA用来存放被数据库进程来共享的数据有:数据和控制信息。SGA可以动态的配置的不用关ORACLE的实例;

共享池由库缓存同数据字典缓存组成的,里面存放的是最近执行的SQL语句同最近定义的数据.共享池环境有可变与不可变的结构构成,可变的由保持同一个大小,可变的由用户决定的但是他们的真正的大小由初始化时决定;
库缓存用来存放最近被用的SQL同PLSQL语句以及共用的声明语句其大小基于共享池大小(这里所说的语句不同于我们平时说这里的含义是被解析过的形成的执行PATH同解析树)
数据字典缓存用来存放最近使用的数据库中定义的数据包括:数据文件,表,INDEXES,COLUMNS,USERS,PRIVILEGES,DATA FILE NAMES,SEGMENT NAMES,EXTENT LOCATIONS,以及其他的数据对像.在解析语句时SERVER PROCESSES查看数据字典解释数据对像并验证通过,缓存数据字典信息有利于提高请求时间,其大小有共享大小决定

数据缓冲区用来存放着从数据文件中COPY过来的数据块,有利于获取数据或更新数据可以缩短时间这里同共享池一样使用LRU算法.它同SGA一样可以动态配置

重做日志缓冲区用来记录数据库的数据块变化的,它是一个可循环的CACHE,重做入口预先记着数据改变的动作

大池平常都是被绑定在共享池上的主要用处:是提供给用户进程同服务进程CONNECTION一个区域这样利于IO操作不用次次都要进行SERVER PROCESSES 同USER PROCESSES的IO操作,还给BACKUP ,RESTORE OPERATIONS,SESSION MEMORY 来使用,它不用LRU算法。有了它共享池就不用放弃自己存放的数据由于它可以存放用户自己的SQL等

PGA是一块区域用来放CONNECTION 的有点儿相同于大池但它只是让USER PROCESSES 同一个BACKGROUND PROCESSES或是一个SERVER PROCESSES来CONNECTS的不能被ORACLE SERVER共享的
PGA包括:SORT AREA,SESSION INFORMATION ,CURSOR STATE,STACK SPACE;
SORT AREA:被用来给少数几个进程来进行SQL的
SESSION INFORMATION:含有用户的信息以及SESSION活动的一些数据;
CURSOR STATE:用来放正在被SESSION进行SQL的一些时间点的情况
STACK SPACE:SESSION 其他的信息

BACKGROUND PROCESSES:DBWN,PMON,CKPT,LGWR,SMON,RECO

DBWN:SERVER PROCESS把改变记录直到ROLLBACK并把数据块放到数据缓冲区中,当CKECKPOINT,DIRTY BUFFERS THRESCHOLE REACHED ,NO FREE BUFFER,TIMEOUT,RAC PING REQUEST,TABLESPACE OFFLINE,TABLESPACE READ ONLY,TABLE DROP OR TRUNCATE TABLESPACE BAGIN BACKUP时DBWN进行写动作

LGWR:当一个事务COMMIT,REDO LOG BUFFER有1/3满了,在REDO LOG BUFFER CACHE 中有多于1M变化记录,在DBWN把UPDATE 数据写到数据文件从数据缓冲,EVERY 3 SECONDS写日志。
LGWR可以提醒DBWN写数据。

SMON:如果ORCLE的实例突然挂了,并且SGA中的数据没有被写入到数据文件中去丢失了,那么SMON可以在重新启动实例后自动实例恢复。
SMON恢复实例分为三步:1,ROLLFORWARD数据:由于实例FAILURE那些数据没有写入数据文件,SMON把REDO LOG中记录下的变化来应用到相应的数据块中,劳动因为所有COMMIT的事务都会写到REDO LOG中去的,就可以恢复到那些事务。
2,打开数据库给用户LOGON,那些没有被不是恢复事务加锁的数据可以使用。
3,ROLLBACK没有提交的事务,可以通过SMON或其他的SERVER PROCESSES 因为SMON正在使用。
SMON可以把数据文件的空闲区域的邻边或其空闲区中进行合并,它也可以把临时段作为一个单元返回它作为一个空闲区。

PMON在进程失败后1,ROLLBACK事务2,释放锁3,释放其他资源4,发出失败通知

CKPT当DBWN向数据文件中写修改过的SGA中的数据库缓冲区包括COMMINT OR UNCOMMIT的数据这种形为叫做CHECKPOINT OCCUR;检查点保证了内存中改变的数据块被有规则的有次叙写到数据文件中,因为DBWN使用的LRU算法并且只有写数据文件检查点才会发生。虽然检查点被写入数据文件中就不会被使用。数据改变直到检查点被写入数据文件,重做日志被记录。
在一个检查点上,检查点号被写到数据文件中,检查点号,日志的SEQUENCE号,SYSTEM改变号写入控制文件中。

LOGICAL STRUCTURE CONSTISTS OF TABLESPACES ,SEGMENTS ,EXTENTS,AND BLOCKS。
ORCLE DATEBASES IS A GROUP OF TABLESPACES。A TABLESPACE CONSIST OF ONE OR MORE SEGMENTS。
A SEGMENT IS MADE UP OF EXTENTS。A EXTENT IS MADE UP OF LOGICAL BLOCKS;

DML 分两个部分:1,解析同QUERY解析一样。2,执行多了个过程要移动数据块。
DML执行步骤:1,如果数据库缓存中没有相应的数据块同回滚块就从数据文件中读取。2,SERVER PROCESS在要改的行上加锁,回滚块中存有以前块的信息3,给块记新值。

 

 

 

 

 

提到软解析(soft parse)和硬解析(hard parse),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:1、语法检查(syntax check)检查此sql的拼写是否语法。2、语义检查(semantic check)诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。3、对sql语句进行解析(parse)利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。4、执行sql,返回结果(execute and return)其中,软、硬解析就发生在第三个过程里。Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;假设存在,则将此sql与cache中的进行比较;假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics