ITPub博客

首页 > 数据库 > Oracle > 初学Oracle浅见

初学Oracle浅见

原创 Oracle 作者:zwy1997 时间:2018-10-26 13:23:22 0 删除 编辑

首先上一张Oracle体系结构图,与每个初次见到这张图的人一样,脑子里是一团浆糊,虽然我大学里学过数据库但是和Oracle毫不沾边,后来因一次阴差阳错的机会接触到了Oracle。

正文:

Oracle服务器由两大部分组成

实例结构+数据库结构=Oracle服务器

实例内存结构包含SGA系统全局区,实例进程包含一些重要的后台进程

但Oracle内存结构不仅有SGA还有PGA、UGA等

进程结构不仅包含后台进程还有服务器进程Server Process、用户进程User Process等等

从SGA开始

SGA里有Shared pool共享池、Database Buffer Cache数据库高速缓存区、Redo Log Buffer Cache重做日志缓存区

Java Pool、Stream Pool以及Large Pool。当然还有其他的一些内存区域。


Shared pool 共享池里又主要由两个部分组成

1、Library Cache 库缓存 

顾名思义库是存放东西的,存放的是最近执行过的SQL语句信息以及PL/SQL过程,其中有解析过程,执行计划和执行结果。

2、Data Dictionaray Cache 数据字典缓存

数据字典就是存放数据文件、表、列以及其他一些定义性的信息还有权限信息等。


Database Buffer Cache 数据库高速缓存

这个区域是从数据文件中读取最近访问的缓存块,对于数据库的数据查询以及更改等有很大的性能提升

这里面的缓存块由以下几种

1、正在被使用的缓存块,一般是经常访问的缓存块,这种不会被写入数据文件中 

2、干净的缓存块,用过了但是被DBWR进程写入了数据文件 

3、空的,完全未使用过的缓存块 作用等同于干净的缓存块等待被写入数据

4、脏缓存块,在这里面就是数据被更改过的缓存块


Redo Log Buffer Cache 重做日志缓冲区

这个区域是用来记录用户对数据库进行的所有操作的信息,比如用户更改了一条数据,在这里就把修改的数据和位置记录在重做日志缓冲区中然后由LGWR进程写入重做日志文件中,一般有两个以上的重做日志文件然后循环写入,比如第一个文件写满了就写在第二个上,在归档模式下,切换重做日志文件时就把已满的那个文件数据全部镜像到归档日志文件下,相当于再备份。


重要的后台进程

DBWR 数据库写进程

在上面已经见过这个进程的作用,就是把数据库高速缓存区的脏数据写入数据文件中,永久保存

触发条件

1、脏缓存区已满,不得不写

2、时间间隔已到,一般三秒写一次

3、需要从数据文件缓存数据但无空闲数据块时

4、检查点发生时即CKPT触发时

5、表空间设置为只读或者脱机备份时

6、出现临时表的更改,如删除等


LGWR 重做日志写进程 将重做日志缓存区的操作记录写到重做日志文件中

触发条件

1、时间间隔已到

2、DBWR进程写之前

3、缓存满1MB或者三分之一满时

4、用户进行COMMIT提交操作时


CKPT 检查点进程 通知DBWR进程干活,将干完之后的记录比如系统更改号SCN写入数据文件头部以及控制文件中

同步数据文件,控制文件以及重做日志文件

触发条件

1、重做日志切换时

2、正常事务处理完成时如DBWR和LGWR干完活

3、系统关闭时


PMON 进程监视进程 监视其他进程,清除失败的用户进程并释放当时正在使用的资源

SMON 系统监视进程 在数据库发生无法控制的崩溃时,如断电。会自动应用重做日志文件的纪录进行实例恢复工作

ARCH 系统开启归档下才会有的进程,将重做日志文件切换后的数据内容复制到归档日志文件中去


数据库结构

1、物理存储结构(文件结构)

2、逻辑存储结构


物理存储结构

数据库中物理上是存放在物理文件中

1、数据文件 存放数据库的系统表信息以及所有的数据信息 

2、控制文件 参数文件Init.ora里面记录了控制文件的位置,控制文件中包含数据库的名字,检查点信息,数据库创建的内部时间戳以及所有的文件信息  备份信息等

3、重做日志文件 对数据库的所有操作都将记录在这个文件中

4、归档日志文件 重做日志文件的备份文件

5、参数文件 在启动实例时,根据参数文件中的配置为SGA分配内存和启动后台进程

6、口令文件 存放用户信息,进行超级用户sys的身份验证


逻辑存储结构

在逻辑上以表空间、段、区、块层层往下剥离

一个表空间只能属于一个数据库,但一个数据库可以有多个表空间

表空间在逻辑上是有多个段组成的,在物理上是由一个或者以上的数据文件组成的

一个数据文件只能属于一个表空间

段是可以不连续的所以也意味着段可以跨数据文件

区,连续的数据块组成的一个区域

块,数据块,Oracle中最小的I/O单位







问题

实例是什么?

redo和undo分别应用到什么?

数据库启动的顺序和状态?

实例恢复应用到什么?


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31557302/viewspace-2217601/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2018-10-23

  • 博文量
    4
  • 访问量
    2819