千家信息网

【赵强老师】Oracle数据库的存储结构

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,Oracle的存储结构分为:物理存储结构和逻辑存储结构。一、物理存储结构:指硬盘上存在的文件数据文件(data file)一个数据库可以由多个数据文件组成的,数据文件是真正存放数据库数据的。一个数据文
千家信息网最后更新 2024年11月23日【赵强老师】Oracle数据库的存储结构

Oracle的存储结构分为:物理存储结构和逻辑存储结构。

一、物理存储结构:指硬盘上存在的文件

  • 数据文件(data file)

一个数据库可以由多个数据文件组成的,数据文件是真正存放数据库数据的。一个数据文件就是一个操作系统文件。数据库的对象(表和索引)物理上是被存放在数据文件中的。当我们要查询一个表的数据的时候,如果该表的数据没有在内存中,那么oracle就要读取该表所在的数据文件,然后把数据存放到内存中。通过下面的语句可以查看当前存在的数据文件和对应的表空间:

1select file_name,tablespace_name from dba_data_files;

  • 联机日志文件(online redo log file)

一个数据库可以有多个联机日志文件,联机日志文件包含了重做记录(undo records).联机日志文件记录了数据库的改变,例如当一次意外导致对数据的改变没有及时的写到数据文件中,那么oracle就会根据联机日志文件中 的信息获得这些改变,然后把这些改变写到数据文件中.这也是联机日志文件存在的意义.联机日志文件中重做记录的唯一功能就是用来做实例的恢复.比如,一次系统的意外掉电,导致内存中的数据没有被写到数据文件中.那么oralce就会根据联机日志文件中的重做记录功能包数据库恢复到失败前的状态。可以通过下面的语句查看当前存在的日志文件和对应的日志组信息:

1select member,group# from v$logfile;

注意:Oracle使用日志组来管理日志文件。默认有三个日志组,每组中至少两个成员。如上图所示。

另外,我们已经知道了什么是数据文件和联机日志文件,通过下面的图解来说明他们之间的关系。

  • 控制文件(control file)

一个数据库至少要有一个控制文件,控制文件中存放的数据库的"物理结构信息",正是因为他存放的是数据库的物理结构信息,所以他就显得尤其的重要.这些物理结构信息就包括:

  1. 数据库的名字。

  2. 数据文件和联机日志文件的名字及位置。

  3. 创建数据库时的时间戳。

  4. RMAN备份的元信息

为了更好的保护数据库,我们可以镜像控制文件.每个控制文件中的内容就是相同的.镜像了控制文件,即使其中的一个控制文件出现了问题,也不会影响到数据库的损坏,数据的丢失. 在启动数据库的时候,oracle就会根据控制文件中的数据文件和联机日志文件的信息来打开数据库.

可以通过下面的语句查看当前存在的控制文件。

1select name from v$controlfile;

注意:这里默认有两个控制文件,这种方式叫做"多路复用"。

  • 归档日志文件

是联机日志文件的副本,他记录了对数据库改变的历史。注意:Oracle默认是非归档模式,可以通过下面的语句查看

1archive log list;

通过下面的语句,将数据库切换到归档模式。

1234shutdown immediatestartup mountalter database archivelog;alter database open;
  • 参数文件

通常情况下指的就是初始化参数文件(initialization parameter file).参数文件包括了初始化参数文件和服务器端参数文件(server parameter file).在数据库启动的时候就会读取参数文件,然后根据参数文件中的参数来分配SGA并启动一系列的后台进程.参数文件中存放的是数据库和实例的参数.

Oracle的参数文件有两种类型:

  1. Spfile:二进制形式,9i之后

  2. Pfile:文本形式,9i之前

可以通过下面的语句查看当前的参数文件信息:

1show parameter spfile

可以使用下面的方式将spfile转换为pfile:

1create pfile='/home/oracle/pfile.ora' from spfile;

查看pfile中的参数值:

可以通过下面的语句修改参数的值。

12alter system set open_cursors=400 scope=both;注意:scope的取值有三个:memory、spfile、both
  • 告警日志文件

