Oracle 9 i 数据库体系结构

63
Oracle9 Oracle9 i i 数数数 数数数 数数数 数数数

description

Oracle 9 i 数据库体系结构. Oracle9i 数据库体系结构. Oracle9 i 物理 结构. Background Processes. SGA(System Global Area). Servers. Redo Log Files. Data Files. Parameter File. Users. Control Files. Server Parameter File. 日志文件(Redo Log Files). Redo Log 文件记录对于数据库的所有修改,用于数据库的恢复 - PowerPoint PPT Presentation

Transcript of Oracle 9 i 数据库体系结构

Page 1: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii 数据库体系结构数据库体系结构

Page 2: Oracle 9 i 数据库体系结构

Oracle9i 数据库体系结构

Page 3: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii 物理物理结构结构

Page 4: Oracle 9 i 数据库体系结构

SGA(System Global Area)SGA(System Global Area)

Background ProcessesBackground Processes

ServersServers

UsersUsers

Data Files Redo Log Files

Control Files

Parameter File

Server Parameter File

Page 5: Oracle 9 i 数据库体系结构

E_mail:[email protected] 5

日志文件日志文件 (Redo Log Files)(Redo Log Files)

Redo Log 文件记录对于数据库的所有修改,用于数据库的恢复

如果对于日志文件进行镜像,则相同的 如果对于日志文件进行镜像,则相同的 Redo Log Redo Log 信息被写入多个联机的 信息被写入多个联机的 Redo Redo LogLog 文件中文件中

OracleOracle 运行运行 NOARCHIVELOGNOARCHIVELOG 时只有历史时只有历史日志,没有归档日志日志,没有归档日志

Page 6: Oracle 9 i 数据库体系结构

E_mail:[email protected] 6

日志文件日志文件 (Redo Log Files)(Redo Log Files)

每个 Oracle 数据库至少有两个 Redo Log 日志文件组,每组有一个或多个日志文件

建议对 Redo Log 文件进行镜像,以保证数据库安全运行

建议使用四个 Redo Log 文件组,每组 2 或 3 个日志文件

组内 Redo Log 文件位于不同磁盘 Redo Log 文件是循环使用的

Page 7: Oracle 9 i 数据库体系结构

ServersServers

UsersUsers Data FilesRedo Log

Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared Pool Redo Log Buffer

Redo Log Buffer

SGA(System Global Area)SGA(System Global Area)

DBWRDBWR

ARCHARCHLGWRLGWR

日志产生过程日志产生过程

1

2

3

Page 8: Oracle 9 i 数据库体系结构

E_mail:[email protected] 8

Redo Log Redo Log 文件镜像文件镜像

一个日志组中 Redo Log 文件具有相同的信息

选择合适的日志文件大小组中的成员同时被更新每组应包含与其他组中数目相同的日志成员镜像的 Redo Log 文件可以防止 Redo Log

文件丢失

Page 9: Oracle 9 i 数据库体系结构

Oracle9i Database (Oracle9i Database (Windows NTWindows NT))

Page 10: Oracle 9 i 数据库体系结构

Oracle9i Database (Oracle9i Database (UnixUnix))

Page 11: Oracle 9 i 数据库体系结构

E_mail:[email protected] 11

日志切换日志切换当 ORACLE 从一个 Redo Log 文件切换到另

一个日志文件时发生日志切换当 LGWR 写满一组日志文件时发生日志切换DBA 可强制日志切换数据库关闭时发生日志切换日志切换时,当前日志文件被赋予一个新的

日志序列号,用于标识其中的信息日志切换时产生检查点 CKPT(Checkpoint)

Page 12: Oracle 9 i 数据库体系结构

Redo Log 文件组

Group1 Member A Group2 Member A Group3 Member A

Group1 Member B Group2 Member B Group3 Member B

Group1 Member C Group2 Member C Group3 Member C

Log File 1 Log File 2 Log File 3

Page 13: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii for Unix for Unix 日志文件结构日志文件结构 ((Sun Solaris)Sun Solaris)

redo01.log redo02.log redo03.log

三个日志文件组 , 每组一个日志成员

Page 14: Oracle 9 i 数据库体系结构

