zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

1.Oracle关系型数据库自学之基础入门介绍

Oracle数据库基础入门 介绍 关系 自学
2023-06-13 09:13:35 时间

[TOC]

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年代后期以后至今,为了克服文件系统的缺点,人们对文件系统进行了扩充,研制了一种结构化的数据组织和处理方式,即数据库系统,进入了数据库管理阶段。

数据库系统建立了数据和数据之间的有机联系,能对数据进行统一、集中、独立的管理,使得数据的存取独立于使用数据的应用程序,实现了数据的共享。

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,对数据库的性能和效率进行监控,给出进行优化的方案以供参考。

数据库系统的特点(详述) 1)数据结构化

数据库中的数据不再像文件系统中的数据那样属于特定的应用程序,而是面向所有应用程序。

2)数据存取灵活

可以存取数据库中某一个数据项、一个记录或一组记录。可以存取整体数据的各个子集来满足不同的应用需求。

3)数据共享性高、冗余度低(就是重复性)

由于数据库中的数据是按某种数据模型组织成的结构化数据,存取的粒度细到数据项,所以多个应用程序都能共享同一个数据库中的数据,提高了数据利用率。 数据的共享,避免了同一数据存在不同副本,因而减少了数据冗余,不一致现象。

4)数据安全可靠(容灾)

数据库中加入了安全保密机制,如用户验证,角色和权限控制,可防止数据的非法使用。 由于具有完整性约束和并发控制,所以能保证数据的一致性,另外,还可以对数据进行备份恢复,防止数据丢失或被破坏。

5)数据独立性高: 其包括物理独立性逻辑独立性

物理独立性:指应用程序与存储在磁盘上的数据库中的数据是相互独立的,即数据在磁盘上的数据库中是如何存储的,完全由DBMS 来管理,应用程序不需要了解,应用程序只需要了解数据的逻辑结构。 逻辑独立性:指应用程序与数据的逻辑结构也可以是相互独立的,即数据的逻辑结构的改变,如数据定义的修改,数据之间的关系变更时,应用程序也不需要改变。

Tips : 数据的独立性使数据和应用程序之间相互独立,互不依赖,不因一方的改变而需要另一方也改变,大大减少了工作量。

1.3 数据库体系结构

描述: 虽然数据库类型、规模可能不同,但大体结构相似,体系结构是指数据库系统的总体框架(Framework)。

我们可以将数据库系统体系结构分为 三级模式结构两级映射,其关系图如下所示

WeiyiGeek.三级模式结构&两级映射关系

简单介绍: (1) 三层体系结构如下:

1.面向用户或应用程序员的用户级(外部层) 2.面向数据库设计和维护人员的概念级(概念层) 3.面向系统程序员的物理级(内部层

(2) 三级模式结构: 从数据库管理系统的角度看,数据库通常采用模式、外模式、内模式三级结构。

1.外模式:又称子模式或用户模式,DB的局部逻辑结构。 它是用户与数据库的接口,是用户使用的那部分数据的描述,由若干个外部记录类型组成,即与某一应用有关的数据的一个逻辑表示。 注意:外模式是某个用户的数据视图,模式是所有用户的公共数据视图,一个DB只能有一个模式,但可以有多个外模式

2.模式:又称逻辑模式,DB的全局逻辑结构。 它是对数据库中全部数据的整体逻辑结构的描述,由若干个概念记录类型组成,即DB中全体数据的逻辑结构和特征的描述。 注意,模式只涉及模型的描述,不涉及具体的值,反映的是数据的结构及其联系。 模式不涉及物理存储细节和硬件环境,也与应用程序无关;一个数据库只有一个模式

3.内模式:又称存储模式。 数据的物理结构和存储方式的描述,它是在物理存储方面的描述,定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。 即DB中数据的内部表示方式。 注意:一个数据库只有一个内模式

(3) 外模式/模式映像模式/内模式映像

为了能够在内部实现数据库三级模式之间的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:

WeiyiGeek.数据库的三级体系结构

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 (广泛应用于分布式架构中)

非关系型数据库产品:

  • 面向检索的列式存储 Column-Oriented BigTable Google) Abase( Hadoop子系统)
  • 面向高并发的缓存存储 key-vaUe LevelDB (Google) Redis MemcacheDB
  • 面向海量数据访问的文档存储 Document-Oriented MongoDB CouchDB

