ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 10G 体系架构第二季

oracle 10G 体系架构第二季

原创 Linux操作系统 作者:Devean 时间:2011-06-21 13:12:33 0 删除 编辑

Oracle数据库物理文件的布局

---------------------------------------

  Oracle数据库文件的布局管理方式有两种:

-----------------------------------------------------

       1.用户管理

-----------------------------------

         1.当管理员创建表空间时,必须明确指定数据文件的位置,才能创建成功。

         2.当管理员删除表空间时,Oracle缺省是不会删除磁盘文件的,要想同时删除磁盘文件

           必须如下操作:

              drop tablespace test including contents and datafiles;

-----------------------------------------------------------------------------------------------------------------

       2.Oracle管理(OMF)

-----------------------------------

         OMFOracle9i中引入的管理文件布局的一个新特性。

----------------------------------------------------------------------------------------------------------------

         要想使用OMF,先要配置以下3组参数:

----------------------------------------------------

         1.db_create_file_dest:

              定义一个缺省的目录,当创建数据文件,临时表空间文件时,如果没有明确定义

              文件路径和名称,新文件就被创建在这个目录下。

              如果定义了这个参数,而没有定义db_create_online_log_dest_n参数,则联机

              日志和控制文件也会创建在这个目录下。

------------------------------------------------------------------------------------------------------------

         2.db_create_online_log_dest_n(n=1~5):

              最多可以定义5个缺省目录,如果创建联机日志,控制文件时,没有明确定义             

              文件路径和名称,则文件就会在这些目录下创建,如果定义了多个目录,则自动

              实现了复用(Multiplexed)的功能。

-------------------------------------------------------------------------------------------------------------

         3.db_recover_file_dest:

              定义一个缺省目录。在使用RMAN工具进行备份时,如果没有定义备份集的格式,

              则备份文件就保存在这个目录下。归档日志的自动管理也是使用这个目录。

              db_create_file_dest参数一样,如果没有定义db_create_online_log_dest_n

              参数,则联机日志和控制文件也会创建在这个目录下。

------------------------------------------------------------------------------------------------------------

       使用了OMF后,创建数据文件或日志文件时就不再需要考虑文件位置、大小等属性,OMF会自

       动保证这些文件被创建到预定义的目录下。同时在删除表空间或日志组时,这些文件也就

       同时删除了。OMF还会按照一定规则自动为文件指定名称,这个规则就是OFA(最佳灵活结构

       Optimal Flexible Architecture)

------------------------------------------------------------------------------------------------------------------------------

       OFA中,每个文件名格式如下:

              /ol_mf_%t_%u_.dbf

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

       其中destination_prefix是文件的保存路径,其格式如下:

              //

--------------------------------------------------------------------

       destination_location:

------------------------------

              是由一些列**_create_file_dest参数定义的路径,db_unique_name使用的是数据库

              参数db_unique_name的值,如果没有定义这个参数值,则使用db_name的值。

--------------------------------------------------------------------------------------------------------------

       datafile:

------------------------------

              根据文件类型不同,这个值不同。如果是数据文件,这个值是datafile,如果是联机日

              志,这个值是onlinelog,如果是归档日志,这个值是archivelog/,也就是按照

              日期细分成更多子目录。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

       %t:

------------------------------

              根据文件类型不同,这个值不同。如果是数据文件,使用表空间的名称,如果是联机

              日志,则是联机日志组号,如果是归档日志则是归档日志的序列号。

--------------------------------------------------------------------------------------------------------------

       %u:

------------------------------

              这是一个8个字符的串,OMF通过这个串来保证文件名的唯一性

--------------------------------------------------------------------------------------------------------------

       归档日志的OMF配置,需配置3下参数:

-----------------------------------------------------

       SQL>alter system set db_recovery_file_dest_size=1g;

       SQL>alter system set db_recovery_file_dest='/tmp';

       SQL>alter system set log_archive_dest_1='location=use_db_recovery_file_dest'

-------------------------------------------------------------------------------------------------

       验证归档日志的OMF配置:

-----------------------------------------

       SQL>alter system switch logfile;

       SQL>select name from v$archived_log;

------------------------------------------------------------------------------------------

       数据文件的OMF配置,只需配置1个参数:

-----------------------------------------

       SQL>alter system set db_create_file_dest='/tmp' scope=both;

------------------------------------------------------------------------------------------

       测试:

