前言简述
描述:作为一名运维工程师从业者,每天可能都会接触新技术、新的设备,UP主对于计算机知识的渴望是无穷无尽的,哪怕是一天不学习都有浓浓的罪恶感,所以为了增强自身的综合素质能力(升职加薪),在运维行业中 DBA 方向对于各类数据库的学习、安装、使用、容灾、优化是必不可少的。
为了能和作者UP主公众号【全栈工程师修炼指南】中的【全栈】遥相辉映,从今天开始作者选择一门自己工作中常常使用的到的以及全球最流行的关系型数据库 Oracle 来进行学习,并记录学习过程,以供后续的自己复习回顾和帮助各位看友快速上手,从入门到高新,请各位看友一定要关注、订阅【#Oracle学习之路】专栏。
此专栏主要是为了满足想快速入门学习Oracle的运维从业者(DBA方向),主要涉及数据库基础概念,Oracle 基础知识,学习环境的准备,以及 Oralce 数据库(11G/12C/19C)的安装使用,RAC集群搭建,DataGuard容灾配置,Oracle 数据库维护管理、优化诊断、以及开发设计等内容,适合各种初级运维/程序开发从业者,以及有志于从事Oracle DBA的看友,可以完全满足开发、测试、简单的业务生产环境。
0x00 基础介绍
1.1 数据库技术概述
描述: 数据库技术产生于20世纪六七十年代,伴随着计算机技术的产生和发展而发展,是计算机技术在各行各业的数据管理技术的延伸、渗透、发展的产物,而国内数据库发展相对滞后主要在八十年代后。
在计算机技术应用领域,数据库技术也是一门专业性很强的学科,它涉及到操作系统、数据结构、程序设计等多领域的知识。
数据库是作为一个单元处理的有组织的信息集合,其目的是收集、存储和检索相关信息以供数据库应用程序使用。
1.1.1 数据库基本概念
描述: 数据库 (Databαse,简称 DB
)是按一定的数据模型组织、描述和存储在计算机内的、有组织结构的、可共享的、大量的数据集合。
而数据库技术是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论来实现对数据库中的数据进行处理、分析和理解的技术。
主要特点(简述):
- 长期的: 持久存储
- 结构化: 类型,关系
- 大量的: 存储数据量大
- 共享的: 多应用之间可以通过数据库实现数据共享
数据信息
1)数据(data)
是描述事物的符号,其类型是多种多样的,如数字、文字、图形、声音、视频、动画等。
- 在日常生活中,人们用自然语言(如汉语)来描述事物。对于计算机,在描述对象上就只能抽象地选出有关这些事物的、感兴趣的特征,将它们排列组织在一起,成为一条条记录来描述这些事物。
2)信息(Information)
的英文原意为“通知或消息”,信息是客观存在的事物,是通过物质载体所产生的消息、情报等。
- 信息是客观事物固有的属性,如一个人,他有姓名、民族、年龄、身高和文化程度等许多信息,这些信息可分为自然的信息(如身高、年龄等)和社会的信息(如姓名、民族、文化程度等)。
- 信息是一种资源,在现代社会中,信息同物质和能源一起成为社会的三大资源。物质提供的资源是各种各样有用的材料,能源提供的资源是各种形式的动力,而信息向人类提供的资源则是无穷无尽的知识和智慧。
- 信息是有价值的消息,信息无处不在,没必要去了解世界上所有的信息;同一信息对于不同的时代和不同的人,其价值是不同的,通常我们所关心的是对自身有价值的信息。
- 信息的表现形式,信息的表现形式主要有数字、符号、文字、图形、图像和声音等。
Q: 数据”与“信息”在概念上到底有什么样的区别呢?
- 信息是包含在数据(或图形)中有价值的东西,是对简单的数据进行加工处理之后,从中提炼出的或经过加工后的新的东西(就是信息)。
- 数据与信息的关系可以理解为“
数据是原料,而信息是将原料加工后的产品
”。即数据是信息的符号表示,而信息通过数据描述,又是数据语义的解释。
1.1.2 数据库发展阶段
描述: 早期的计算机主要用于科学计算
,它面对的是数量惊人的各种数据,为了有效地管理和利用这些数据
,就产生了计算机的数据处理技术
,经历了三个阶段:
(1) 人工管理阶段 :
20世纪50年代中期以前,计算机的数据处理技术采用的是人工处理技术,当时硬件的状况是:只有纸带、卡片、磁带等外部存储设备、没有磁盘等直接存取的存储设备。
软件的状况是没有操作系统、没有管理数据的软件
该阶段主要特点是:
- 数据
不保存
:计算机主要用户科学计算,不需要长期保存数据,只在计算时输入数据; - 应用
程序管理数据
:数据由应用程序自己管理。数据的逻辑结构与物理结构均需要同时考虑; - 数据
不具有共享性
:数据是面向应用程序的,一组数据对应一个应用程序。 - 数据
不具有独立性
:数据的逻辑结果或物理结构变化,则应用程序必须进行对应修改。
(2) 文件系统阶段:
20世纪50年代中期到60年代后期,进入了文件系统阶段。这时硬件方面已经有了磁盘、磁鼓等直接存取的存储设备;
软件方面已经有了“操作系统”,并且“操作系统”中还有专门管理数据的软件,即文件系统。
该阶段主要特点为:
- 数据可
长期保存
:数据可以长期保存在磁盘、磁鼓等存储设备中,可反复进行操作; - 有文件系统管理数据:文件系统按一定规则将数据组织成一个个互相独立的数据文件,利用“按文件名访问,按记录进行存取”的技术,对文件进行修改、插入、删除等操作。文件系统对数据的管理是通过应用程序和数据直接的接口关系实现的。
- 数据
共享性差
:文件系统只是简单的存放数据,数据的存放方式仍然依赖于程序,即文件仍然是面向应用程序的。 - 数据
不独立性
:数据依赖于应用程序,当需要修改文件的逻辑结构时,应用程序需要修改,则数据与应用程序不是独立的。
(3) 数据库系统阶段:
20世纪60年代后期以后至今,为了克服文件系统的缺点,人们对文件系统进行了扩充,研制了一种结构化的数据组织和处理方式,即数据库系统,进入了数据库管理阶段。
数据库系统建立了数据和数据之间的有机联系,能对数据进行统一、集中、独立的管理,使得数据的存取独立于使用数据的应用程序,实现了数据的共享。
weiyigeek.top-各个阶段应用程序与数据之间的关系
1.1.3 数据库术语介绍
- 数据 (Data) : 数据实际上就是描述事物的符号记录。
- 数据库 (
Database,简称 DB
) : 数据库是长期存储在计算机内有结构的、大量的、共享的数据集合。 - 数据管理(
Database Management,简称 DBM
) 数据管理是指对数据的收集、整理、组织、存储、维护、计算、检索、传送、加密等操作。数据管理技术的优劣,将直接影响数据处理的效率 。 - 数据库管理系统 (
Database Management System,简称 DBMS
) : 数据库管理系统是是位于操作系统与用户(应用软件)之间的一组数据管理软件,它提供了对数据库中的数据进行统一管理和控制的功能,包括存储管理、安全性管理、完整性管理、数据备份和恢复功能等。 Tips: 它使用户可以方便快速地建立、维护、检索、存取和处理数据库中的数据,它是数据库系统的核心,用户对数据库提出的访问请求都是由DBMS来处理的,并且在DBMS中还提供了许多对数据库进行操作的实用程序。
- 数据库系统(
Database System,简称 DBS
) : 数据库系统是指在计算机系统中引入数据库后的系统构成,一般由计算机硬件系统、数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。 Tips: 其中软件系统包括操作系统、数据库管理系统和应用程序系统,属于应用平台。Tips: 硬件系统与常用计算机没什么区别,包括中央处理器、存储器、输入/输出设备等。 - 数据库系统管理员 (
Database administrαtor,简称 DBA
) : 数据库系统管理员是指负责数据库的建立、使用和维护等工作的专门人员。 - 数据结构化: 数据非纯文本的,有各种数据类型,以及各种类型的数据规范
- 数据的共享性: 数据的共享性是指由于数据库系统是从整体角度上看待和描述数据的,数据不再面向某个应用,而是面向整个系统。
- 数据的一致性 (
Consistency
): 就是一条 column 的数据在多个表中保持同步更新. - 数据的安全性 (
Security
): 指存储介质的物理安全、数据的保密程度或是访问权限、网络安全等 - 数据的完整性 (
Integrity
): 是指在进行数据库设计时要站在全局需要的角度进行抽象和组织数据,要完整的、准确的描述数据自身和数据之间联系的情况。 - 物理独立性: 物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。 即数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。
- 逻辑独立性: 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。 即当数据的逻辑结构改变时,用户程序也可以不变。
- 并发控制 (
Concurrenty Control
) : 当多个用户并发的对数据库进行操作时,对他们加以控制和协调,以保证并发操作的正确执行,保持数据库的一致性。(事务管理) - 数据冗余度: 指的多余的相同数据。
- 数据库恢复(
Recovery
): 数据库恢复是指通过技术手段, 将保存在数据库中上丟失的电子数据进行抢救和恢复。
数据库用户管理分类
描述: 数据库用户数据库的设计、维护、使用必然会涉及到很多人员,按这些人员使用数据库的角度,将他们分成几类,每一类都可以由一个或几个人组成,统称为数据库的用户:
- 1.数据库管理员(DBA,Database Administrator),其职责如下
(1) 决定数据库中的信息内容和结构;
(2) 决定数据库的存储结构和存取策略;
(3) 定义数据的安全性要求和完整性约束要求;
(4) 监控数据库的使用和运行;
(5) 数据库的性能改进;
(6) 定期对数据库进行重组和重构,以提高系统的性能。
- 2.系统分析人员和数据库设计人员
(1) 系统分析员负责应用系统的需求分析和规范说明,他们要和用户及DBA相结合,确定系统的硬软件配置并参与数据系统的概要设计。
(2) 数据库设计人员负责数据库中数据的确定、数据库各级模式的设计,设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。
- 3.应用开发程序员
(1) 应用程序员(开发人员),应用程序员主要按照DBA,系统分析员撰写的用户需求分析,负责设计应用程序的结构,并利用程序设计语言、开发工具来编写、调试、维护嵌入了SQL语言的数据库应用程序。
- 4.监控用户以及其它终端用户
(1) 用户,这里的用户指最终用户,使用数据库应用程序的人员, 一般是非计算机人员,如银行出纳员、火车售票员等。
1.2 数据库基本功能
1)数据定义:提供数据定义语言(DDL,Data Definition Language
)用于描述数据库的结构(如表、索引、约束等),以便存储数据,并在一定程度上保证数据的完整性。
如表中的每条记录都是唯一的、不能再定义为数字的字段中存储字母。
2)数据操作:提供数据操作语言(DML,Data Manipulation Language
)用于对数据库中的数据进行操作 增删改查(如查询、添加、删除、更新等)
3)数据安全性的控制和管理:提供数据控制语言(DCL, Data Control Language
)用于规定用户对数据库的操作权限、监控用户操作、防范任何破坏或不轨的意图、提供事物处理功能保证数据库中数据的一致性,处理多用户同时访问数据库时并发控制的问题,执行数据库的备份、恢复、转储、加密的功能。
4)性能和效率监控与优化:通过一些工具软件例如 Prometheus、zabbix
,对数据库的性能和效率进行监控,给出进行优化的方案以供参考。
数据库系统的特点(详述)
1)数据结构化
数据库中的数据不再像文件系统中的数据那样属于特定的应用程序,而是面向所有应用程序。
2)数据存取灵活
可以存取数据库中某一个数据项、一个记录或一组记录。可以存取整体数据的各个子集来满足不同的应用需求。
3)数据共享性高、冗余度低(就是重复性)
由于数据库中的数据是按某种数据模型组织成的结构化数据,存取的粒度细到数据项,所以多个应用程序都能共享同一个数据库中的数据,提高了数据利用率。 数据的共享,避免了同一数据存在不同副本,因而减少了数据冗余,不一致现象。
4)数据安全可靠(容灾)
数据库中加入了安全保密机制,如用户验证,角色和权限控制,可防止数据的非法使用。由于具有完整性约束和并发控制,所以能保证数据的一致性,另外,还可以对数据进行备份恢复,防止数据丢失或被破坏。
5)数据独立性高: 其包括物理独立性
和逻辑独立性
。
物理独立性:指应用程序与存储在磁盘上的数据库中的数据是相互独立的,即数据在磁盘上的数据库中是如何存储的,完全由
DBMS
来管理,应用程序不需要了解,应用程序只需要了解数据的逻辑结构。 逻辑独立性:指应用程序与数据的逻辑结构也可以是相互独立的,即数据的逻辑结构的改变,如数据定义的修改,数据之间的关系变更时,应用程序也不需要改变。
Tips : 数据的独立性使数据和应用程序之间相互独立,互不依赖,不因一方的改变而需要另一方也改变,大大减少了工作量。
1.3 数据库体系结构
描述: 虽然数据库类型、规模可能不同,但大体结构相似,体系结构是指数据库系统的总体框架(Framework)。
我们可以将数据库系统体系结构分为 三级模式结构
与 两级映射
,其关系图如下所示
weiyigeek.top-三级模式结构&两级映射关系
简单介绍:
(1) 三层体系结构如下:
1.面向用户或应用程序员的用户级(
外部层
) 2.面向数据库设计和维护人员的概念级(概念层
) 3.面向系统程序员的物理级(内部层
)
(2) 三级模式结构: 从数据库管理系统的角度看,数据库通常采用模式、外模式、内模式
三级结构。
1.外模式:又称子模式或用户模式,DB的局部逻辑结构。它是
用户与数据库的接口
,是用户使用的那部分数据的描述,由若干个外部记录类型组成,即与某一应用有关的数据的一个逻辑表示。 注意:外模式是某个用户的数据视图,模式是所有用户的公共数据视图,一个DB只能有一个模式,但可以有多个外模式
。2.模式:又称逻辑模式,DB的全局逻辑结构。它是对数据库中
全部数据的整体逻辑结构
的描述,由若干个概念记录类型组成
,即DB中全体数据的逻辑结构和特征的描述。 注意,模式只涉及模型的描述,不涉及具体的值,反映的是数据的结构及其联系
。模式不涉及物理存储细节和硬件环境,也与应用程序无关;一个数据库只有一个模式
。3.内模式:又称存储模式。数据的
物理结构和存储方式
的描述,它是在物理存储方面的描述,定义所有的内部记录类型、索引和文件的组织方式
,以及数据控制方面的细节。即DB中数据的内部表示方式。注意:一个数据库只有一个内模式
。
(3) 外模式/模式映像
和 模式/内模式映像
为了能够在内部实现数据库三级模式之间的联系和转换
,数据库管理系统在这三级模式之间提供了两层映像:
weiyigeek.top-数据库的三级体系结构
1.
外模式/模式映像
:模式
描述的是数据库数据的全局逻辑结构
,外模式
描述的是数据的局部逻辑结构
,对应于同一个模式可以有任意多个外模式。对于每一个外模式
,数据库系统都有一个外模式/模式映像
,它定义该外模式与模式之间的对应关系。作用:模式改变,可修改映像使外模式保存不变
,从而使应用程序不必修改,保证了程序和数据的逻辑独立性
。2.
模式/内模式映像
定义DB全局逻辑结构和存储结构间的对应关系。一个数据库只有一个模式,也只有一个内模式,因此模式/内模式映像是唯一的
。作用:存储结构变化,可修改映像使逻辑结构(模式)保存不变,从而使应用程序不必修改,保证了数据与程序的物理独立性。
1.4 数据库类型分类
1.4.1 关系型数据库
描述: 在 1970 年的开创性论文“大型共享数据库的数据关系模型”中,EF Codd 定义了基于数学集合论的关系模型, 当下最广泛使用的数据库模型就是关系模型。
Q: 关系型数据库的本质是?
答: 关系数据库将数据存储在一组简单的关系中(
一种关系是一组元组,一个元组是一组无序的属性值。
), 数据以行(元组)和列(属性)形式的关系的二维表示,表中的每一行都具有相同的一组列。答: 关系数据库是将数据存储在关系(表)中的数据库。
关系模型主要有以下几个方面:
- 数据结构: 定义良好的对象存储或访问数据库的数据。
- 操作控制: 明确定义的操作使应用程序能够操作数据库的数据和结构。
- 管理机制:完整性规则管理对数据库数据和结构的操作。
关系模型的实现是关系数据库管理系统 (RDBMS)
,RDBMS 将数据移入数据库、存储数据并检索它,以便应用程序可以操作它。
RDBMS 区分以下类型的操作:
- 逻辑操作: 应用程序指定什么内容为必填项。(
如,应用程序请求员工姓名或将员工记录添加到表中。
) - 物理操作: 确定如何应该做的事情并进行操作。(
如,在应用程序查询指定表中特定字段数据时,可能会使用索引来查找请求的行,将数据读入内存,并在将结果返回给用户之前执行许多其他步骤
)
Tips : RDBMS 存储和检索数据,以便物理操作对数据库应用程序是透明的。
关系型数据库产品:
- Oracle 数据库
- MySQL(已被甲骨文公司收购): MySQL的代替品可选 MariaDB (MySQL之父Michael "Monty" Widenius的新项目防止MySQL避源的风险,其它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL) 、Percond Server。
- PostgreSQL
- Microsoft SQL Server
- Microsoft access
- Google Fusion Tables
- Sybase
1.4.2 非关系型数据库 NOSQL
描述:非关系型数据库(NoSQL数据库)是一种数据存储和管理的方式 (广泛应用于分布式架构中
),与传统的关系型数据库(SQL数据库)不同。NoSQL数据库不使用表格、行和列的方式来存储数据,而是使用各种灵活的数据模型来处理大量的非结构化和半结构化数据。
非关系型数据库产品类型:
- 键值存储(Key-Value Stores):
- 数据以键值对的形式存储,适用于简单的数据查询和高性能的读写操作。
- 产品:Redis, Riak, MemcacheDB , LevelDB (Google)
- 文档存储(Document Stores):
- 数据以文档的形式存储(如JSON、BSON等),适用于处理复杂的嵌套数据结构。
- 产品:MongoDB, CouchDB
- 列族存储(Column-Family Stores):
- 数据以列族的形式存储,适用于需要处理大规模数据的场景。
- 产品:Apache Cassandra, HBase, BigTable Google
- 图形存储(Graph Databases):
- 数据以图的形式存储,适用于处理复杂的关系和网络结构。
- 产品:Neo4j, ArangoDB
总结:NoSQL数据库提供了一种灵活、高效和可扩展的数据存储解决方案,适用于各种需要处理非结构化数据和大规模数据的应用场景。不同类型的NoSQL数据库各有优劣,根据具体需求选择合适的数据库类型是关键。