0x01 Oracle 数据库介绍

1.1 Oracle 数据库技术概述

描述: Oracle 数据库(Oracle database,简称 Oracle) 又名Oracle RDBMS是甲骨文公司的一款关系数据.

Oracle 数据库产品为客户提供成本优化的高性能版 Oracle 数据库、全球领先的融合多模型数据库管理系统以及 In-memory、NoSQL 和 MySQL 数据库。客户可以在本地部署环境中通过 Oracle 公有云本地化解决方案使用 Oracle 自治数据库,也可以在 Oracle 云基础设施中使用 Oracle 自治数据库,从而简化关系数据库环境并减少管理工作量。

数据库库管理系统(RDBMS), 并且由于 Oracle 实现面向对象特性(例如用户定义类型、继承和多态)的 RDBMS 称为对象关系数据库管理系统 (ORDBMS), Oracle 数据库已将关系模型扩展为对象关系模型,从而可以在关系数据库中存储复杂的业务模型。

Oracle 数据库它是在关系型数据库领域中一直处于领先地位的产品,它可在本地环境和云端提供市场领先的性能、可扩展性、可靠性和安全性,可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统。

Oracle 数据库系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境 ,它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。

Tips : 当下(2021年9月23日 17:16:05)最新的长期支持版 Oracle Database 19c 拥有超高水平的版本稳定性以及超长的支持和错误修复支持周期,可为您的应用提供一个超级稳定的平台。

