ITPub博客

首页 > 数据库 > Oracle > 体系结构(二)(补充)

体系结构(二)(补充)

原创 Oracle 作者:wenjunheyixiao 时间:2016-02-29 23:12:24 0 删除 编辑

1

客户机------>中间层----->服务器

2

内存中运行比在磁盘中快,所以数据库是在内存中运行的。

关机就不可以使用数据库,所以使用数据库就必须得开机。

管理数据库时通过实例管理,一个数据库在任意时刻且当前时刻只能对应一个实例。

实例{内存(memory),后台进程(background}

进程:说白了就是干活的

 export  ORACLE_SID----->实例名,也可以说是接口名。

 10g之前没有stream  pool

 

3

连接:用户进程和实例之间的连接

会话:用户通过用户进程与实例建立的特定连接。

  create table t1 (id number,name  vsrcher2(20);

  insert into t1 values (1,'junxiao');

  select * form t1;

 一个人连接一次数据库,相当于一次会话。

4

 

Oracle是由甲骨文公司开发出来的,并于1989年正式进入中国市场,成为第一家进入中国的世界软件巨头。当然,当时的Oracle尚名不见经传,由Oracle开发的商用关系型数据库技术即年开始服务于中国用户。1991年7月,Oracle在北京建立独资公司。

 

Oracle数据库,是积聚了众多领先性的数据库系统,在集群技术、高可用性、商业智能、安全性、系统管理等方面都领跑业界。

 

 

ORACLE数据库系统为具有管理ORACLE数据库功能的计算机系统。每一个运行的ORACLE数据库与一个ORACLE实例(INSTANCE)相联系。一个ORACLE实例为存取和控制一数据库的软件机制。每一次在数据库服务器启动一数据库时,称为系统全局区(SYSTEM GLOBAL AREA)的一内存区(简称SGA)被分配,有一个或多个ORACLE进程被启动SGA ORACLE进程的结合称为一个ORACLE数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。

在ORACLE系统中,首先是实例启动,然后由实例装配(MOUNT)一数据库。在松耦合系统中,在具有ORACLE PARALLEL SERVER 选项时,单个数据库可被多个实例装配,即多个实例共享同一物理数据库。

进程结构和内存结构

进程是操作系统中的一种机制,它可执行一系列的操作步。进程是由多个线程组成的。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。

ORACLE实例有两种类型:单进程实例和多进程实例。

单进程ORACLE(又称单用户ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行

在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。

多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分,对于每一个连接的用户都有一个进程。

多进程统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行 的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于处理连接到该实例的用户进程的请求。当应用和ORACELE 是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一个分离服务器进程与ORACLE通信。它可执行下列任务:

对应用所发出的SQL语句进行语法分析和执行。

从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时),将结果返回给应用程序处理。

系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进程,后台进程的名字为:

DBWR数据库写入程序

LGWR日志写入程序

ARCH归档

RECO 恢复

LCKn 封锁 。

 

 

 

5

 

6

把磁盘上的数据缓存到内存中。(server process负责把磁盘上的数据调到内存的 buffer  cache中)

如果内存中满了,dbwr进程把内存的数据写到磁盘中,为了释放一定的空间)

 

7

重做日志缓冲区:

   由于Oracle的每一项操作都会记录重做日志,因此很有必要为重做日志专门设立一个缓冲区,即重做日志缓冲区。

   重做日志缓冲区的大小由初始化参数LOG_BUFFER指定。

   重做日志缓冲区由很多重做记录(Redo Record)组成。每条重做记录记载了被修改数据块的位置以及变化后的数据。

   下面看一下,当执行"UPDATE emp SET sal=2000 WHERE empno=7788;"这条语句时的过程:

   1.Oracleemp表中empno=7788的记录的sal的值的变化记录到重做日志缓冲区中

   2.将旧值1000记录到UNDO段所对应的缓冲区中(database buffer cache)

   3.将新值2000存放到EMP段所对应的缓冲区中( online  redo log buffer caache)

   4.将重做日志缓冲区的内容写入重做日志文件( online redo log file)

   5.Commit

 

 

 

 

 

 

log  buffer(提高commit速度)

  commit 的速度比rollback的速度快

 必须保证内存是最新的状态

 DDLcreate,drop,alter)

 DML(insert,delete,update)

 DQL(select)

 DML语句是不会记录在redo  log buffer中的

8

 

9

DBWRx种触发机制

 ----当前赃块的表空间至为offline

-----drop  table--CKPT进程触发DBWR

-----日志切换时LGWR通知DBWR写赃块

-----lru链上查找块到40%的时候触发dbwr

对DBWR的一些理解

 

首先从名称上,DBWR 全称是Database Writer Process,属于Oracle后台进程的一种,有的地方也叫DBWn,我想这里是出于DBWR进程个数的原因,DBWR进程在一个Oracle Server中可以最多有20个,编号是DBW1-DBW9和DBWa-DBWj,下面根据不同文档、官方手册以及高手帖的理解,总结关于DBWR的一些 关键点:

1、DBWR是将数据库 buffer cache中的dirty数据块写到磁盘中,这里dirty表示的是buffer cache中被修改的buffer缓存,DBWR是根据LRU算法实现从缓存写到磁盘的,与dirty相对的还有cold(或clean)块的概念,即未 修改的缓存。根据LRU算法,DBWR会将最近最少被使用的buffer写入磁盘,以让其它的数据内容可以写入该缓存,也就是free buffer增加,否则一味地占用buffer cache,新的数据就不能利用buffer cache了。

2、新增的DBWn不能 在单处理器中使用,对于数量,每8个CPU可以至少利用一个DBWR进程,如果是处理器组,那么有多少个处理器组,就应该有多少个DBWR进程。DBWR 的个数可以由初始化参数DB_WRITER_PROCESSES决定。总结来讲,DBWR的个数如果没有在启动时由用户指定,那么Oracle会根据 CPU和处理器组的个数来设置DB_WRITER_PROCESSES参数。

3、DBWR进程会将dirty缓存写入磁盘,条件是:

(1)、服务进程在扫描 buffer个数阈值(由隐藏参数:_db_block_max_scan_pct,代表已经扫描的buffer header的个数占整个LRU链表上buffer header总数的百分比)后还没找到一块clean未用的缓存时,会触发DBWR。当执行其它处理时,DBWR会异步地将dirty缓存写入磁盘。

(2)、当出现checkpoint时,DBWR会将dirty的缓存写到磁盘。

(3)、数据文件或表空间离线。

(4)、表空间在备份。

(5)、表空间只读。

(6)、超时。

(7)、表被删除或截断。

4、DBWR是批量(多块)写入,以提高性能。块的数量在不同的操作系统有不同的设置。

5、关于DB_WRITER_PROCESSES,官方文档注明它的默认值是1或CPU数量/8,以及任何大于它的值,范围是1到20。

最重要的一点就是不是每次交易执行commit时,都会立即调用DBWR,换句话说,commit时DBWR不会做任何事情。

 


 

 

 

10

LGWR写的条件

1.commit的时候

2.达到三分之一满的时候

3.日志大小为1M

4.每隔3

5.DBWn进程写之前

 

 

11

 

12

 

 

13

 

14

 

15

 


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

上一篇: PRVF--0002
请登录后发表评论 登录
全部评论

注册时间:2015-12-02

  • 博文量
    117
  • 访问量
    159282