记录了数据库的重大活动和所发生的错误.警报文件按照时间的先后来记录所发生的重大活动和错误.警报文件的名字的格式是 alert_SID.log。警报文件的位置可以通过查询v$diag_info得到,如下:

1select * from v$diag_info;

注意:在12c以前的版本,告警日志的位置可以通过查询参数background_dump_dest得到。

告警日志文件中记录的信息,包括:

  1. 数据库启动和停止的信息

  2. 数据库的结构变化

  3. 强制审计的信息

  4. 死锁的信息

  • 跟踪文件

就是跟踪日志文件,每个服务器进程和后台进程都写跟踪文件.例如当后台进程发生了错误的时候,oracle就会把错误的信息写到跟踪文件中.DBA就可以根据跟踪文件的信息来查看进程中所发生的错误。

跟踪文件的位置跟告警日志文件,在同一个目录下:

1select * from v$diag_info;

  • 备份文件

就是在数据库发生介质损坏的时候用来还原(restore)数据库的,恢复(recover)数据的。

二、逻辑存储结构

从逻辑上来看,

  1. 数据库是由一个或者多个表空间等组成。

  2. 一个表空间(tablespace)由一组段组成

  3. 一个段(segment)由一组区组成

  4. 一个区(extent)由一批数据库块组成

  5. 一个数据库块(block)对应一个或多个物理块

  • Database(数据库)

数据库是按照数据结构来组织、存储和管理数据的仓库。

  • Tablespaces(表空间)

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。表空间(tablespace)是最大的逻辑单位,对应一个或多个数据文件,通常由相关的段组成。表空间的大小是它所对应的数据文件大小的总和。所有的数据库对象都存放在指定的表空间中。但主要存放的对象是表, 所以称作表空间。

必须存在的表空间

  • system

  • sysaux

  • temp

  • undo

可选的表空间:一般指用户创建的用户表空间,比如:users

可以通过下面的语句查看当前数据库的表空间信息:

1select tablespace_name from dba_tablespaces;

  • Segments (段)

一个段是分配给一个逻辑结构(一个表、一个索引或其他对象)的一组区,是数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

  • extents (区)

是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。第一个段是由一个或多个盘区组成。当一段中间所有空间已完全使用,oracle为该段分配一个新的范围。

  • Data Block (数据块)

是oralce 管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位,最小的逻辑部件,其大小可不同于操作系统的标准I/O块大小。数据块的大小由DB_BLOCK_SIZE参数确定。块尺寸是处理Oracle更新、选择、或者插入数据事务的最小单位。当用户从表中选择数据时,选择操作从数据库文件中以块为单位读取或者提取数据。例如Oracle块的大小为8kb,即使只想检索4kb的字符的名字,也必须读取含有这4个字符的整个8kb的块。

通过下面的语句查看当前数据块设置的大小:

1show parameter db_block_size
数据 文件 数据库 日志 空间 参数 信息 结构 面的 控制 语句 存储 可以通过 逻辑 大小 物理 单位 多个 就是 跟踪 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浙江工业软件开发现价 绝地求生服务器模式 达梦数据库 添加字段 计算机三级网络技术成绩 华为网络技术工程师有房补么 软件开发时间合同如何写 杭州开创网络技术有公司 手机阅读器软件开发 东西湖网络安全宣传周 热点连接网络安全密钥 一梦江湖踏月留香服务器名 区块链网络安全龙头股 网络安全发言稿400 linux配置转发服务器 数据库技术第四章实验报告 气象信息与网络技术考试 oracle数据库指令总结 银行网络安全责任追究 深圳市伯才网络技术有限公司 互联网金融科技业绩增长股 网络安全事件案例及避免方案 青云汇软件开发有限公司 我的软件开发日常工作随笔 易水寒捏脸数据库怎么导入 网络安全博览会金融展区 河南红苹果网络技术服务怎么样 资阳市国家网络安全宣传 逃离塔科夫捷克服务器是哪个 网络安全上的项目 大型三维建模软件开发工具包
0