Tips : Oracle 数据库技术官网站点 (https://www.oracle.com/cn/database/technologies/)

Oracle 数据库多操作平台支持: 甲骨文公司的Oracle10g/11g/12c/18c/19c支持常见的操作系统例如:

  • Microsoft Windows x86,x86-64
  • Linux x86,x86-64
  • Apple Mac OS X Server
  • Sun Salaris SPARC x86,x86-64

Oracle 数据库特性:

  • 高可用性 : 丰富的内置功能和选件,包括 Oracle Active Data GuardOracle Real Application Clusters,可支持高效扩展和整合客户数据库, 来保护重要客户数据库,大幅提高数据可用性。
  • 数据库安全性 : 借助加密、数据屏蔽、特权用户访问控制、活动监视和审计功能; 降低数据泄露风险,并让客户能够更加轻松地满足合规性要求。
  • 数据库可管理性 : 通过单一管理仪表盘和一致的管理流程提高企业级数据库的性能和可用性,减少 DBA 的工作量。
  • 性能与可伸缩性 : 通过一系列强大功能优化延迟,提高吞吐量,满足实时环境和数据中心环境下严格的性能要求。

Oracle 数据库服务应用方案:

  • 分析和数据仓库 : 借助 Oracle Database In-MemoryOracle Multitenant 等高级数据仓库和分析技术,分析团队可在更短的时间内对可扩展数据仓库进行更深入的分析。
  • 机器学习 : Oracle 数据库可运行强大的算法来加速机器学习 (ML),让客户无需移动或重新格式化数据即可构建和运行 ML 模型。数据科学家利用 Python、R、SQL 和其他工具将 ML 功能集成到数据库应用中,并在易于使用的仪表盘中呈现分析结果。
  • 全面、可扩展的开发平台 : 开发人员可以使用 SQL、JSON、XML 和一系列过程语言来快速创建可扩展的高性能应用。Oracle Database 19c 提供了一系列内置开发工具,例如 APEX 和 融合数据库 功能。
  • 敏捷、灵活、安全的数据库管理 : Oracle 云基础设施提供一系列优化的数据库功能,可帮助客户密切协同资源与其特定需求,从而实现经济、高效的运营。许多公司结合全托管式自治数据库的强大功能、Exadata 云服务的超强性能和控制以及 Oracle 数据库、MySQL 数据库和 NoSQL 数据库云服务的超低成本来推进数字转型。

请简单描述Oracle数据库的优点与特点?

优点:稳定性、可扩展性、高可用性、数据安全性。 特点: 完整的数据管理功能,完备的关系产品,分布式存储处理功能,实现数据仓库容器的操作。

1.2 Oracle 数据库技术简史

描述: 当前版本的 Oracle 数据库是超过 35 年创新开发的结果,其中Oracle数据库发展过程中的亮点包括:

甲骨文公司成立

  • 1.1970年6月,IBM 公司研究员 埃德加·考特(Edgar Frank Codd) 发表著名的<大型共享数据库数据的关系模型>的论文,标志着关系型数据库理论的产生。
  • 2.1977年6月,拉里·埃里森(Larry Ellison)- 创始人鲍勃·米纳(Bob Miner)埃德·奥茨(Ed Oates)在硅谷创立了咨询软件开发实验室(Software Development Laboratories,SDL) 公司,之后布鲁斯·索科特(Bruce Soctt) 员工加入到其研发团队之中。
  • 3.1979年SDL更名为关系软件有限公司( RelationSoftware, InC, RSI)
  • 4.1979年RSI推出了oraclev2 (version2)作为第一个商业软件SQL语言-基于关系数据库,这是关系数据库历史上的重要事件。
  • 5.1983年RSI再次更名为 Oracle (甲骨文)。

WeiyiGeek.创始人与Oracle公司

Oracle 数据库历史版本

发布时间

Oracle 版本

Oracle 特性

1979年夏季

Oracle 2 (2.3)

Oracle 发布的第一个商业RDBMS也是第一个版本

1983年3月

Oracle 3 (3.1.3)

并发控制、数据分发和可移植性

1984年10月

Oracle 4 (4.1.4.4)

多版本读致性

1985年

Oracle 5 (5.1.22)

实现C/S模式、和应用数据库系统 、支持分布式查询

1988年

Oracle 6

增强引入了磁盘I/O、行锁定、可扩展性以及备份和恢复(联机热备份)

1992年6月

Oracle 7

增加了分布式事务处理功能、存储过程和维护

1997年6月

Oracle 8

支持面向对象的开发及新的数据类型

1998年9月

Oracle 8i

提供了对 Internet 协议的本地支持和对 Java 的服务器端支持。(i, Internet)

2001年6月

Oracle 9i

本地互联网协议及Java虛拟机的专用数据库,应用集群(Oracle RAC)使多个实例能够同时访问单个数据库。

2003年9月

Oracle 10g

加入了网格计算的功能(g,Grid)

2007年11月

Oracle 11g

实现了信息生命周期管理等功能、可管理性、可诊断性和可用性

2013年7月

Oracle 12c

多用户体系, 内存中列存储,SQL模式四配,专为云服务而设计(,Coud)

2018年2月

Oracle 18c

继续云计算服务, 自治性数据库, 集成和内存性能, 利用列式数据模型的内存以达到高速访问的效果

2019年2月

Oracle 19c

主要特点是稳定性,自动化索引一依据应用负载的变化自动/动态地进行索引的管理任务

2021年

Oracle 21c

引入区块链表和原生 JSON 数据类型及AutoML(帮助普通用户在数据库中轻松访问机器学习功能)特性、增强多模、多负载优化和多租户、自我管理

Tips : Oracle Database 21c 是全球广受欢迎的最新一代数据库,目前已在虚拟机(RAC 和单实例)和裸金属服务(单实例)两大 Oracle 云数据库服务中“云优先”一般可用。

补充说明:

1.3 Oracle 数据库实例简述

(1)Oracle 数据库访问机制 描述: Oracle 数据库的访问是基于客户端/服务器模式实现的, 客户端通常是我们的应用程序或者SQL Plus、PL/SQL 等连接工具。

WeiyiGeek.Oracle 数据库的客户端/服务器模式

从图中可知,我们通过客户端进行请求到Oracle服务器中的实例 test1, 让再由实例对接其创建的数据库, 拉取相应的数据并响应给客户端,下面简述对象作用:

  • Oracle 实例 : 运行在 Oracle 服务器中的服务,接收并响应客户端的请求。
  • Oracle 数据库 : 运行 在Oracle 数据库实例中为客户端提供存储数据服务的文件系统。
  • Oracle 数据库软件 : Oracle 服务器。

(2) Oracle 数据库 描述:Oracle 数据库提供数据存储功能的文件系统。

(3) Oracle 数据库实例 描述: Oracle数据库实例,运行在 Oracle 服务器端为接受用户请求并提供响应的独立进程(服务)。

例如,下面单实例和集群数据库系统中:

  • 单实例数据库系统中,一个 Oracle 数据库 通常对应一个 Oracle 实例;
  • 在并行数据库系统中 Oracle 数据库 可以对应多个 Oracle 实例;

0x02 Oracle 数据库安装使用

1.1 环境需求与下载

描述: Oracle 的环境搭建需求建议如下:

硬件环境:

  • 物理内存: 4G及以上。
  • 虚拟内存: 物理内存*2。
  • 磁盘空间: 最小需求6GB建议大于8GB。
  • CPU处理器: 建议1.5GHz及以上。

软件环境:

WeiyiGeek.Oracle Database Software Downloads

Tips : 注意 Oracle Database 10.2、11.x、12.x和18c 可作为介质或FTP请求提供给那些拥有任何版本的有效Oracle数据库产品许可证的客户。

1.2 服务器安装简述

安装环境

  • 操作系统 :Microsoft Windows Server 2022 Standard 10.0.20348 暂缺 Build 20348
  • CPU 处理器 : 2C (2.9GHz)
  • 内存空间 : 8G
  • 磁盘空间 : 数据库安装D盘 (100G)
  • Oracle 版本 : Oracle 12C (winx64_12201_database.zip)

安装配置流程

  • Step 1.重命名服务器主机名称PS> Rename-Computer TestDB以及解压winx64_12201_database.zip(需要重启系统), 注意此处你无需准备JDK环境(Oracle 安装包中会自带并解压)

WeiyiGeek.服务器主机名称

  • Step 2.右键管理员运行setup.exe -> 将会打开Oracle安装界面此处配置安全更新我取消勾选 -> 然后选择数据库安装选项: 1.创建和配置数据库 (在安装数据库软件的同时创建了数据库及数据库实例) - 此处选择 2.仅安装数据库软件 (只安装了数据库软件,没有创建数据库及数据库实例) 3.升级现有的数据库 (例如将 Oracle 12101 数据库版本升级到 12201 版本的数据库 )

Tips :如不能成功执行或者卡到安装界面上可以参考如下操作:

# 针对客户端安装,在cmd中执行命令;
setup.exe -ignorePrereq -J"-Doracle.install.client.validate.clientSupportedOSCheck=false" 
# 针对服务端安装,在cmd中执行命令:
setup.exe -ignorePrereq -J"-Doracle.install.db.validate.supportedOSCheck=false"
  • Step 3.安装Oracle的系统类别(由于我们是在服务器上安装选择服务器类) -> 安装类型选择单实例数据库安装 -> 再选择高级安装 -> 数据库安装版本选择企业版 (可以根据您购买的Oracle 许可进行选择)。

WeiyiGeek.服务器类与安装版本

  • Step 4.设置Oracle的主目录用户(建议选择虚拟账户或者自定义账号) 此处创建dba用户 -> 选择安装位置为d盘 -> 配置类型选择一般用途/事务处理

WeiyiGeek.Oracle的主目录用户

  • Step 5.配置数据库默认标识 (即默认实例名称) 如果不需要创建容器数据库则取消勾选 -> 配置选项中选择 字符集 (建议使用AL32UTF8) 此处根据数据库或者业务需求我选择中文字符集(ZHS16GBK) -> 取消示例方案。

WeiyiGeek.数据库默认标识

  • Step 6.选择文件系统后指定数据库文件位置D:\app\dba -> 恢复选项一定要勾选上 -> 设置sys(本地管理用户权限)、system(网络管理用户权限)用户密码(注意有密码复杂度要求、8位以上大小写与数字组合【建议不要有特殊字符、且用户密码不要一致】) -> 查看概要中的配置(如果不正确可以及时修改) -> 建议保存安装配置的应答文件以备恢复或者新安装使用。

WeiyiGeek.文件系统指定数据库文件位置

  • Step 7.等待安装完成 -> 出现如下图提示则表示安装成功 最后点击关闭即可。

WeiyiGeek.Oracle 安装成功

  • Step 8.通过浏览器访问 OEM (Oracle 企业管理管理工具): https://testdb:5500/em/, 利用上面创建的本地用户sys进行登陆即可, 它可以进行Oracle 服务器的调优配置,我将会在最后一章中进行介绍其使用。

WeiyiGeek.Oracle 企业管理管理工具

1.3 服务器卸载与重装

描述: 前面我们安装好了 Oracle,如果在安装过程中安装失败,此时我们需要将 Oracle 卸载干净后进行重新安装。

Oracle 12C 卸载 描述: 如果数据库配置了自动存储管理(ASM),先删除聚集同步服务 CSS( ClusterSynchronization Services), 在 DOS 命令终端中执行 localconfig delete, 然后再删除自动存储管理(ASM), DOS 命令终端中执行 oracle-delete-assia+asm

  • Step 1.关闭所有 Oracle 服务 -> Win + R (运行) -> services.msc 进行服务管理 输入 o 就可以看到oracle开头的服务。
  • Step 2.在Oracle安装目录下找到 deinstall.bat 双击执行卸载, 或者在开始菜单中点击Universal Installer进入Oracle 卸载,此时我的路径是 D:\app\dba\product\12.2.0\dbhome_1\deinstall,(非常注意需要以管理员权限运行)。
Checking for required files and bootstrapping ...
Please wait ...
已复制         1 个文件。
已复制         1 个文件。
已复制         1 个文件。
已复制         1 个文件。
日志的位置 C:\Users\Administrator\logs\
# 之后按照提示删除对应的Listener以及Oracle主目录。

WeiyiGeek.Oracle卸载

Step 3.在系统注册表中清理Oracle卸载余留参数选项,主要是以下Oracle注册表路径 -> Win + R (运行) -> regedit

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE # 目录
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI # 除 Microsoft oDbc for Oracle 注册表键以外的所有含有 Oracle的键
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services # 所有以 oracle或 OraWeb为开头的键
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder/Start Menu/Program # 所有以 oracle 开头的键
  • Step 4.删除环境变量中的 PATH 和 CLASSPATH 中包含 Oracle的值(echo %path%), 然后删除“开始”/“程序”中所有 Oracle的组和图标,最后删除所有和 ORACLE 相关的目录

Oracle 12C 重装 描述 : Oracle 12C 的重装与Oracle 安装基本一致此处不在累述,不过有一点值得注意的是在进行安装数据库软件的同时创建了数据库及数据库实例出错时,此时我们可以先选择仅安装数据库软件(不能接收用户请求和响应数据给用户),等待安装完成后再进行创建数据库以及 Oracle 实例。

1.4 数据库实例创建与删除

描述: 前面我们说到Oracle 服务器可以创建多个 Oracle 实例和数据库,实例与数据库的关系通常也是一对一的,客户端通过实例(管理、联系Oracle数据库的一组进程)联系数据库(实际上是存储数据的静态文件系统)。

创建操作流程如下:

  • Step 1.开始菜单之中选择Database Configuration Assistant 进入数据库配置助手中 -> 选择创建数据库 -> 进行数据库创建模式配置(典型配置) -> 在全局数据库名处(输入要创建的数据库名称) -> 存储类型默认文件系统即可 -> 数据库文件位置你可以自定义也可采用缺省配置 -> 输入sys用户管理口令 -> 在 Oracle 主目录用户口令处(输入dba账户的密码) -> 在可插入数据库名中输入 orcltest

WeiyiGeek.创建`test`数据库

  • Step 2.显示我们创建配置test数据库的配置项 -> 如无任何问题点击完成即可 -> 等待数据库创建完成。

WeiyiGeek.创建配置`test`数据库的配置项

  • Step 3.创建完成后会让您更改该数据库以及实例的管理用户的口令(建议设置不一样的口令),之后查看 services.msc 你将会发现多了三个服务OracleJobSchedulerTEST、OracleServiceTEST(实例服务)、OracleVssWriterTEST

WeiyiGeek.数据库以及实例的管理用户的口令

  • Step 4.至此完毕(后续讲解·SQLPlus时演示),此时你可以在D:\app\dba\oradata\TEST找到该数据库的数据存储目录。

删除操作流程如下:

  • Step 1.同样在开始菜单之中选择Database Configuration Assistant 进入数据库配置助手中 -> 选择创建数据库 -> 删除数据库 -> 选择需要删除的数据库对象(此处TEST) -> 输入sys口令进行验证 -> 点击下一步

WeiyiGeek.删除test数据库

  • Step 2.查看删除数据库得概要 -> 确保无误后点击完成 -> 然后会显示数据库删除进度 -> 等待成功的结果 -> 并且此时你会发现服务中以无test相关的oracle服务。

WeiyiGeek.完成TEST数据库的删除

1.5 数据库实例监听程序

描述: Oracle 监听程序服务主要为进行接收客户请求, 没有监听程序则无法连接实例以及获取数据库中的数据信息。

监听程序 : 就是运行在Oracle服务器端用于监听客户端的请求的程序,其默认端口通常设置为1521/TCP。

WeiyiGeek.Oracle 监听程序服务

Q: 没有监听程序的两种情况?

1.Oracle 数据库软件安装后不存在监听程序服务(例如:OracleOraDB12Home1TNSListener)。 2.Oracle 数据库原有的监听程序无法正常的监听客户端请求。

此时遇到上面此类情况我们可以删除监听程序后重新创建。

删除监听程序

  • Step 1.在开始菜单之中选择 Net Configuration Assistant 进入数据库网络配置助手中 -> 监听程序配置
  • 选择删除工作 -> 点击下一步 -> 选择要删除的监听程序 LISTENER (默认) -> 此时会有一个提示框出现点击是即可 -> 点击下一步

WeiyiGeek.删除监听程序

  • Step 2.等待删除监听程序完成 -> 最后点击完成。

创建监听程序

  • Step 1.在开始菜单之中选择 Net Configuration Assistant 进入数据库网络配置助手中 -> 监听程序配置
  • 只能选择添加工作 -> 输入监听程序名称 以及 主目录用户的密码 -> 选择监听程序接收连接的协议 -> 点击下一步。
  • Step 2.进行监听程序服务端口的配置(默认1521即可) -> 看到监听程序配置完成 -> 点击下一步完成 -> 最后在服务中查看Oracle相关的Listener服务是否其启用。

WeiyiGeek.完成创建监听程序

1.6 Oracle 管理工具介绍 (SQL*Plus)

描述: Oracle 管理工具是介于用户与Oracle数据库之间,运行与Oracle客户端,为用户操作和管理Oracle数据库提供了入口。

WeiyiGeek.Oracle 客户端的组成部分

由上图可以看见 Oracle 客户端由 管理工具和基础程序组成, 下面我们将介绍常用的Oracle 管理工具

  • SQL*Plus,是一个DOS界面下操作数据库的管理工具,它与Oracle 12c一起安装,是数据库管理员经常使用的数据库管理工具
  • iSQL*Plus,是Oracle提供的一个基于web页面形式的管理工具,通过浏览器就可以直接访问数据库。
  • Navicat for Oracle,第三方Oracle管理工具,功能比较全面、界面美观、操作便捷。
  • PL/SQL Developer,第三方Oracle管理工具,它是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,功能强大,使用人数较多。
  • OEM, Oracle企业管理器, 提供Oracle数据库底层的管理功能。

Tips : 由于在安装Oracle后SQL*Plus已经默认安装在我们的主机中,此时我先讲解其使用。

SQL*Plus 介绍 它是Oracle数据库管理工具,它随Oracle数据库一起安装,在安装完数据库软件之后就可以直接使用SQL*Plus来管理数据库了。

通过SQL*Plus可以完成对数据库的如下操作:

  • 1.对数据的增、删、改、查的操作
  • 2.对查询出的结果进行格式化显示;
  • 3.对数据库对象(用户、角色、表空间、数据表等)进行管理。

SQL*Plus 启动 描述: 通常针对于Oracle数据库操作运维,主要使用的是命令行方式,而所有的命令都是使用,以 SQL*Plus 启动方式进行菜单启动、或者 DOS 命令启动。

WeiyiGeek.sqlplus有两种风格形式

SQL*Plus 登陆连接 常用用户登陆与切换: 用户/密码 @标识符 AS SYSDBA

  • 本地管理员: sys 用户
  • 网络用户员: system 用户
  • 业务用户源: 自定义非内置用户

语法:

用法: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
其中  <logon> ::= <username>[/<password>][@<connect_identifier>]
      <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]

