Oracle中的表空间

Oracle常用的基本命令

表空间是什么?

  Oracle数据库包含逻辑结构和物理结构。

  数据库的物理结构是指构成数据库的一组操作系统文件。

  数据库的逻辑结构是指描述数据组织方式的一组逻辑概念及它们之间的关系。

  表空间是数据库数据库逻辑结构的一个重要组件。表空间可以存放各种应用对象,如表、索引。而每个表空间由一个或多个数据文件组成。

查看用户和默认表空间的关系。
select username,default_tablespace from dba_users;

–1.用户下表中注释模糊查询:

表空间的分类

  1.永久性表空间:

      一般保存表、视图、过程和索引等的数据。SYSTEM、SYSAUX、USERS、**TEMP**表空间是默认安装的。

  2.临时性表空间:

      只用于保存系统中短期活动的数据,如排序数据等。

  3.撤销表空间:

      用来帮助回退未提交的事务数据,已提交了的数据在这里是不可以恢复的。一般不需要键临时和撤销表空间,除非把他们转移到其

      他磁盘中以提高性能。

1.查看表结构:desc表名

例如查询与优惠券关联的表

表空间的作用

  1.对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理。

  2.可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间,有利于提高I/O性能,有利于备份和恢复数据库。

2.查看当前用户的表:

SELECT * FROM user_tab_comments t WHERE t.comments LIKE '%优惠券%';![这里写图片描述](http://img.blog.csdn.net/20170321112728053?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQyNzkzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

Oracle 系统自动建立的表空间

  一般在完成Oracle系统的安装并创建Oracle实例后,Oracle系统会自动建立多个表空间。

  1SYSTEM 表空间

    SYSTEM表空间用于存放 Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。不建议将用户创建的表、索引等对象存放到 SYSTEM表空间中。

  2SYSAUX表空间

    SYSAUX表空间用于存放 Oracle系统内部的常用样例用户的对象。SYSAUX表空间一般不存储用户的数据,由
Oracle系统内部自动维护。

  3.撤销表空间

    撤销表空间用于存放撤销信息的表空间。当我们对数据库表的数据进行增加、删除、修改时,Oracle系统自动使用撤销表空间来临时存放修改前的数据。当

    所做的修改操作完成并提交后,Oracle系统可根据需要保留修改前数据时间长短来释放撤销表空间的部分空间。一般在创建
Oracle实例后,Oracle系统自动

    创建一个名字为“UNDOTBS1”的撤销表空间。

  4USERS表空间

    USERS表空间是 Oracle建议用户使用的表空间,可以在这个表空间上创建各种对象,如创建表、索引等。Oracle的基本样例用户 SCOTT的对象就存放在

    USERS表空间中。

  5TEMP表空间

    TEMP表空间是 Oracle系统用于存放临时数据的特殊表空间。例如,当操作中需要进行排序时,Oracle系统就将排序的数据临时存放在该表空间内。排序处

    理完成后即可释放排序数据所占用的空间,因此称之为临时表空间。

select table_name from user_tables;
3.查看所有用户的表名:

澳门金沙vip,–2.oracle 中删除表 drop delete truncate

创建表空间

    CREATE TABLESPACE tablespacename
    DATAFILE
    ’filename’ [SIZE integer [K | M]] [,…]
    [AUTOEXTEND [OFF |
ON]];

    解释:

        tablespacename是需创建的表空间名称。

        filename是数据文件存放的路径和名称。

        integer是你自己输入的一个数字,指定文件的大小,K是千字节大小,M是兆字节大小。

        …(省略号)是指定组成表空间的另一个数据文件。创建表空间时可指定多个数据文件,每个数据文件之间用,(逗号)分割。

        AUTOEXTEND用来启动或禁用数据文件的自动扩展,ON是空间使用完毕会自动扩展,OFF是不自动扩展。设置为OFF可能会出现表空间剩余容量

        为0的情况,使数据不能存储到数据库中。

    例:如下,创建一个名为tp_hr的表空间,有两个数据文件,自动扩展大小,初始大小是30M(兆)。

        CREATE TABLESPACE tp_hr
        DATAFILE
        ’d:\data\tp_hr01.dbf’ SIZE 30M,
        ’d:\data\tp_hr02.dbf’ SIZE 30M AUTOEXTEND ON;

select table_name from all_tables;
4.查看所有表名(其中包括系统表)

/*** 相同点: 使用 drop 、delete、 truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟 where语句,则也删除表中所有的数据) truncate table 表名 不同点: 首先delete 属于DML,当不commit时时不生效的 而truncate 和 drop 则是直接生效的,不能回滚。 truncate 和 delete 不删除表的结构,只是针对表中的内容删除 drop语句将删除表的结构,被依赖的约束,触发器; 依赖于该表的存储过程/函数将保留,但是变为invalid状态. truncate 会释放占用空间,而drop 和 delete不会。 速度:drop>truncate>dalete 综上所述,可以得到一个问题,使用drop 和 truncate相对delete是危险的,当使用drop 和 truncate 时不能回滚。delete相对安全,可以回滚,并且commit以后才会提交,并且不会删除表结构,也不会释放表所占用的空间。 */

查看表空间

    SELECT file_name,tablespace_name,bytes,autoextensible
    FROM dba_data_files
    WHERE tablespace_name=’tp_hr’;    –根据表空间名称查询

select table_name from all_tables;
5.查看所有的表:

–3.查看表空间的名称及大小

调整表空间大小

    方法一:更改数据文件的大小

        ALTER DATABASE DATAFILE
        ’D:\DATA\tp_hr01.dbf’    –指定文件路径
        RESIZE 80M;          –指定大小

    方法二:向表空间内添加数据文件

        ALTER TABLESPACE tp_hr    –指定表空间的名称
        ADD DATAFILE
        ’E:\DATA\tp_hr02.DBF’ SIZE 20M    
–指定文件路径和大小
        AUTOEXTEND ON;                           –自动扩展

select * from tab/dba_tables/dba_objects/cat;
下面介绍Oracle查询用户表空间

SELECT T.TABLESPACE_NAME, ROUND(SUM), 0) TS_SIZE FROM DBA_TABLESPACES T, DBA_DATA_FILES D WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME GROUP BY T.TABLESPACE_NAME;

