ORACLE的存储结构:
物理存储:
数据文件:ORACLE的数据文件包括全部的数据库数据。
1.每一个数据文件只与一个数据库联系。
2.一个表空间可包含一个或多个数据文件,一个数据文件只能属于一个表空间
3.数据库容量越界时。数据文件可以自动扩展
4.进行数据库操作时,系统从数据文件中读取数据,并存储在Oracle的内存缓冲区中,新建或更新的数据不必立即写入数据文件中而是放进内存,由数据库写入进程DBWn一次性在恰当的时间写入数据文件,可以大大减少访问磁盘速度,提高系统性能
5.数据文件的拓展名是.dbf 数据文件和表空间紧密联系在一起,表空间是一个数据文件或多个数据文件在逻辑上的统一组织。数据文件(物理)=表空间(逻辑)
6.数据文件的单位有两种方式:字节和数据块。数据块是ORACLE数据库中数据读写的基本单位,一个数据块对应多个操作系统块,在数据中读写一个数据块时,在操作系统中对应着多个操作系统块的读写
7.随着数据块的运行,数据文件中的数据也会越来越多,所以拓展数据文件的存储空间是很必要的,方式:1.在当前表空间中增加新的数据文件,2.手工拓展表空间的数据文件,3.激活数据文件的自动拓展功能
控制文件:一个很小的二进制文件,记录数据库的结构与状态,用户无法查看与修改文件的内容(建立创建两个控制文件并放在不同的磁盘)。
重做日志文件:记录对数据库的所有修改信息,包括用户对数据的修改,以及管理员对数据库结构的修改,保证了数据库的安全与数据库的备份与恢复
其他文件:配置文件,临时文件,跟踪文件,警告文件,备份文件,归档重做日志文件
数据库的启动:实例(内存结构和后台进程)-控制文件-装载数据库-打开数据库
逻辑存储:从技术角度上描述oracle在数据库中如何管理与组织数据,其和操作系统无关
1.一个数据库包含若干个表空间
2.不同的数据类型存储在不同的表空间,如系统数据,用户数据,临时数据,回滚数据
3.同一表空间根据类型不同存储在不同的段中,如数据段,索引段,临时段
4.一个段中包含若干个区,区是oracle分配存储空间和回收存储空间的基本单位
5.区是由连续的多个数据块组成,数据块是读写数据库的基本单位
表空间:表空间是数据库的逻辑划分,一个数据库在逻辑上由多个表空间组成,表空间相当于一个容器,将不同类型的数据组织在一起,一个表空间对应一个或多个数据文件
表空间类型:系统表空间,辅助表空间,撤销表空间,临时表空间,用户表空间
段:段用于存储表空间中某一特定的具有独立存储结构的对象的所有数据,并由多个区组成
数据段:存储表中的所有数据
索引段:存储索引中的数据
临时段:存放临时数据:如用户执行排序或汇总产生的临时数据
回滚段:用于存储用户数据被修改之前的值
区:存储空间的最小单位,一个区由若干个连续的数据块组成
数据块:最小的存储单位,也是数据库服务器读写数据的最小逻辑单位,也是执行输入输出操作的最小单位
块头部:包含数据块的基本信息,如块的物理地址,块所在的段的类型
表目录:存放表的信息,如果一些表的数据被存放在该块中,那么表目录存放这个表的相关信息
行目录:存放了此块中行的基本信息,如行的地址等
空闲空间:一块未使用的数据,可用于新行的插入或已存在行的更新
行数据:真正存放表数据和索引数据的地方
头部信息区:块头部,表目录和行目录合称头部信息区,起引导数据的作用
内存结构:
1.软件代码区
2.系统全局区:包括数据库缓冲存储区,日志缓冲区,共享池
系统全局区(SGA):一个实例只有一个SGA,SGA中的数据可以在多个用户进程中共享
2.1.数据库缓冲区高速缓存:用于存储用户最近使用过的数据,用户检索时,数据库的数据读取到该区域,然后进行处理后返回给用户,修改时,修改的数据也是存储在这里,达到一定量时再写入数据库,是SGA最大组成部分
2.2.重做日志缓冲区:用于缓存数据库中的修改日志,可以保证数据库的安全
2.3.共享池:数据字典缓存:又被称为行缓存,主要存储最近使用的对象定义:表,索引,元数据等,所有会话可以直接访问而不是被迫从磁盘读取,从而提高了分析性能,库缓存:将用户编写的代码转换为可执行代码,服务器结果缓存:缓存最近时间查询出的SQL数据
2.4.java池:是可选的存储区域,用于存放java所必须的共享代码和共享数据
2.5.大池:数据库管理员配置的可选内存区域,用于分配大量的内存
3.程序全局区:包括栈区和数据区
程序全局区(PGA):包含了服务器进程的数据和控制信息,这个内存区是非共享的
4.排序区
进程结构:ORACLE是一个多进程系统,包括用户进程(需要执行的SQL语句代码),oracle进程(ORACLE服务器代码):https://www.cnblogs.com/hytty/p/5642102.html
书籍:(oracle database 11g 应用与开发教程)