Tips : 值得注意的是 SQL*Plus 登陆连接默认是采用orcl实例和数据库我们可以通过下面两种方式进行切换:

  • (1) 登陆连接时指定数据库例如: 连接本地数据库 sys/password @test AS SYSDBA和 远程连接数据库conn sys/password 192.168.12.1:1521/orcl
  • (2) 在注册表中进行修改 ORACLE_SID 名称的数据值: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB12Home1\ORACLE_SID

WeiyiGeek.ORACLE_SID

SQL*Plus 使用 描述: 在SQLPlus中我们即可以执行SQL指令也可以执行SQLPlus指令。

  • SQL 指令: 即结构化查询语言(DQL)就是我们通常说得SQL语句,用于完成对数据库对象以及数据库表中数据的操作。
  • SQL*Plus 指令: 仅作用于SQL*Plus管理工具,主要设置其属性和功能。

使用示例演示:

-- 1.用户登陆方式
-- SQL*Plus: Release 12.2.0.1.0 Production on 星期一 10月 25 12:44:01 2021
-- Copyright (c) 1982, 2016, Oracle.  All rights reserved.
请输入用户名: sys/WeiyiGeek2021 as sysdba

-- 2.启动数据库实例
SQL> startup;

-- 连接到:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> disconn
-- 从 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 断开

