Oracle数据库简介

一、介绍

Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或浏览器/服务器(Browser/Server,B/S)体系结构的数据库之一。

Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

截止至2015年06月,Oracle数据库最新版本为Oracle Database 12c。

二、特点

1、完整的数据管理功能:

  • 数据的大量性
  • 数据的保存的持久性
  • 数据的共享性
  • 数据的可靠性

2、完备关系的产品:

  • 信息准则—关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
  • 保证访问的准则
  • 视图更新准则—只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
  • 数据物理性和逻辑性独立准则

3、分布式处理功能:

Oracle数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个Oracle分布式数据库由Oracler DBMS、sql*Net、SQL*CONNECT和其他非Oracle的关系型产品构成。

4、用ORACLE能轻松的实现数据仓库的操作。

优点:

  • 可用性强
  • 可扩展性强
  • 数据安全性强
  • 稳定性强

三、Oracle体系架构

Oracle体系结构包括很多基本组件,下面简要介绍一下几个常见组件。

1、Oracle Server(服务器)

Oracle服务器是最大的概念,包含多种文件结构、进程结构和内存结构;但是,处理SQL语句时,并非所有这些结构都会用到。某些结构用于提高数据库的性能,确保该数据库在遇到软件或硬件错误时可以恢复,或者执行维护该数据库所需的其它任务。Oracle服务器包含两部分:Oracle Instance(实例)和Oracle Database(数据库)。

2、Oracle Instance(实例)

Oracle Instance(实例)的定义:访问Oracle Database的一个手段;一个instance对应一个且也只能对应一个database,而一个database可以有多个instance来访问它,也就是说instance和database的多对一的关系,在典型的情况下,一台机器上装的oracle,他们俩是一对一的关系,对应集群方式(简称RAK)是多对一;instance也是由两个部分组成:内存(memory)和后台进程(background process)。

memory由两部分构成:SGA(system global area,系统全局区)和PGA(program global area,程序全局区);一个实例就一个SGA,SGA是实例的基本组成部分;一个server process启动的时候,就有一个PGA;oracle是一个狂吃内存的软件,内存主要消耗在SGA上。

说明:instance是活的东西,易于消失,oracle没有启动的话,也就没有instance。

2.1 SGA结构

SGA是动态的结构,其大小由SGA_MAX_SIZE指定。

2.1.1 共享池shared pool

用于存储最近使用过的SQL语句和数据字典。它包括两个部分,即库缓存(library cache)和数据字典缓存(dictionary cache)两部分组成。

下面是改变共享池的命令:

Alter system set SHARED_POOL_SIZE=64M;

库缓存用于储存使用的SQL语句,而数据字典缓存用于存储最近使用过的数据字典。它们的大小都需要使用共享池来确定而不能自己设置。

2.1.2 database buffer cache数据高速缓存区

它用于存储最近访问的数据块,由多个小缓冲区组成。DB_BLOCK_SIZE则确定了数据块的大小。

Alter system set DB_CACHE_SIZE=96M;

在执行SELECT或DML时,数据都是从数据文件读取到高速缓存区执行的,即数据的访问和操作是在内存中完成的。

2.1.3 redo log buffer日志缓冲区

用于记录例程的变化,其尺寸由LOG_BUFFER来定义。当执行DDL或DML时,服务器进程首先会将变化记录到日志缓冲区,然后才会修改数据的高速缓存。

2.1.4 large pool大池和JAVA池(可选)

如果安装或使用JAVA的话就需要使用JAVA池。

2.2 后台进程结构

Oracle中process(进程)分为三类:background process(后台进程)、server process(服务器进程)和user process(用户进程)。其实server process也属于后台进程,oracle中对进程进行了细化,这里说的background process主要是专注于数据库核心的进程,而server process主要是用于处理客户端和服务器连接的进程。

Oracle有许多必须的后台进程,它是运行Oracle服务时必须的。

2.2.1 DBWR

用于将数据高速缓存中的脏数据写入到数据文件中。所谓脏数据就是发生改变的数据。

2.2.2 PMON

用于监视服务器进程的执行,并在其失败时清除这个进程。

2.2.3 CKPT

用于发出检查点,用于同步数据库的数据文件、控制文件和重做文件。

2.2.4 LGWR

用于将日志缓冲区的内容写入到重做日志中去。

2.2.5 SMON

系统监控进程。用于自动恢复实例,合并空闲空间和释放临时段。

2.2.6 其它进程

用于运行Oracle服务时的其它后台进程。

3、Oracle Database(数据库)

