《Oracle Concept》前言介绍-5

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 《Oracle Concept》前言介绍-5

预计阅读时间:8分钟

按照《Oracle Conecpt》的结构一起了解Oracle。

历史文章

《》

《》

《》

《》

《》

《》

作为《Concept》的前言,有六个主题,可以说是整本书的缩略,
About Relational Databases
Schema Objects
Data Access
Transaction Management
Oracle Database Architecture
Oracle Database Documentation Roadmap

本文主题:前言《Introduction to Oracle Database》 - “Oracle Database Architecture”。

Oracle体系结构,Oracle Database Architecture

数据库服务器是信息管理的关键。通常意义上,服务器管理着大量数据,在多用户环境下,用户可以并发访问相同的数据。数据库服务器也要阻止非法访问,并且提供失败恢复的有效方案。

其实,值得我们关注的,就是“Oracle数据库服务器”的概念。这里我们所说的“Oracle数据库服务器”,包括了一个数据库(database),以 及至少一个数据库实例(instance),如果一个实例,就叫单实例,如果多个实例,就叫RAC(真正应用集群)。由于实例和数据库联系紧密,因此我们所说的“Oracle数据库”,往往特指这两者。

严格意义上,“Oracle数据库服务器”包含以下概念:

  • 数据库
  • 一组文件的集合,使用磁盘来存储数据。这些文件可以独立于数据库实例进行存在。

  • 数据库实例
  • 管理数据库文件的一组内存结构。包含了一块共享内存区域,称为“系统全局区”,即system global area (SGA),以及一系列后台进程。实例可以独立于数据库文件存在。

    下图展示了Oracle实例和数据库,这可以说是Oracle基础中的基础,对于体系结构,这张图可以讲半天,因为他牵扯到非常丰富的内容,如果了解了体系结构,可以说你对Oracle就会有新的认识,算是入了门了。

    对于每一个和实例相连的用户连接,应用会起一个客户端进程。每个客户端进程会和他自己的服务器进程关联。服务器进程拥有自己独立的私有会话内存区域,称为“程序全局区”,即PGA。

    可以从物理视角和逻辑视角来了解数据库。物理数据,就是在操作系统层面,能看见的数据。例如,用一些操作系统的指令,Linux下的ls和ps,可以列出数 据库文件以及进程。卤藕级数据,例如表,仅仅对数据库是有意义的。一条SQL语句可以列出数据库的表,但操作系统工具无法做到。

    数据库分为物理和逻辑两种结构。由于物理和逻辑结构是分开的,因此管理数据的物理存储,不会影响逻辑存储结构的访问。例如,重命名一个物理数据库文件,不会重命名存储于这个文件中的数据表名。

    我们会在第13章“Oracle Database Instance”继续了解这部分内容。

    数据库存储结构

    关系型数据库最基础的任务,就是存储数据。下面会简单描述一下,Oracle数据库使用的物理和逻辑存储结构。

    物理存储结构

    所谓物理数据库结构,其实就是存储数据的文件。当你执行CREATE DATABASE语句,会自动创建如下一些文件:

  • 数据文件
  • 每个Oracle数据库会有一个或更多的物理数据文件,他们包含了所有数据库的数据。数据库逻辑结构中的数据,例如表和索引,物理上也会存储于数据文件中。

  • 控制文件
  • 每个Oracle数据库会有一个控制文件。他包含了描述数据库物理结构的元数据,例如数据库名称,以及数据文件的存储路径。

  • 在线重做日志文件
  • 每个Oracle数据库会有一组在线重做日志,可能包含两个或更多的在线重做日志文件。一个在线重做日志是由日志条目(也叫做日志记录)组成,他会记录数据的所有变更。

    还有很多其他重要的文件,支持着Oracle数据库服务器的正常运行。例如参数文件和诊断文件。对于备份恢复来说,备份文件和归档重做日志文件,是非常重要的离线文件。

    我们会在第11章”Physical Storage Structures”继续了解这部分内容。

    逻辑存储结构

    下面的逻辑存储结构,会让Oracle对于磁盘空间,可以进行细粒度的控制。

  • 数据块(Data blocks)
  • 在最细粒度的级别,Oracle数据库的数据是存储于数据块中。一个数据块会对应到磁盘上的具体字节大小。

  • 区(Extents)
  • 区是一系列逻辑上连续的数据块,并且在一次分配中获得,用来存储特定类型的信息。

  • 段(Segments)
  • 段是一组分配给用户对象(例如表和索引)、回滚段数据或临时段数据的区的集合。

  • 表空间
  • 数据库可以分为称做表空间的逻辑存储单元。表空间就是段的逻辑容器。每个表空间至少包含一个数据文件。

    我们会在第12章”Logical Storage Structures”继续了解这部分内容。

    数据库实例结构

    Oracle使用内存结构以及进程来管理和访问数据库。所有的内存结构都存在于安装RDBMS的计算机主体内存中。

    当应用连接到Oracle数据库,实际上,他们已经连接到数据库实例。除了SGA外,实例会分配其他内存区域给应用,并且会启动除了后台进程外的其他进程。

    数据库进程

    进程是一种操作系统上能运行一系列步骤的机制。一些操作系统会使用诸如工作(job)、任务(task)或线程(thread)的术语。为了讨论,这里线程和进程是等价的。Oracle数据库实例会有以下几种类型的进程:

    客户端进程

    创建和管理这些进程,是为了运行一个应用程序或Oracle工具的软件代码。大多数环境会让客户端进程运行于独立的计算机上。

    后台进程

    多个Oracle数据库程序会服务于每一个客户端进程,后台进程则会增强他们的功能。后台进程会异步执行IO,并且监控其他Oracle数据库进程,以提供更高的并发以及更好的性能和可靠性保证。

    服务器进程

    这些进程会和客户端进程进行通信,并且和Oracle数据库交互,以响应这些请求。Oracle进程包括了服务器进程和后台进程。在大多数环境下,Oracle进程和客户端进程运行于不同的计算机上。

    我们会在第15章”Process Architecture”,了解更多信息。

    实例内存结构

    Oracle数据库创建和使用内存结构,用于诸如运行程序代码、共享用户之间的数据,以及存储每一个用户的私有数据区域。和实例相关的内存结构,有如下几种:
    系统全局区(SGA)

    SGA是一组共享内存结构,他会包含一个数据库实例的数据和控制信息。SGA的组件包括诸如缓存数据块(其实就是Buffer Cache)以及共享SQL区域。

    程序全局区(PGA,也有叫作私有全局区,Private)

    PGA是一块存储每个服务器进程或后台进程数据和控制信息的内存区域。进程之间的PGA相互独立。每个服务器进程和后台进程拥有自己独立的PGA。

    我们会在第14章”Memory Architecture”,了解更多信息。

    如果您觉得本文有帮助,欢迎关注转发:bisal的个人杂货铺,

    《Oracle Concept》前言介绍-5
    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    转载声明:转载请注明出处,本技术博客是本人原创文章

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> 《Oracle Concept》前言介绍-5


     上一篇
    数据库之MySQL(六) 数据库之MySQL(六)
    点击上方”python宝典”,关注获取python全套视频, 技术文章第一时间送达! 条件语句 delimiter \ CREATE PROCEDURE proc_if () BEGIN declare i int de
    下一篇 
    《Oracle Concept》前言介绍-6 《Oracle Concept》前言介绍-6
    预计阅读时间:5分钟 背景: 按照《Oracle Conecpt》的结构一起了解Oracle。 历史文章: 《》 《》 《》 《》 《》 《》 《》 作为《Concept》的前言,有六个主题,可以说是整本书的缩略,About Relatio