天天看点

oracle数据库中01,01 Oracle数据库介绍

1、关系型数据库

使用数据库的主要目的是存储和处理数据。

1.1 数据库管理系统

数据库管理系统(DBMS):控制数据库中数据的存储、组织和检索。

数据库应用(database application):通过DBMS访问和操作数据库中的数据。

数据库管理系统的早期类型:

Hierarchical database -- 数据组织在树状结构中,类似于文件系统,记录之间是一对多的关系;

network database -- 与前种类型相似,不同的是:记录之间是多对多的关系。

这两种数据库中的数据都是预先定义好的,并且缺乏数据定义和查询语言。

1.2 关系模型(Relational Model)

E.F.Codd在他1970年发表的论文《大型共享数据库数据的关系模型》中, 定义了一个基于数学集合理论的关系模型。 目前,最广泛接受的数据库模型就是关系模型。关系型数据库就是基于这种模型的。

关系模型三要素:关系数据结构、关系操作和关系完整性约束。

关系是一个元组的集合。 一个元组 是一些属性值的无序的集合。

表是一个关系的二维表示, 关系由行 (元组) 和列 (属性) 的形式构成。表中的每一行具有相同的列集。 关系数据库是一个将数据存储在关系 (表)中的数据库。

1.3 关系数据库管理系统(RDBMS)

RDBMS是基于关系模型的,实现了关系模型的三要素,并且区分下面两种操作:

逻辑操作 -- 数据库应用或用户通过SQL语句对数据库进行操作;

物理操作 -- 接到SQL命令之后,由RDBMS决定如何实现。

也就是说数据库应用或用户只需要在逻辑层面上进行操作数据,不用关心数据到底是如何存储的。

Oracle数据库是关系数据库管理系统,并且进行了扩展,实现了面向对象的特性。

1.4 Oracle数据库历史

2、模式对象

RDBMS的特点之一,是物理数据存储与逻辑数据结构的独立性。 在 Oracle 数据库中,数据库模式(database schema)是逻辑数据结构或模式对象(schema object)的集合。 数据库模式由一个数据库用户拥有,并与用户名具有相同的名称。

其中,最重要的模式对象是表(table)和索引(index)。

2.1 表

表描述的是现实世界的实体,比如:员工。表的定义包含:表名,列名和数据类型等。

比如:员工表是员工信息的集合。每一列标识员工的一个属性(例如,员工姓名),每一行代表一个员工。

另外,可以为表中的列设置规则(完整性约束)。比如,NOT NULL约束用来强制某列中必须有值。

2.2 索引

索引是在一列或多列上创建的可选数据结构。某些情况下,使用索引可以提高数据检索的性能。

3、数据访问

3.1 Structured Query Language (SQL)

SQL 是一种基于集合的声明性语言,提供一个到关系数据库(如 Oracle 数据库)的接口。

3.2 PL/SQL and Java

PL/SQL 是 Oracle SQL的过程化扩展。

4、事务管理

4.1 事务(Transactions)

事务是一个逻辑、 原子的工作单元,它包含一条或多条SQL 语句。一个事务中的所有SQL语句要么全部成功,要么全部失败,不能存在其它情况。

最简单的例子,就是转账的例子。比如A给B转账100元,至少包含两个操作:

1)从A的账户中减去100元;

2)从B的账户中增加100元。

这两个操作是一个整体,必须同时成功。

4.2 数据并发(Concurrency)

数据并发:多个用户同时访问相同的数据。

对于多用户RDBMS,控制数据并发是非常重要的。

管理并发的其中一种方法,就是让用户等待。但过多的等待会影响数据库的性能。

Oracle 数据库使用锁来控制对数据的并发访问。

4.3 数据一致性(Consistency)

在Oracle数据库中,每个用户必须看到数据的一致视图,包括用户自己的事务以及其他用户已提交的事务所做出的更改。

Oracle 数据库始终强制执行语句级读取的一致性,保证单个查询所返回的数据是已提交的,并与某个时间点一致。

数据库也可以为整个事务中的所有查询提供读一致性,这叫事务级读一致性。在这种情况下,事务中的每一个语句看见的都是同一个时间点的数据,这个时间点也就是事务开始之时。

5、Oracle数据库架构

5.1 数据库和实例

Oracle数据库服务(database server)包含一个数据库(database)和至少一个数据库实例(instance):

数据库 -- 一些存放在磁盘上的文件,用于存储数据。

数据库实例 -- 管理数据库文件的内存结构,包含共享内存区SGA和一组后台进程。实例可以独立于数据库文件而存在。

oracle数据库中01,01 Oracle数据库介绍

5.2 数据库存储结构

1)物理存储结构包含:

数据文件 -- 存放数据库的数据

控制文件 -- 存放数据库的物理结构,包含数据库库名称和数据文件的名称和位置

在线重做日志文件 -- 记录数据库数据的变化

2)逻辑存储结构包含:

数据块(Data block) -- 最小的存储单位和I/O单位。

扩展区(Extent) -- 最小的分配单位,包含一组逻辑上连续的数据块。

段(Segment) -- 为用户对象 (表或索引)、回滚数据、或临时数据等分配的一组扩展区。

表空间(Tablespace) -- 数据库由表空间组成,每个表空间至少包含一个数据文件。

5.3 数据库实例结构

1)Oracle数据库进程包含:

客户端进程

后台进程

服务器进程 -- 处理客户端进程发送的请求

2)实例内存结构包含:

System Global Area (SGA) -- 共享内存结构

Program Global Areas (PGA) -- 服务器进程和后台进程进程私有的内存结构

疑问:客户端进程和服务器进程也是实例的一部分???

5.4 应用和网络架构

1)应用架构

应用架构是指一个数据库应用程序连接到 Oracle 数据库的计算环境。最常见的两种数据库体系结构是客户端/服务器体系结构和多层体系结构。

Oracle 数据库可以在传统的多层环境或 SOA 环境中扮演一个 Web 服务提供者的角色。

2)网络架构

Oracle 网络服务(Net Service)是数据库与网络通信协议之间的接口, 它对分布式处理和分布式数据库很有用。

Oracle网络服务的组件:

Oracle Net -- 在数据库应用和数据库服务之间建立并维护网络会话。

Oracle Net Listener -- 监听并管理数据库应用(客户端)发来的连接请求。

Oracle提供了两种处理客户端请求的架构:

专用服务器架构

共享服务器架构