Oracle体系结构概述
Oracle体系结构概述
一、 Oracle体系结构的组件
www.zzzyk.com
Oracle体系结构包括很多基本组件下面我们详细介绍一下这些组件。
1、Oracle服务器:Oracle服务器中包含多种文件结构、进程结构和内存结构;但是,处理 SQL语句时,并非所有这些结构都会用到。某些结构用于提高数据库的性能,确保该数据库在遇到软件或硬件错误时可以恢复,或者执行维护该数据库所需的其它任务。Oracle服务器包括一个 Oracle实例和一个 Oracle数据库。
2、Oracle实例:Oracle实例是后台进程和内存结构的组合。只有启动实例后,才能访问数据库中的数据。每次启动实例时,会分配系统全局区 (SGA)并启动 Oracle后台进程。后台进程代表调用进程执行各种功能。它们把为每个用户运行的多个 Oracle程序所处理的功能统一起来。后台进程执行输入/输出 (I/O),并监视其它 Oracle进程来提高并行性,从而使性能和可靠性更加优越。
www.zzzyk.com
3、Oracle数据库:Oracle数据库包含操作系统文件(也称为数据库文件),这些文件为数据库信息提供了实际的物理存储。数据库文件用于确保数据一致性并能在实例失败时得以恢复。
4、其它关键文件:非数据库文件用于配置实例、验证特权用户以及在磁盘出现故障时
恢复数据库。
5、用户进程和服务器进程:执行 SQL语句时,用户进程和服务器进程是其中涉及的主要进程;但是,其它进程也会有助于服务器完成 SQL 语句的处理。
6、其它进程:还有很多供其它选件使用的其它进程,例如,高级排队 (AdvancedQueuing)、实时应用集群 (Real Application Clusters)、共享服务器 (Shared Server) 和
高级复制 (Advanced Replication)等。这些进程将在相应的课程中分别进行讨论。
二、客户端层由两个组件组成:用户和用户进程。
三、服务器层由三个组件组成:执行SQL的服务器进程、实例、数据库本身。
1、实例组件指的是在启动时初始化的一组操作系统进程和内存结构。
2、数据库组件指的是用于数据存储和数据库操作的物理文件。
四、总结一下可知,单实例数据库的体系结构由4个交互组件构成(如下图所示):
1、用户与用户进程交互
2、用户进程与服务器进程交互
3、服务器进程与实例交互
4、实例与数据库交互
客户端进程绝无可能与数据库发生任何联系:所有访问都要通过中间的服务器端进程进行。客户端-服务器分离在用户进程(生成SQL)与服务器进程(执行SQL)之间实现。
五、实例的组件
实例是访问数据库的通道,包含共享内存和后台进程。它是由称为系统全局区(SGA)的共享内存块及大量的后台进程构成。
1、系统全局区(system global area,SGA)
操作系统提供的共享内存段实现的内存结构称为SGA。SGA至少包含三种数据结构:
(1) 数据库缓冲区缓存(BUFFER CACHE)
www.zzzyk.com
(2) 共享池(SHARED POOL)
A、库缓存
B、数据字典缓存
C、PL/SQL区
D、SQL查询和PL/SQL函数结果缓存
(3)日志缓冲区(LOG BUFFER)
还可能包含:
(1) 大池(Large Pool)
(2) JAVA池(JAVA Pool)
(3)流池(Streams Pool)
显示可以动态重设大小的SGA组件的当前,最大和最小的值
gyj@OCM>select COMPONENT,CURRENT_SIZE ,MIN_SIZE,MAX_SIZE from V$SGA_DYNAMIC_COMPONENTS;
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
---------------------------------------------------------------------------- ---------- ----------
sharedpool 264241152 264241152 264241152
largepool 4194304 4194304 4194304
javapool 25165824 25165824 25165824
streamspool 0 0 0
DEFAULTbuffer cache 511705088 511705088 511705088
KEEPbuffer cache 16777216 16777216 16777216
RECYCLEbuffer cache 0 0 0
DEFAULT2K buffer cache 0 0 0
DEFAULT4K buffer cache 0 0 0
DEFAULT8K buffer cache 0 0 0
DEFAULT16K buffer cache 8388608 8388608 8388608
DEFAULT32K buffer cache 0 0 0
SharedIO Pool 0 0 0
ASMBuffer Cache 0 0 0
14rows selected.
2、后台进程(dbwn、lgwr、ckpt、smon、pmon、reco)
(1)各后台进程的介绍
DBWn:数据库写入程序
LGWR:日志写入程序
CKPT:检查点,负责在检查点向DBWR发送一个信号,并更controlfile和datafile的文件头
SMON:系统监控,实例恢复、清理不再使用的临时段
PMON:进程监控
RECO:恢复进程,能够自动解决分布事务中的故障
MMAN:Memory Manager进程实现共享内存自动管理
PSPO:主要功能是启动其他的Oracle进程
MMON:Manageability Monitor管理监控进程
CJQ0:任务队列的调度进程,负责从job$表中找到需要执行的任务,并分配job进程执行,如果job进程不足,会自动产生新的job进程
ARCn:归档
QMNC:队列监控同步进程
MMNL:是AWR新增的进程,主要作用是将AWR数据从内存中刷新到表中
dbrm:数据库资源管理进程,负责设置资源计划和其他的资源管理的工作
smco:该进程负责空间管理协调管理工作,负责执行空间的分配和回收
w000:由smcO动态产生执行上述相关任
diag:数据库诊断进程,负责维护管理各种用于诊断的转储文件,并执行oradebug命令。
dia0:另一个数据库诊断进程,负责检测Oracle数据库中的挂起(hang)和死锁的处理。
Dnnn:调度进程,允许用户进程共享有限的服务器进程(SERVER PROCESS)
Snnn:服务器进程,负责与用户进程通信,并与ORACLE交互,以代表相关的用户进程执行任务
Vktm:此虚拟时间监护器(virtual keeper of time)负责跟踪时间,其在群集环境易做图别重要。
(2)五大核心后台进程的关系::
pmon<--ckpt<--lgwr<--dbwn<--smon
------>
(3)哪些后台进程可以杀?
kill -9
sqlplus / as sysdba
select sid,program from v$session where type='user' andstatus='ACTIVE';
六、什么是ORACLE数据库?
1、从物理结构分析:
由一系列文件组成:数据文件、控制文件、在线日志文件、归档日志文件、参数文件、口令文件等
(1)数据文件:是数据库中最为核心的文件
select * from v$dbfile;
(2)控制文件:是十分重要的文件,包括整个数据库的物理结构、所有数据文件、日志文件等信息及备分信息
select * from v$controlfile
selecttype,record_size,records_total,records_used from v$controlfile_record_section;
(3)在线日志文件:主要用于记录数据库的变更信息
select* from v$logfile;
(4)归档日志文件:主要用于数据库的恢复操作
(5)参数文件:spfile/pfile
(6) 口令文件:存放有超级用户的口令及其他特权用户的用户名/口令
strings orapwocp
grantsysdba to system;
2、数据库的辑逻结构
构成数据库的物理结构作为操作系统文件呈现给系统管理员。用户看到的是诸如表的逻辑结构。Oracle使用术语“段”来描述任何包含数据的结构。典型的段是包含数据行的表,但是Oracle数据库包含十多种段类型。
Oracle通过表空间(tablespace)方式,将逻辑存储从物理存储中抽象出来。表空间在逻辑上是一个或多个段的集合,在物理上是一个或多个数据文件的集合。如果使用“关系分”术语,则段和数据文件之间存在多对多关系:可以将一个表分布在多个数据文件中,而一个数据文件也可能包含多个表的一部分。Oracle通过在段和文件之间插入表空间实体,解决这种多对多关系的问题。
段由多个块组成。数据文件的格式被设置为多个块,随着块的增加,这些块被分配给段。由于每次管理一个块的空间过于耗时,又将夫分组在区(extent)。区是数据文件中编号连续的一系列块,通过为段新添区,段将扩大。这些区为必相邻,即使在一个数据文件中,也是如此。它们可以来自作为段所在表空间一部分的任
一、 Oracle体系结构的组件
www.zzzyk.com
Oracle体系结构包括很多基本组件下面我们详细介绍一下这些组件。
1、Oracle服务器:Oracle服务器中包含多种文件结构、进程结构和内存结构;但是,处理 SQL语句时,并非所有这些结构都会用到。某些结构用于提高数据库的性能,确保该数据库在遇到软件或硬件错误时可以恢复,或者执行维护该数据库所需的其它任务。Oracle服务器包括一个 Oracle实例和一个 Oracle数据库。
2、Oracle实例:Oracle实例是后台进程和内存结构的组合。只有启动实例后,才能访问数据库中的数据。每次启动实例时,会分配系统全局区 (SGA)并启动 Oracle后台进程。后台进程代表调用进程执行各种功能。它们把为每个用户运行的多个 Oracle程序所处理的功能统一起来。后台进程执行输入/输出 (I/O),并监视其它 Oracle进程来提高并行性,从而使性能和可靠性更加优越。
www.zzzyk.com
3、Oracle数据库:Oracle数据库包含操作系统文件(也称为数据库文件),这些文件为数据库信息提供了实际的物理存储。数据库文件用于确保数据一致性并能在实例失败时得以恢复。
4、其它关键文件:非数据库文件用于配置实例、验证特权用户以及在磁盘出现故障时
恢复数据库。
5、用户进程和服务器进程:执行 SQL语句时,用户进程和服务器进程是其中涉及的主要进程;但是,其它进程也会有助于服务器完成 SQL 语句的处理。
6、其它进程:还有很多供其它选件使用的其它进程,例如,高级排队 (AdvancedQueuing)、实时应用集群 (Real Application Clusters)、共享服务器 (Shared Server) 和
高级复制 (Advanced Replication)等。这些进程将在相应的课程中分别进行讨论。
二、客户端层由两个组件组成:用户和用户进程。
三、服务器层由三个组件组成:执行SQL的服务器进程、实例、数据库本身。
1、实例组件指的是在启动时初始化的一组操作系统进程和内存结构。
2、数据库组件指的是用于数据存储和数据库操作的物理文件。
四、总结一下可知,单实例数据库的体系结构由4个交互组件构成(如下图所示):
1、用户与用户进程交互
2、用户进程与服务器进程交互
3、服务器进程与实例交互
4、实例与数据库交互
客户端进程绝无可能与数据库发生任何联系:所有访问都要通过中间的服务器端进程进行。客户端-服务器分离在用户进程(生成SQL)与服务器进程(执行SQL)之间实现。
五、实例的组件
实例是访问数据库的通道,包含共享内存和后台进程。它是由称为系统全局区(SGA)的共享内存块及大量的后台进程构成。
1、系统全局区(system global area,SGA)
操作系统提供的共享内存段实现的内存结构称为SGA。SGA至少包含三种数据结构:
(1) 数据库缓冲区缓存(BUFFER CACHE)
www.zzzyk.com
(2) 共享池(SHARED POOL)
A、库缓存
B、数据字典缓存
C、PL/SQL区
D、SQL查询和PL/SQL函数结果缓存
(3)日志缓冲区(LOG BUFFER)
还可能包含:
(1) 大池(Large Pool)
(2) JAVA池(JAVA Pool)
(3)流池(Streams Pool)
显示可以动态重设大小的SGA组件的当前,最大和最小的值
gyj@OCM>select COMPONENT,CURRENT_SIZE ,MIN_SIZE,MAX_SIZE from V$SGA_DYNAMIC_COMPONENTS;
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
---------------------------------------------------------------------------- ---------- ----------
sharedpool 264241152 264241152 264241152
largepool 4194304 4194304 4194304
javapool 25165824 25165824 25165824
streamspool 0 0 0
DEFAULTbuffer cache 511705088 511705088 511705088
KEEPbuffer cache 16777216 16777216 16777216
RECYCLEbuffer cache 0 0 0
DEFAULT2K buffer cache 0 0 0
DEFAULT4K buffer cache 0 0 0
DEFAULT8K buffer cache 0 0 0
DEFAULT16K buffer cache 8388608 8388608 8388608
DEFAULT32K buffer cache 0 0 0
SharedIO Pool 0 0 0
ASMBuffer Cache 0 0 0
14rows selected.
2、后台进程(dbwn、lgwr、ckpt、smon、pmon、reco)
(1)各后台进程的介绍
DBWn:数据库写入程序
LGWR:日志写入程序
CKPT:检查点,负责在检查点向DBWR发送一个信号,并更controlfile和datafile的文件头
SMON:系统监控,实例恢复、清理不再使用的临时段
PMON:进程监控
RECO:恢复进程,能够自动解决分布事务中的故障
MMAN:Memory Manager进程实现共享内存自动管理
PSPO:主要功能是启动其他的Oracle进程
MMON:Manageability Monitor管理监控进程
CJQ0:任务队列的调度进程,负责从job$表中找到需要执行的任务,并分配job进程执行,如果job进程不足,会自动产生新的job进程
ARCn:归档
QMNC:队列监控同步进程
MMNL:是AWR新增的进程,主要作用是将AWR数据从内存中刷新到表中
dbrm:数据库资源管理进程,负责设置资源计划和其他的资源管理的工作
smco:该进程负责空间管理协调管理工作,负责执行空间的分配和回收
w000:由smcO动态产生执行上述相关任
diag:数据库诊断进程,负责维护管理各种用于诊断的转储文件,并执行oradebug命令。
dia0:另一个数据库诊断进程,负责检测Oracle数据库中的挂起(hang)和死锁的处理。
Dnnn:调度进程,允许用户进程共享有限的服务器进程(SERVER PROCESS)
Snnn:服务器进程,负责与用户进程通信,并与ORACLE交互,以代表相关的用户进程执行任务
Vktm:此虚拟时间监护器(virtual keeper of time)负责跟踪时间,其在群集环境易做图别重要。
(2)五大核心后台进程的关系::
pmon<--ckpt<--lgwr<--dbwn<--smon
------>
(3)哪些后台进程可以杀?
kill -9
sqlplus / as sysdba
select sid,program from v$session where type='user' andstatus='ACTIVE';
六、什么是ORACLE数据库?
1、从物理结构分析:
由一系列文件组成:数据文件、控制文件、在线日志文件、归档日志文件、参数文件、口令文件等
(1)数据文件:是数据库中最为核心的文件
select * from v$dbfile;
(2)控制文件:是十分重要的文件,包括整个数据库的物理结构、所有数据文件、日志文件等信息及备分信息
select * from v$controlfile
selecttype,record_size,records_total,records_used from v$controlfile_record_section;
(3)在线日志文件:主要用于记录数据库的变更信息
select* from v$logfile;
(4)归档日志文件:主要用于数据库的恢复操作
(5)参数文件:spfile/pfile
(6) 口令文件:存放有超级用户的口令及其他特权用户的用户名/口令
strings orapwocp
grantsysdba to system;
2、数据库的辑逻结构
构成数据库的物理结构作为操作系统文件呈现给系统管理员。用户看到的是诸如表的逻辑结构。Oracle使用术语“段”来描述任何包含数据的结构。典型的段是包含数据行的表,但是Oracle数据库包含十多种段类型。
Oracle通过表空间(tablespace)方式,将逻辑存储从物理存储中抽象出来。表空间在逻辑上是一个或多个段的集合,在物理上是一个或多个数据文件的集合。如果使用“关系分”术语,则段和数据文件之间存在多对多关系:可以将一个表分布在多个数据文件中,而一个数据文件也可能包含多个表的一部分。Oracle通过在段和文件之间插入表空间实体,解决这种多对多关系的问题。
段由多个块组成。数据文件的格式被设置为多个块,随着块的增加,这些块被分配给段。由于每次管理一个块的空间过于耗时,又将夫分组在区(extent)。区是数据文件中编号连续的一系列块,通过为段新添区,段将扩大。这些区为必相邻,即使在一个数据文件中,也是如此。它们可以来自作为段所在表空间一部分的任
- 更多Oracle疑问解答:
- 运行exp备份oracle数据库提示oracle-12154错误
- 有没有,生产Oracle Rman 备份脚本的工具啊!
- 初学orcle,希望有大大帮忙解说一下详细步骤,从登录oracle到创建表的过程
- oracle语句问题:一张user表,三个字段,id,name,time,插入记录比如:张三2007,李四2008,张三2011
- 如何写一个ORACLE触发器同步两个表中的数据?
- oracle 如何查看一个服务器上有多少个数据库.
- oracle 创建包的时候错误 求解
- oracle 重复列的问题
- oracle 中如何查处2星期前的数据
- 请教oracle数据库安装中的问题
- 请问谁能提供给我标准的oracle ERP的数据库表结构并详细说明各表主要的作用?
- 安装oracle遇到的问题 invalid entry CRC (expected 0x3e12e795 but got 0x9db0e9fd)
- 我的是ORACLE 10G,在RMAN中如何按指定的时间恢复数据文件啊?
- oracle为什么没有自动增长列
- oracle快捷键都有哪些啊?