实例+存储=数据库
实例:实例是数据库启动时初始化的一组进程和内存结构
存储:指的是用户存储数据的一些物理文件
oracle实例内存结构由两部分:
SGA(系统全局区)和PGA(用户全局区)组成,SGA是一块共享的内存区域,也是最大的一块内存区域;PGA则是用户会话专有的内存区域,每个会话在服务器端都有一块专有的内存区域就是PGA。每一个进程使用一个PGA;主要包含:
SGA:
必须包含的内存结构:
database buffer cache :数据库缓冲区缓存
redo log buffer :日志缓冲区
shared pool :共享池
可能包含的内存结构:
large pool :大池
java pool :java池
stream pool :流池
数据库缓冲区缓存&数据库写入器
日志缓冲区&日志写入器
Oracle 的几个后台进程
SMON(System Monitor)
:
安装和打开数据库,实例恢复也是由此进程完成的
PMON(Process Monitor)
:
进程监视器,主要监视服务器进程。前面提到过,专有服务器体系模式下,用户进程和服务器进程是一对一的关系,如果某个会话发生异常,PMON会销毁对应的服务器进程,回滚未提交的事务,并回收会话专有的PGA内存区域。
CKPT(Checkpoint Process)
:
CKPT负责发起检查点信号,手动设置检查点的语法:
SQL>alter system checkpoint;
MMON(Manageability Monitor)
数据库的自我监视和自我调整的支持进程。实例在运行中,会收集大量有关实例活动和性能的统计数据,这些数据会收集到SGA中,MMON定期从SGA中捕获这些统计数据,并将其写入到数据字典中,便于后续对这些快照进行分析。(默认情况,MMON每隔一个小时收集一次快照)
ARCn(Archiver)
归档进程,这个进程是可选的,如果数据库配置为归档模式,这个进程就是必须的。所谓归档,就是将重做日志文件永久保存(生产库一般都会配置为归档模式)到归档日志文件中。归档日志文件和重做日志文件作用是一样的,只不过重做日志文件会不短被重写,而归档日志文件则保留了关于数据更改的完整的历史记录。
控制文件:
控制文件作用重大,它包含指向数据库其余部分的指针(包括重做日志文件,数据文件,归档日志文件等的位置),存储重要的序列号和时间戳,存储RMAN备份的详细信息。控制文件一旦受损,那实例会立马终止,一般对数据文件的保护采用多路复用机制,就是冗余多份在不同物理位置(RAID)。
重做日志文件
重做日志按时间顺序存储应用于数据库的一连串的变更向量(包含联机重做日志文件和归档日志文件)。由SMON在数据库启动时自动执行的实例恢复 和 磁盘损坏所要求的提取备份恢复都会应用到重做日志进行相应的数据恢复。
重做日志文件也建议进行多路复用,一个数据库至少要有两组重做日志文件。一组供LGWR进行写入,日志文件是固定大小,业务高峰期会很快写满,写满之后会切换到第二组上,在配置为归档模式的数据库中,这时由归档进程(ARCn)开始将第一组的内容进行归档备份,如此循环地进行写入和归档。需要注意的是,在归档进程还未对当前组的日志归档完毕前,是不允许LGWR对其进行重写的。
数据文件
数据库的逻辑结构是从逻辑的角度分析数据库的组成。Oracle 的逻辑组件包括:
1)表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。
2)每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。
3)表空间的大小等于构成该表空间的所有数据文件大小之和。
创建表空间的语法是:
CREATE TABLESPACE tablespacename
DATAFILE ‘filename’ [SIZE integer [K|M]]
[AUTOEXTEND [OFF|ON]];
默认包含如下表空间(从v$tablespace中查看):
SYSTEM、SYSAUX、TEMP、UNDOTBS1、USERS、EXAMPLE
SYSTEM 是系统表空间,存放系统的最基本的信息,如果SYSTEM表空间坏掉,Oracle将无法启动。
SYSAUX 从10g中引入,作为SYSTEM的辅助表空间,用以减少SYSTEM表空间的负荷 。以前其他表空间中的一些组件,现在放到SYSAUX表空间中了。比如,以前SYSTEM表空间中LogMiner、以前SYSTEM表空间中Logical Standby、Spatial、以前DRSYS表空间中Oracle Text等。
TEMP 是临时表空间,当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle实例中的临时表空间中进行。
UNDOTBS1 是撤销表空间,是UNDO类型的表空间,保存用户进行DML操作中,修改前的数据。
USERS 是数据库默认的永久表空间。
EXAMPLE 是数据库测试用例所涉及的表的所属表空间。
段
段是构成表空间的逻辑存储结构,段由一组区组成。
按照段所存储数据的特征,将段分为若干种类型,主要有数据段、索引段、回退段和临时段。
区
区为段分配空间,它由连续的数据块组成。
当段中的所有空间已完全使用时,系统自动为该段分配一个新区。
区不能跨数据文件存在,只能存在于一个数据文件中。
数据块
数据块是Oracle服务器所能分配、读取或写入的最小存储单元。
Oracle服务器以数据块为单位管理数据文件的存储空间。
模式
模式是对用户所创建的数据库对象的总称。
模式对象包括表、视图、索引、同义词、序列、过程和程序包等。