热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle存储_Oracle存储(物理+逻辑)结构

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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.参数文件






      • 参数文件:定义Oracle实例的特性。



如,它包含调整SGA中一些内存结构大小的参数。


2.控制文件





    • 控制文件


      • 一个数据库至少需要一个控制文件

      • 控制文件(二进制文件)是一个很小的(通常是数据库中最小的)文件,大小一般在1-5M左右。

      • 在数据库的运行过程中,每当出现数据库检查点或修改数据库的结构后,oracle就会修改控制文件的内容。

      • DBA可以通过OEM工具修改控制文件中的部分内容,但DBA和用户都不应该人为修改控制文件内容,容易破坏控制文件。

      • 控制文件存储了以下关键信息,对数据库的成功启动和正常运行至关重要。


        • 数据库的名称

        • 数据文件、重做日志文件的名称、位置、联机\\脱机状态和大小

        • 发生磁盘故障或用户错误时,用于恢复数据库的信息(日志序列号,检查点)





3.数据文件





    •  数据文件


      • 数据文件是实际存储插入到数据库中的实际数据的操作系统文件。

      • 数据以一种oracle特有的格式被写入到数据文件,其他程序无法读取数据库文件中的数据。

      • 数据文件的大小与他们所存储的数据库的大小直接相关。

      • 数据库写入数据后会由于自动分配新增区而增大,但删除数据却不会使其减小,而只能使得其中有更多的空闲区。

      • 除了SYSTEM表空间之外,任何表空间都可以由联机状态切换为脱机状态。

      • 当表空间进入脱机状态时,组成该表空间的数据文件也就进入了脱机状态。

      • 可以将表空间某一个数据文件单独的设置为脱机状态,以便进行数据库的备份或恢复,否则是不能备份的。 

      • 数据存储在用户定义的中,但是数据文件也包含数据字典、成图像前的修改数据、索引以及其他类型的结构

      • 一个数据库至少有一个数据文件。

      • 数据文件的特点是:


        • 一个数据文件只能与一个数据库相关。

        • 可以为数据文件设置某些特性以便它们在数据库运行空间不足时能够自动扩展。

        • 一个或多个数据文件形成数据库存储逻辑单元,这个单元成为表空间





4.日志文件





    • 重做日志文件


      • 当用户对数据库进行修改时候,实际上是先修改内存中的数据,过一段时间后,再几种将内存中的修改结果成批的写入到上面的数据文件中。oracle采取这样的做法,主要是出于性能上的考虑,因为针对数据操作而言,内存的速度比硬盘的速度快。

      • oracle利用“联机重做日志文件”随时保持修改结果,即oracle随时将内存中的修改结果保存到“重做日志文件”中,“随时”表示在将修改结果写入到数据文件之前,可能已经分几次写入到“重做日志文件”。因此发生故障导致数据库崩溃,oracle也可以利用重做日志文件中的信息来恢复丢失的数据。只要某项操作的重做信息没有丢失,就可以利用这些重做信息来重现该操作。

      • oracle是以循环方式来使用重做日志文件的,所以每个数据库至少需要2个重做日志文件。




口令文件





    • 口令文件:认证哪些用户有权启动和关闭Oracle实例。



归档重做日志文件





    • 归档重做日志文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。




 

 









1.参数文件





      • 初始化参数文件格式:


        • spfile(二进制文件) 可动态修改(数据库正在运行时可以修改参数)


          • 10g开始都是spfile的文件


        • pfile(文本文件) 不可以动态修改(文件修改后需要数据库重启)


          • 8i9i用的比较多


        • 参数文件的作用(约束oracle行为的参数、约束oracleshili


          • 设定数据库的限制


            • 数据库有多少个文件,数据库一次可以同时打开多少个文件,数据库的内存等


          • 设定用户或者进程的限制


            • 实例最多可以接收多少个用户的并发,最多可以开多少个后台进程等.


          • 设定数据库资源的限制


            • 并行会消化CPU,设置ORACLE是否使用并行等.


          • 调整系统的性能


            • 优化器,优化器的模式,IO.






 





      • oracle实例启动时就会去读取参数文件,按照参数文件进行资源配置。



 





      • 几个常用的参数文件


        • SGA_TARGET




oracle在SGA区(系统全局内存区域:放数据块、redo信息、sharepool、sql字典信息等)的大小.





      • PGA_AGGREGATE_TARGET



oracle在PGA区总和(一个PGA表示一个会话分配的内存,总和就表示所有会话分配内存的总和)的大小.





      • DB_CACHE_SIZE



SGA里,给数据块分配的内存的大小.





      • DB_FILES



数据库实例允许打开多少个数据文件的配置.





      • LOG_ARCHIVE_DEST_n



归档路径.





      • USER_DUMP_DEST



用户的一个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,可以运行这个语句来创建控制文件.

注:

1trace文件在这个路径下:/u01/app/oracle/diag/rdbms/gaga01/gaga01/trace/

2、可以使用明了查找trace路径:show parameter user_dump_dest;


备份的控制文件语句

TIPlinuxVIM全选复制的命令:

ggVG+y


 

 


重建控制文件


 





 

 

 









3.数据文件



  • 数据文件


    • 存放实际的数据

    • 隶属于某个表空间


      • 数据表空间

      • – UNDO 表空间

      • 临时表空间


    • 查看表空间及对应的数据文件信息


      • – 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



 



  • 数据文件的损坏


    • 需用通过备份恢复


      • 还原备份文件

      • 用归档+在线redo 恢复


    • 使用Redo 信息恢复


      • 创建新数据文件

      • 用归档+在线redo 恢复





 









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


3log文件



  • INACTIVE

  • ACTIVE

  • CURRENT


 

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工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • ThinkPHP 数据库配置详解
    本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ... [详细]
  • 本文深入探讨了 Oracle 数据库的网络配置,包括全局数据库名、实例名等关键参数的设置与作用,旨在为数据库管理员和开发人员提供全面的参考。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
author-avatar
Karson2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有