Oracle体系结构和⽤户管理(附案例)
博⽂结构
Oracle数据库体系结构
Oracle物理结构
Oracle逻辑结构
Oracle内存结构
Oracle进程结构
创建⽤户并授权
⼀.oracle体系结构概述
Orcale体系结构
Oracle体系结构包含⼀系列组件。 如图显⽰了Oracle体系结构中的主要组件,包括实例、⽤户进程、服务器进程、数据⽂件及其他⽂件,如参数⽂件、⼝令⽂件 和归档⽇志⽂件等.
从图中可以看出,实例和数据库是Oracle数据库体系结构的核⼼组成部分,也是最重要的
两个概念, DBA -个很重要的⼯作就是维护实例和数据库本⾝的正常⼯作。
1.实例
Oracle实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据。Oracle 实
例启动时,将分配- -个系统全局区(SGA) 并启动⼀系列Oracle后台进程。Oracle 实例有两种类型:
单进程实例和多进程实例。单进程Oracle实例使⽤⼀个进程执⾏Oracle的全部操作,在单进程环境下
的Oracle实例仅允许- -个⽤户可存取。多进程Oracle实例(⼜称多⽤户Oracle)使⽤多个进程来执⾏
Oracle的不同部分,对于每个连接的⽤户都有⼀个进程。
2.数据库
数据库是数据的集合,物理上是指存储数据库信息的⼀组操作系统⽂件,每个数据库有-个逻如何连接oracle数据库
辑结构和⼀个物理结构。物理结构是指构成数据库的⼀组操作系统⽂件.主要由三种类型⽂件组成:
数据⽂件、控制⽂件和重做⽇志⽂件。数据库的逻辑结构是指数据库数据的逻辑存储结构(如表空
间、段等)和模式对象(如表、 视图等)。
3.可插拔数据库
从Oracle 12c 版本开始. Oracle 引⼊了可插拔数据库的概念,可插拔是为云计算⽽⽣。可插拔的结构由-个容器数据库(Container Database, CDB) 和若⼲个可组装数据库(Pluggable Database,
PDB) 组成,每个PDB对外可充当⼀个独⽴的数据库供应⽤程序使⽤,它可以包含⾃⼰的数据⽂件,但是所有的PDB共享CDB的控制⽂件以及⽇志⽂件。所谓的可插拔.意味着PDB可以像USB⼀样随
时插⼊CDB中,不⽤了也可以随时拔下来
Oracle服务器也是⾮常重要的概念,它主要由实例和数据库⽂件组成,也就是我们常说的数据库管理系统(Database Management System ,DBMS)。Oracle 服务器的组成如图。
Oracle存储结构
Oracle的存储结构分为物理结构和逻辑结构,这两种存储结构既相互独⽴⼜相互联系,
如图:
1.物理结构主要描述Oracle数据库的外部存储结构,即在操作系统中如何组织、管理数据。
2.逻辑结构主要描述Oracle数据库的内部存储结构,即从逻辑概念上描述在Oracle数据库中如何
组织、管理数据。
1.物理结构
物理结构是Oracle 数据库创建后使⽤的操作系统物理⽂件,Oracle 数据库的物理⽂件分为以下
主要⽂件
数据⽂件
⽇志⽂件
控制⽂件
2.逻辑结构
数据库的逻辑结构是从逻辑的⾓度分析数据库的组成的。Oracle 数据库的逻辑结构包括表空间、段.区.块和模式等,
如图所⽰。
(1)表空间
每个Oracle数据库都是由若⼲个表空间构成的,⽤户在数据库中建⽴的所有内容都被存储到表空间中。⼀个表空间可以有多个数据⽂件,但--个数据⽂件只能属于⼀个表空间。与数据⽂件这种物理结构不同,表空间属于数据库的逻辑结构。
1.永久性表空间
2.临时性表空间
3.撤销表空间
分别介绍SYSTEM表空间、SYSAUX表空间、USERS表空间和TEMP表空间。
1. SYSTEM表空间:⽤于存放Oracle系统内部表和数据字典的数据,如表名、列名、⽤户名等。不建议将⽤户创建的表、索引等对象存放
到SYSTEM表空间中。
(2) SYSAUX表空间:作为SYSTEM的辅助表空间,⽤于存放各种数据库⼯具(如企业管理器.StatsPack.
LogMiner 等)⽤到的数据:还⽤于存放各模式的对象数据.如智能代理⽤户DBSNMP等,这些模式在数据库安装完成后就建⽴了相应的对象并都存放在SYSAUX表空间中。
(3) USERS 表空间:通常作为⽤户使⽤的表空间,可以在这个表空间上创建各种对象,如表,索引等。
(4) TEVP表空间: Oracle 系统⽤于存放临时数据的特殊表空间。例如.当操作中需要进⾏排序时,Oracle 系统就将排序的数据临时存放在该表空间内。排序处理完成后即可释放排序数据所占⽤
的空间,因此称之为临时表空间。
Oracle内存结构
内存结构是Oracle数据库体系中最为重要的⼀部分,内存也是影响数据库性能的第⼀要 素Oracle内存存储的主要内容如下:
程序代码(PL/SQL. Java)。
已经连接的会话的相关信息,包括当前所有活动会话和⾮活动会话。
程序运⾏时必需的相关信息,如查询计划。
Oracle进程之间通信和共享的信息,如锁。
按照内存使⽤⽅法的不同, Oracle数据库的内存⼜可以分为SGA. PGA和UGA (User Global Area,
⽤户全局区)。
SGA:所有⽤户都可以访问的实例的共享内存区域。数据块、事务处理⽇志、数据字典信息等
都存储在SGA中。
PGA:⼀类⾮共享的内存,专⽤于特定的服务器进程,并且只能够由这个进程访问。
UGA:为⽤户进程存储会话状态的内存区域。根据⽤户数据库是配置为专⽤服务器模式,还是配置为共享服务器模式,UGA可以作为SGA或者PGA的⼀部分。它为⽤户会话存储数据。
分别介绍SGA与PGA
1.SGA
Oracle实例的SGA⽤来存储数据库信息,并由多个数据库进程共享。当数据库实例启动时, SGA的内存被⾃动分配。SGA 是数据库中占⽤服务器内存最⼤的⼀个区域,也是影响数据库性能的⼀个重要指标。
SGA按其作⽤不同,可分为共享池、数据缓冲区、重做⽇志缓冲区、⼤池和Java池等。
(1)共享池
共享池是对SQL. PL/SQL 程序进⾏语法分析.编译、执⾏时⽤到的内存区域。共享池由库缓存和数据字典缓存组成。
库缓存含有最近执⾏的SQL. PL/SQL 语句的分析码和执⾏计划。
数据字典缓存含有从数据字典中得到的表、索引、列定义、权限信息和其他⼀些数据库对
象的定义。如果Oracle缓存了这些信息,那么⽆疑是缩短了查询的响应时间。
(2)数据缓冲区
数据缓冲区⽤于存储从磁盘数据⽂件中读⼊的数据,供所有⽤户共享。修改数据时,⾸先要从
数据⽂件中取出数据,存储于数据缓冲区中。修改的数据、插⼊的数据都被存储于数据缓冲区中,
修改完成和其他条件满⾜时,数据才被写⼊数据⽂件中。
(3)重做⽇志缓冲区
当⽤户执⾏了如INSERT. UPDATE. DELETE.、CREATE. ALTER或DROP 等操作后,数据发⽣了变化,这些变化了的数据在写⼊数据缓存之前先要写⼊重做⽇志缓冲区,同时变化之前的数据也放⼊
重做⽇志缓存,这样在数据恢复时Oracle 就知道哪些资源需要提交,哪些资源需要撤回。相对于数据缓冲区,⽇志缓冲区对数据库的性能影响较⼩。
在SGA中,⼤池是⼀个可选的缓冲区,管理员可以根据需要对其进⾏配置。在⼤规模输⼊、输出及备份过程中也需要⼤池作为缓存空间,如⼤数据操作、数据库备份与恢复之类的操作。
(5)Java池
在SGA中,Java池也是-个可选的缓冲区.但是在安装Java或者使⽤Java程序时必须设置Java池,⽤于编译Java语⾔编写的指令。
2.PGA
PGA不是实例的⼀部分,它包含单个服务器进程或单个后台进程所需的数据和控制信息。PGA是在⽤户进程连接到数据库并创建-个会话时⾃动分配的,该区内保留了每个与Oracle 数据库连接的⽤户进程所需的内存。在⼀个⽤户会话结束后, PGA将释放。
Oracle进程结构
Oracle中有⼏种不同类型的进程:⽤户进程、服务器进程、后台进程。
⽤户进程:在数据库⽤户请求连接Oracle 服务器时启动,
服务器进程:在⽤户建⽴会话并连接Oracle 实例时启动,
后台进程:在Oracle实例启动时启动。
1.PMON进程
PMON进程在⽤户连接意外中断后执⾏资源清理⼯作,包括下列任务:
➢释放所有当前挂起的锁。
➢回滚⽤户当前事务处理。
➢释放⽤户当前使⽤的资源。
➢监控服务器进程和其他后台进程,出现故障时重启它们。
2.SMON进程
在实例启动时执⾏实例恢复。 实例恢复包括三个步骤:
(1) 前滚以恢复未写⼊数据⽂件但已记⼊联机⽇志⽂件的数据:
(2) 打开数据库,以便⽤户能登录并访问数据;
(3) 回滚未提交的事务处理。
整理数据⽂件的⾃由空间。
释放不再使⽤的临时段。
3.DBWR
管理数据缓冲区,以便能到空闲的缓冲区读⼊数据⽂件的数据。
将所有修改后的缓冲区数据写⼊数据⽂件。
使⽤LRU (Least Recently Used,最近最少使⽤)算法将最近使⽤过的块保留在内存中。通过延迟写来优化磁盘l/0读写。
4.LGWR
LGWR进程负责将重做⽇志缓冲区中的⽇志数据写⼊⽇志⽂件组。数据库在运⾏时,如果对数据进⾏修改,则产⽣⽇志信息,⽇志信息⾸先产⽣于重做⽇志缓冲区中。此缓冲区按照“先进 先出”的原则进⾏操作,当⽇志信息满⾜⼀定条件时,由LGWR进程将⽇志数据写⼊⽇志⽂件。系统通常有多个⽇志⽂件,⽇志写⼊进程以循环的⽅式将数据写⼊⽂件。
5.CKPT
CKPT进程是确保数据缓冲区中所有修改过的数据块都写⼊数据⽂件的机制。当检查点完成后,CKPT进程负责更新数据⽂件头和控制⽂件,保存检查点信息,以保证数据库⽇志⽂件和数据⽂件同步。在数据库恢复时只需要到CKPT保存的最后⼀次检查点, 就可以根据它确定在⽇志⽂件中恢复数据的开始位置,然后重新执⾏其之后的⽇志记录即可。
6.ARCn
ARCn进程即归档⽇志进程,是⼀个可选进程,只有在打开⽇志归档时才有该进程。该进程的主要作⽤是发⽣⽇志切换时将写满的联机⽇志⽂件复制到归档⽬录。
⼆.⽤户管理
在创建⼀个新数据库时,Oracle 将创建⼀些默认数据库⽤户, 如SYS. SYSTEM 等⽤户。SYS和SYST
EM⽤户都是Oracle的管理⽤户。如果在安装过程中选择安装⽰例数据库,则会⾃动创建HR⽤.
户, HR⽤户是Oracle 数据库的⼀个⽰范⽤户,也可以根据需求导⼊其他⽰例数据库。
⽤户分为三种
1.SYS
SYS⽤户是Oracle 中的⼀个超级⽤户,主要⽤来维护系统信息和管理实例。数据库中所有数据字典和视图都存储在SYS模式中。数据字典存储了⽤来管理数据库对象的所有信息,是Oracle数据库中⾮常重要的系统信息。SYS⽤户只能以SYSOPER或SYSDBA⾓⾊登录系统。
2.SYSTEM
SYSTEM⽤户是Oracle中默认的数据库管理员,它拥有DBA权限。该⽤户模式中存储了Oracle
管理⼯具使⽤的内部表和视图。通常通过SYSTEM⽤户管理Oracle 数据库的⽤户、权限和存储等.不建议在SYSTEM模式中创建⽤户表。SYSTEM⽤户不能以SYSOPER或SYSDBA⾓⾊登录系统,只能以默认⽅式(数据库⾝份验证的⽅式)登录。
3.⾃定义⽤户
Oracle 12c ⽀持创建⾃定义⽤户,由于PDB的引⼊,⾃定义⽤户的范畴和之前版本有所不同。在CDB模式下,⽤户分为两种.分别是公⽤⽤户(Common User) 和本地⽤户(Local User) ,公⽤⽤户
可以在CDB及PDB中使⽤,⽽本地⽤户只能存在于PDB中。在CDB环境中,不允许创建本地⽤户。Oracle规定,在CDB中创建公⽤⽤户时,⽤户名必须以c##开头。
数据库权限管理
权限是执⾏某种类型的SQL语句或者存取其他⽤户数据库对象的权⼒。在Oracle中,权限分为系统权限与对象权限两类。
1.系统权限
系统权限是指在数据库中执⾏某种系统级别的操作,或者针对某⼀类的对象执⾏某种操作的权⼒。
常见的系统权限如下。
➢CREATE SESSION:连接到数据库。
➢CREATE TABLE: 创建表.
➢CREATE VIEW:创建视图。
➢CREATE SEQUENCE: 创建序列。
2.对象权限
对象权限是指针对某个特定的模式对象执⾏操作的权⼒。只能针对模式对象来设置和管理对象权限,包括数据库中的表、视图、序列、存储过程等,
Oracle中常⽤的系统预定义⾓⾊如下
CONNECT: 拥有连接数据库的权限,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论