• 【Oracle 】tablespace 表空间创建和管理


    1.表空间的概述

    1. 表空间是数据库的逻辑组成部分。
    2. 从物理上讲,数据库数据存放在数据文件中;  
    3. 从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成。

    2.oracle的逻辑组成

    1.oracle 的逻辑结构包含 表 空间 段 区 块  
    2.数据库是由表空间构成,表空间又是有段构成,段是由区构成,区是由 oracle的块构成,这样做是为了提高数据库的效率  
    3.作用  
                 A.控制数据库占用的磁盘空间   
                 B dba 可以将不同数据类型部署到不同的位置,这样 有利于i/0的性能,同时利于备份和恢复等管理  


    3.查询Oracle的表空间

    select tablespace_name from dba_tablespaces;  


    4.创建表空间的语法和步骤

    1.创建表空间采用create tablespace命令完成  
    2.需要注意的是一般情况下,建立表空间,是特权用户和dba来执行的。如果其他用户要创建必须要有 create tablespace 的系统权限 


    5.案例: 创建一个表空间

    create tablespace  data01 datafile 'd:	estdata01.dbf' size  20m uniform size 128k;
    // 说明:创建一个名称为 data01 的表空间,并为该表空间建立一个名称为data.01.dbf的数据文件,区的大小为128k

    上面是关联一个数据文件,下面是关联两个数据文件

    create tablespace data02 datafile 'd:	estdata021.dbf' size 20m,'d:	estdata022.dbf' size 20m uniform size 128k; 


    6.案例: 使用自定义的表空间

    create table mydept(deptno number(4),dname varchar2(14),loc varchar2(13)) tablespace data01;
    //如果不指定表空间,就默认放在 SYSTEM 表空间下
     
    create table emp(empno,ename) tablespace data01 as select empno,ename from scott.emp;
    //利用其他方案的表创建自己的表后放在自定义表空间下  

    7.什么是表空间的状态

    当建立表空间的时候,表空间处于联机的(online)状态,此时表空间是可以访问的,并且是可以读写,既可以在表空间上执行各种语句。
    但是在进行系统维护或者数据维护的时候,可能需要改变表空间的状态(脱机,联机,只读)。 一般由特权用户和dba来操作  

    8.表空间脱机

    alter tablespace 表空间名 offline;  


    9.使表空间联机

    alter tablespace 表空间名 online;  


    10.只读表空间

    alter tablespace 表空间 read only;
    // 当建立表空间时,表空间可以读写,如果不希望在表空间上执行update ,delete ,insert 操作,那么可以将表空间修改为只读  


    11.改为读写表空间

    alter tablespace tbs001 read write;  

    12.显示表空间中的所有表

    select * from user_tables where TABLESPACE_NAME='DATA01';
    //个人发现在oralce系统中 系统表 或者 视图 是区分大写)  

    13.查看某表所在的表空间 (知道表名)

    select tablespace_name,table_name from user_tables where table_name='EMP';

    14.删除表空间

    drop tablespace DATA01 including contents and datafiles;
    // 说明: including contents 表示删除表空间时候,删除该表空间的所有数据对象,而datafiles 表示将数据库文件也删除。  


    15. 扩展表空间 oralce 有3中方法

    1.添加数据文件  alter tablespace TBS001 add datafile 'd:	bs002.dbf' size 20m;  
    2.增加数据文件的大小 alter database datafile 'd:	bs001.dbf' resize 20m;  
    3.设置自动增长 alter database datafile 'd:	bs002.dbf' autoextend on next 10m maxsize 500m; //9i前每个数据文件是有大小的.之后的版本有人说没有大小限制(取决自己磁盘) 


    16.移动数据文件(处理磁盘损坏的时候,将数据文件进行迁移)

    1.找出数据文件对应的 表空间  
        select tablespace_name from dba_data_files where file_name='D:TBS001.DBF';  
    2.使表空间脱机 确保数据文件的一致性  
        alter tablespacce tbs001 offline;  
    3.使用命令移动数据文件到指定的目标位置 (sqlplus中能成功,PL/Sql中不能成功 应是我不知道)  
        host move d:	bs001.dbf c:	bs001.dbf;  
    4.修改表空间对应的数据文体 为新磁盘下的数据文件  
        alter tablespace TBS001 rename datafile 'D:TBS001.DBF' to 'E:TBS001.DBF';  
    5.使表空间联机  
        alter tablespace TBS001 online;  


    17.查询表空间的信息

    select * from dba_tablespaces;  


    18.查询表空间的所有的数据文件

    select file_name,bytes from dba_data_files where tablesapce_name='TBS001  


    19.表空间的状态

    offline,online, read only, read write;  


    20.其他常用的表空间

    1.索引表空间  
    2.undo表空间  
    3.临时表空间  
    4.非标准块的表空间  

    有时候我们在建表的时候,会遇到如下的命令:

    create table X_SMALL_AREA
    (
    SMALL_AREA_ID NUMBER(10) not null
    )
    tablespace TBSL_SDDQ --表段X_SMALL_AREA放在表空间TBSL_SDDQ中
    pctfree 10 --块保留10%的空间留给更新该块数据使用
    initrans 1 --初始化事务槽的个数
    maxtrans 255 --最大事务槽的个数
    storage --存储参数
    (
    initial 64k --区段(extent)一次扩展64k
    minextents 1 --最小区段数
    maxextents unlimited --最大区段无限制
    );

    关于pctfree的相关知识,可以查看文章“oracle pctfree和pctused详解

    原文链接:Oracle tablespace 表空间创建和管理

  • 相关阅读:
    shellscript 02 find & xargs
    PL/SQL exception
    PL/SQL 游标
    Eclipse
    【数据存储】操作资源文件
    【AsynTask】Android异步加载一张图品
    【数据存储】利用IO流操作文件
    【数据存储】DOM操作
    【特效】手指滑动:水波纹
    【数据存储】SAX操作
  • 原文地址:https://www.cnblogs.com/HDK2016/p/7121167.html
Copyright © 2020-2023  润新知