Oracle 体系结构
文章平均质量分 75
linwaterbin
当时明月在,曾照彩云归。
展开
-
基于日志却采用三种方法来区别增量检查点和完全检查点
增量检查点的作用是为了均衡负载,由fast_start_mttr_target这个参数触发,增量渐进写出。所以,CHECKPOINT_CHANGE#会有延迟,不会马上更新。下面用三种方法证明:法一:理论:日志却会有active,即:被RBA指针覆盖的日志。如是完全检查点,则RBA会一下子干到重做日志组的最后一条,没有了RBA,那么日志的状态便是inactive了;而如是增量检查点,则R原创 2012-06-11 00:36:08 · 2363 阅读 · 1 评论 -
理解redo(10)一个IMU的问题解释
先看一个现象:19:33:31 hr@ORCL (^ω^) select name, value19:33:59 2 from v$mystat a, v$statname b19:33:59 3 where a.statistic# = b.statistic#19:33:59 4 and b.name = 'redo size'19:33:59 5 /NAME VA原创 2012-09-05 18:55:40 · 2232 阅读 · 1 评论 -
理解redo(8)redo和undo的一点关系及删除联机日志文件组的注意事项
1) redo和undo的“藕断丝连” 前滚redo 回滚undo undo受到redo的保护,以便历经前滚后在buffer cache中得到undo,并将这些undo运用到buffer cache里的数据块和索引块上,使那些数据文件能“赶上”数据库的其余部分,从而保持数据库的一致性。 二者是DBA和开发人员的桥梁原创 2012-09-05 08:56:28 · 2511 阅读 · 0 评论 -
理解redo(11)truncate和select的redo
很多系统,在作删除操作时,都只是做一个标志位,并不会去做磁盘置0那样昂贵的操作。truncate也如是,更改的只是segment header和i-node表。truncate 会产生redo,是修改数据字典产生的,不是删除数据来的。truncate降低HWM,释放extent,重新生成data_object_id。之所以比delete快,是因为它根本不需要删除数据,redo只是记录这个操作本身而原创 2012-09-06 14:43:20 · 3104 阅读 · 0 评论 -
理解PGA(1)PGA内存作用和构成
当客户端向服务器发送连接请求,服务器监听到客户端的请求,在专用服务器模式下,会在服务器端衍生一个server process来代理客户的请求,server process进而向实例发起连接,创建会话,而PGA就为server process所分配和使用。 PGA,这P,或译之程序,或翻为私有,角度不同而已,通常,我们称之”程序全局区“。它的创建时期:原创 2012-09-06 09:13:22 · 5947 阅读 · 0 评论 -
理解PGA(2)pga_aggregate_target详解
注:1)pga_aggregate_target以下简称PAT2)我的环境:11:42:10 sys@ORCL (^ω^) select * from v$version where rownum=1;BANNER-----------------------------------------------------------------------------------原创 2012-09-07 19:08:32 · 7236 阅读 · 0 评论 -
对bootstrap$、数据字典结构信息和open相关性的研究
环境:00:24:16 sys@ORCL (^ω^) select * from v$version where rownum=1;BANNER--------------------------------------------------------------------------------Oracle Database 10g Enterprise Edition原创 2012-09-17 02:02:38 · 3522 阅读 · 0 评论 -
理解redo(9)10g R2后oracle对redo写的增强
10G R2后,ORACLE提供了一个新参数commit_write来控制客户端commit后,ORACLE写日志的行为。这个参数值有四种组合。 · immediate , wait 注释:Server process在提交时使用semctl发送信号给LGWR,通知其Flush Log Buffer,并等待LGWR发回的消息(semtimedop).原创 2012-09-05 10:03:11 · 1955 阅读 · 0 评论 -
oracle体系结构三部曲之进程结构
与oracle相关的进程可分:用户进程和oracle进程。oracle进程可分:服务器进程和后台进程。服务器进程可分:专用服务器进程和共享服务器进程。后台进程可分:DBWn,LGWR,CKPT等。 和用户进程有关的概念是:连接和会话 连接和会话是两个不同的概念。一条连接上可以建立0个,1个或多个会话,而且各个会话单独且独立的。一条连接即一个进程。 在jsp中,我们举个例子: 一个浏览器就是原创 2012-07-12 01:20:32 · 2500 阅读 · 0 评论 -
oracle体系结构三部曲之内存结构:PGA&UGA
PGA是一个进程专用内存,决不允许其他进程访问。通过C语言的运行时调用malloc()分配,可动态扩缩。而且,PGA绝对不会在oracle的SGA中分配,总是由进程在本地分配。 PGA是介于用户与oracle实例之间的关键角色。用户体验最敏感的贡献就在于PGA。 用户所发出的请求,执行时,是在pga中执行。若在pga中命中,则无须软解析,此时称为软软解析。pga中的游标指向database原创 2012-07-16 13:15:49 · 2412 阅读 · 0 评论 -
深入学习data block体系结构
环境:SQL> select * from v$version where rownum=1;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdSQL> !uname -原创 2012-10-28 16:42:31 · 3588 阅读 · 2 评论 -
理解redo(4)redo log buffer和LGWR
二者的由来,有二: 1)redo records的产生十分频繁 2)server process每次产生的量却不大 倘若每次产生的redo就须由大量高并发sp写入redo log file,则存在两个问题: 1)I/O开支大 2)redo file争用 由此,oracle在redo log机制中引入了log buffer和LG原创 2012-08-13 02:46:04 · 4805 阅读 · 0 评论 -
理解redo(7)oracle redo并行机制的原理介绍
在前面的blog中,我们知道,redo entries写入log buffer大致的过程如下: 在PGA中生产Redo Entry -> 服务进程获取Redo Copy latch(存在多个---CPU_COUNT*2) -> 服务进程获取redo allocation latch(仅1个) -> 分配log buffer -> 释放redo allocati原创 2012-09-03 16:19:10 · 3242 阅读 · 0 评论 -
oracle体系结构学习笔记《一》
体系结构和备份恢复原理1 oracle database 最重要的是online redo log 类比法 controlfile :公司高管 datafile :生产车间 online redo log:财务处 注释: system表空间是第一生产车间; 当公司高管换了,财务处也需要换;2 shared pool主要包括:原创 2012-06-11 00:37:32 · 2636 阅读 · 2 评论 -
初见undo段
学rollback segment目标:概念上清晰,原理上了解,使用上熟悉1 undo段的定义:磁盘上的一段空间。 2当一个事务开始时,先把变化前的数据和变化后的数据写入log buffer中,然后把变化前的数据写入回滚段,最后才在database buffer cache中修改数据。例如: Update emp set sal=4000 where ename=‘SCOT原创 2012-06-11 09:05:43 · 1980 阅读 · 0 评论 -
先对oracle 体系结构有个总体的认识
Oracle体系结构,我觉得,大体可分:内存结构,进程结构和存储结构。其中,进程结构是内存结构和存储结构的沟通桥梁。 在不同的平台上,oracle体系结构的实现略有不同。比如,在unix(linux)上,实现为多进程;在windows上,实现为多线程。一般不建议把oracle部署在windows上哈。因为,win的单进程体系结构使oracle服务器最多只有2G的内存使用量。 既然提原创 2012-07-08 13:26:08 · 3525 阅读 · 0 评论 -
存储结构之参数文件
oracle的参数文件非常之多,但最重要的当属数据库参数文件。而数据库参数文件有pfile和spfile两类。pfile需手动修改,是文本文件;spfile是二进制文件,可动态更改。 之所以会有spfile,原因有: 1)可以杜绝参数文件的繁殖。我们知道,在客户端若要启动数据库,则需要pfile。spfile总是存在于数据库的服务端主机本身,不能置于客户端,从而保证了信息的一致性;原创 2012-07-08 20:47:23 · 1970 阅读 · 0 评论 -
存储结构之数据文件和表空间
oracle存储结构,可分物理结构和逻辑结构。后者是为方便管理前者而生。oracle把数据逻辑地存放在表空间里,物理地存放在数据文件里。 有两个视图,我们可能会常用到: dba_data_files:描述数据文件的信息 dba_tablespaces:描述表空间的信息 这里先谈三个问题。 表空间的类型? 1)永久性表空间,如:system,sysaux,原创 2012-07-09 17:03:36 · 2303 阅读 · 0 评论 -
存储结构之控制文件
其实,蛮蛋疼的,体系结构要想深入的理解,还需要配合后续的备份与恢复的实验和原理。但不管啦,先稍微了解一下。 控制文件是个相当小的二进制文件,最多能增长到64m左右。 参数文件告诉实例控制文件的位置。而控制文件告诉实例:数据库名,数据文件的名称及其位置,在线重做日志文件的名称及其位置,以及系统和各个数据文件的SCN信息。 我们的oracle内部的几个人,都比较喜欢往原创 2012-07-10 11:45:03 · 1831 阅读 · 0 评论 -
存储结构之重做日志文件
重做日志文件,可分在线重做日志文件和归档重做日志文件。它是个数据库的事务日志。目的在于失败时恢复已提交的事务。你在oracle中完成的每个操作几乎都会生成一定的redo信息,并写入在线重做日志文件。 当主机掉电时,你可借助在线重做日志文件,将系统恢复到掉电前的时刻;当磁盘损坏时,你可借助归档重做日志文件恢复到适当的时点;当你误删了某些重要的信息并且提交时,你同样可借助他们去帮你恢复到误删前的原创 2012-07-11 14:36:50 · 2148 阅读 · 0 评论 -
oracle体系结构三部曲之内存结构
还是想唠叨一下,要想把oracle体系结构学深学透,必须结合备份与恢复的实验及原理去学,这个我在后续也会写相应的blog。在这里我在介绍内存结构时,只是做些基础性的了解。 我们先看两个容易混淆的概念。SID和ORACLE_SID,其实吧,这两个没啥本质的区别。若真个想分一分的话。那么,SID是站点标识符,也即会话标识符,他和$ORACLE_HOME一起唯一标识了一个SGA;而ORACLE_S原创 2012-07-13 12:02:46 · 1983 阅读 · 0 评论 -
理解redo(5)深入学习RBA
1 定义 RBA就是redo entries在重做日志文件中所对应的地址 2 组成 RBA由三部分组成: 序列号(4个字节) 块号原创 2012-08-17 14:22:22 · 3505 阅读 · 0 评论 -
理解redo(6)日志却的流程和直接路径加载的REDO分析
当server process得到redo allocation latch进行redo log buffer分配之前,需要先嗅一下redo log file是否有足够的空间。倘若空间不足,则sp会发送switch log file的请求,然后坐等log file switch completion事件的完成了。 日志却请求发出后,CKPT会进行一次增量检查点事件,而LGWR开始进原创 2012-08-19 10:50:10 · 2813 阅读 · 2 评论 -
Oracle SQL引擎体系结构图
当一条SQL提交到Oracle后、SQL引擎会分三个步骤对其处理和执行: ① Parse(解析) ② Execute(执行) ③ Fetch(获取) 这三个步骤分别由SQL引擎的不同组件来完成、下面偶大概的绘出这张体系结构图: 记住这张图、对以后的优化或许会起到事半功倍的效用 =_=By David Lin2013-06-24G原创 2013-06-24 15:05:45 · 3692 阅读 · 0 评论