oracle表空间的管理

    xiaoxiao2023-03-24  4

    转载至http://blog.csdn.net/eason_oracle/article/details/50503445

    表空间的结构

    区管理方式:字典管理和本地管理

     创建字典管理的表空间时,需要制定若干存储参数:

    INITIAL:指定第一个区的大小

    NEXT:指定下一个区的大小

    MINEXTENTS:为数据库对象分配最少区的个数。

    MAXEXTENTS:最多为数据库对象分配的区个数

    PCTINCREASE:从第三个区开始,每一个区在前一个区的基础上增长的百分数。

    在字典管理表空间时,区的分配和回收都是基于数据字典进行的。

    在本地管理表空间,区的大小都是相同的。

    于字典管理方式相比,本地管理表空间的优点:

    (1)区的分配和回收,不再基于数据字典,从而避免了对数据字典的递归访问,也不会产生重做日志和回滚数据。

    (2)所有的区的大小都是相同的,这就减少了存储空间的存储碎片。

    (3)不需要合并表空间的存储碎片,数据库服务器会自动件事存储表空间的使用情况,并合并空闲存储空间。

    段管理方式

    一种是手工管理(MANUAL),一种是自动管理(AUTO);

    自动管理是oracle 11g数据库默认采用的段管理方式。

    自动管理方式实现过程:在每个段的头部有一个位图,在位图中记录当前段中每个数据块的状态,用二进制0和1  表示数据块的状态,每个数据块在位图中只占一位。

    使用位图的好处,首先是节省空间,其次,当前用户想表中写入数据时,服务器进程只要扫描位图就可以查找空闲的数据块,而不需要对位图加锁。

    数据文件

    创建表空间时,至少指定一个数据文件。

    当表空间的存储空间被消耗完时,扩展表空间,分配新的存储空间:

    (1)向表空间中增加新的数据文件

    (2)手工扩展现有的数据文件

    (3)激活数据文件的自动扩展功能

    本地管理表空间的管理

    在创建表空间时,需要指定表空间的区管理方式、段管理方式以及表空间所包含的数据文件。

    例如:

        CREATE TABLESPACE TS1

       DATAFILE 'D:/TS1.DBF' SIZE 100M

       EXTENT MANAGEMENT LOCAL AOTUALLOCATE

       SEGMENT MANAGEMENT AUTO;

    区管理方式语可以省略,因为表空间的默认区管理方式就是本地管理。但是如果在CREATE语句中指定AOTUALLOCATE(自动分配)或者UNIFORM SIZE(指定统一大小),那么EXTENT MANAGEMENT LOCAL不能省略。

    表空间信息的查询

      与表空间相关联的数据字典视图是DBA_TABLESPACES和 DBA_DATA_FILES

    表空间的删除

    DROP TABLESPACE TS INCLUDING CONTENTS AND DATAFILES;

    临时表空间

    1、创建临时表空间需要制定关键字 temporary ,

    例如:

          create temporary tablespace tts tempfile 'd:/tts.dbf' size 100M extent management local uniform size 128K;

    注意:

    (1)temporary 指定表空间为临时性的。

    (2)tempfile 指定表空间的数据文件,而不是datafile 子句。

    (3)只能通过uniform 子句为临时表空间制定区的大小,而不能使用 AUTOALLOCATE子句。

    (4)oracle 建议创建临时表空间的大小设置为排序去的整数倍,以减少存储空间的碎片,是数据库获得最佳性能。排序区的大小通过初始化参数SORT_AREA_SIZE确定。

    2、临时表空间的作用

    (1)用户执行排序、索引等操作时,将产生大量中间结果,临时数据首先存储在PGA的排序区,当排序区不足容乃,就用到临时表空间。

    (2)临时表空间的作用是仅局限于存储临时数据,与其他普通表空间的不同在于,临时空间中的数据所做的任何修改都不会产生重做日志。

    (3)临时表空间中的数据文件的信息是从数据字典视图DBA_TEMP_FILE中获得的。

    3、更改临时表空间

        使用语句---ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TTS;

    临时表空间组

    为每个用户指定不同的临时表空间,每个用户都使用自己的临时表空间,可以减少磁盘I/O 分布在不同的磁盘上,减少i/O冲突。

                                    ALTER USER SCOTT TEMPORARY TABLESPACE TS1;

    临时表空间组是一组临时表空间的逻辑集合,当为用户指定临时表空间组时,可以平均的使用其中的所有临时表空间。临时表空间组不需要创建,只要在创建或修改表空间时为临时表空间组指定一个名称即可。

                                   ALTER TABLESPACE TTS TABLESPACE GROUP g1;

    从临时表控组中删除临时表空间的操作:只要为临时表空间制定一个空的临时表空间组即可。

                                   ALTER TABLESPACE TTS TABLESPACE ACE GROUP ' ';

    临时表空间组可以从数据字典视图DBA_TABLESPACE_GROUPS中获得。

    UNDO 表空间的管理

    回滚事务是将修改的数据还原为原状,也就是将回滚数据重新写回原来的地方。

    回滚数据也成为UNDO数据,是事务执行前的数据,这些数据存储在回滚段中。当用户回滚事务时,数据库服务器将回滚数据从回滚段重新写入数据段,数据恢复为原状。

    两种管理回滚数据的方法,一种是自动方式,这种方式利用专门的UNDO表空间管理UNDO数据;第二种方式为手工方式,利用回滚段滚利UNDO数据。在一个数据库中我们选择其中一种。

    手工方式即回滚段方式,是以前ORACLE版本使用的传统方式,这种方式相当复杂,需要DBA做大量的工作,

    自动方式利用专门的UNDO表空间来管理回滚数据,整个过程不需要人工干预。

    如果将UNDO表空间设置为可自动扩展,那么当用户的事务太多时,数据库服务器可以根据需要对UNDO表空间进行扩展,oracle 建议采用自动管理方式。

    UNDO表空间的创建

    两种创建UNDO表空间的方式,一是在创建数据库的同时创建UNDO表空间,另一种是在数据库运行过程中,通过CREATE UNDO TABLESPACE命令来创建。

    UNDO 表空间的切换

    初始化参数UNDO_MANAGEMENT(AUTO/MANUAL)两种方式管理回滚数据。

    UNDO_RETENTION 指定已经无效的UNDO数据在UNDO表空间中可以保留的时间,默认900秒。

    UNDO_TABLESPACE 指定一个可用的UNDO表空间。

            ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO SCOPE=SPFILE;

            ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1;

    表空间的扩展

    在创建表空间或者扩展表空间应该根据以下原则

    尽量使用少量的大文件,而不要使用大量的小文件 同一个表空间的不同数据文件应该存放在不同的磁盘上 应该讲数据文件和重做日志文件分别放在不同的磁盘上(磁盘的读写操作分散在各个磁盘上,减少磁盘的I/O)

    数据文件的数目收到两个因素的制约:一个是创建数据库时指定的MAXDATAFILES永久参数,二是初始化参数DB_FILES(可修改。参数文件中指定新值。重启数据库服务器)

    扩展表空间的方法有两种,一种是向表空间添加新的数据文件,另一种是扩展现有的数据文件。扩展数据文件又可分为,允许数据文件自动扩展和手工扩展数据文件。

    添加新的数据文件:

    向表空间添加数据文件时,通过ADD子句指定数据文件的路径和大小。

               ALTER TABLESPACE TS1 ADD DATAFILE 'D:/DATA.DBF' SIZE 100M REUSE;

    如果指定的位置已经存在一个同名的数据文件,可通过REUSE关键字将其覆盖.如果向表空间中添加多个数据文件,由DATAFILE关键字引导多个文件,每个文件分别指定路径和大小。

              ALTER TABLESPACE TS1

              ADD DATAFILE ' D:/DATA1.DBF' SIZE 100M REUSE,

                                          'D:/DATA2.DBF' SIZE 100M REUSE;

    在本地管理的临时表空间,添加数据文件时需要通过 ADD TEMPFILE 子句指定临时文件。

    扩展数据文件

    如果通过关键字AUTOEXTEND指定数据文件的自动扩展属性为ON,则数据文件可以自动扩展。

    如果数据文件以前没有自动扩展功能,可以为其指定自动扩展的功能。如

           ALTER DATABASE DATAFILE 'D:/DATA1.DBF' AUTOEXTEND ON NEXT 128K MAXSIZE 100M;

    NEXT用于指定每次对数据文件扩展的空间大小,MAXSIZE用于指定数据问价最大允许的大小。可以修改NEXT和MAXSIZE的值。

    取消数据文件自动扩展功能:

         ALTER DATABASE DATAFILE 'D:/DATA1.DBF' AUTOEXTEND OFF;

    在创建表空间或者添加数据文件时,可以指定数据文件的自动扩展功能

    数据文件的自动扩展信息可以从数据字典视图DBA_DATA_FILES中获得。

    文件的目前大小和最大大小均以字节为单位,每次扩展的大小则是数据块为单位。

    手工扩展数据文件时,需要通过RESIZE 为数据文件制定新的大小

         ALTER DATABASE DATAFILE 'D:/DATA1.DBF' RESIZE 102M;

    表空间的维护

    表空间的联机与脱机

    创建表空间后默认是联机状态,可读可写,脱机,用户无法访问表空间的数据。

    除了SYSTEM 表空间、默认的临时表空间和正在使用的UNDO表空间以外,其他表空间都可以置于脱机状态。

               ALTER TABLESPACE TS  ONLINE/OFFLINE  (NORMAL/TEMPORARY/IMMEDIATE/ FOR RECOVER);

    数据文件的联机与脱机

    改变数据文件状态的命令是ALTER DATABASE

              ALTER DATABASE DATAFILE 'D:/DATA1.DBF' OFFLINE;

    如果数据文件损坏,数据库服务器自动将其脱机。如果数据库处于非归档模式下,要使损坏的数据文件脱机时,可以使用DROP,这个数据文件就再也不能联机了。

              ALTER DATABASE DATAFILE   'D:/DATA2.DBF' OFFLINE FOR DROP;

    是数据文件重新联机,使用ALTER TABLESPACE ONLINE;

          ALTER DATBLESPACE TBS DATAFILE OFFLINE;

    表空间的读写权限

      修改表空间的读写权限

          ALTER TABLESPACE TBS READ ONLY;

         ALTER TABLESPACE TBS READ WRITE;

    只读表空间,只能SELECT,也可以DROP 删除数据库对象。

    数据文件的移动和重命名

    移动数据文件的目的是为了更换磁盘,或者平衡磁盘的I/O操作。oracle建议将数据文件分布在不同的磁盘上,并与重做日志文件分别存放。

    数据文件的移动和重命名分四步:

    将数据文件处于脱机状态 (ALTER TABLESPACE   TBS   OFFLINE/  CONN / AS SYSDBA -->SHUTDOWN --->STARTUP MOUNT) 在操作系统中将磁盘上的数据文件移动到另一个位置(ALTER TABLESPACE TS RENAME DATAFILE 'D:/DATA1.DBF' TO 'D:/DATA2.DBF';/ALTER DATABASE RENAME FILE ' ' TO '';) 数据库中对文件进行重命名 将数据文件处于联机状态(ALTER TABLESPACE TBS ONLINE/ALTER DATABASE OPEN;)

    对系统表空间,或者其中包含活动回滚段的表空间,因为无法使他们处于脱机状态,所以现将数据库切换到MOUNT状态,然后对数据进行移动或重命名,在这种情况下需要ALTER DATABASE命令,而普通表空间需要执行ALTER TABLESPACE命令。

    表空间的重命名很简单:

          ALTER TABLESPACE TS2 RENAME TO TS1;

    转载请注明原文地址: https://ju.6miu.com/read-1202624.html
    最新回复(0)