删除表空间

    方式1:

        DROP TABLESPACE tp_hr;    –删除名为tp_hr的表空间,但是这个语法只是将表空间和数据库的“联系”删除了,不会删除实际的数据文件。

    方式2:

        DROP TABLESPACE tp_hr INCLUDING
CONTENTS;      –删除名为tp_hr的表空间,并且把数据文件也删除掉。

    (注意:删除表空间之前最好对数据库进行备份。)

◆Oracle查询用户表空间:select * from user_all_tables

–4.查看表空间物理文件的名称及大小

◆Oracle查询所有函数和储存过程:select * from user_source

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, ROUND, 0) TOTAL_SPACE FROM DBA_DATA_FILES ORDER BY TABLESPACE_NAME;

◆Oracle查询所有用户:select * from all_users.select * from
dba_users

–5、查看表空间的使用情况

◆Oracle查看当前用户连接:select * from v$Session

SELECT SUM /  AS FREE_SPACE, TABLESPACE_NAME FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;SELECT A.TABLESPACE_NAME, A.BYTES TOTAL, B.BYTES USED, C.BYTES FREE,  / A.BYTES "% USED ",  / A.BYTES "% FREE " FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;

◆Oracle查看当前用户权限:select * from session_privs

–6、查看数据库的版本

◆Oracle查看用户表空间使用情况:

SELECT VERSION FROM PRODUCT_COMPONENT_VERSION WHERE SUBSTR = 'Oracle';

select a.file_id “FileNo”,a.tablespace_name

以上所述是小编给大家介绍的Oracle删除表及查看表空间的实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

“Tablespace_name”,

a.bytes “Bytes”,a.bytes-sum(nvl(b.bytes,0)) “Used”,

sum(nvl(b.bytes,0)) “Free”,

sum(nvl(b.bytes,0))/a.bytes*100 “%free”

from dba_data_files a, dba_free_space b

where a.file_id = b .file_id(+)

group by a.tablespace_name ,

a.file_id,a.bytes order by a.tablespace_name;
1.查看所有用户:

  select * from dba_user;