Oracle数据库组件

首先声明一下,我的学习笔记参考书主要是官方教材,oracle9i database administration fundaments ed2.0
我觉得学习是一个循序渐进的过程,从面到点,从宏观到微观,逐步渗透,各个击破,对于oracle,怎么样从宏观上来理解呢?
先来看一个图,这个图取自于上面提到的教材,这个图对于从整体上理解ORACLE的体系结构组件,非常关键.

下面来解释下这个图.

对于一个数据库系统来说,假设这个系统没有运行,我们所能看到的和这个数据库相关的无非就是几个基于操作系统的物理文件,这是从静态的角度来看,如果从动态的角度来看呢,也就是说这个数据库系统运行起来了,能够对外提供服务了,那就意外着数据库系统启动了自己的一个实例,综合以上2个角度,oracle如何定义上述描述呢?
我们来引入第一个概念,oracle服务器,所谓oracle服务器是一个数据库管理系统,它包括一个oracle实例(动态)和一个oracle数据库(静态)。oracle实例是一个运行的概念(如操作系统的进程),提供了一种访问oracle数据库的方式,始终打开一个,并且只能打开一个oracle数据库,oracle实例有SGA和一些后台服务进程组成,在后台服务进程当中,DBWn PMON CKPT LGWR SMON是必备的后台进程,而ad queue,rac,shared server,ad replication则是可选的,之所以可选,要们是因为离开它oracle也能正常运行,要么是一些高级的功能才可以用得到。
oracle数据库是一个被统一处理的的数据的集合,从物理角度来看包括三类文件数据文件,控制文件,重做日志文件。从逻辑角度来看,oracle数据库至少包含一个表空间,表空间至少包含一个段,段由区做成,区有块组成。需要注意的是表空间可以包含若干个数据文件,段可以跨同一个表空间的多个数据文件,区只能在同一个数据文件内。
oracle还设计了其他的关键文件用来为整个系统服务,如配置文件,密码文件,归档日志文件,还有还有用户进程和服务进程,现在可以简单理解下执行sql语句就要用到这2个进程。

下表是SGA和PGA的总结


SGA


SHARE POOL

(共享池)

用如下命令可以调整

ALTER SYSTEM SET

SHARED_POOL_SIZE=64M


LIBRARY CACHE

(库高速缓存)

1存储最近使用的SQL和PL/SQL语句信息

2包括SHARED SQL和SHARED PL/SQL

3用LRU算法管理

4大小由SHARE POOL大小决定


DATA DICTIONARY CACHE

(数据字典高速缓存)

1数据库中最近使用的定义的集合

2包含数据库文件,表,索引,列,用户,权限和其他的数据库对象相关信息

3在语法分析阶段,服务器进程会在数据字典中查找用于对象解析和验证访问的信息

4将数据字典信息高速缓存到内存中,可缩短查询和DML的响应时间

5大小由共享池的大小决定


DATABASE BUFFER CACHE

(数据缓冲区高速缓存)


1存储已从数据文件检索到的数据的复本

2大幅提高读取和更新数据的性能

3使用LRU算法管理

4主块的大小由DB_BLOCK_SIZE确定


REDO LOG BUFFER

(重做日志缓冲区)


1记录对数据库数据块作的全部更改

2主要用来恢复

3其中记录的更改被称作重做条目

4重做条目包含用于重新构建或重做更改的信息

5大小由LOG_BUFFER定义


LARGE POOL

(大型池)


1 SGA可选的内存区

2分担了共享池的一部分工作

3用于共享服务器的UGA

4用于I/O服务器进程

5备份和恢复操作或RMAN

6并行执行消息缓冲区(前提PARALLEL_POOL_SIZE=TRUE)

7不使用LRU列表

8大小由LARGE_POOL_SIZE确定


JAVA POOL

(JAVA池)


1存储JAVA命令服务分析要求

2安装和使用JAVA时必须的

3大小有JAVA_POOL_SIZE确定


PGA


PRIVATE SQL AREA

(专用SQL区)

专用SQL 区的位置取决于为会话建立的连接类型。在专用服务器环境中,专用SQL 区位于各自服务器进程的PGA中。在共享服务器环境中,专用SQL 区位于SGA 中。

管理专用SQL 区是用户进程的职责。用户进程可以分配的专用SQL 区的数目始终由

初始化参数OPEN_CURSORS 来限制。该参数的缺省值是50。