我们先看两个概念:connection(链接)和session(会话)。一个connection主要是指oracle客户端与后台服务器建立的链接,即客户端与服务器之间的通道。只有当链接建立起来以后,才建立session会话。

从物理结构分析,Oracle Database主要包括三种文件类型:Data files(数据文件)、Control files(控制文件)和Redo Log files(重做日志文件),它们是oracle的核心文件,除此之外还有Parameter file(参数文件)、Archived Log files(归档日志文件)以及Password file(口令文件)等。

3.1 Data files(数据文件)

用于存储数据库数据,它包括数据字典,用户数据,UNDO数据,临时数据等。数据库逻辑上由一个或多个表空间Tablespace组成,而表空间在物理上由一个或多个数据文件组成。

3.2 Control files(控制文件)

用于记录和维护数据库的物理结构。

3.3 Redo Log files(重做日志文件)

用于记录数据库的变化,当例程出现失败或介质失败时可以使用它进行恢复数据库。当DDL或DML时,事务会写到日志缓冲区,在特定时刻会由LGWR将这些日志写入重做日志文件。数据库中至少有两个日志文件,它们是循环使用的。

3.4 Archived Log files(归档日志文件)

它是重做日志的备份,它会保存全部的重做历史记录。

3.5 Password file(口令文件)和Parameter file(参数文件)

口令文件主要用于存放超级用户的口令及其他特权用户的用户名和口令。两个文件都保存在<安装路径>/database文件夹中。

四、Oracle数据库的辑逻结构

Oracle数据库在逻辑上是由许多表空间构成,主要分为系统表空间和非系统表空间。非系统表空间内存储着各项应用的数据、索引、程序等相关信息。

逻辑存储结构主要包括数据块(datablocks),数据区(extents),数据段(segments),表空间(tablespace),这些逻辑结构使Oracle可以精细地控制磁盘空间的使用。

1、表空间

一个数据库被分割为数个被称作表空间(tablespace)的逻辑存储单位,每个表空间内保存的是一组相关的逻辑对象。

每个数据库都在逻辑上被划分为一个或多个表空间。用户需要为每个表空间创建一个或多个数据文件来物理地存储属于此表空间的逻辑对象。一个表空间所有数据文件的大小就是此表空间的可用数据存储量。数据库的数据实际存储在构成各个表空间的数据文件中。

我们准备上线一个较大的Oracle应用系统时,应该创建它所独占的表空间,同时定义物理文件的存放路径和所占硬盘的大小。

数据文件与表空间的关系:

2、段

段是为一个特定逻辑结构分配的一组数据区(extents)。

按照段所存储数据的特征,将段分为四种类型,即数据段、索引段、回退段和临时段。

当一个段内已有的数据区装满之后,Oracle动态地分配新空间。换句话说,段内已有的数据区装满之后,Oracle为这个段分配新的数据区。因为数据区是随需分配的,因此一个段内的数据区在物理上未必是连续的。

段中的数据可以跨多个数据文件,但不能跨多个表空间。

3、数据区

数据区是由一次存储空间分配而获得的数个连续数据块的集合,用于存储信息。

当用户创建数据表时,Oracle为此表的数据段分配一个包含若干数据块的初始数据区。虽然此时数据表中还没有数据,但是在此初始数据区中的数据块已经为插入新数据做好了准备。

如果一个段的初始数据区中的数据块都已装满,且有新数据插入需要空间时,Oracle自动为这个段分配一个增量数据区。增量数据区是一个段中继已有数据区之后分配的后续数据区,它的容量大于或等于之前的数据区。

对于本地管理的表空间,Oracle在为新的数据区寻找可用空间时,首先选择一个属于此表空间的数据文件,再搜索此数据文件的位图查找连续的数据块。如果此数据块中没有足够的连续可用空间,Oracle将查询其他数据文件。

4、数据块

在Oracle数据库中,最精细的数据存储粒度是数据块,一个数据块相当于磁盘上一段连续的物理存储空间。

与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte)。每种操作系统都有一个被称为块容量(block size)的参数。Oracle每次获取数据时,总是访问整数个(Oracle)数据块,而不是按照操作系统块的容量访问数据。

数据块分配的默认容量由初始化参数DB_BLOCK_SIZE决定。除了这个参数,管理员还可以额外设定5个数据块容量参数。Oracle数据库在数据块中分配、利用存储空间。数据块容量应该设为操作系统块容量的整数倍(同时小于数据块容量的最大限制),以便减少不必要的I/O操作。Oracle数据块是Oracle可以使用和分配的最小存储单位。

在Oracle中,不论数据块中存储的是表(table)、索引(index)或簇表(clustered data),其内部结构都是类似的。