Oracle9i Oracle9i 日志文件结构日志文件结构 ((Windows NT)Windows NT)

Redo01.log

三个日志文件组 , 每组一个日志成员

Redo02.log Redo03.log

Page 15: Oracle 9 i 数据库体系结构

Oracle9iOracle9i 数据库参数文件数据库参数文件

服务器参数参数 spfileServer Parameter File

文本参数 pfileParameter File

Page 16: Oracle 9 i 数据库体系结构

E_mail:[email protected] 16

控制文件控制文件 ((Control Files)Control Files)

控制文件是描述数据库结构的二进制文件 控制文件 所有必须的数据文件和日志文件在控制文件中标识 数据库名存储在控制文件中 控制文件用于打开和存取数据库 数据库恢复所需的同步信息存储在控制文件中 控制文件 数据库的物理组成与控制文件中的记录不同时数据库的物理组成与控制文件中的记录不同时 ,, 系系

统则不能正常启动或发生统则不能正常启动或发生 downdown 机现象机现象

Page 17: Oracle 9 i 数据库体系结构

E_mail:[email protected] 17

控制文件控制文件 ((Control Files)Control Files)

建议设置:至少使用两个控制文件 , 并存放于不同磁盘参数 Control_Files 指明控制文件 控制文件的镜像可以在数据库创建或创建完控制文件的镜像可以在数据库创建或创建完

成后进行成后进行

Page 18: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii Database ( Database (Windows NTWindows NT))

Page 19: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii Database ( Database (UnixUnix))

Page 20: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii 逻辑逻辑结构结构

Page 21: Oracle 9 i 数据库体系结构

Database

Tablespace

SegmentData Index

TempRollback

ExtentFree Used Data Block

Part of

Part of

Oracle9iOracle9i 数据库的逻辑结构数据库的逻辑结构

Page 22: Oracle 9 i 数据库体系结构

表空间

OracleOracle 表空间类型表空间类型

数据字典管理表空间 (Oracle7,8,8i)

本地化管理表空间(Oracle8i,9i)

Uniform

AutoAllocate

Page 23: Oracle 9 i 数据库体系结构

OracleOracle 表空间类型表空间类型

Page 24: Oracle 9 i 数据库体系结构

E_mail:[email protected] 24

Oracle9iOracle9i 临时段管理临时段管理 Oracle9i 的缺省临时表空间( Default

Temporary Tablespace )用于用户排序时SQL 的 Order by 语句使用,在创建用户时指定用户缺省的临时表空间。

在 Oracle9i 中,允许数据库管理员重新创建并设置系统临时表空间,而不使用系统表空间作为排序、汇总等临时表空间使用。如果系统设置了系统缺省临时表空间,则用户不得使用其他表空间作为临时表空间使用。

Page 25: Oracle 9 i 数据库体系结构

E_mail:[email protected] 25

回退段回退段 ((Rollback Segments)Rollback Segments)

为什么要设回退段 ? 回退段是数据库的一部分,是 Oracle 数据库

的一个重要参数 , 其设计是否正确直接影响到数据库的动态性能。 Rollback 段的使用用于保存一个事务的操作 , 以便在某些情况下回退或取消操作。 每个 Oracle 数据库都有多个回退段

回退段的作用 并发操作时,保证数据的读一致性 使用 SQL语句 rollback 回退一个事务的操作

Page 26: Oracle 9 i 数据库体系结构

E_mail:[email protected] 26

回退段回退段 ((Rollback Segments)Rollback Segments)

事务恢复的需要 回退段操作举例 由于语句错误回退一个事务 回退一个事务、或回退事务到一个保存点

(SavePoint) 由于异常进程中断而回退 在例程恢复中回退所有没未完成的事务

Page 27: Oracle 9 i 数据库体系结构

Oracle9i 自动 Undo 空间管理

在 Oracle8i 以前的数据库中,对于回退段的设置与管理已一直是一个十分复杂的工作,其正确的设置既困难又费时。对于大的事务往往产生回退段不足的错误,或在 RBS 表空间回退段中消耗过大。

