大型数据库Oracle
- 1 Oracle基础
- 1.1 Oracle基础概念
- 1.2 Oracle体系结构
- 1.3 多租户架构
- 1.4 Oracle进程
- 1.5 内存结构
- 1.6 文件系统
- 2 Oracle查询
- 3 Oracle对象
- 4 Oracle编程
1 Oracle基础
与MySQL、MSSQL不同,Oracle数据库系统是美国ORACLE(甲骨文)公司提供的一款分布式
大型关系数据库管理系统数据库有“ 表空间 ”组织数据。
1.1 Oracle基础概念
数据库
是由一个或多个被称为表空间
(tablespace)的逻辑存储单位构成。表空间
内的逻辑存储单位为段
(segment)段
又可以继续划分为数据扩展
(extent)数据扩展
是由一组连续的数据块
(data block)构成。
①逻辑存储结构:
数据块:最精细的数据存储粒度是数据块(data block)。一个数据块相当于磁盘上一段连续的物理存储空间。
数据扩展:由一组连续的数据块(data block)构成、比数据块更高一层的数据库逻辑存储结构,用于存储信息。
数据段:当一个段中已有空间已经用完,Oracle为这个段分配新的数据扩展。当一个段中已有空间已经用完,Oracle为这个段分配新的数据扩展。
表空间:表空间是一个或多个数据文件的逻辑表示
。 每一个Oracle数据库都包含名为 SYSTEM和SYSAUX 的表空间,她们在数据库创建时由Oracle自动创建。只要数据库处于开启(open)状态,SYSTEM 表空间就一定是联机(online)的;SYSAUX 表空间(tablespace)是 SYSTEM 表空间的一个辅助性表空间。Oracle中很多组件使用 SYSAUX 表空间作为默认的数据存储位置。
②物理存储结构:
数据文件(dbf):用来存储真实物理数据的
,所以数据文件是存储数据的物理概念,一个Oracle数据库可以拥有一个或多个物理的数据文件。每个表空间都是由一个或多个数据文件构成的。一个数据文件只能由一个数据库的一个表空间使用。
控制文件:数据库控制文件(control file)是一个二进制文件,供数据库启动及正常工作时使用。在数据库运行过程中,控制文件会频繁地被Oracle修改,因此数据库处于开启状态时控制文件必须可写
。如果控制文件因故不能访问,数据库也将无法正常工作。 每个控制文件只能供一个Oracle数据库使用。
数据字典:Oracle数据库的重要组成部分,用来存放Oracle数据库所有的信息,其用途是用来描述数据的,它由一系列拥有数据库元数据信息的数据字典表和用户可以读取的数据字典视图组成,存放在SYSTEM表空间中。Oracle中的数据字典有静态和动态之分,静态数据字典主要由表和视图组成,静态数据字典中的表是不能直接被访问的,而视图是可以直接访问的;
动态数据字典包含了一些潜在的由系统管理员如SYS维护的表和视图,由于这些表和视图在数据库运行时会不断进行更新,故称之为动态数据字典
(或者动态性能视图),这些视图提供了关于内存和磁盘的运行情况,所以用户只能对其进行只读访问而不能修改
。
1.2 Oracle体系结构
Oracle 数据库服务器由一个数据库
和至少一个数据库实例
组成。
数据库是磁盘上存储数据的一组
文件的集合
,这些文件可以独立于数据库实例存在,Oracle的数据库是基于多租户架构的。
数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件 数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件 数据库=重做文件+控制文件+数据文件+临时文件
数据库实例则是管理数据库文件的内存结构
。一个数据库实例有一组后台进程 和 一个称为系统全局区(SGA)的共享内存区组成。
O R A C L E 实例 = 进程 + 进程所使用的内存 ( S G A ) ORACLE实例 = 进程 + 进程所使用的内存(SGA) ORACLE实例=进程+进程所使用的内存(SGA)
此外,数据库是由后台进程组成。
数据库和实例是紧密相连的,所以我们一般说的 Oracle 数据库,通常指的就是实例和数据库。
1.3 多租户架构
多租户架构(multitenant architecture)使得Oracle数据库可以作为一个包含0个、1个或者多个用户创建的可插拔式数据库(Pluggable Database, PDB)
的多租户容器数据库(Container Database, CDB)
。
PDB是一个模式、模式对象和非模式对象的便携式集合,以一个非CDB形式展现给Oracle Net客户端。Oracle Database 12c之前的数据库都是非CDB。
容器(container)可以是一个PDB或者root容器(也称为root)。Root容器是一个模式、模式对象和非模式对象的集合,所有的PDB都属于root。
上图中显示了一个拥有4个容器的CDB:root,种子PDB以及2个PDB。每个PDB拥有自己专有的应用,并且由它自己的PDB管理员进行管理。
多租户体系结构的优势:(1)数据库整合优势(2)可管理性优势
1.4 Oracle进程
一个Oracle数据库实例包括三种类型的进程:用户进程、服务器进程和后台进程。服务器进程和后台进程统称为Oracle进程。一般情况下,Oracle进程(服务器)和用户进程(客户端)运行在不同的计算机上。
1.用户进程/ 客户端进程(User Process/ Client Process)
,可以看做是一些试图连接数据库服务器的软件,例如客户工具。用户进程可以使用Oracle网络服务(Oracle Net Services)与数据库进行通信。
Oracle网络服务是一组通过网络连接协议提供连接的足迹,对于应用开发人员和数据库管理员来说,Oracle网络服务屏蔽了不同硬件平台上设置不同网络的复杂性。
2.服务器进程(Server Process)
用于处理连接到该数据库实例的用户进程的请求。用户进程一直都会通过一个服务器进程与数据库进行通信,当Oracle 网络服务接收到用户进程的连接请求后,就会将用户进程路由到一个服务器进程。
服务器进程负责在用户进程和Oracle实例之间调度请求和响应。当用户进程提交某请求后,服务器进程则负责执行该请求,即将数据从磁盘读入缓存,获取请求结果,然后向用户进程返回结果。即使响应出现了某些错误,服务器进程也会把错误信息发给用户进程,以便用户进程进行合适的处理。
可以根据服务器的体系结构,在用户进程和服务器进程之间维护这种连接,以便不需要重新建立连接就可以管理随后的请求。在Oracle系统中,有两种不同的体系结构,即专用服务器模式和共享服务器模式,这两种连接模式都可以连接用户进程和服务器进程。
在专用服务器(Dedicated Server)连接模式下,每个用户进程都关联一个且仅一个服务器进程。专用服务器为用户进程和服务器进程之间提供了一种一对一的映射关系,比如连接到某数据库实例的20个用户进程就相应地关联着20个服务器进程。每一个用户进程仅与它关联的服务器进程之间进行通信,而每一个服务器进程在其会话存在期间专门为与其关联的用户进程提供专用服务。服务器进程在它的系统全局区(PGA)中存储特定的进程信息和用户全局区(UGA)。
在共享服务器(Shared Server)连接模式下,多个用户进程通过网络连接到一个调度程序(服务器代理),而不是连接到一个服务器进程,该调度程序负责在用户进程与服务器进程之间进行路由。比如,20个用户进程连接到1个调度程序,通过该调度程序,所有用户进程共享同一个或多个服务器进程。
3.Oracle监听器(Listener)
是一个运行于Oracle数据库服务器上的进程,其主要任务是监听来自客户应用的连接请求。
客户负责在初始化连接请求中向监听器发送服务名称。该服务名称是一个标识符,它可以唯一地标识客户试图连接的数据库实例。监听器可以接受请求,判断请求是否合法,然后将连接路由到适当的服务器进程中。当然,Oracle监听器不仅能够监听数据库实例,还可以监听其他服务,例如HTTP服务器和IIOP服务器。
4.后台进程(Background Process)
是供多进程Oracle数据库使用的附加进程,无论用户是否连接数据库,这些进程都会作为数据库的一部分在运行,每一个后台进程都有自己独立的职责,但也需要与其它进程协同工作。如果这些后台进程崩溃了,数据库也就随之崩溃了。后台进程主要执行操作数据库所需要的维护任务以及最大限度地提高数据库的性能。
Oracle数据库在数据库实例启动时自动运行后台进程,一个数据库实例可以有很多后台进程,并不是所有的后台进程都是一直存在并运行于数据库配置中。有些后台进程是强制的,有些是可选的,还有一些是从属的。
强制的:
①进程监视器(Process Monitor Process, PMON):进程监视器用于监视其他后台进程。
②监听注册器(Listener Registration Process, LREG):监听注册器用来注册数据库实例信息以及与Oracle网络监听器关联的调度程序相关的信息
③系统监视器(System Monitor Process, SMON)
④数据库写入器(Database Writer Process, DBW)
⑤日志写入器(Log Writer Process, LGWR)
⑥检查点(Checkpoint Process, CKPT)
⑦可管理性监视器(Manageability Monitor Processes, MMON&MMNL)
⑧恢复器(Recoverer Process, RECO)
可选的:
①归档器(Archive Process, ARCn):只有在数据库处于归档模式(ARCHIVELOG mode),且自动归档处于开启状态时,这些归档进程才存在。
②作业队列(Job Queue Process, CJQ0 & Jnnn)
③闪回数据归档器(Flashback Data Archive Process, FBDA)
④空间管理协调器(Space Management Coordinator Process, SMCO)
从属的:
①I/O从属进程
②并行执行(Parallel Execute, PX)服务器进程