-- 3.数据库用户的登录切换,例如:使用sys用户登录数据库:
SQL> CONN system/WeiyiGeek2021 as sysdba;  /*注意后面必须加 AS sysdba */
--- 已连接。

-- 4.显示当前用户 USER 为 "SYS"
SQL> show user; 

-- 5.查看哪些用户拥有sysdba、sysoper权限(用户须是dba)
select * from V_$PWFILE_USERS;
  -- USERNAME
  -- --------------------------------------------------------------------------------
  -- SYSDBA     SYSOPER    SYSASM     SYSBACKUP  SYSDG      SYSKM
  -- ---------- ---------- ---------- ---------- ---------- ----------
  -- ACCOUNT_STATUS
  -- ------------------------------------------------------------
  -- PASSWORD_PROFILE
  -- --------------------------------------------------------------------------------
  -- LAST_LOGIN
  -- ---------------------------------------------------------------------------
  -- LOCK_DATE      EXPIRY_DATE
  -- -------------- --------------
  -- EXTERNAL_NAME
  -- --------------------------------------------------------------------------------
  -- AUTHENTICATION_T COMMON     CON_ID
  -- ---------------- ------ ----------
  -- SYS

-- 6.创建数据库用户、用户授权、用户连接。 (由于此处我们点击了创建为容器数据库导致必须要输入c##前缀)
SQL> create user c##weiyigeek identified by WeiyiGeek2021 account unlock;
-- 用户已创建。

SQL> grant connect,resource,dba to c##weiyigeek;
-- 更改数据库用户密码
SQL> alter user c##weiyigeek identified by WeiyiGeek2022;

SQL> conn c##weiyigeek/WeiyiGeek2022
-- 已连接。

-- 6.输入创建、插入、查询DQL指令 (即SQL指令语句)
create table test(
  id number(5) primary key,
  name char(200) not null
);
-- 表已创建。
insert into test values (1,'WeiyiGeek');
insert into test values (2,'study');
insert into test values (3,'Oracle');
insert into test values (4,'Database');
-- 已创建 1 行。

-- 为了方便数据浏览我们需要通过SQL*Plus 指令设置sqlplus显示宽度与条数
SQL> show linesize;  -- linesize 100
SQL> set linesize 1000;
SQL> show pagesize;  -- pagesize 14
SQL> set pagesize 30;

SQL> select * from test;
-- ID NAME
-- 1 WeiyiGeek
-- 2 study
-- 3 Oracle
-- 4 Database

-- 7.此时如果使用sys用户连接数据库之后,则无法直接查询emp表数据。
SQL> sys as sysdba  -- 此种方式需要您输入密码。
-- 密码: ********
SQL> select * from test;
  -- 第 1 行出现错误:
  -- ORA-00942: 表或视图不存在
-- 对于每一张表,都有其属于的用户,所以一张表的完整名称是“用户名.表名称”或者说“模式名.表名称”,所以不同的用户想访问其他用户的表,则应该加上用户名,即:
SQL> select * from c##weiyigeek.test;
-- ID NAME
-- 1 WeiyiGeek
-- 2 study
-- 3 Oracle
-- 4 Database

-- 8.连接到指定的数据库实例中,并查询当前的数据库名、服务名、实例名、表空间、用户名:
conn sys/WeiyiGeek2021 @test as sysdba
select name from V$database; -- 数据库:TEST
show parameter service_names; -- 服务名:test
select instance_name from V$instance; -- 实例名:test
select default_tablespace from dba_users where username='c##weiyigeek'; -- 表空间:
select * from user_users; -- 用户名:SYS 用户信息

-- 9.退出SQL*PLUS命令
SQL> exit;
SQL> quit;

Tips: SqlPlus的命令不区大小写!

至此学习整理记录完毕!