Oracle9i 引如了一个新的概念,即 Automatic Undo Management , Undo 空间自动管理。在 Oracle9i 中,可以使用传统的回退段,也可以使用 Undo 表空间, Oracle9i对 Undo 空间自动管理,使回退段的管理变的十分容易。

在 Oracle9i 中,可以使用自动 Undo 管理代替回退段, Oracle9i 使用 Undo 表空间,并对 Undo 空间自动管理。

Page 28: Oracle 9 i 数据库体系结构

Oracle9i 自动 Undo 空间管理

在 Oracle8i 中,私通使用手动管理 Undo 空间,使用在 RBS 表空间中创建大的回退段的方法处理大的事务,由于一个事务只可以使用一个回退段,当一个回退段动态扩展超过区最大值、或超过数据文件的允许扩展范围时,将产生回退段不足的错误,事务被进行过程被终止。

在 Oracle9i 中,一个事务可以使用多个回退段。使用 Oracle9i 的 Undo 空间自动管理特点,当一个回退段不足时, Oracle会自动使用其他回退段,不终止事务的运行。

在 Oracle9i 中,数据库管理员只需了解 Undo 表空间是否有足够的空间即可。

Page 29: Oracle 9 i 数据库体系结构

自动自动 UndoUndo 空间管理空间管理

Page 30: Oracle 9 i 数据库体系结构

Oracle9Oracle9ii 内存结构内存结构

Page 31: Oracle 9 i 数据库体系结构

ServersServers

UsersUsers Data FilesRedo Log

Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared Pool Redo Log Buffer

Redo Log Buffer

SGA(System Global Area)SGA(System Global Area)

DBWRDBWR

ARCHARCHLGWRLGWR

系统全局区系统全局区 SGASGA

Page 32: Oracle 9 i 数据库体系结构

ServersServers

UsersUsers Data FilesRedo Log

Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared PoolRedo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCHLGWRLGWR

数据缓冲区数据缓冲区 ((Database Buffer Cache)Database Buffer Cache)

Page 33: Oracle 9 i 数据库体系结构

DB 数据缓冲区

Dirty list

.

.

.

.

LRU list

.

.

.

.

Datafiles

Data files

数据缓冲区数据缓冲区 ((Database Buffer Cache)Database Buffer Cache)

Server

DBWR

SGA

Free,Dirty,Pinned

Page 34: Oracle 9 i 数据库体系结构

ServersServers

UsersUsers Data FilesRedo Log

Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared PoolRedo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCHLGWRLGWR

日志缓冲区日志缓冲区 ((Redo Log Buffer)Redo Log Buffer)

Page 35: Oracle 9 i 数据库体系结构

ServersServers

UsersUsersData Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared PoolSGASGA

DBWRDBWR

共享池共享池 ((Shared Global Area)Shared Global Area)

ServersServersServersServers

UsersUsersUsersUsers

Page 36: Oracle 9 i 数据库体系结构

Oracle9iOracle9i 实例实例的进程结构的进程结构

Page 37: Oracle 9 i 数据库体系结构

E_mail:[email protected] 37

Oracle启动时 ,将分配系统全局区 SGA 并启动Oracle后台进程 (Background Processes) 。内存区域和后台进程合称为一个 Oracle实例 (Instance) 。

SGA 是由 Oracle 为一个实例分配的一组共享内存区域

后台进程异步地为所有的数据库用户执行不同的任务 参数文件决定了实例的特征及大小 不正确的参数文件 ,会导致实例启动失败 Oracle 数据库的 Instance决定了动态运行的数据库

的 ORACLE_SID

OracleOracle 实例实例 ((Instance)Instance)

Page 38: Oracle 9 i 数据库体系结构

System Global AreaSystem Global AreaSystem Global AreaSystem Global Area

Background ProcessesBackground ProcessesBackground ProcessesBackground Processes

ServersServers

UsersUsers

Data FilesRedo Log Files

Control Files

Page 39: Oracle 9 i 数据库体系结构

OracleOracle 数据库进程结构数据库进程结构 Oracle 可以在多进程和单进程配置下工作。 多进程配置 多个进程执行 Oracle 代码的不同部分 多进程允许多个用户同时使用 单进程配置 所有的 Oracle 代码由一个进程执行单进程实例只允许单个用户使用主要用于单任务的机器上

