• Oracle的表空间和数据文件


    一、 概念 

     表空间:是一个或多个数据文件的逻辑集合

        表空间逻辑存储对象: 永久段-->如表与索引

                                临时段-->如临时表数据与排序段

                              回滚段-->用于事物回滚或闪回内存的撤销数据

        表空间分类:系统表空间(system、sysaux),非系统表空间

       

        一个表空间至少包含一个数据文件,一个数据文件只能属于一个表空间。

       

        不可或缺的几个表空间:

        SYSTEM --->字典表空间,不能被损坏

        UNDO    --->dml,dql把数据快照到此,数据提交即消失(用于恢复)

        SYSAUX  --->10g 高并发系统繁忙时,会造成system争用,将工具放到SYSAUX,减轻system的压力,SYSAUX不影响系统(影响性能)

        TEMP    --->临时数据相关的内容

        USERS   --->10g  用户数据从system拨离出来

    二、Oracle的存储结构

        1.Schema: 用户--->创建相关对象、表、视图、序列、函数、存储过程、包等

        2.逻辑结构:database数据库--->tablespace表空间---> segment段--->extent区间----> block块

                逻辑结构是Oracle内部管理数据库中对象的方式

        3.物理结构:OS  block --->datafile 物理结构通常是一系列数据文件

     

    三、表空间的管理

    创建表空间

    --简要语法:

        CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name

        DATAFILE datafile spec | TEMPFILE tempfile spec

        [MINIMUM EXTENT minimum extent size]

        [BLOCKSIZE blocksize]

        [[COMPRESS|NOCOMPRESS] DEFAULT STORAGE (default storage clause)]

        [LOGGING|NOLOGGING]

        [FORCE LOGGING]

        [ONLINE|OFFLINE]

        [EXTENT MANAGEMENT DICTIONARY |

        LOCAL [AUTOALLOCATE|UNIFORM SIZE size]]

        [SEGMENT SPACE MANAGEMENT MANUAL|AUTO]

        [FLASHBACK ON|OFF]

     

    --获得创建表空间的语句

    SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual;

    --查看缺省是BIGFILE 还是SMALLFILE,当缺省为SMALLFILE,创建表空间不指定表空间类型则为SMALLFILE

    SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';
     
        PROPERTY_NAME                  PROPERTY_VALUE
        ------------------------------ --------------------------------------------------
        DEFAULT_TBS_TYPE               SMALLFILE

      注意:

        大表文件(bigfile)最大可以存放个T的容量。头文件的大小达到了G-->block,普通的头文件大小为M---->block。

        create bigfile tablespace <> datafile <>........;

           好处:减少了数据文件的个数,管理方便,大的对象的存放得到了优化。减少了control文件的信息,控制文件定义了datafile的个数。

           bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。 */

     

    --演示创建表空间

    SQL> create tablespace dev
      2  datafile '/u01/app/oracle/oradata/orcl/dev01.dbf' size 50M,
      3  '/u01/app/oracle/oradata/orcl/dev02.dbf' size 50M;
    
    表空间已创建。

    --创建自动扩容的表空间

    SQL> create tablespace uat
      2  datafile '/u01/app/oracle/oradata/orcl/uat.dbf' size 32m 
      3   autoextend on maxsize unlimited;

    可以通过查看自动扩容是否打开

    SQL> select file_name,autoextensible  from dba_data_files where tablespace_name='UAT';

    表空间改名

    SQL> alter tablespace dev rename to dev1;

    将表空间设置为只读

    注意只读表空间中的对象是可以被删除的,能执行DML语句,可以使用的为DDL

    SQL> alter tablespace dev1 read only;

    重新设置回可读可写

    SQL> alter tablespace dev1 read write;

    移动数据文件

    1.查出数据文件的位置和所属表空间

    select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)" from dba_data_files;

    2.将要移动的表空间离线

    SQL> alter tablespace uat offline;

    3.在操作系统下将文件移动到另外一个位置

    SQL> host cp /u01/app/oracle/oradata/orcl/uat.dbf /u02/uat.dbf

    4. 修改控制文件,将数据文件的指针重新指向到另一个位置(执行rename)

    SQL> alter tablespace uat rename datafile '/u01/app/oracle/oradata/orcl/uat.dbf'
      2  to '/u02/uat.dbf';

    5. 使表空间在线

    SQL> alter tablespace uat online;

    6.删除原来位置的应该废弃的物理文件

    SQL> host rm /u01/app/oracle/oradata/orcl/uat.dbf

      如过表空间不能脱机的话,就启动数据库到mount状态下,其余步骤是一样的。

    表空间的扩容

    可以通过如下的方法扩容表空间

      

       (1)重置数据文件大小

                ALTER DATABASE DATAFILE '...' | FileNo RESIZE XX

            (2)设置数据文件能自动增长

               ALTER DATABASE DATAFILE '... '| FileNo AUTOEXTEND ON | OFF NEXT 20M MAXSIZE 300M;

                --查看哪些表空间为自动增长

               SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files

      (3)添加数据文件

       增加到表空间中的数据文件不能直接从表空间中删除,除非删掉整个表空间

      增加数据文件将有助于均衡I/O

      文件越多,执行一次检查点的代价越高  */

      ALTER TABLESPACE tbs2 ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' size 200m autoextend on ;

    删除表空间

      DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

     INCLUDING CONTENTS   --删除段

     DATAFILES  --删除数据文件

    SQL> drop tablespace uat including contents and datafiles;

    临时表空间

      临时表空间具有以下特征:

    •   临时表空间是作为排序操作使用的,当内存排序区不够时,使用临时表空间可以改进数据库的效率
    •   创建临时表空间,不能使用非标准数据块
    •   临时表空间不能存放永久对象
    •   当有第一个排序操作时创建排序段

    --创建临时表空间

    SQL> create temporary tablespace tmp02 tempfile
      2  '/u01/app/oracle/oradata/orcl/tmp02.dbf' size 100M;
    
    表空间已创建。

    --指定默认的临时表空间

      默认临时表空间最好要指定一下,如果没有指定默认的临时表空间,那么将使用system表空间作为排 序区

     ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmp02;

    --查看默认的临时表空间

    select * from database_properties t  where t.property_name like 'DEFAULT_TEMP%';

    还原表空间

    --创建还原表空间

    SQL> create undo tablespace undo2
      2  datafile '/u01/app/oracle/oradata/orcl/undo2.dbf' size 200M;

     --修改当前系统的UNDO表空间:

     ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name;

    四、相关视图

    --获取表空间和数据文件信息

           --表空间信息

               dba_tablespaces

               v$tablespace

           --数据文件信息

               dba_data_files

               v$datafile

           --临时数据文件信息

               dba_temp_files

               v$tempfile

     

    --查看系统默认的表空间及临时表空间:  

           SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties  where PROPERTY_NAME like 'DEFAULT%';

     

      --修改改系统的默认表空间:  

       SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

    --查看用户默认表空间:

      SQL>select USERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;

     --修改用户默认表空间:

           SQL>ALTER USER user_name DEFAULT TABLESPACE tablespace_name

     

    --查看表空间的使用情况:

           dba_data_files;

           dba_free_space;

              

           --例:查每个表空间的剩余空间

           SQL> select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name; 

           

  • 相关阅读:
    实现第三方系统单点登录
    python爬虫
    webot设备motor的api
    webots学习
    python学习算术运算
    python快捷键与命令函数
    python学习构造和析构
    python学习对象相关的bif
    python学习对象:拾遗
    matlab基础知识
  • 原文地址:https://www.cnblogs.com/zydev/p/6233831.html
Copyright © 2020-2023  润新知