官网地址: https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/index.html Oracle 数据库概述 本章概述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。 OracleV实现多版本阅读的一致性。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