通常使用的 Oracle 都是多进程实例结构

Page 40: Oracle 9 i 数据库体系结构

Database Buffer Cache

Database Buffer Cache

Shared PoolShared Pool SGASGA

OracleOracle 数据库单进程结构数据库单进程结构

ORACLE RDBMS SERVERORACLE RDBMS SERVER

应用软件

Page 41: Oracle 9 i 数据库体系结构

Database Buffer Cache

Database Buffer CacheShared PoolShared Pool

SGASGA

LISTENERLISTENER

OracleOracle 数据库多进程结构数据库多进程结构

DBWRDBWR LGWRLGWRDnnnDnnnUSERUSER

RECORECOCKPTCKPTSMONSMONPMONPMONARCHARCH

Page 42: Oracle 9 i 数据库体系结构

用户进程与服务器进程

Page 43: Oracle 9 i 数据库体系结构

ServersServers

UsersUsersData Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared Pool SGASGA

DBWRDBWR

UserUser 与与 ServerServer 进程进程

ServersServersServersServers

UsersUsersUsersUsers

Page 44: Oracle 9 i 数据库体系结构

E_mail:[email protected] 44

用户进程与服务器进程用户进程与服务器进程用户进程( User Process )在用户运行

应用程序时自动产品产生系统创建服务器进程( Server Proces

s )处理用户进程的请求Server 进程和 User 进程通信并为所连接

的 User 进程请求服务

Page 45: Oracle 9 i 数据库体系结构

E_mail:[email protected] 45

Server 进程工作过程: 分析、编译、执行用户的 SQL 语句 确定执行计划,形成分析树 从磁盘数据文件将数据读入 SGA 的共享

数据库缓冲区 将 SQL 语句的结果返回给用户进程 相同的 SQL 代码只编译一次 存在 SQL优化问题

Page 46: Oracle 9 i 数据库体系结构

DBWR 进程

Page 47: Oracle 9 i 数据库体系结构

E_mail:[email protected] 47

DBWRDBWR 进程进程在存储数据之前,服务器进程必须将数

据放入数据缓冲区快存中修改后的数据块通过后台进程:

数据库写 (Database Writer-DBWR) 写回磁盘

为处理 SQL 语句, Server 进程使用了SGA 中的共享内存

Page 48: Oracle 9 i 数据库体系结构

E_mail:[email protected] 48

DBWR DBWR 进程进程 DBWR 管理 Database Buffer Cache 以便 user 进

程总能找到空闲的缓冲区 将所有修改后的缓冲区数据写入数据文件 使用 LRU算法来将最近使用过的块保留在内存中 通过延迟写来优化磁盘 I/O 读写 可以启动多个数据写入进程 参数 DB_WRITER_PROCESSES决定 DBWR启动的个数

进程名称分别为 DBW0 、 DBW1 、、、 DBWj

Page 49: Oracle 9 i 数据库体系结构

E_mail:[email protected] 49

DBWR DBWR 进程进程

DBWR 在下面情况将 dirty 缓冲区写入磁盘: dirty队列达到一定长度 某个进程在 LRU队列中扫描指定数目的缓冲区仍没有找到空闲缓冲区

超时 (Time_Out) 发生 检验点 (checkpoint) 发生

Page 50: Oracle 9 i 数据库体系结构

LGWR 进程

Page 51: Oracle 9 i 数据库体系结构

ServersServers

UsersUsers Data FilesRedo Log

Files

Database Buffer Cache

Database Buffer Cache

Shared PoolShared PoolRedo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCHLGWRLGWR

日志产生过程日志产生过程

1

23

Page 52: Oracle 9 i 数据库体系结构

E_mail:[email protected] 52

LGWRLGWR 进程进程

LGWR 在下面情况将 Redo Log 缓冲区的信息写入 Redo Log 文件:

发生数据提交 Redo Log缓冲区池达到总数的三分之一时超时 (Time_Out) 发生 DBWR 需为检验点 (checkpoint)清除缓冲区块时

Page 53: Oracle 9 i 数据库体系结构

E_mail:[email protected] 53

LGWR LGWR 进程进程

每一个例程 (instance) 只有一个 Redo Log写进程

