数据库概念
数据库: 容纳数据的仓库。
数据库系统: 数据库、数据库管理系统、硬件、操作人员的合在一起的总称。
数据库管理系统:用来管理数据及数据库的系统。
数据库系统包含数据库管理系统、数据库及数据库开发工具所开发的软件(数据库应用系统)。
1.数据库实例
每个运行的oracle数据库与一个数据库实例相联系 , 数据库服务器启动一个数据库时, 系统全局区(SYSTEM GLOBAL ALER)的一个内存区被分配, 有一个或多个oracle进程被启动 ,SGA和oracle进程称为数据库实例
Oracle实例的SGA:
SGA(系统全局区)是存储数据库进程共享的数据信息的内存区域共享池(shared pool)用来存最近执行的SQL语句和最近使用的数据字典的数据 数据缓冲区(database buffer cache)用来储存最近从数据文件中读取过的数据 重做日志缓冲器(redo log buffer)用来记录服务或后台进程对数据库的操作 java pool:用来储存java代码 Large pool: 用来存储不与SQL直接相关的大型内存结构
Oracle实例的后台进程:
Database Writer负责将数据的更改由database buffer cache写入到数据文件中 . Log Writer 负责将数据更改记录由redo log buffer写到重做日志文件中 System Monitor 检查数据库的一致性, 必要的情况下在数据库打开时执行恢复 Process Monitor 用户进程失败时,进程监控程序实现进程恢复 The Checkpoint Process 负责更新数据库的控制文件中的状态信息. ARCH进程,该进程负责将已填满的在线日志文件拷贝到指定的存储设备中
2.Oracle的物理结构:
2.1.数据文件(data file):
每个Oracle数据库包含一个或多个数据文件
一个数据文件仅与一个数据库联系
一个表空间由一个或多个数据文件组成
2.2.控制文件(control file):
每一个数据库有一个控制文件,记录数据库的物理结构,包含:
数据库名
数据库数据文件与日志文件的名字与位置 ;
数据库建立日期
控制文件负责整个数据库的调度, 是数据库的心脏 .
2.3.初始化参数文件(parameter file):
参数文件时一个文本文件, 该文件只有在建立数据库或启动实例时才被访问, 在修改文件之前必须关闭实例
包括:
一个实例所启动的数据库名字;
在SGA中存储结构所使用的内存大小;
在填满日志文件后做什么
数据库控制文件的位置和名字
在数据库总专用回滚段的名字
2.4.重做日志文件(redo log file)
每个数据库有两个或多个日志文件组, 每个日志文件用于收集数据库日志,以备恢复数据时使用, oracle默认给每个数据库建立三个日志文件组,每组一个成员
2.5.归档日志文件(archive log file)
当数据库运行在归档日志模式下时, 当oracle覆盖在线重做日志文件时, 归档文件将数据库的所有操作记录下来
2.6.口令文件(password file)
口令文件对sys用户或具有sysdba权限的用户进行验证, OraPwd命令重建口令文件或改变sysdba用户的口令
3.Oracle的逻辑结构:
Oracle数据库在逻辑上是由多个表空间组成的,表空间在物理上包含一个或多个数据文件。而数据文件大小是块大小的整数倍;表空间中存储的对象叫段,比如数据段,索引段和回退段。段由区组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,区的大小可以不相同;数据块是数据库中的最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。
3.1表空间(tablespace)
表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数
据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单
以将除SYSTME以外的其他任何表空间置为离线。
3.2段(segment)
数据库的段可以分为四类:数据段、索引段、回退段和临时段。
3.3区
区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。
3.4数据块
数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。
3.5模式对象
模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。
4.总结
Oracle的用户、表空间和数据文件的关系:
一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。