zoukankan      html  css  js  c++  java
  • Oracle笔记之表空间

    Oracle中有一个表空间的概念,一个数据库可以有好几个表空间,表放在表空间下。

    1. 创建表空间

    创建表空间使用create tablespace命令:

    CREATE TABLESPACE foo_tablespace 
    DATAFILE 'E:/oracle/data/foo_tablespace.dbf' 
    SIZE 20M
    AUTOEXTEND ON NEXT 5M
    MAXSIZE 500M;

    DATAFILE 'E:/oracle/data/foo_tablespace.dbf'  指定逻辑上的表空间在磁盘上的物理存储文件。

    SIZE 20M 指定表空间的初始大小,创建完成后到磁盘上查看:

    image

    不管里面有多少数据,初始化的时候会先分配20M。

    AUTOEXTEND ON NEXT 5M 当之前分配的那20M空间用完了之后怎么办,这个时候就需要能够动态扩展,这里指定每次扩展的时候扩展5M的空间。

    MAXSIZE 500M 动态扩展也总会有有一个上限的吧,这里指定动态扩展最大扩展到多少就不再继续扩展了。

    创建完成后查看其相关信息:

    SQL> SELECT * FROM dba_data_files;
    FILE_NAME                                                                           FILE_ID TABLESPACE_NAME                     BYTES     BLOCKS STATUS    RELATIVE_FNO AUTOEXTENSIBLE   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS
    -------------------------------------------------------------------------------- ---------- ------------------------------ ---------- ---------- --------- ------------ -------------- ---------- ---------- ------------ ---------- ----------- -------------
    C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF                                         4 USERS                             5242880        640 AVAILABLE            4 YES            3435972198    4194302          160    5177344         632 ONLINE
    C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF                                        3 SYSAUX                          262144000      32000 AVAILABLE            3 YES            3435972198    4194302         1280  262078464       31992 ONLINE
    C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF                                       2 UNDOTBS1                         26214400       3200 AVAILABLE            2 YES            3435972198    4194302          640   26148864        3192 ONLINE
    C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF                                        1 SYSTEM                          503316480      61440 AVAILABLE            1 YES            3435972198    4194302         1280  503250944       61432 SYSTEM
    E:ORACLEDATAFOO_TABLESPACE.DBF                                                         5 FOO_TABLESPACE                   20971520       2560 AVAILABLE            5 YES             524288000      64000          640   20905984        2552 ONLINE
    

    2. 使用表空间

    查看用户的默认表空间:

    SQL> SELECT username, default_tablespace FROM dba_users;
    USERNAME                       DEFAULT_TABLESPACE
    ------------------------------ ------------------------------
    MGMT_VIEW                      SYSTEM
    SYS                            SYSTEM
    SYSTEM                         SYSTEM
    DBSNMP                         SYSAUX
    SYSMAN                         SYSAUX
    FOO                            USERS
    SCOTT                          USERS
    SAM                            USERS
    TOM                            USERS
    OUTLN                          SYSTEM
    MDSYS                          SYSAUX
    ORDSYS                         SYSAUX
    CTXSYS                         SYSAUX
    ANONYMOUS                      SYSAUX
    EXFSYS                         SYSAUX
    DMSYS                          SYSAUX
    WMSYS                          SYSAUX
    XDB                            SYSAUX
    ORDPLUGINS                     SYSAUX
    SI_INFORMTN_SCHEMA             SYSAUX
    USERNAME                       DEFAULT_TABLESPACE
    ------------------------------ ------------------------------
    OLAPSYS                        SYSAUX
    MDDATA                         USERS
    DIP                            USERS
    TSMSYS                         USERS
    24 rows selected

    一些特殊用户的默认表空间是SYSTEM,普通用户的默认表空间是USERS。

    修改用户的默认表空间(只对一个用户生效):

    ALTER USER SCOTT DEFAULT TABLESPACE foo_tablespace;

    修改数据库级别的默认表空间(对整个数据库都生效):

    ALTER DATABASE DEFAULT TABLESPACE foo_tablespace;

    关于表空间:

    在Oracle9i中,如果没有用DEFAULT TABLESPACE子句指定用户默认表空间的话其默认表空间就是SYSTEM,而且也不能为数据库指定默认表空间。

    在Oracle10g中定义数据库级别的默认表空间是USERS,在创建用户时如果没有指定默认表空间就会使用数据库级别默认表空间。

    在创建表的时候指定使用哪一个表空间:

    CREATE TABLE t_user(
    	id INT NOT NULL ,
    	username VARCHAR2(20) NOT NULL ,
    	passwd CHAR(32) NOT NULL ,
    	CONSTRAINT PK_T_USER PRIMARY KEY (id)
    ) TABLESPACE foo_tablespace;

    查看t_user表所属的表空间:

    SQL> SELECT TABLE_NAME, TABLESPACE_NAME  FROM user_tables WHERE table_name='T_USER';
    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    T_USER                         FOO_TABLESPACE

    对于已经创建了的表可以将其从一个表空间下移动到另一个表空间下:

    ALTER TABLE t_user MOVE TABLESPACE users;

    再查看,会发现之前的t_user已经到了默认的users表空间下:

    SQL> SELECT TABLE_NAME, TABLESPACE_NAME  FROM user_tables WHERE table_name='T_USER';
    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    T_USER                         USERS

    3. 重命名表空间

    重命名表空间,修改表名类似:

    ALTER TABLESPACE foo_tablespace RENAME TO foobar_tablespace;

    4. 删除表空间

    删掉表空间,连同其内已有的数据对象和磁盘上之前指定的数据文件都一并删掉:

    DROP TABLESPACE foo_tablespace INCLUDING CONTENTS AND DATAFILES;

    需要注意删除表空间的时候表空间必须不在使用状态。即没有哪个数据库用其作为默认表空间。

    .

  • 相关阅读:
    -lpopt is not found while cross compiling for aarch64
    设置进程的cpu亲和性
    在ARM64位开发板上兼容ARM32位的可执行程序
    ARM开发板上查看动态库或者可执行程序的依赖关系
    交叉编译tmux
    使用PSCI机制的SMP启动分析
    将qemu使用的设备树dump出来
    故障review的一些总结
    理解Compressed Sparse Column Format (CSC)
    统计分析工程的依赖项
  • 原文地址:https://www.cnblogs.com/cc11001100/p/6988156.html
Copyright © 2011-2022 走看看