官网地址:
https://docs.oracle/en/database/oracle/oracle-database/21/cncpt/index.html
Oracle 数据库概述
1 introduction to oracle database
本章概述Oracle 数据库,内容包括:

  • 关系数据库 About Relational Databases
  • 模式对象 Schema Objects
  • 数据访问 Data Access
  • 事务管理 Transaction Management
  • Oracle 数据库体系结构 Oracle Database Architecture
  • Oracle 数据库文档浏览指南 Oracle Database Documentation Roadmap

关系数据库

  • 数据库管理系统(DBMS)
    DBMS是控制数据的保存、组织和获取的软件。DBMS一般有如下组成部分:

    • Kernel code: kernel代码用于管理DBMS的内存和存储。
    • Repository of metadata: 元数据库一般被叫做数据字典。
    • Query language:查询语言能够让应用程序访问数据。

    数据库应用程序是和数据库交互、获取和操作数据的软件。
    第一代DBMS包括:

    • 层次模式,层次数据库是树形结构的,每个父(节点)记录有很多子(节点)记录,类似于文件系统的结构。
    • 网状模式,网状数据库很像层次数据库,但是节点之间是多对多的,而不是一对多的。

    这些DBMS以严格的预定关系存储数据。由于缺乏数据定义语言,因此改变这些数据的结构是困难的。并且这些DBMS没有简单的查询语言,阻碍了应用程序的开发。

  • 关系模型
    1970年,E.F.Codd在开创性的论文《A Relational Model of Data for Large Shared Data Banks》中描述了基于数学集合理论的关系模型。时至今日,基于关系模型的关系数据库是世界上使用最广泛的数据库。
    关系模型有如下一些特性:

    • 结构化,定义明确的对象存储或者访问数据的数据库
    • 操作,明确定义的操作使应用程序能够操作数据库的数据和结构。
    • 完整性规则,定义对数据库数据和结构的操作。

    关系数据库保存基于集合的简单关系的数据。关系是元组的集合,元组是属性值的无序集合。
    关系表是行(元组)列(属性)形式的二维表。表中的每一行有相同的一组列。关系数据库是保存这些二维表的数据库。比如,关系数据库能够保存公司员工信息在员工表中,部门信息在部门表中,等等。

  • 关系数据库管理系统
    关系模型是关系数据库管理系统RDBMS的基础。RDBMS移动、保存和检索数据到数据库中,使应用程序能够操作这些数据。
    RDBMS可以进行如下两种操作:

    • 逻辑操作。应用程序指定需要什么内容(数据)。比如,应用程序需要从员工表中查询员工姓名或者增加员工记录到员工表中。
    • 物理操作。RDBMS决定数据操作是如何进行。比如,当应用程序查询一张表的时候,数据库可以使用索引去检索满足条件的行,读取相关数据到内存中,执行一系列的步骤后返回结果集给应用程序。

    Oracle 是RDBMS。如果一个RDBMS实现了面向对象的特性,如用户定义类型,多态,继承等,则称之为ORDBMS。Oracle扩展了关系模型到对象关系模型,使之能够在关系数据库中存储复杂业务模型。

  • Oralce发展历史简介
    1977年成立。
    1979年发布基于SQL的关系数据库Oracle V2。
    1983年发布OracleV3。
    OracleV4实现多版本读一致性。1985年发布的OracleV5支持C/S服务,分布式数据库系统。OracleV6版本改善了磁盘IO,行锁,可扩展性,备份和恢复,而且引进了PL/SQL。
    1992年Oracle7,引进存储过程和触发器。
    1998年发布Oracle8,对象关系数据库。
    1999年发布Oracle8i,可以服务于互联网。
    2001年发布Oracle9i,增加了RAC。
    2003年发布Oracle10g,支持 GRID和ASM。
    2007年发布Oracle11g
    2013年发布Oracle12c,支持可插拔数据库和云服务数据库。
    2019年发布Oracle19c是Oracle12c的长支持版本。
    2021年发布Oracle21c,是当前最新版本,但是目前只支持客户端下载。


模式对象