-----------------------------------------

       SQL>create tablespace test;

       SQL>create temporary tablespace temp;

       SQL>alter database add logfile group 4;

       SQL>alter database add logfile member 'member_name' to group group#;

------------------------------------------------------------------------------------------

       SQL>select name from v$datafile;

       SQL>select member from v$logfile;

       SQL>select name from v$tempfile;

=================================================================================

             

       The Logical Structure of Oracle

 

=================================================================================

       Oracle的逻辑结构分为:

-----------------------------

       1.数据块 (Block    )

       2.     (Extents  )

       3. (Sgement  )

       4.表空间 (Tablespace)

------------------------------------------------------------------------------------------

       1.数据块(Block)

---------------------

              磁盘最小的存储单位是Sector,每个Sector512字节。Oracle数据库的最基本存储

              单位是数据块,每个数据块是由磁盘上连续的Sector组成的。数据块的大小是由初始

              化参数db_block_size指定的,通常这个值是8KB,也可以定义成2KB4KB16KB32KB

              64KB,甚至其它值。

       ***注意:Oracle和操作系统间的数据交互都是以Oracle数据块为单位进行的。而OS和存储设备

              间的交互是依据磁盘数据块为单位进行的。

--------------------------------------------------------------------------------------------------------------------------

         数据块结构:

----------------------

              数据块是数据的最终归宿,每个数据块依次可分为4个部分:

                     1.数据块头(Block Header)

                     2.行目录  (Row Directory)

                     3.空闲空间(Free Space)

                     4.已用空间(Used Space)

---------------------------------------------------------------------------------

              数据块头:                 

                     这一部分会记录数据块的身份信息,包括数据块地址,数据块类型,(索引块,UNDO块等),事务表(ITL)

            ----------------------------------------------------------------------------------------------------------------------

                     ITL是数据块最为重要的部分,它是Oracle"行级锁""读一致性"的实现基础。            

                     也是Oracle优于其它数据库的"锁机制"体现。ITL相当于一个表格,每个表项

                     都指向在本数据块中参与到某个事务的一条记录,包括内容有UBA(Undo Block Address)

                     事务号(Transaction ID),SCN号。

----------------------------------------------------------------------------------------------------------------------

       2.(Extent)

--------------------------

                     连续的数据块组成了一个区,这个结构仅是用于为便于空间管理,包括空间

                     的分配和释放。

                     ------------------------------------------------------------------------------------------------------

                     当用户创建表,索引等需要占用磁盘空间的对象时,Oracle要为这个对象分配

                     一块磁盘空间作为存储空间,这块空间叫做段,而段的空间不是以数据块为单位

                     分配的,是以区为单位分配的。以后随着数据的不断插入,需要空间扩展时,

                     也是以区为单位来进行的,而不是以数据块为单位进行的。

                     -------------------------------------------------------------------------------------------------------

                     正是因为对象的空间分配与释放以区为单位进行的,从这个意义上讲,区

                     的意义是简化管理的复杂性。

              ***注意:每次Oracle以区为单位进行空间分配时,区是一个连续的空间,只会定义

                     起、始两个数据块,因此会产生空间碎片。

                     采用本地管理的表空间对连续的空间碎片有自动合并处理的能力,但对不连续

                     的空间碎片却无能为力。

-------------------------------------------------------------------------------------------------------

       3.(Sgement)

--------------------------

              段是位于区上一级的逻辑结构,Oracle的每个表或索引都会对应着一个段,如果用的

              是分区表或者分区索引,每个分区都对应着一个段(这里的分区叫做Partition)。每个段

              都会有名字,这个名字就是对象的名字。      

              ----------------------------------------------------------------------------

              段是由Extent组成,但是段并不要求Extent必须连续,这一点和Extent对数据块的要求不同。

--------------------------------------------------------------------------------------------------------------------------

       4.表空间(Tablespace)

--------------------------

              表空间是最高层次的逻辑结构,每个表空间由若干个物理文件组成。Oracle数据库由若干   

              个表空间组成。

              --------------------------------------------------------------------------------------------------------------------------

              从存放的数据类型来分类的话,可以认为只有三种表空间:

              ----------------------------------------------------------------------------

                1.永久表空间

                2.临时表空间

                3.UNDO表空间

              -----------------------------------------------------------------------------

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25963200/viewspace-700399/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-06-20

  • 博文量
    21
  • 访问量
    16161