直到事务已被写入 redo log 文件,提交确认才被执行

并发提交使每次提交的平均 I/O 数小于 1

Page 54: Oracle 9 i 数据库体系结构

PMONPMON 与与 SMONSMON

ServersServers

UsersUsers Data FilesRedo Log Files

Database Buffer Cache

Database Buffer CacheShared PoolShared Pool Redo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCHLGWRLGWR

Control Files

PMON LCKn RECO SMON

CKPT

Page 55: Oracle 9 i 数据库体系结构

ARCH ARCH 进程进程

ServersServers

UsersUsers Data FilesRedo Log Files

Database Buffer Cache

Database Buffer CacheShared PoolShared Pool Redo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCHLGWRLGWR

Control Files

归档进程 (ARCH,Archiver Process) 在联机 Redo Log 文件存满时将它们存储到指定的存储设备。

Page 56: Oracle 9 i 数据库体系结构

E_mail:[email protected] 56

归档进程归档进程 ((ARCH)ARCH)

将 Redo Log 文件写到磁盘或磁带机上用于介质失败时的数据库恢复

ARCH 只有当日志文件组切换时才工作 ARCH 是可选的,由参数

LOG_ARCHIVE_START启动 ARCH 可写到磁带或磁盘上

Page 57: Oracle 9 i 数据库体系结构

ServersServers

UsersUsers Data FilesRedo Log

Files

Database Buffer Cache

Database Buffer CacheShared PoolShared Pool Redo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCH

LGWRLGWR

CKPTCKPT 进程进程

CKPTCKPT

Page 58: Oracle 9 i 数据库体系结构

E_mail:[email protected] 58

检验点检验点 在检验点 (checkpoint),DBWR 将

database buffer cache 中的所有的 dirty 缓冲区写入磁盘,以保证上一个检验点以来修改过的所有数据块都被真正写到磁盘。

Page 59: Oracle 9 i 数据库体系结构

E_mail:[email protected] 59

检验点产生条件:检验点产生条件: 在每个日志切换 上一个检验点之后,又经过了指定的时间 从上一个检验点之后,当预定义数量的 Redo

Log 块被写入磁盘之后 例程关闭 DBA 强制产生 当表空间置为 offline 时

Page 60: Oracle 9 i 数据库体系结构

E_mail:[email protected] 60

检验点:检验点: 在检验点发生时和日志切换之后, LGWR将更

新数据库头和控制文件 参数 LOG_CHECKPOINT_TIMEOUT决定一个

检验点发生的时间间隔 参数 LOG_CHECKPOINT_INTERVAL决定执

行一个检验点需要填充的 Redo Log 文件块的数目

Page 61: Oracle 9 i 数据库体系结构

E_mail:[email protected] 61

CKPTCKPT 进程进程 数据库检验点保证所有修改过的数据库缓冲区都被写入数

据库文件。在给定的时间,数据库文件作上“当前”标记并将检验点记录在控制文件。

检验点检验点:: 例程恢复时只需提供从上一个点验点以来的修改。 在保证在该文件中的信息已被写入相应的数据文件后,允许

重用一个 Redo Log 文件。检验点既不中断活动,也不影响当前事务。

检验点完成后更新数据库头和控制文件。 增加检验点次数可以减少例程失败时恢复所需的时间,但降低了数据库动态性能。

Page 62: Oracle 9 i 数据库体系结构

RECORECO 与与 LCKNLCKN 进程进程

ServersServers

UsersUsers Data FilesRedo Log Files

Database Buffer Cache

Database Buffer CacheShared PoolShared Pool Redo Log

Buffer

Redo Log Buffer

SGASGA

DBWRDBWR

ARCHARCHLGWRLGWR

Control Files

PMON LCKn RECO SMON

CKPT

Page 63: Oracle 9 i 数据库体系结构

E_mail:[email protected] 63

RECORECO 与与 LCKNLCKN 进程进程

调度进程 Dnnn:MTS 结构中对于用户进程的调度。

恢复进程 RECO:RECO(Recovery Process) 解决涉及分布式事务处理的失败。

封锁进程 LCKn:LCKN(Lock,Process) 在并行服务器系统中执行例程间的封锁。