RDBMS的一个特征是数据的物理存储和逻辑结构是独立的。
在Oracle 中,数据库模式是逻辑数据结构或者模式对象的集合。数据库用户拥有数据库模式,数据库模式和数据库用户拥有相同的名称。

模式对象是用户创建的结构,可以直接引用数据库中的数据。数据库支持很多类型的模式对象,最重要的模式对象是表和索引。
模式对象是数据库对象中的一种,一些数据库对象,比如配置文件和角色,不保存在模式中。

  • 表:一张表代表一种实体类型,比如员工表代表员工实体类型,每条记录表示每个员工实体。当创建一张表的时候,可以定义一张表的表名,和一系列的列名,每一列的数据类型和数据长度。一张表是行的集合。一行代表实体类型的一个实体(一个实例),一列代表实体类型的一个属性。例如,员工表对应员工实体类型,员工表的一行记录对应一个员工,员工表的列表示员工的各个不同属性,有ID,姓名等。可以在列中增加约束。
  • 索引
    索引是可选的数据结构,可以在一列或多列上创建一个或多个索引。索引可以提高数据的检索效率。
    当进行一个查询的时候,数据库能够使用合适的索引去高效定位并返回需要的数据行。索引在应用程序频繁查询某些特定行或者某些范围行的时候对性能是很有帮助的。索引是独立于数据的,无论逻辑上还是物理上。所以当创建或者删除索引的时候,并不影响应用程序的功能(不包括查询性能)。

数据访问

DBMS一般需要遵守公认的数据访问语言行业标准。
结构化查询语言(SQL):

  • SQL是基于集合的声明语言,提供接口访问RDBMS如Oracle数据库管理系统。
  • 过程语言,比如C语言,描述事情是如何处理的。SQL是非过程语言,描述应该做什么事情。
  • SQL是ANSI对关系数据库的标准语言,所有对Oracle数据库中存储的数据的操作都需要使用SQL声明。比如,可以使用SQL去创建一张表,查询和修改表中的数据。
  • 一条SQL语句是简单,强大的计算机程序或者指令。用户能够使用SQL指定他们需要的结果,而不用去说明如何获取这些结果。
  • 一条SQL语句是一串SQL文本:select first_name, last_name from employees;
  • SQL可以实现如下功能:
    • 查询数据
    • 增删改表中数据
    • 创建,替换,修改或者删除数据库对象
    • 控制访问数据库和数据库对象
    • 保证数据库一致性和完整性
  • SQL用一种一致的语言统一了上文描述的功能。Oracle SQL是ANSI标准的一种实现,此外还支持超过标准SQL的一系列功能。

PL/SQL 和 Java:

  • PLSQL 是Oralce SQL的过程化扩展。
  • PLSQL是整合在Oracle 数据库中的,可以通过PLSQL使用Oracle数据库的SQL声明,功能和数据类型,控制SQL程序的流程,使用变量,编写错误处理过程。
  • 使用PLSQL的一个好处是可以保存应用逻辑到数据库中。一个PLSQL存储过程或者函数是一个模式对象,保存在数据库中,包含了一系列的SQL声明和PLSQL结构体,并且作为一个运行单元去解决特定的问题或者处理一些相关的任务。服务端的程序,作为内置函数体,好处是能够在任何地方部署。
  • Oracle 数据库也能够保存使用java写的程序单元。一个java存储过程是发布到SQL并保存在数据库中供一般使用的 一个java方法。可以在java程序中调用plsql程序或者在plsql程序中调用java 程序。

事务管理


