• 表空间Tablespace


     

    • 数据库的运行需要依赖于操作系统,而数据库本身也保存在了操作系统的磁盘上,所以当用户向数据表中保存数据时,最终数据也还是保存在了磁盘上,只不过这些数据是按照固定的格式进行保存。
    • 在数据库数据和磁盘数据之间存在了两种结构:

    逻辑结构

    Oracle中所引入的结构,开发人员所操作的都只针对于Oracle的逻辑结构;

    物理结构

    操作系统所拥有的存储结构,而逻辑结构到物理结构的转换由Oracle数据库管理系统来完成


    • 表空间是Oracle数据库之中最大的一个逻辑结构
      • 每一个Oracle数据库都会由若干个表空间所组成,
      • 而每一个表空间将由多个数据文件组成,
      • 用户所创建的数据表也统一都被表空间所管理
      • 表空间磁盘上的数据文件对应,所以直接与物理存储结构关联。
      • 而用户在数据库之中所创建的数据表、索引、视图、子程序等都被表空间保存到了不同的区域内
      • 数据表受到表空间的管理;
      • 表空间分为两类:数据表空间、临时表空间
      • 表空间在哪里:如下路径中DBF文件为数据库文件.

    [oracle@WHOST gaga01]$ ls /u01/app/oracle/oradata/gaga01/

    control01.ctl redo02.log sysaux01.dbf temp01.dbf     users01.dbf

    redo01.log     redo03.log system01.dbf undotbs01.dbf

    [oracle@WHOST gaga01]$

     

    • Oracle数据库之中一般有两类表空间:

    系统表空间

    是在数据库创建时与数据库一起建立起来的,

    例如:用户用于撤消的事务处理,或者使用的数据字典就保存在了系统表空间之中,例如:System或Sysaux表空间;

    非系统表空间

    由具备指定管理员权限的数据库用户创建,主要用于保存用户数据、索引等数据库对象,

    例如:USERS、TEMP、UNDOTBS1等表空间。

     

    • 创建表空间

    非系统表空间的创建语法:

    CREATE [TEMPORARY] TABLESPACE 表空间名称

    [DATAFILE | TEMPFILE 表空间文件保存路径 ...] [SIZE 数字[K | M]]

    [AUTOEXTEND ON | OFF] [NEXT 数字 [K|M]]

    [LOGGING | NOLOGGING] ;

    创建数据表空间

    CREATE TABLESPACE test_data

    DATAFILE '/u01/app/oracle/oradata/gaga01/test_data01.dbf' SIZE 50M , '/u01/app/oracle/oradata/gaga01/test_data.dbf' SIZE 50M

    AUTOEXTEND on NEXT 2M

    LOGGING ;

    创建临时表空间

    CREATE TEMPORARY TABLESPACE test1_temp

    TEMPFILE '/u01/app/oracle/oradata/gaga01/test_temp01.dbf' SIZE 50M ,'/u01/app/oracle/oradata/gaga01/test_temp02.dbf' SIZE 50M

    AUTOEXTEND on NEXT 2M;

    • 创建完之后的表空间,一定都会在数据字典中进行相关内容的记录.
    • 查看表空间:dba_tablespaces数据字典.
    • dba_tablespace数据字典可以查看数据表空间的信息,但是我们不知道每个表空间所花费的存储,两类表空间使用数据字典是不同的。可以使用dba_data_file(查看数据库表空间数据字典)和dba_temp_files(查看临时表空间数据字典)两个数据字典查看.

     

    • 子句说明:

    DATAFILE

    保存表空间的磁盘路径,可以设置多个保存路径;

    TEMPFILE

    保存临时表空间的磁盘路径;

    SIZE

    开辟的空间大小,其单位有K(字节)和M(兆);

    AUTOEXTEND

    是否为自动扩展表空间,如果为ON表示可以自动扩展表空间大小,反之为OFF;

    NEXT

    可以定义表空间的增长量;

    LOGGING | NOLOGGING

    是否需要对DML进行日志记录,记录下的日志可以用于数据恢复。

     

     

    • Oracle中的默认表空间
      • Oracle数据库中默认提供了以下几个表空间:

    SYSTEM表空间

    在一个数据库中至少有一个表空间,既System表空间。创建数据库时必须指明表空间的数据文件的特征,如数据文件名称、大小。System主要是存储数据库的数据字典,Oracle系统表空间中存储全部的PL/SQL程序的源代码和编译后的代码,例如存储过程、函数、包、数据库触发器。如果要大量使用PL/SQL,就应该设置足够大的System表空间。

    SYSAUX表空间

    是System表空间的辅助表空间,许多数据库的工具和可选组件将其对象存储在SYSAUX表空间内,它是许多数据库工具和可选组件的默认表空间。

    Users表空间

    用于存储用户的数据。

    Undo表空间(UNDOTBS1)表空间

    用于事务的回滚、撤消;

    Temp临时表空间

    用于存放Oracle运行中需要临时存放的数据,如排序的中间结果等。

     

    • 创建数据表并使用特定表空间
      • 创建数据表并使用特定表空间
      • CREATE TABLE 用户名.表名称(

    字段名称        字段类型        DEFAULT    默认值 ,

    字段名称        字段类型        DEFAULT    默认值 ,

    .....

    )  TABLESPACE 表空间名称 ;

     

  • 相关阅读:
    mysql导入到elasticsearch
    ulimit -c unlimited
    ajax 调用后台接口示例
    完整的拆分nginx访问日志
    rsyslog input 不支持变量
    完整的多项匹配tomcat access日志的正则
    logstash 中的贪婪匹配
    logstash 内置匹配IP
    时间类处理<1>
    JS获取鼠标位置,兼容IE FF
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/tablespace.html
Copyright © 2020-2023  润新知