1、1第3章 Oracle体系结构2数据库和实例o Oracle数据库服务器由数据库和实例组成。o 在Oracle中,数据库是静态的,是以文件的形式存在的,是文件的集合。o 实例是有关数据库管理和控制的一系列进程,以及他们共享的系统全局区SGA3Oracle结构图Oracle数据库服务器实例数据库Oracle进程SGA区后台进程物理存储逻辑存储数据文件控制文件日志文件初始化文件密码文件归档文件表空间段区块服务进程4访问Oracle数据库o 当客户应用或工程程序要访问Oracle数据库时,必须首先连接到Oracle Server,然后才能访问数据库数据。o 当在Sql*Plus中键入用户名、口令和网
2、络连接串之后,就可以连接到Oracle Server了,此时会在客户端启动对应于Sql*Plus应用进程,该进程称为“用户进程”,同时在服务器端Oracle Server会自动为该用户进程派生一个新的进程,该进程为服务器进程。5 当客户端运行SQL语句时,用户进程会通过网络将该SQL语句发送到对应的服务器进程,并且由服务器进程执行该SQL语句,服务器进程在执行了SQL语句之后,会将SQL语句的结果通过网络发送到用户进程。客户端的所有SQL操作都是由服务器进程来执行的。后台进程6数据库操作模式o 专用服务器n 为每个连接到实例的用户进程启动一个专门的服务进程。o 共享服务器n 当用户程序向系统发
3、出请求时,监听器分配一个负荷最轻的调度进程来处理用户请求。7Oracle结构图Oracle数据库服务器实例数据库Oracle进程SGA区后台进程服务进程物理存储逻辑存储数据文件控制文件日志文件初始化文件密码文件归档文件表空间段区块8请大家看一下书上2.2 Oracle内存结构9Oracle内存结构o 内存是Oracle重要的信息缓存和共享区域,主要存储执行的程序代码、连接的会话信息以及程序执行期间所需数据和共享的信息等。o Oracle使用的主要内存结构包括系统全局区SGA和程序全局区PGA。10SGA区11数据高速缓存o 保存最近从数据文件中读取的数据块。分为脏缓存块、空闲缓存块和命中缓存块
4、三类。o 脏缓冲块:当执行INSERT、UPDATE以及DELETE操作时,服务器进程修改数据高速缓存的相应数据,此时缓冲区的内容与数据文件中的内容不一致。12o 当用户第一次提出数据查询请求时,Oracle会首先在数据高速缓存中寻找该数据。如找到,系统就直接对它们进行处理。o 如找不到,系统首先在数据高速缓存中查找空闲数据块,然后将数据库文件中的数据读入空闲块处理,如搜索了一定的数据块后仍找不到空闲块,由后台进程DBWR将内存中部分修改过的数据写入文件,以腾出空间。数据高速缓存13重做日志缓冲区o 重做日志缓冲区用于缓存数据库重做日志记录,以便数据库损毁时可以进行必要的恢复。o 重做日志缓存
5、是一个循环缓存区,在使用时从顶端向低端写入数据,然后再返回到缓冲区的起点循环写入。14共享池o 共享池相当于程序高速缓冲区,所有的用户程序都放在共享池中。o 当用户将SQL指令发送至Oracle,系统首先解析语法是否正确。解析时所需的系统信息,以及解析后的结果将存放在共享池内。所以当不同用户执行相同SQL指令时,可以共享已解析好的结果。15共享池o 共享池库缓存数据字典缓存o 库缓存共享SQL区PL/SQL域锁闩o 数据字典缓冲区存放数据字典信息。16程序全局区 PGA:Program Global Areao PGA是单个Oracle进程(包括服务器进程和后台进程)使用的内存区域,不属于实例
6、的不属于实例的内存结构。内存结构。o PGA含有单个进程工作时需要的数据和控制信息,PGA是非共享的,只有服务进程本身才能够访问它自己的PGA区。17PGAo PGA为指定进程专用.o 当用户连接服务器并建立会话时,Oracle为其分配一个PGA。18PGAo PGA包括n 私有SQL区n 会话内存区n 排序区19Oracle结构图Oracle数据库服务器实例数据库Oracle进程SGA区后台进程服务进程物理存储逻辑存储数据文件控制文件日志文件初始化文件密码文件归档文件表空间段区块20后台进程o 数据库写进程DBWR(Datebase Writer)o 日志写进程LGWR(Log Writer
7、)o 检查点进程CKPT(Checkpoint Process)o 系统监控进程SMON(System Monitor)o 进程监控进程PMON(Process Monitor)21请大家看一下书上2.3 Oracle进程22数据库写进程(DBWn/DBWR)o DBWn进程负责将数据库缓存中的脏缓存块写入数据文件中。o 在出现以下情况时,DBWn开始工作n 系统发出检查点(checkpoint)。n 脏缓冲区个数达到指定阈值。n 服务器进程不能找到自由缓冲区。23DBWnDBWR24日志写进程(LGWR)o 当运行DML(INSERT、UPDATE、DELETE)或DDL(CREATE、AL
8、TER、DROP)语句时,服务器进程首先将事务变化记载到重做日志缓冲区,然后才会将数据写入到数据高速缓存的相应缓冲区,并且重做日志缓冲区的内容将会被写入到重做日志文件中,以避免系统出现意外所带来的数据损失。25LGWR重做日志缓存循环使用。LGWR在以下几种情况下发生:o 在DBWR将脏数据写入数据文件之前。o 重做日志缓冲区已有三分之一填满。o 每隔3秒钟。o 提交事务。o 重做日志记录大小到126思考o Oracle总是尽量将用户“最常使用的数据”保留在缓冲区内,以提高数据存取的效率。那么,如果仅将最不常用的数据写至数据文件,那么这些“经常使用”的数据反而没机会存回硬盘?Oracle系统使
9、用检查点进程(CKPT)定时触发一次更新数据文件的操作。27检查点进程(CKPT)o CKPT进程负责向数据库发出检查点,检查点用于同步数据库的所有数据文件、控制文件和重做日志。28SCN(System Change Number)o 当运行Insert、Update、Delete以及其他涉及到数据库变化的语句时,Oracle会针对任何修改生成顺序递增的SCN值,并将该SCN值连同事务变化一起记载到重做日志缓冲区。SCN是用于记载数据库变化的唯一标识号,永远不会用尽。o 假定Update之前的SCN为100000,当执行了Update之后有三个数据块发生变化,则SCN会增加为100003。29
10、CKPT工作原理o 当Oracle发出检查点时,系统会将检查点时刻的SCN值写入到控制文件和数据文件头部,同时还会促使DBWR进程将所有脏缓冲区写入到数据文件中。30检查点工作机制o 在DBWR进程工作之前,LGWR进程首先将重做日志缓冲区内容写入到重做日志文件,即该时刻的SCN值会被写入重做日志。o 当CKPT进程工作的时候,会将当前时刻的SCN值写入数据文件和控制文件。o 在发出检查点时刻,数据文件、控制文件和重做日志的SCN值完全一致。31系统恢复o 当运行Oracle Server时,在访问数据文件、控制文件和重做日志时,Oracle会定期检查并比较每种文件的SCN值,确定文件是否损坏
11、、系统是否出现异常,最终确定系统是否需要进行恢复。32思考o 假定某用户执行了“insert into DEPT values(50,SALES,BeiJing)”和”COMMIT”操作后,突然意外断电,那么n 事务变化记载到了哪种文件中?n 控制文件和数据文件的SCN值是否一致?n 控制文件和重做日志的SCN值是否一致?33分析o 在执行COMMIT操作时,后台进程LGWR要开始工作,所以事务变化被记载到重做日志中。因为只有在发出检查点时,才会将SCN值写入控制文件和数据文件头部,所以控制文件和数据文件的SCN值保持一致,并且存放的是先前检查点的SCN值。o 控制文件和数据文件的SCN值一致
12、,与重做日志不一致!34SMONo 如果数据库未正常关闭,文件中数据不同步。o 因为最近检查点SCN到COMMIT时间点SCN之间的事务变化都被记载到了重做日志中,所以在重新打开数据库之前,Oracle会自动执行这两个时间点之间的事务操作,并同步所有数据文件、控制文件和重做日志文件,然后才会打开数据库。o 该过程被称为应急恢复,正是由SMON完成的,SMON还负责在启动实例时清理临时段和合并区碎片。35一致性处理o 如果数据文件、控制文件、重做日志的当前SCN值完全一致,则系统会直接打开所有数据文件和重做日志。o 如果控制文件和数据文件的当前SCN值完全一致,并小于重做日志的当前SCN值,则需
13、要进行实例恢复。o 如果控制文件和数据文件的当前SCN值不匹配,则表示数据文件或控制文件存在损坏,此时需要进行介质恢复,以恢复损坏文件。36思考o 假定你在客户端运行SQL*PLUS访问Oracle Server,那么Oracle将在服务器端分配相应的服务器进程。假如你正常退出了SQL*PLUS或该进程出现了意外情况,那么Oracle会如何处理服务器进程呢?o 系统当然要释放服务器进程所占用的资源。37PMONo Oracle如何确定用户进程是处于连接状态、断开连接还是异常状态?o 这个任务由PMON来完成。n 资源回收(锁、SGA、PGA)n 状态恢复(将用户的操作回退到最近一次事务提交时的
14、状态)38一个典型的独立型Oracle实例39一个并行的Oracle服务器实例(Oracle Parallel Server)40Oracle结构图Oracle数据库服务器实例数据库Oracle进程SGA区后台进程服务进程物理存储逻辑存储数据文件控制文件日志文件初始化文件密码文件归档文件表空间段区块41请大家看一下书上3.1 Oracle数据库的物理结构42Oracle数据库物理存储结构o Oracle数据库在物理上是存储于硬盘的各种文件。它是活动的,可扩充的,随着数据的添加和应用程序的增大而变化。43数据文件o Oracle数据库模式对象中的所有数据均存储在数据文件中,也就是说,数据文件是O
15、racle数据库的唯一物理存储对象,所以每个Oracle数据库至少由一个数据文件组成。o 数据文件用来存储数据库中的全部数据,如数据库表中的数据和索引数据。数据文件通常是后缀名为.dbf格式的文件。44数据文件o 数据文件实际上是一个操作系统文件,这些文件中的数据格式是只有Oracle数据库系统才能够正确识别的二进制格式。45数据文件o Oracle数据库至少要包含一个数据文件,并且数据文件是表空间的物理组成元素,一个表空间可以包含多个数据文件,并且每个数据文件只能唯一地属于某个表空间。数据库SYSTEM表空间表空间一表空间二数据文件逻辑组成物理组成46重做日志文件o 重做日志是用于记录数据库
16、变化的物理文件,其目的是为了在出现意外时恢复Oracle数据库,数据库至少要包含2个重做日志组,并且这些重做日志组是循环使用的。日志组一日志组二日志组三47归档 当数据库处于ARCHIVELOG(自动归档)模式时,在进行日志切换时,Oracle会自动将重做日志内容复制到归档日志中。48多元化重做日志o 用户可以为相同的日志文件建立一个文件组,将同一个文件组中的文件放在不同的磁盘上建立一些副本。LOG1ALOG2ALOG1BLOG2B磁盘A磁盘BLGWR日志组1日志组249控制文件o 每个Oracle数据库都有一个控制文件(名字通常为Ctr*.ctl格式),用以记录与描述数据库的物理结构,包括以
17、下信息:n Oracle 数据库名称与建立时间。n 数据文件与重做日志文件名称及所在位置。n 日志记录序列号(log sequence number)。n 数据库检查点信息。50o 数据库的数据文件和重做日志文件均是一些操作系统文件,Oracle在操作数据库时,怎样将指定数据库中的这些文件同普通的操作系统文件和其他数据库文件区分开来,这正是数据库控制文件的功能。o 如果把数据文件比作一个仓库,那么重做日志文件就相当于该仓库的货物进出记录账本,控制文件就是该仓库的管理中心。控制文件51Oracle结构图Oracle数据库服务器实例数据库Oracle进程SGA区后台进程服务进程物理存储逻辑存储数据
18、文件控制文件日志文件初始化文件密码文件归档文件表空间段区块52Oracle数据库的逻辑结构o 逻辑上,数据库是由一个或多个表空间组成的,并且一个表空间只能属于一个数据库。o 物理上,表空间又是由一个或多个数据文件组成的。表空间1表空间2表空间1Oracle逻辑结构Oracle物理结构53Oracle逻辑结构数据库表空间段区Oracle块数据文件O/S块逻 辑物 理54表空间(Tablespace)o 如果将图书馆比喻为数据库的话,那么可以将图书馆的每个书架看作为表空间类似于书架,不同表空间将用于存放不同类型的数据。55表空间的类型n 系统表空间n 回滚表空间n 临时表空间n 用户表空间n 索引
19、表空间n 用户创建的表空间56表空间的作用1o 能够将数据字典与用户数据分离。o 能够将回退数据与用户数据分离,避免由于硬盘损坏而带来的永久性数据丢失。o 能够将表空间的数据文件分散保存到不同的硬盘上,平均分布物理I/O操作。57o能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份和恢复。o能够为某种特殊用途专门设置一个表空间,如临时表空间,以优化表空间的使用效率。o能够更加灵活地为用户设置表空间限额。表空间的作用258Oracle逻辑结构数据库表空间段区Oracle块数据文件O/S块逻 辑物 理59段(segment)o 段用于存储特定逻辑结构的所有数据。当建立数据对象(
20、表、索引、簇等)时,Oracle会自动给这些数据对象分配相应的存储控件,以存放它们的数据信息。o 在一个表空间上可以包含一个或多个段,一个段只能存放在一个表空间上,并且段是由一个或多个区组成的。60段的类型o 根据段中存储的模式对象不同,段分为以下几类:n 数据段:保存数据表中的记录。n 索引段:当执行CREATE INDEX语句时,Oracle自动创建索引段。n 临时段:在执行查询、排序、创建索引等操作时,Oracle使用临时段保存临时数据。n 回滚段:用于存放数据修改之前的值。61Oracle逻辑结构数据库表空间段区Oracle块数据文件O/S块逻 辑物 理62区(Extent)o 区由连
21、续的数据块组成,它是Oracle空间分配的逻辑单元。Oracle为段分配空间是以区为单位进行分配的。o 例如:当建立表EMP时,Oracle会为该表建立相应的表段EMP,假定初始时该表段只包含一个区(1M),那么当数据占满1M空间之后,再插入数据时,Oracle会自动扩展该段,并为其分配第二个区。63Oracle逻辑结构数据库表空间段区Oracle块数据文件O/S块逻 辑物 理64数据块(Data Block)o 数据块也称为Oracle块,它是Oracle在数据文件上执行I/O操作的最小单位。o 例子:假定某用户执行”SELECT*FROM emp WHERE empno=7788”只会返回
22、100B的数据,而数据块尺寸为2KB,那么Oracle读取多少数据到数据高速缓存呢?2KB65Oracle结构图Oracle数据库服务器实例数据库Oracle进程SGA区后台进程服务进程物理存储逻辑存储数据文件控制文件日志文件初始化文件密码文件归档文件表空间段区块66企业管理器(Oracle Enterprise Manager)o 企业管理器(OEM)是Oracle为管理用户提供的可视化管理工具,该工具几乎包含了对数据库对象的所有管理.67OEM体系结构Oracle ManagementOracle ManagementRepositoryOracleAgentOracleAgentOrac
23、leAgentWeb BrowserConsoleConsole68OEM三层结构-1 第一层客户端工具,如 OEM Console,SQL*PLUS.这些工具是从机器本地启动的,也可以是通过浏览器下载下来的Java applet.69OEM三层结构-2 第二层是中间层,由安装在操作系统上的Oracle Management Server(OMS)构成。很多工具都要求先配置好OMS。OMS提供:o 访问EM库(Repository)中的信息。o 分派控制台的请求o 控制任务的执行o 监控事务o 通过邮件或寻呼提示任务的完成或事件的发生70OEM三层结构-3 第三层是只能代理(Intellige
24、nt Agent),是在每个server上必须安装的,用来执行任务和监控发生在服务器各个被管理对象上的事件的软件。被管理对象包括网络节点(服务器)、数据库、监听程序(listener)以及安装在这些节点上的Oracle服务。71OEM控制台o 独立启动72OEM组件介绍1.方案管理方案管理能够在数据库中管理对象。可以用于创建、修改和删除表、索引、视图、快照和序列等。方案管理功能非常强大,能够以层次结构列表形式管理。73OEM组件介绍2.安全管理安全管理提供给数据库系统管理员在Oracle中管理访问权限和对象权限的一种方法。数据库系统管理员能够为用户和其他角色创建、修改和删除安全对象以及相关的权限、角色和环境资源文件。74OEM组件介绍3.存储管理存储管理允许创建和修改表空间、数据文件和回退段。75OEM组件介绍4.例程管理例程管理允许关闭、启动例程并且存储和管理数据库参数。例程管理监测每个数据库的例程,如果数据库在运行,可以看到所有当前的连接,可以得到数据库状态的信息、日志记录状态和SGA配置信息。76OEM组件介绍5.复制管理复制管理允许用户对数据库和对象进行复制。