Oracle数据库是多用户数据库。这种数据库必须保证不同的用户可以同时操作数据库但不发生冲突。

  • 事务
    事务是逻辑的原子单元,包含了一系列的SQL声明。
    RDBMS必须聚集SQL声明,这样才能同时提交或者同时回滚,提交意味着这些SQL操作持久化到数据库中,回滚意味着这些SQL操作撤销。
    事务的一个例子是从储蓄账户到支票账户的资金转移。资金转移包括如下步骤:

    • 从储蓄账户中减少资金
    • 从支票账户中增加资金
    • 在交易日志中记录资金交易过程

    Oracle数据库保证三个操作作为一个原子单元同时成功进行或者失败处理。例如,发生硬件故障导致日志记录失败,则其他两个步骤都要回滚。
    事务是Oracle数据库和文件系统的一个很大区别。如果在操作系统中更新几个文件,在更新到一半的时候系统宕机,则这些文件会无法保持一致。相反,事务操作使得Oracle 数据库从一个一致性状态转移到另一个一致性状态。事务最基本的原则是所有或者没有(all or nothing):一个原子操作要么全部成功要么全部失败。

  • 数据并发性 Data Concurrency
    多用户RDBMS的一个要求就是控制数据的并发性,即多个用户同时访问相同的数据。
    如果没有并发控制,用户可能进行了不合适数据的修改,破坏了数据的完整性。例如,一个用户在更新一条数据的同时,另一个用户也在更新同一条数据。
    如果多用户同时访问相同数据,一个控制数据并发的方式就是让用户等待。然而,DBMS的目标是减少等待时间,所以这种用户等待要么不存在,要么可以忽略。所有修改数据的SQL声明必须尽可能减少冲突。必须尽量避免破坏性的交互,比如不正确的更新数据或者修改底层数据结构。
    Oralce使用锁来控制数据的并发访问。锁是事务在访问共享资源的时候,防止破坏性交互的一种机制。在同时进行并发访问数据的时候,锁帮助确保数据完整性。

  • 数据一致性 Data Consistency
    在Oracle 数据库中,每个用户必须看到数据的一致性视图,包括用户在事务中的可见变更和其他用户提交的事务中对数据的变更。
    举个例子,数据库必须防止脏读问题,脏读是一个事务看到其他并发事务未提交的变更。
    Oracle 数据库始终强制执行语句级别的读一致性,这保证单个查询中的数据,在单个时间点是提交的和一致的。根据事务的隔离级别,这个点是语句的开始执行时间或者事务的开始时间。Oracle 的闪回查询功能让用户能够精确的指定这个时间点。
    数据库在一个事务中能够提供对所有查询的读一致性,这是读一致性的事务隔离级别。在这个样例中,事务中的每个声明能够查询同一个时间点的数据,这个时间点是事务的开始时间点。


Oracle 数据库体系架构


终于到oralce数据库管理系统的体系架构了。其实就是来看oracle DBMS体系架构的。
太多了,今天翻译不完,明天继续。。。
这里包括四个部分,概述里就简单描述相关内容,详细内容另外再看。

  • 数据库和实例 database and instance
  • 数据库存储结构 database storage structures
  • 数据库实例结构 database instance structures
  • 应用和网络架构 application and networking architecture

Oracle 数据库文档浏览指南


这些指定访问路径下的文档用于确保用户能够尽可能高效的获取他们需要的信息。

这些文档分成三个层次:初级阶段,中级阶段,高级阶段。
用户可以从初级阶段开始,逐步过渡到中级阶段:两天+系列,最后进入高级阶段,高级阶段包括除了初级阶段和中级阶段的所有文档。

初级阶段文档:
Oracle Database 2 Day Developer’s Guide

中级阶段文档:
管理员(DBA):Oracle Database 2 Day + Performance Tuning Guide
开发(Developer):Oracle Database 2 Day + Java Developer’s Guide

高级阶段文档:
Oracle Database SQL Language Reference
Oracle Database Reference
Oracle Database PL/SQL Packages and Types Reference
管理员(DBA):
Oracle Database Administrator’s Guide
Oracle Database Security Guide
Oracle Database Performance Tuning Guide
Oracle Database SQL Tuning Guide
Oracle Database Backup and Recovery User’s Guide
Oracle Real Application Clusters Administration and Deployment Guide
开发(Developer):
Oracle Database Development Guide
Oracle Database PL/SQL Language Reference
Oracle Database Java Developer’s Guide
Oracle Database SecureFiles and Large Objects Developer’s Guide

更多推荐

Oracle21c 官方文档:数据库概述