段,数据区,数据块之间的关系:

Oracle数据库简介的更多相关文章

  1. 1.Oracle数据库简介

    Oracle数据库简介 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracl ...

  2. [01] Oracle数据库简介

    Oracle关系型数据库:建立在关系模型上. Oracle10g:g(grid)网格技术,网格计算(Grid Computing)通过网络共享,将大量的计算机连接起来,联合各个计算机的多余处理能力,产 ...

  3. Oracle数据库之PL/SQL程序设计简介

    PL/SQL程序设计简介 一.什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写. ORACLE的SQL ...

  4. Oracle 数据库实例简介

      回到顶部 一:Oracle 数据库实例简介 1:数据库实例的启动顺序: 使用数据库其实就是访问内存.即:数据库实例.数据库的启动是顺序是 先 nomount ---->  mount --- ...

  5. Oracle数据库(一)--Oracle简介及安装

    一.Oracle简介 Oracle是美国一家著名的软件公司,也是世界上排名前三的软件公司(微软,Oracle,Adobe).Oracle数据库是一个大型的关系型数据库,在一些大型的企业之中使用的会比较 ...

  6. 数据库----ORACLE和MYSQL数据库简介

    一.什么是数据库? 数据库(Database---DB)按照组织.储存和管理数据的仓库.(理解以下三个概念)   数据(Data)用来描述事物的记录都可称数据,如文字音乐图像.   数据库系统(Dat ...

  7. ORACLE数据库存储结构简介(转)

    首先,oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的.   逻辑存储结构:oracle内部的组织和管理数据的方式.  物理存储结构:o ...

  8. Oracle数据库安装与连接与简介

    Oracle数据库的安装 1.登录Oracle官网——试用和下载 2.同意协议--->file1 3.完成配置 4.测试连接:打开Oracle developer--->新建连接,注意用户 ...

  9. Oracle数据库Schema的简介

    百度文库中 Schema 的解释: 数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema. 官方定义如下: A schema is a collection of databa ...

随机推荐

  1. 【技术贴】xp任务栏字体变大变小

    今天远程到服务器上,发现任务栏字体变小了,百度了很久,发现百度就是个渣渣,什么答案都搜不到.就自己摸索了一下. 方法一: 桌面右击属性-外观-字体大小, 下拉匡 方法二 :桌面右击[属性]-[外观]- ...

  2. cf D. Vessels

    http://codeforces.com/contest/371/problem/D 第一遍写的超时了,然后看了别人的代码,思路都是找一个点的根,在往里面加水的时候碗中的水满的时候建立联系.查询的时 ...

  3. 服务器端javascript——Rhino和Node

    Node: Node是v8 javasript解析器的一个特别版本,侧重于异步I/O,网络和HTTP 入门见:http://www.cnblogs.com/wishyouhappy/p/3647037 ...

  4. cppunit官方文档浅析

    使用doxygen生成官方文档 cppunit使用了doxygen作为它的文档建设工具,所以我们要找的“官方文档”,其实就在cppunit的代码里面. 请先参考博文<下载doxygen>( ...

  5. C#实现数据结构——线性表(上)

    什么是线性表 数据结构中最常用也最简单的应该就是线性表,它是一种线性结构(废话,不是线性结构怎么会叫线性表?当然不是废话,古人公孙龙就说白马非马,现代生物学家也说鲸鱼不是鱼). 那什么是线性结构? 按 ...

  6. AES - Rijndael 算法(二)

    三:Rijndael算法实现(C++版本) /*-------------------- Rijndael round subkeys ---------------------*/u8 roundK ...

  7. jQuery表单验证以及将表单序列化为json对象小练习

    jquery表单验证(非实时验证),同时,将表单序列化为json对象提交表单. <!DOCTYPE html> <html lang="en"> <h ...

  8. Windows平台下,Scrapy Installation,安装问题解决

    按理说直接:pip install scrapy 就可以成功,但是出现了错误"libxml/xpath.h: No such file or directory" "er ...

  9. heap(堆)和stack(栈)的区别

    heap是堆,stack是栈 stack的空间由操作系统自动分配/释放,heap上的空间手动分配/释放. stack空间有限,heap是很大的自由存储区 C中的malloc函数分配的内存空间即在hea ...

  10. IOS实现小型计算器

    作为一名初学者,编辑一款能够在IOS操作系统上运行的计算器是一件很值得自豪的事情,网络上虽然后很多相关的文章和代码,功能也很强大但是我感觉相关的计算器比加复杂,晦涩难懂,所以我想通过这个小小的计算器, ...