oracle学习笔记——表空间管理

来源:互联网 发布:齐天大肾余潇洒知乎 编辑:程序博客网 时间:2024/06/08 08:24
Oracle表空间的管理有两种模式,数据字典管理和本地管理。
    数据字典管理:表空间信息保存在数据字典中
    1、当并发性很高的时候,数据字典会引发竞争危机。另外,数据字典管理不能自动合并碎片,当表空间有大量的碎片时,会引起数据字典表的增大,数据库性能下降。
    2、表空间的碎片不能自动消除。ORACLE根据存储子句分配区,这些参数可以在创建表空间后修改。参数设置不恰当,表空间中会有空闲区碎片,需要DBA手工执行碎片合并,降低性能,增加DBA工作。
    本地管理表空间:信息保存在表空间的头部的位图中
    1、自动合并磁盘碎片。
    2、速度快,存储空间的分配和回收只是简单地改变数据文件中的位图,而不像字典管理方式还需要修改数据库,改善了存储管理的性能。
    3、某些在字典管理方式下的存储分配有时会产生递归操作,从而影响了系统的性能,使用本地管理方式不会产生递归操作。
    表空间类型:
    1、系统表空间:主要包括数据字典、所有PL/SQL程序单元以及所有模式对象的定义。
       2、
临时表空间:用于暂存一些复杂SQL查询语句运行时产生的临时数据。在执行SQL语句中,如临时数据量大,SQL工作区放不下,将利用临时表空间暂存部分临时数据。
       3、Undo表空间  
:由ORACLE自动分配管理,每一个实例只能使用一个UNDO表空间
    4、用户表空间:用来保存用户数据
    表空间的管理原则:
       1
、创建多个表空间
       2、 
将数据字典与用户数据分别存放在不同的表空间中,避免同时访问一个表空间产生访问冲突
       3、 
将不同应用的数据存放在不同的表空间,保证各类应用数据的独立性。避免由于一个表空间脱机,导致多个应用程序受到影响。
       4、
将不同表空间放在不同的硬盘上,均衡磁盘I/0操作。
       5、
UNDO数据与用户数据分别存储,防止由于硬盘损坏导致数据永久丢失。
       6、
当一些表空间联机时,可以将另外的表空间设为脱机,提高数据库性能。
       7、
为某种特殊用途专门设置一个表空间,比如频繁的更新操作,或者临时段的存储。专门设置的表空间可以优化表空间的使用效率。
    由于某些操作系统对一个进程可以同时打开的系统文件数据具有限制,从而影响同时联机的表空间数量,尽量让表空间使用较少的数据文件。因此在创建表空间时,应当为表空间分配足够大的数据文件,或将数据文件设置为自动增长方式,而不要让一个表空间使用很多较小的数据文件。
    在表空间创建过程中,ORACLE将在数据字典和控制文件中记录下新建了一个表空间,同时创建指定大小的数据文件。所有表空间的数据文件总和不能超过初始化参数MAXDATAFILES的限制。
表空间创建好之后,可以使用alter tablespace alter database   来修改表空间。
    默认情况下,创建的表空间具有标准块大小,由初始化参数DB_BLOCK_SIZE指定。创建非标准块大小的表空间,须在DB_nk_CACHE_SIZE中设置非标准块的大小,系统才在SGA区中创建具有相同大小的缓存区,否则该表空间将无法使用。
    本地管理表空间中指定区的分配管理方式分为AUTOALLOCATE UNIFORM 两种。默认是AUTOALLOCATE,常用于需要存放大小经常变化的对象和使用不同大小区的表空间,虽然可能造成一些存储空间的浪费,可减轻DBA工作量。UNIFORM方式常用于存放的大部分对象都要求使用相同大小区的表空间。不会产生任何存储碎片,可以避免存储空间的浪费。如没有指定SIZE参数的值,将使用1M作为默认值。
    本地管理的表空间分配的数据文件,其头部的部分空间用于空间管理,用UNIFORM方式创建本地管理表空间,为表空间分配的数据文件大小应该大于UNIFORM之后的SIZE指定的区的大小。
0 0
原创粉丝点击