PERSISTEN AREA

(永久区)

包含绑定信息,并且只在关闭游标时释放


RUNTIME AREA

(运行时区)

在执行请求时的第一步创建。对于INSERT、UPDATE 和DELETE命令,该区在执行语句后释放,对于查询操作,该区只在提取所有行或取消查询后释放。


SESSION MEMORY

(会话内存)


包含为保留会话变量以及与该会话相关的其它信息而分配的内存。对于共享服务器环境,该会话是共享的而不是专用的。


SQL WORK AREAS

(SQL工作区)


用于大量占用内存的操作,如排序、散列联接、位图合并和位图创建。

工作区的大小可进行控制和调整

下表是后台进程总结


DBWn


DBWn 延迟写入数据文件,直到发生下列事件之一:

• 增量或正常检查点

• 灰数据缓冲区的数量达到阈值

• 进程扫描指定数量的块而无法找到任何空闲缓冲区时

• 出现超时

• 实时应用集群(Real Application Clusters, RAC) 环境中出现ping 请求

• 使一般表空间或临时表空间处于脱机状态

• 使表空间处于只读模式

• 删除或截断表

• 执行ALTER TABLESPACE 表空间名BEGIN BACKUP 操作


LGWR


LGWR 在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入:

• 当提交事务时

• 当重做日志缓冲区的三分之一填满时

• 当重做日志缓冲区中记录了超过1 MB 的更改时

• 在DBWn 将数据库缓冲区高速缓存中修改的块写入数据文件以前

• 每隔三秒


SMON


例程恢复

– 前滚重做日志中的更改

– 打开数据库供用户访问

– 回退未提交的事务处理

• 合并空闲空间

• 回收临时段


PMON


进程失败后,后台进程PMON 通过下面的方法进行清理:

• 回退用户的当前事务处理

• 释放当前保留的所有表锁或行锁

• 释放用户当前保留的其它资源

• 重新启动已失效的调度程序


CKPT


• 在检查点发信号给DBWn

• 使用检查点信息更新数据文件的标头

• 使用检查点信息更新控制

启动检查点的原因如下:

• 确保定期向磁盘写入内存中发生修改的数据块,以便在系统或数据库失败时不会丢失数据

• 缩短例程恢复所需的时间。只需处理最后一个检查点后面的重做日志条目以启动恢复操作

• 确保提交的所有数据在关闭期间均已写入数据文件

由CKPT 写入的检查点信息包括检查点位置、系统更改号、重做日志中恢复操作的起始位置以及有关日志的信息等等。

注:CKPT 并不将数据块写入磁盘,或将重做块写入联机重做日志。


ARCn


• 可选的后台进程

• 设置ARCHIVELOG 模式时自动归档联机重做日志

• 保留数据库的全部更改记录

最后,举一个用户提交sql语句的的例子来结束本文,如果用户想提交sql语句,那么首先你必须要连接到oracle实例,连接到oracle实例有三种途径,1如果用户登陆到运行oracle实例的操作系统上,则通过进程间通信进行访问2C/S结构访问3三层结构
发起连接的应用程序或工具通常称为用户进程,连接发起后,oracle服务器就会创建一个进程来接受连接,这个进程就成为服务进程,服务器进程代表用户进程与oracle实例进行通信,在专用服务器连接模式下,用户进程和服务进程是1对1的关系,在共享服务器模式下,多个用户进程可能共享一个服务进程。
当服务器进程开始和oracle实例进行通信时,一个会话就被创建了。
显然处理一个查询要经过语法分析,绑定,执行,提取等阶段。
此篇结束,对自己的学习作个标记,回头再进行整理。转载自http://blog.itpub.net/9827752/viewspace-926/

时间: 2024-10-07 01:17:19

Oracle数据库组件的相关文章

