oracle存储_Oracle存储(物理+逻辑)结构
作者:Karson2012 | 来源:互联网 | 2024-10-10 16:18
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Oracle存储(物理+逻辑)结构相关的知识,希望对你有一定的参考价值。
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Oracle存储(物理+逻辑)结构相关的知识,希望对你有一定的参考价值。
Oracle存储结构:物理结构+逻辑结构
Oracle 数据库存储逻辑结构
- 在操作系统中无法找到逻辑存储结构所对应的文件,但通过查询Oracle数据库的数据字典,可以找到逻辑存储结构的描述。
- 逻辑存储结构包括表空间,段,区,数据块。逻辑结构之间的关系是:多个块组成区,多个区组成段,多个段组成表空间,多个表空间组成逻辑数据库。
- 表空间(多个表空间组成逻辑数据库)
- 段(多个段组成表空间)
- 区(多个区组成段)
- 数据块(多个数据块组成区)
- 段中的各个区:一个段中的各个区可以分别在多个数据文件中。
- 组成区的块:组成区的块是连续的。
- 逻辑存储结构是有大小的:由于逻辑的数据块对应磁盘空间中某个固定大小尺寸,所以逻辑存储结构也是有大小的。
一、 表空间(tablespace) 下面的表格显示的是oracle11g自动创建的表空间名称及其说明
名称
|
分类
|
说明
|
EXAMPLE
|
非系统表空间
|
示例表空间,存放示例数据库的方案对象信息及其培训资料
|
SYSAUX
|
系统表空间
|
辅助系统表空间,用于减少system表空间的负荷,提高系统的工作效率。是oracle 10g新增加的表空间
|
SYSTEM
|
系统表空间
|
系统表空间,存放关于表空间名称、控制文件、数据文件等管理信息,存放着方案对象(如表,索引,同义词,序列)的定义信息,存放着所有pl/sql 程序(如过程,函数,包,触发器)的源代码,是oracle数据库中最重要的表空间。它属于SYS和SYSTEM方案,仅被SYS和SYSTEM或其他具有足够权限的用户使用。即使是SYS 和SYSTEM用户也不能删除或重命名该空间。他是用户的默认表空间,即当用户在创建一个对象时,如果没有指定特定的表空间,该对象的数据也会被保存在SYSTEM表空间中。
|
TEMP
|
系统表空间
|
临时表空间,存放临时表和临时数据,用于排序。每个数据库都应该有一个(或创建一个)临时表空间,以便在创建用户时将其分配给用户,否则就会将TEMP表空间作为临时表空间。
|
UNDOTBS1
|
非系统表空间
|
重做表空间,存放数据库的有关重做的相关信息和数据
|
USERS
|
非系统表空间
|
用户表空间,存放永久性的用户对象的数据和私有信息,因此也被称为数据表空间。每个数据库都应该有一个(或创建一个)用户表空间,以便在创建用户时将其分配给用户,否则将会使用SYSTEM表空间来保存数据,而这种做法是不好的。一般讲,系统用户使用SYSTEM表空间,而非系统用户使用USERS表空间
|
二、 段(segment)
- 段用于存储表空间中某一种特定的,具有独立存储结构的数据块对象的数据。
- 段是由一个或多个连续的区组成。
- 当创建表、索引、簇等对象时,oracle就会为这些对象分配存储空间(即段),以便存储它们的数据。
- 段随着存储数据的增大而逐渐变大。段的增大过程是通过增加区的个数而实现的(每次增加一个区)。每个区的大小是块的整数倍。
- 按照段中存储的数据的特征、用途不同,可以分为以下几种:
段类型
|
名称
|
段类型
|
名称
|
Index partition
|
索引分区段
|
Deferred rollback
|
延迟回退段
|
Table partition
|
表分区段
|
Undo
|
撤销段(还原段)
|
Table
|
表段(数据段)
|
Temporary
|
临时段
|
Cluster
|
簇段
|
Cache
|
高速缓存段
|
Index
|
索引段
|
Lob
|
二进制大对象段
|
Rollback
|
回退段
|
Lobindex
|
二进制大对象索引段
|
三、 区(extent)
- 区是由物理上连续存放的块所组成的。
- 区是oracle存储分配的最小单位。
- 一个或多个块组成区,一个或多个区组成段。
- 一个区只能属于一个数据文件。
- 一个段中的各个区可以分别在多个数据文件中。
- 当数据库中创建带有实际存储结构的方案对象时(如表、索引),oracle将为方案对象分配若干个区,以便组成一个对应的段,来为该方案对象提供初始的存储空间。
- 当段中已分配的区都写满,oracle就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。
四、 块(block)
- 块是最小的数据管理单位,即oracle的所有存储的i/o操作都是以块为单位的。操作系统执行i/o的最小单位是操作系统块。
- 块的大小是操作系统块的大小的整数倍。
- 块的大小是一个表空间的属性。
- SYSTEM系统表空间和SYSAUX辅助系统表空间具有相同的标准的块大小,这个大小是在创建数据库时(会同时创建者两个表空间)由DB_BLOCK_SIZE初始化参数制定的,但创建数据库之后这个参数值不能改变。
|
Oracle 数据库存储物理结构
- 物理存储结构是实际的数据存储单元,对应于操作系统文件。
- oracle数据库就是由驻留在服务器的磁盘上的这些操作系统文件组成的。
- 物理存储结构和逻辑存储结构之间在操作上的一个区别:
- 逻辑存储结构有创建、删除的操作。
- 物理存储结构有创建、删除、将其移动到另一个位置(包括改变其名称)的操作。这样可以实现多路复用(控制文件、重做日志文件)和将它们安排到不同磁盘位置、更换名称的功能。
Oracle数据库文件:
- oracle数据库是作为一个单元处理的数据集合。
- 数据库的一般用途是存储和检索相关信息。
- 数据库有一个逻辑结构和一个物理结构。
- 数据库的物理结构是数据库中操作系统文件的集合。
Oracke数据库由三种文件类型组成有:
- 数据文件:数据文件包含数据库中的实际数据。
- 重做日志文件:包含对数据库所做的更改记录。
- 控制文件:包含维护和验证说句哭完整性的必要信息。
- 与oracle有关,但从技术上说不属于数据库的附属文件有:
- 参数文件(SPFILE.ORA)
- 归档日志文件
- 密码文件(PWD.ORA)
1.参数文件
|
如,它包含调整SGA中一些内存结构大小的参数。
|
2.控制文件
|
- 控制文件
- 一个数据库至少需要一个控制文件
- 控制文件(二进制文件)是一个很小的(通常是数据库中最小的)文件,大小一般在1-5M左右。
- 在数据库的运行过程中,每当出现数据库检查点或修改数据库的结构后,oracle就会修改控制文件的内容。
- DBA可以通过OEM工具修改控制文件中的部分内容,但DBA和用户都不应该人为修改控制文件内容,容易破坏控制文件。
- 控制文件存储了以下关键信息,对数据库的成功启动和正常运行至关重要。
- 数据库的名称
- 数据文件、重做日志文件的名称、位置、联机\\脱机状态和大小
- 发生磁盘故障或用户错误时,用于恢复数据库的信息(日志序列号,检查点)
|
3.数据文件
|
- 数据文件
- 数据文件是实际存储插入到数据库中的实际数据的操作系统文件。
- 数据以一种oracle特有的格式被写入到数据文件,其他程序无法读取数据库文件中的数据。
- 数据文件的大小与他们所存储的数据库的大小直接相关。
- 数据库写入数据后会由于自动分配新增区而增大,但删除数据却不会使其减小,而只能使得其中有更多的空闲区。
- 除了SYSTEM表空间之外,任何表空间都可以由联机状态切换为脱机状态。
- 当表空间进入脱机状态时,组成该表空间的数据文件也就进入了脱机状态。
- 可以将表空间某一个数据文件单独的设置为脱机状态,以便进行数据库的备份或恢复,否则是不能备份的。
- 数据存储在用户定义的表中,但是数据文件也包含数据字典、成图像前的修改数据、索引以及其他类型的结构。
- 一个数据库至少有一个数据文件。
- 数据文件的特点是:
- 一个数据文件只能与一个数据库相关。
- 可以为数据文件设置某些特性以便它们在数据库运行空间不足时能够自动扩展。
- 一个或多个数据文件形成数据库存储的逻辑单元,这个单元成为表空间。
|
4.日志文件
|
- 重做日志文件
- 当用户对数据库进行修改时候,实际上是先修改内存中的数据,过一段时间后,再几种将内存中的修改结果成批的写入到上面的数据文件中。oracle采取这样的做法,主要是出于性能上的考虑,因为针对数据操作而言,内存的速度比硬盘的速度快。
- oracle利用“联机重做日志文件”随时保持修改结果,即oracle随时将内存中的修改结果保存到“重做日志文件”中,“随时”表示在将修改结果写入到数据文件之前,可能已经分几次写入到“重做日志文件”。因此发生故障导致数据库崩溃,oracle也可以利用重做日志文件中的信息来恢复丢失的数据。只要某项操作的重做信息没有丢失,就可以利用这些重做信息来重现该操作。
- oracle是以循环方式来使用重做日志文件的,所以每个数据库至少需要2个重做日志文件。
|
口令文件
|
- 口令文件:认证哪些用户有权启动和关闭Oracle实例。
|
归档重做日志文件
|
- 归档重做日志文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。
|
1.参数文件
- 初始化参数文件格式:
- spfile(二进制文件) 可动态修改(数据库正在运行时可以修改参数)
- pfile(文本文件) 不可以动态修改(文件修改后需要数据库重启)
- 参数文件的作用(约束oracle行为的参数、约束oracleshili)
- 设定数据库的限制
- 数据库有多少个文件,数据库一次可以同时打开多少个文件,数据库的内存等
- 设定用户或者进程的限制
- 实例最多可以接收多少个用户的并发,最多可以开多少个后台进程等.
- 设定数据库资源的限制
- 并行会消化CPU,设置ORACLE是否使用并行等.
- 调整系统的性能
- oracle实例启动时就会去读取参数文件,按照参数文件进行资源配置。
oracle在SGA区(系统全局内存区域:放数据块、redo信息、sharepool、sql字典信息等)的大小.
oracle在PGA区总和(一个PGA表示一个会话分配的内存,总和就表示所有会话分配内存的总和)的大小.
在SGA里,给数据块分配的内存的大小.
数据库实例允许打开多少个数据文件的配置.
归档路径.
用户的一个trace文件路径 SQL> show parameter user_dump_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string /u01/app/oracle/diag/rdbms/gaga01/gaga01/trace
- 查看参数文件:http://docs.oracle.com/
Home / Database / Oracle Database Online Documentation 11g Release 2 (11.2) / Database Administration Database Reference From
- 查看参数文件
- show parameter sga
- desc v$parameter;
- select name,value from v$parameter;
alter system set open_cursors=400; 或 alter system set open_cursors=400 scope=bouth;
|
默认是scope=both; 参数的修改已更新spfile并且写入内存,针对可以在线修改的参数文件. SQL> alter system set open_cursors=400 scope=both; System altered.
|
alter system set open_cursors=400 scope=memory;
|
|
alter system set open_cursors=400 scope=spfile;
|
设定scope=spfile;针对不可以在线修改的参数文件,必须重启数据库生效.
|
查看cursor相关参数
|
SQL> show parameter cursor; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cursor_bind_capture_destination string memory+disk cursor_sharing string EXACT cursor_space_for_time boolean FALSE open_cursors integer 300 session_cached_cursors integer 50 SQL>
|
修改open_cursors 参数
|
SQL> alter system set open_cursors=400; System altered. SQL> show parameter cursor; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cursor_bind_capture_destination string memory+disk cursor_sharing string EXACT cursor_space_for_time boolean FALSE open_cursors integer 400 session_cached_cursors integer 50 SQL>
|
|
2.控制文件
- 控制文件至少包含以下的信息:
- – 数据库名字 (DBID)
- – 数据库建立时间
- – 数据文件,在线日志文件,归档文件的信息
- – 表空间信息
- – Rman的备份信息
- 控制文件的作用
- 它包含数据文件,在线日志文件,归档文件的信息,这些信息用于数据库OPEN时的文件验证。
- – 当数据库的架构改变时,比如增减,删除文件时,会更新控制文件。
- 包含了数据库恢复时候需要的一些信息,用于数据库的恢复。
(空间允许重用+不允许重用,即允许覆盖+不允许覆盖)
- 空间允许重用区
- – 这个区域的信息是可以被从用(覆盖的),当空间不足或者规则满足时,允许覆盖以前的信息,比如归档日志和Rman备份集的信息。
- 空间不允许重用区
- – 这个区域的信息是不允许重用(覆盖)的,因为他们是数据库必须的信息,比如表空间,数据文件,在线日志文件等等。
查看控制文件
|
SQL> show parameter control; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string /u01/app/oracle/oradata/gaga01/control01.ctl,/u01/app/oracle/fast_recovery_area/gaga01/control02.ctl control_management_pack_access string DIAGNOSTIC+TUNING
|
备份控制文件
|
1、数据库关闭,将控制文件复制一份。 2、将控制文件的语句备份. SQL> alter database backup controlfile to trace; 这个就是控制文件语句的备份:alert_gaga01.log,可以运行这个语句来创建控制文件. 注: 1、trace文件在这个路径下:/u01/app/oracle/diag/rdbms/gaga01/gaga01/trace/ 2、可以使用明了查找trace路径:show parameter user_dump_dest;
|
备份的控制文件语句 TIP:linux下VIM全选复制的命令: ggVG+y
|
|
重建控制文件
|
|
|
3.数据文件
- 数据文件
- 存放实际的数据
- 隶属于某个表空间
- 查看表空间及对应的数据文件信息
- – select file_name,tablespace_name from dba_data_files;
- – select file_name,tablespace_name from dba_temp_files;
查看数据文件前先设置栏位的宽度
|
SQL> col file_name for a50; SQL> col tablespace_name for a10;
|
查看数据文件 数据表空间 UNDO 表空间
|
SQL> select file_name,tablespace_name from dba_data_files; FILE_NAME TABLESPACE -------------------------------------------------- ---------- /u01/app/oracle/oradata/gaga01/users01.dbf USERS /u01/app/oracle/oradata/gaga01/undotbs01.dbf UNDOTBS1 /u01/app/oracle/oradata/gaga01/sysaux01.dbf SYSAUX /u01/app/oracle/oradata/gaga01/system01.dbf SYSTEM
|
临时表空间
|
SQL> select file_name,tablespace_name from dba_temp_files; FILE_NAME TABLESPACE -------------------------------------------------- ---------- /u01/app/oracle/oradata/gaga01/temp01.dbf TEMP
|
|
4.日志文件
- 重做日志文-Redo Log
- 重做日志的作用
- 核心作用
- 附加作用--数据同步和分析
- – Data guard
- – streams
- – golden gate
- – log miner
- 日志文件损坏
- ACTIVE活动日志损坏
- INACTIVE非活动日志损坏
查看log
|
SQL> desc v$log; Name Null? Type ----------------------------------------- -------- ---------------------------- GROUP# NUMBER THREAD# NUMBER SEQUENCE# NUMBER BYTES NUMBER BLOCKSIZE NUMBER MEMBERS NUMBER ARCHIVED VARCHAR2(3) STATUS VARCHAR2(16) FIRST_CHANGE# NUMBER FIRST_TIME DATE NEXT_CHANGE# NUMBER NEXT_TIME DATE
|
3组log文件
|
SQL> select group#,status from v$log; GROUP# STATUS ---------- ---------------- 1 INACTIVE 2 CURRENT 3 INACTIVE SQL> alter system switch logfile; System altered. SQL> select group#,status from v$log; GROUP# STATUS ---------- ---------------- 1 INACTIVE 2 ACTIVE 3 CURRENT
|
|
可以使用如下命令查看日志文件位置: SQL> select group#,member from v$logfile; GROUP# ---------- MEMBER -------------------------------------------------------------------------------- 3 /u01/app/oracle/oradata/gaga01/redo03.log 2 /u01/app/oracle/oradata/gaga01/redo02.log 1 /u01/app/oracle/oradata/gaga01/redo01.log
|
|
|
推荐阅读
-
本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ...
[详细]
蜡笔小新 2024-12-22 11:11:28
-
本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ...
[详细]
蜡笔小新 2024-12-21 18:17:57
-
-
本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ...
[详细]
蜡笔小新 2024-12-22 13:14:54
-
本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ...
[详细]
蜡笔小新 2024-12-21 17:33:44
-
本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ...
[详细]
蜡笔小新 2024-12-21 14:48:49
-
通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ...
[详细]
蜡笔小新 2024-12-21 14:26:22
-
本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ...
[详细]
蜡笔小新 2024-12-21 13:50:51
-
本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ...
[详细]
蜡笔小新 2024-12-21 11:54:31
-
本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ...
[详细]
蜡笔小新 2024-12-21 10:18:56
-
本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ...
[详细]
蜡笔小新 2024-12-22 12:24:49
-
本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ...
[详细]
蜡笔小新 2024-12-21 17:56:30
-
本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ...
[详细]
蜡笔小新 2024-12-21 15:21:22
-
本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ...
[详细]
蜡笔小新 2024-12-21 14:59:43
-
本文深入探讨了 Oracle 数据库的网络配置,包括全局数据库名、实例名等关键参数的设置与作用,旨在为数据库管理员和开发人员提供全面的参考。 ...
[详细]
蜡笔小新 2024-12-21 09:29:49
-
本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ...
[详细]
蜡笔小新 2024-12-21 09:21:49
-
Karson2012
这个家伙很懒,什么也没留下!