01 Oracle数据库介绍

本文详细介绍了Oracle数据库的基础概念,包括关系型数据库模型、数据库管理系统(DBMS)、Oracle数据库的历史与发展,以及数据库对象如表和索引的作用。此外,还探讨了数据访问方式、事务管理和并发控制机制,深入解析了Oracle数据库的物理与逻辑存储结构,以及实例和数据库的组成部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、关系型数据库

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

1.1 数据库管理系统

数据库管理系统(DBMS):是一种软件,用于控制数据库中数据的存储、组织和检索。
数据库应用(database application):通过DBMS访问和操作数据库中的数据。
 
数据库管理系统的早期类型:
  • Hierarchical database -- 数据组织在树状结构中,类似于文件系统,记录之间是一对多的关系;
  • network database -- 与前种类型相似,不同的是:记录之间是多对多的关系。
没有数据定义语言,很难更改数据结构。缺乏简单的查询语言,阻碍了应用程序的开发。
 

1.2 关系模型(Relational Model)

E.F.Codd在他1970年发表的论文《大型共享数据库数据的关系模型》中, 定义了一个基于数学集合理论的关系模型。 目前,最广泛接受的数据库模型就是关系模型。关系型数据库就是基于这种模型的。
 
关系模型三要素:关系数据结构、关系操作和关系完整性约束。
 
关系(relation)是一个元组的集合。 一个元组(tuple)是一些属性值的无序集合。
表(table)是一个关系的二维表示, 关系由行 (元组) 和列 (属性) 的形式构成。
 
关系数据库是一个将数据存储在关系 (表)中的数据库。
 

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

RDBMS是基于关系模型的,实现了关系模型的三要素,并且区分下面两种操作:
  • 逻辑操作 -- 数据库应用或用户通过SQL语句对数据库进行操作;
  • 物理操作 -- 接到SQL命令之后,由RDBMS决定如何实现。
也就是说数据库应用或用户只需要在逻辑层面上进行操作数据,不用关心数据到底是如何存储的。
Oracle数据库是关系数据库管理系统,并且进行了扩展,实现了面向对象的特性。
 

1.4 Oracle数据库历史

 

2、模式对象

RDBMS的特点之一,是物理数据存储是独立于逻辑数据结构的。
 在 Oracle 数据库中,数据库模式(Schema)是逻辑数据结构,即模式对象的集合。
 数据库模式(Schema)由一个数据库用户拥有,并与用户名具有相同的名称。
 
数据库对象分为:
  • schema对象(表、索引、存储过程、函数等)
  • 非schema对象(目录、角色等)
其中,最重要的模式对象是表(table)和索引(index)。
 
疑问:
数据库模式PUBLIC有没有对应的用户?
SQL> alter user "PUBLIC" identified by oracle account unlock;
alter user "PUBLIC" identified by oracle account unlock
           *
ERROR at line 1:
ORA-01918: user 'PUBLIC' does not exist
-- user$表中有PUBLIC的信息
select * from sys.user$;
 

2.1 表

表描述的是现实世界的实体,比如:员工。表的定义包含:表名,列名和数据类型等。
比如:员工表是员工信息的集合。每一列标识员工的一个属性(例如,员工姓名),每一行代表一个员工。
另外,可以为表中的列设置规则(完整性约束)。比如,NOT NULL约束用来强制某列中必须有值。
 
与关系模型的对应关系:
  • 关系(relation) -- 表(table)
  • 属性(attribute) -- 列,字段(column)
  • 元组(tuple) -- 行(row)
 

2.2 索引

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

3、数据访问

3.1 Structured Query Language (SQL)

SQL 是一种基于集合的声明性语言,提供一个到关系数据库(如 Oracle 数据库)的接口。
相对于过程化语言(如 C)描述的是怎么做,SQL 作为非过程化的语言,它描述的是应做些什么。
Oracle SQL 是 ANSI 标准的一种实现,并且支持许多标准 SQL 之外的扩展功能
 

3.2 PL/SQL and Java

PL/SQL 是 Oracle SQL的过程化扩展。
Oracle 数据库还可以存储用Java 编写的程序单元。
 

4、事务管理

Oracle数据库是多用户数据库。数据库必须确保多个用户可以并发地工作,而不会破坏彼此的数据。

4.1 事务(Transactions)

有些SQL语句在逻辑上是一个整体,比如转账的例子。
假如A给B转账100元,至少包含两个操作:
1)从A的账户中减去100元;
2)从B的账户中增加100元。
这两个操作是一个整体,两个操作都成功才表示转账成功。
事务是一个逻辑、 原子的工作单元,包含一条或多条SQL 语句。数据库必须支持事务,确保同一事务中的所有语句, 要么全部成功,要么全部失败。

4.2 数据并发(Concurrency)

数据并发:多个用户同时访问相同的数据。
对于多用户RDBMS,控制数据并发是非常重要的。
管理并发的其中一种方法,就是让用户等待。但过多的等待会影响数据库的性能。
Oracle 数据库使用锁来控制对数据的并发访问。
 

4.3 数据一致性(Consistency)

在Oracle数据库中,每个用户必须看到数据的一致视图,包括用户自己的事务以及其他用户已提交的事务所做出的更改。
Oracle 数据库始终强制执行语句级读取的一致性,保证单个查询所返回的数据是已提交的,并与某个时间点一致。
数据库也可以为整个事务中的所有查询提供读一致性,这叫事务级读一致性。在这种情况下,事务中的每一个语句看见的都是同一个时间点的数据,这个时间点也就是事务开始之时。
 

5、Oracle数据库架构

5.1 数据库和实例

Oracle数据库服务(database server)包含一个数据库和至少一个数据库实例:
  • 数据库(database) -- 一些存放在磁盘上的文件,用于存储数据。
  • 数据库实例(database instance) -- 管理数据库文件的内存结构,包含共享内存区SGA和一组后台进程。实例可以独立于数据库文件而存在。
上图展示了一个数据库和它的实例。对连接到实例的每个用户,其应用程序以一个客户端进程运行。每个客户端进程都具与它自己的服务器进程相关联。 服务器进程有自己的私有会话内存区,称为程序全局区 (PGA)。
 
疑问:
服务器进程是否是实例的一部分,为什么该图把服务器进程和PGA画在instance的范围内?
 

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 网络服务支持所有主要的网络通信协议,包括 TCP/IP、 HTTP、 FTP 、和 WebDAV。
 
Oracle网络服务组件:
  • Oracle Net -- 用于建立和保持一个客户端应用程序到数据库服务器的网络会话。
  • Oracle 网络监听器(简称监听器) -- 一个单独的进程,运行在数据库服务器上,或在网络中的其它地方。 客户端应用程序可以发送连接请求到监听器,而监听器管理这些发送到数据库服务器的请求的流量。
 
Oracle 网络服务处理请求的两种最常见的方式
  • 专用服务器(dedicated server)连接
  • 共享服务器(shared server)连接
 
 

转载于:https://www.cnblogs.com/hualuohuakai/p/9679858.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值