.net(C#)访问Oracle数据库的几种免安装组件的对比

Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, ODAC 也是一种可供选择的处理数据的方法之一. ODAC 直接使用 Oracle 调用接口 (OCI). OCI 是一种允许应用程序开发人员使用第三方开发语言存取Oracle数据服务器的过程或函数以及控制所有的SQL语句执行状态的应用程序接口(API). OCI 通过一个动态运行库(ORA*.DLL)

Oracle数据库精讲课程之Rac管理(集群组件、性能监控及调整、节点管理、备份和恢复)

对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 本课程主要是介绍Oracle RAC体系结构与工作机制,了解并掌握RAC数据库下的相关技术,如:cache Fusion. Failover.load balance.FAN.OCR和Voting disk等,通过VMWARE虚拟环境,实践演练RAC数据库的安装部署.RAC数据库日常性能监控.备份和恢复.实例增加和删除以及补丁安装等操作,通过本课程的学习,学员在掌握RAC理论知识基础上,能够熟练掌握RAC数据库的日常管理操作. 课

oracle数据库免费基础知识精讲视频分享!

课程简介:数据库基础知识.Oracle的环境搭建.Oracle体系结构.SQL语言基础.函数的使用.约束.索引.数据字典.分组查询.多表连接查询.子查询等.通过对Oracle数据库的系统详解,培养学 生的能力如下:在实际工作中,熟练使用SQL语句进行项目开发:能够使用复杂的SQL语句进行多表关联查询:具备数据库数据的管理和维护能力 . 课程目录: day01_安装数据库软件day02_数据库的基本使用selecl语句的使用day03_限制数据返回day04_字符函数.数字函数.日期函数day05

使用.NET应用程序连接Oracle数据库

最近又被同学问起"为何.NET应用程序连接Oracle数据库总是出错?",我想,这是因为我们平常都是使用微软的产品,而缺少对其它平台产品的研究.微软公司一直都有"平台统一"的梦想,但可惜这个梦想永远不会实现.为什么,因为有众多像Oracle这样不买微软账的公司,他们不会对微软公司的产品做过多的支持,他们往往都是推出自己的产品,而他们很多产品的用户又都比微软的多,所以微软"平台统一"的梦想永远不可能实现.废话讲了这么多,下面我就具体说说如何正确的配

ORACLE数据库编程

第一章 Oracle数据库基本概念 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为 核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或 浏览器/服务器(Browser/Server,B/S)体系结构的数据库之一.二.特点1.完整的数据管理功能:数据的大量性数据的保存的持久性数据的共享性数据的可靠性Oracle优点:可用性强可扩展性强数据安全性强稳定性强三.Oracle数据库的辑逻结构1.表空间一个数据库被分割为数个被称作

Oracle数据库实例核心技术解析_超越OCP精通Oracle视频教程培训05

1.学完本章节Oracle视频教程能掌握以下内容: 启动和停止Oracle DB 和组件使用Oracle Enterprise Manager使用SQL*Plus 工具命令访问数据库如何设置Oracle的环境变量的修改数据库初始化参数跟踪分析数据库启动的各个阶段深入剖析数据库初始化的各个内部过程剖析Oracle数据库的引导过程介绍数据库关闭的过程查看数据库警告日志你对Oracle数据库实例了解多少?实例启动警告日志及启动进程控制文件更新时间与心跳信息解析控制文件内容深入分析数据库的参数文件深入理

【转载:Oracle基础知识】Oracle数据库体系结构

先来看张直观的图:                                            oracle 11g 体系结构图 理解Oracle体系结构要充分理解三个概念:数据库(database),数据库实例(instance),会话(session),一定不要把这三个概念弄混. 数据库的概念 (A)    物理存储结构由数据文件.控制文件.重做日志文件组成: 1.       数据文件(datafile) select * from dba_data_files; 数据文件包括存

.net程序错误:BadImageFormatException....如果在安装32位Oracle客户端组件的情况下以64位模式运行

OracleClient 程序要连oracle数据库,提示如下错误: 数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题. 1.IIS部署时 网上搜索了一下,有各种办法,试过多安装了一个64位的oracle11g客户端,还是不行.后来想到是否是iis的问题,之前配置iis的时候好像碰到过32位64位的一个设置,看了以前的博客之后把应用程序池做了如下设置

利用ADO让普通人用excel读取oracle数据库表的通用办法

Ref:http://blog.csdn.net/iamlaosong/article/details/8465177 Excel通过ADO方式连接到Oracle并操作Oracle给那些编程能力不强的人带来很大的福音,结合着Excel的数据处理与图表制作,就能很轻松地处理一些常规工作. 日常工作中需要查询各种数据,而且不断变化,处理这些数据的人不是技术人员,不会连接数据库自己查询,通过下面的办法就可以让技术人员编辑好包含查询语句的excel文件,让管理人员自己输入条件取数了. 我的方法是编辑需要