精华内容
下载资源
问答
  • 在mysql中有一个information_schema数据库,这个数据库中装的是mysql的元数据,包括数据库信息、数据库中的信息等。所以要想查询数据库占用磁盘的空间大小可以通过对information_schema数据库进行操作。 ...

    在mysql中有一个information_schema数据库,这个数据库中装的是mysql的元数据,包括数据库信息、数据库中表的信息等。所以要想查询数据库占用磁盘的空间大小可以通过对information_schema数据库进行操作。
    information_schema中的表主要有:
      schemata表:这个表里面主要是存储在mysql中的所有的数据库的信息
      tables表:这个表里存储了所有数据库中的表的信息,包括每个表有多少个列等信息。
      columns表:这个表存储了所有表中的表字段信息。
      statistics表:存储了表中索引的信息。
      user_privileges表:存储了用户的权限信息。
      schema_privileges表:存储了数据库权限。
      table_privileges表:存储了表的权限。
      column_privileges表:存储了列的权限信息。
      character_sets表:存储了mysql可以用的字符集的信息。
      collations表:提供各个字符集的对照信息。
      collation_character_set_applicability表:相当于collations表和character_sets表的前两个字段的一个对比,记录了字符集之间的对照信息。
      table_constraints表:这个表主要是用于记录表的描述存在约束的表和约束类型。
      key_column_usage表:记录具有约束的列。
      routines表:记录了存储过程和函数的信息,不包含自定义的过程或函数信息。
      views表:记录了视图信息,需要有show view权限。
      triggers表:存储了触发器的信息,需要有super权限

    select concat(round(sum(data_length/1024/1024),2),'MB') as data_length_MB,  
    concat(round(sum(index_length/1024/1024),2),'MB') as index_length_MB  
    from information_schema.tables    
    where table_schema='数据库名称' AND table_name='表名称';  

    其中包括数据文件的大小和索引文件的大小,此外要是没有表的筛选条件,查询的是数据库所占的存储空间

    展开全文
  • ORACLE 表空间操作和表的删除(

    千次阅读 2018-03-28 23:17:48
    最近在用IMP 命令导入dmp数据的时候,发现表空间无法扩展,查,才发现表空间SYSTEM已经使用了31.2G。 经过查找资料,总结如下: 1.一般不在SYSTEM表空间存放业务数据; 2.SYSTEM表空间最大值是32G;-----所有...

     

    最近在用IMP 命令导入dmp数据的时候,发现表空间无法扩展,一查,才发现表空间SYSTEM已经使用了31.2G。

    经过查找资料,总结如下:

    1.一般不在SYSTEM表空间存放业务数据;

    2.SYSTEM表空间最大值是32G;-----所有表空间的物理文件最大都是32G

    下面是关于ORACLE表空间的基本常识和操作基本语法。

            Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献,Oracle中很多优化都是基于表空间的设计理念而实现的。
            Oracle数据库被划分成称作为表空间的逻辑区域——形成Oracle数据库的逻辑结构。一个Oracle数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
            每个Oracle数据库均有SYSTEM表空间,这是数据库创建时自动创建的。SYSTEM表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表)。所以,业务数据最好不要存放于SYSTEM表空间下。一个小型应用的ORACLE数据库通常仅包括SYSTEM表空间,然而一个稍大型应用的ORACLE数据库采用多个表空间,这对数据库的使用带来更大的方便。
            例如:可以把oracle数据库看作一个实在房间,表空间可以看作这个房间的空间,是可以自由分配,在这空间里面可以堆放多个箱子(箱子可以看作数据库文件),箱子里面再装物件(物件看作表)。用户指定表空间也就是你希望把属于这个用户的表放在那个房间(表空间)里面。
            表空间是一个虚拟的概念可以无限大,但是需要由数据文件作为载体。表空间的大小,其实就是数据文件的大小。

     

    Segment(段)

            段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

    Extent(区间)

            分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象。

    如图所示:

     

     

     

     

            Tablespace与Datafile的关系是一对多的关系。一个表空间Tablespace可以对应多个Datafile,Datafile则是只能归属在一个Tablespace里。传统的Oracle管理概念中,倡导一个表空间中创建多个数据文件,特别是创建分布在多个存储磁盘上,以期分散I/O。但是,Oracle10g以后推出的BigFile Tablespace大文件表空间,将这个概念有所变化。smallfile tablespace和bigfile tablespace。过去一个表空间对应多个数据文件我们成为Smallfile Tablespace。
     
            所谓Bigfile Tablespace最显著的差别就是一个表空间只能对应一个数据文件。Bigfile Tablespace虽只对应一个数据文件,但数据文件对应的最大体积大大增加。

            传统的small datafile每个文件中最多包括4M个数据块,按照一个数据块8K的大小核算,最大文件大小为32G。每个Small Tablespace理论上能够包括1024个数据文件,这样计算理论的最大值为32TB大小。
           而Bigfile Datafile具有更强大的数据块block容纳能力,最多能够包括4G个数据块。同样按照数据块8K计算,Bigfile Datafile大小为32KG=32TB。

            理论上small tablespace和big tablespace总容量相同。

     

    表空间的操作基本语法

    1 创建表空间

    create tablespace my_01  -----表空间名字
    datafile 'D:\app\oracle12c\oradata\orcl\my_01.dbf'    -----物理文件路径
    size 1024M   -----初始大小
    autoextend on next 2000m    -------每次自动扩展多少
    maxsize unlimited;   --------最大是多少,设置为unlimited,最大也只能是32G


    用户创建其数据库实体时,必须给予表空间中具有相应的权力,所以对一个用户来说,其要操纵一个ORACLE数据库中的数据,应该:
            1.被授予关于一个或多个表空间中的RESOURCE特权;
            2.被指定缺省表空间;
            3.被分配指定表空间的存储空间使用份额;
            4.被指定缺省临时段表空间,建立不同的表空间,设置最大的存储容量。

    临时表空间
            临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可。
    系统表空间
    如果备份不可用,则只能采用重建数据库的方法
     
    2.在表空间上创建表

    create table t1 (id int) tablespace my_01;

     3.插入数据

    insert into t1 values(10);

    4.查询表空间

    select * from dba_tablespaces
    ----或者
    select * from v$tablespace;


    5.查询数据库物理文件

    select *  from dba_data_files

    6.表空间扩容:
    一是
    通过扩容数据文件的大小——直接对数据文件操作

    alter database datafile 'D:\app\oracle12c\oradata\orcl\my_02.dbf' resize 256M;

    设置数据文件具有自动扩展能力

    alter database datafile 'D:\app\oracle12c\oradata\orcl\my_02.dbf' 
    resize 256M 
    AUTOEXTEND ON NEXT 5M 
    MAXSIZE 500M;   

     
    二是通过添加数据库文件——为表空间添加数据文件

    ----增加物理文件
    alter tablespace SYSTEM add datafile 
        'D:\app\oracle12c\oradata\orcl\my_02.dbf' size 128M;
    
    ----增加物理文件,自动扩展,最大值
    alter tablespace SYSTEM add datafile 
        'D:\app\oracle12c\oradata\orcl\my_02.dbf' size 128M 
        AUTOEXTEND ON NEXT 5M MAXSIZE 500M; 
    
    ----增加物理文件,自动扩展,最大值无限(32G)
    alter tablespace SYSTEM add datafile 
        'D:\app\oracle12c\oradata\orcl\my_02.dbf' size 128M 
        AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED;


    7.查询表空间的大小:(单位是M)

    select sum(bytes)/1024/1024, tablespace_name from dba_data_files 
        where tablespace_name='SYSTEM' group by tablespace_name;
    -----或者
    select bytes/1024/1024, tablespace_name from dba_data_files 
        where tablespace_name='SYSTEM';

    8.查看用户下面的所有的表 
     

    select * from user_tables;
    
    select * from dba_tables where owner='TE'

    9.查看用户所属的表空间 

    select default_tablespace from dba_users where username=' TE'

    删除数据文件
    注意:不能够删除表空间中的第一个数据文件
    ,如果将第一个数据文件删除的话,相当于删除了整个表空间。SYSTEM的表空间数据文件不要删除,因为无法把SYSTEM表空间脱机。
    需要先将表空间脱机

    ALTER TABLESPACE tablespace_name ONLINE|OFFLINE;
    
    ALTER TABLESPACE tablespace_name DROP DATAFILE'D:\app\oracle12c\oradata\orcl\my_02.dbf';

     

    查看Oracle数据库中表空间信息的工具方法:使用oracle enterprise manager console工具

    表空间的数据库文件达到31.9G,通过删除表后,发现数据库文件大小还是31.9

    删除表的SQL语句:

    drop table  tablename;

    删除表,而且不放入回收站:

    drop table  tablename purge ;

    但是,数据库文件大小依然没有改变——原来是需要缩小表空间,以便释放磁盘空间。

    具体步骤:

    1.查看表空间的所有数据库文件datafile,找到你要缩小的数据库文件。

    select file#, name from v$datafile;-----id =2

    2.获得要缩小的数据库文件id是2,查看此文件有多少个block。

    select max(block_id) from dba_extents where file_id=4;----614000个block

    3.查询block的大小,单位是 byte

    select value from v$parameter where name='db_block_size'   ---8292 byte = 8 kb

    4.计算这个数据库文件占用的物理空间

    select 614000 * 8 / 1024 from dual;  ---4975mb

    5.修改datafile大小

    alter database datafile 'D:\APP\ORCL\my_001.DBF' resize 6000m;
    ——要大于所有的block的大小。
    ——发现如果block非常多的话,数据库文件依然比较大,就算一些表格已经drop和purge。

     

    后来找到以下办法:

    tables是存储某个tablespace(表空间)里面的,tablespaces可以包含多个dbf文件,表空间会随着包含的表内容增加而增大,但是不会随着table删除而减小。

    ---使用
    truncate table  tablename DROP STORAGE;

    解释: 直接删除表,并且释放存储空间。truncate的意思是清空表数据, “DROP STORAGE”是释放存储空间。

     

    10. truncate table 的drop storage和reuse storage区别

            如果使用下面两个语句删除两个表中的数据

       truncate table t1 drop storage;
       truncate table t2 reuse storage;

       区别是: 
    t1的data:   数据所在的extent空间被释放,释放的空间供其它segment使用;
    t1的index:   数据删除,剩下第一个extent;

    t1的hwm:    重新设置到第一个block的位置(hwm会改变)

     

    t2的data:   数据所在的extent空间不会被回收(仅仅数据会被删除),数据删除之后的freespace空间只能供本表使用,不可以供其它segment使用;
    t2的index:   数据删除,但是保留extent;

    t2的hwm:   重新设置到第一个block的位置(hwm会改变);

     

     

     

     

     

     

    展开全文
  • 一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数: select segment_name, bytes  from user_segments  where segment_type = 'TABLE';  或者  Select Segment_Name,Sum...

    有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:

    select segment_name, bytes 
    from user_segments 
    where segment_type = 'TABLE'; 
    或者
       Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

    另一种表实际使用的空间。这样查询:

    analyze table emp compute statistics; 
    select num_rows * avg_row_len 
    from user_tables 
    where table_name = 'EMP';

    查看每个表空间的大小
    Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name

     

     

     

    1. 查看剩余表空间大小
     
    SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name;
     
    2.检查系统中所有表空间总体空间
    select b.name,sum(a.bytes/1000000)总空间 from v$datafile a,v$tablespace b where a.ts#=b.ts# group by b.name;

      1、查看Oracle数据库中表空间信息的工具方法:

      使用oracle enterprise manager console工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后,通过下面的方法登录该工具:开始菜单——程序——Oracle-OraHome92——Enterprise Manager Console(单击)——oracle enterprise manager console登录——选择‘独立启动’单选框——‘确定’ —— ‘oracle enterprise manager console,独立’ ——选择要登录的‘实例名’ ——弹出‘数据库连接信息’ ——输入’用户名/口令’ (一般使用sys用户),’连接身份’选择选择SYSDBA——‘确定’,这时已经成功登录该工具,选择‘存储’ ——表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。

      图1 表空间大小及使用率

      2、查看Oracle数据库中表空间信息的命令方法:

      通过查询数据库系统中的数据字典表(data dictionary tables)获取表空间的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:

      select

      a.a1 表空间名称,

      c.c2 类型,

      c.c3 区管理,

      b.b2/1024/1024 表空间大小M,

      (b.b2-a.a2)/1024/1024 已使用M,

      substr((b.b2-a.a2)/b.b2*100,1,5) 利用率

      from

      (select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a,

      (select tablespace_name b1,sum(bytes) b2 from dba_data_files group by tablespace_name) b,

      (select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) c

      where a.a1=b.b1 and c.c1=b.b1;

      该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。

      上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。

      语句执行结果如下:

      

    表空间名称 类型 区管理 表空间大小M 已使用M 利用率
    CWMLITE PERMANENT LOCAL 20 9.375 46.87
    DRSYS PERMANENT LOCAL 20 9.6875 48.43
    EXAMPLE PERMANENT LOCAL 149.375 149.25 99.91
    INDX PERMANENT LOCAL 25 0.0625 0.25
    ODM PERMANENT LOCAL 20 9.375 46.87
    SYSTEM PERMANENT LOCAL 400 397.375 99.34
    TOOLS PERMANENT LOCAL 10 6.0625 60.62
    UNDOTBS1 UNDO LOCAL 200 5.9375 2.968
    USERS PERMANENT LOCAL 25 0.0625 0.25
    XDB PERMANENT LOCAL 38.125 37.9375 99.5
      上面描述中分别介绍了查看Oracle数据库中表空间信息的工具方法和命令方法。

     

      1、查看Oracle数据库中数据文件信息的工具方法:

      使用上面介绍过的方法登录oracle enterprise manager console工具,选择‘存储’ ——数据文件,会看到如下的界面,该界面显示了数据文件名称,表空间名称,以”兆”为单位的数据文件大小,已使用的数据文件大小及数据文件利用率。

      

      图2 数据文件大小及使用率

            2、查看Oracle数据库中数据文件信息的命令方法:

      通过查询数据库系统中的数据字典表(data dictionary tables)获取数据文件的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:

      select

      b.file_name 物理文件名,

      b.tablespace_name 表空间,

      b.bytes/1024/1024 大小M,

      (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,

      substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率

      from dba_free_space a,dba_data_files b

      where a.file_id=b.file_id

      group by b.tablespace_name,b.file_name,b.bytes

      order by b.tablespace_name

      语句执行结果如下:

      

    物理文件名 表空间 大小M 已使用M 利用率
    G:/ORACLE/ORADATA/ORA92/CWMLITE01.DBF CWMLITE 20 9.375 46.87
    G:/ORACLE/ORADATA/ORA92/DRSYS01.DBF DRSYS 20 9.6875 48.43
    G:/ORACLE/ORADATA/ORA92/EXAMPLE01.DBF EXAMPLE 149.375 149.25 99.91
    G:/ORACLE/ORADATA/ORA92/INDX01.DBF INDX 25 0.0625 0.25
    G:/ORACLE/ORADATA/ORA92/ODM01.DBF ODM 20 9.375 46.87
    G:/ORACLE/ORADATA/ORA92/SYSTEM01.DBF SYSTEM 400 397.375 99.34
    G:/ORACLE/ORADATA/ORA92/TOOLS01.DBF TOOLS 10 6.0625 60.62
    G:/ORACLE/ORADATA/ORA92/UNDOTBS01.DBF UNDOTBS1 200 5.9375 2.968
    G:/ORACLE/ORADATA/ORA92/USERS01.DBF USERS 25 0.0625 0.25
    G:/ORACLE/ORADATA/ORA92/XDB01.DBF XDB 38.125 37.9375 99.5
      上明描述中分别介绍了查看Oracle数据库中数据文件信息的工具方法和命令方法。

     

      在oracle数据库中,临时表空间主要用于用户在使用order by 、group by语句进行排序和汇总时所需的临时工作空间。要查询数据库中临时表空间的名称,大小及数据文件,可以查询数据字典dba_tablespaces及dba_data_files。命令如下:

      select

      a.talbespace_name 表空间名称,

      b.bytes 大小bytes,

      b.file_name 数据文件名

      from dba_tablespaces a, dba_data_files b

      Where a.talbespace_name=b.talbespace_name and a.contents=’TEMPORARY’;

      查询结果如下:

      表空间名称大小bytes数据文件名

      TEMPONLINEG:/ORACLE/ORADATA/ORA92/TEMP01.DBF

      从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使用临时文件。临时文件的信息被存储在数据字典V$tempfile中。命令如下:

      Select file#,status,name from V$tempfile;

      查询数据字典V$tempfile结果如下:

      

    FILE# status NAME
    1 ONLINE G:/ORACLE/ORADATA/ORA92/TEMP01.DBF
      在上面介绍的方法中,建议掌握命令方法,因为你的环境可能没有图形工具,而SQLPLUS一般情况下都是可以使用的,有了命令脚本,很容易得到表空间和数据文件的相关信息。另外,数据库管理员应该多整理命令脚本,在需要时直接执行脚本以提高工作效率。

      在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误。

     

    1.查询oracle表空间的使用情况

     select b.file_id  文件ID,
      b.tablespace_name  表空间,
      b.file_name     物理文件名,
      b.bytes       总字节数,
      (b.bytes-sum(nvl(a.bytes,0)))   已使用,
      sum(nvl(a.bytes,0))        剩余,
      sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
      from dba_free_space a,dba_data_files b
      where a.file_id=b.file_id
      group by b.tablespace_name,b.file_name,b.file_id,b.bytes
      order by b.tablespace_name

     

    2.查询oracle系统用户的默认表空间和临时表空间

    select default_tablespace,temporary_tablespace from dba_users

     

     3.查询单张表的使用情况

    select segment_name,bytes from dba_segments where segment_name = 'RE_STDEVT_FACT_DAY' and owner = USER

    RE_STDEVT_FACT_DAY是您要查询的表名称

     

    4.查询所有用户表使用大小的前三十名

    select * from (select segment_name,bytes from dba_segments where owner = USER order by bytes desc ) where rownum <= 30

     

    5.查询当前用户默认表空间的使用情况

    select tablespacename,sum(totalContent),sum(usecontent),sum(sparecontent),avg(sparepercent) 
    from 
    (
    SELECT b.file_id as id,b.tablespace_name as tablespacename,b.bytes as totalContent,(b.bytes-sum(nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) as sparecontent,sum(nvl(a.bytes,0))/(b.bytes)*100  as sparepercent 
    FROM dba_free_space a,dba_data_files b
    WHERE a.file_id=b.file_id and b.tablespace_name = (select default_tablespace from dba_users where username = user)  
    group by b.tablespace_name,b.file_name,b.file_id,b.bytes

    GROUP BY tablespacename

     

    6.查询用户表空间的表

    select   *  from user_tables

    展开全文
  • 数据库的表空间

    千次阅读 2018-04-07 17:00:49
    表空间的存在就是为了用来存储数据库的数据对象,一个数据库可以由个数据表空间组成,可以通过表空间来实现对数据库的调参。表空间的分类永久性表空间:在存储过程中需要永久化存储的对象,比如二维表,视图,存储...

    表空间的概述

    数据库的表空间,简而言之就是数据库存储数据的存储结构,是一种用来存储数据的逻辑空间,是数据库用来存储数据的最大逻辑单元,其下还有段、区、数据块等逻辑数据类型。表空间的存在就是为了用来存储数据库的数据对象,一个数据库可以由多个数据表空间组成,可以通过表空间来实现对数据库的调参。

    表空间的分类

    • 永久性表空间:在存储过程中需要永久化存储的对象,比如二维表,视图,存储过程,索引。
    • 临时表空间:临时表空间实在数据库执行的过程中创建的,如:执行order by,like,等查询命令时产生的临时数据。操作完之后临时表空间的内容会自动释放,不会对数据库产生影响。临时表空间一般存储在TEMP中,用户也可以自行手动创建临时表空间,手法多样,多变。
    • UNDO表空间:保存数据库表修改之前的副本。存储事务修改的旧址,即是为了保存数据修改之前的另一个版本。利于对数据操作的回滚、恢复和撤销。

    查看system用户的默认表空间和临时表空间

    SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE 
    2 FROM DATABASE_PROPERTIES;
    
    PROPERTY_NAME PROPERTY_VALUE
    ------------------------------ ------------------
    DEFAULT_TEMP_TABLESPACE              TEMP
    

    默认表空间

    用户在登陆后没有指定表空间的话,数据就会默认存储到默认表空间。

    查看默认的永久表空间

    注意:如果创建用户时,不指定其永久表空间,则会使用默认的表空间


    SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE 
    2 FROM DATABASE_PROPERTIES;
    
    PROPERTY_NAME PROPERTY_VALUE
    ------------------------------ ------------------
    DEFAULT_TEMP_TABLESPACE              TEMP
    
    DEFAULT_PERMANENT_TABLESPACE         USERS

    查看默认的TEMP表空间

    系统管理员查看表空间

    SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE
    2 FROM DATABASE_PROPERTIES
    3 WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'
    4 ;
    
    PROPERTY_NAME                        PROPERTY_VALUE
    ------------------------------ ----------------------------
    DEFAULT_TEMP_TABLESPACE                  TEMP
    普通用户

    SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS

    逻辑结构到物理结构的映射

    表空间与数据文件:实际上表空间是由若干个数据文件构成,数据文件的位置和大小可以由我们而定。数据被存放在表空间的数据文件中。



    注意:表空间的段,区,块等等是一种逻辑结构,其下最小的数据块会映射到磁盘块中,而磁盘块是物理结构。一个数据块由若干个磁盘块组成。



    表空间的操作方式

    • 数据字典:表空间的分配信息可以都存储在数据字典中,但是如果真这样做了,会引起字典争用的后果,这是性能调优的目标之一。
    • 本地存储:表空间分配不放在数据字典,而在每个数据文件头部的第3到第8个块的位图块,来管理空间分配。


    查看表空间使用情况

    SELECT A.TABLESPACE_NAME                     AS TABLESPACE_NAME, 
            ROUND(A.BYTES/(1024*1024*1024),2)    AS "TOTAL(G)"     , 
            ROUND(B.BYTES/(1024*1024*1024),2)    AS "USED(G)"      , 
            ROUND(C.BYTES/(1024*1024*1024),2)    AS "FREE(G)"      , 
            ROUND((B.BYTES * 100) / A.BYTES,2)   AS "% USED"       , 
            ROUND((C.BYTES * 100) / A.BYTES,2)   AS "% 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;

    计算表空间使用情况(考虑了数据文件自动增长情况)

    SELECT UPPER(F.TABLESPACE_NAME) AS "表空间名称", 
            ROUND(D.AVAILB_BYTES ,2) AS "表空间大小(G)", 
            ROUND(D.MAX_BYTES,2) AS "最终表空间大小(G)", 
            ROUND((D.AVAILB_BYTES - F.USED_BYTES),2) AS "已使用空间(G)", 
            TO_CHAR(ROUND((D.AVAILB_BYTES - F.USED_BYTES) / D.AVAILB_BYTES * 100, 
                2), '999.99') AS "使用比", 
            ROUND(F.USED_BYTES, 6) AS "空闲空间(G)", 
            F.MAX_BYTES AS "最大块(M)" 
     FROM (
            SELECT TABLESPACE_NAME, 
                    ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 6) USED_BYTES, 
                    ROUND(MAX(BYTES) / (1024 * 1024 * 1024), 6) MAX_BYTES 
            FROM SYS.DBA_FREE_SPACE 
            GROUP BY TABLESPACE_NAME) F, 
          (SELECT DD.TABLESPACE_NAME, 
                    ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 6) AVAILB_BYTES, 
                ROUND(SUM(DECODE(DD.MAXBYTES, 0, DD.BYTES, DD.MAXBYTES))/(1024*1024*1024),6) MAX_BYTES 
           FROM SYS.DBA_DATA_FILES DD 
           GROUP BY DD.TABLESPACE_NAME) D 
            WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME 
    ORDER BY 4 DESC

    懒得copy了,想看原文点下面

    转自:点击打开链接




    展开全文
  • Oracle 回收表空间文件空闲的空间

    万次阅读 2016-05-19 15:03:31
    这就造成了一个现象,当一个表空间使用率达到100%的时候,我们通过删除一些没用的数据,但是还是不能往放在该表空间下的表添加数据。Oracle EBS有张表fnd_lobs,该表包含字段FILE_DATA,用于存放Forms的“文件-导出...
  • 发现以前因为undo表空间满添加过文件,添加过好几个表空间文件。 如何估算Oracle数据库所需的UNDO表空间的大小 要确定Oracle需要的UNDO 表空间的大小,需要以下三条信息:  UR 以秒为单位的UNDO_...
  • ORACLE12C 创建表空间的方法

    千次阅读 2018-06-09 12:57:01
    在oracle 数据库中,表空间是最大的概念,与用户独立,创建一个表空间,所有用户可以共用。接下来,讲解在oracle 12c 数据库中创建表空间的方法,在oracle 12c 数据库中,默认表空间有UNDOTBS1,UESRS,SYSTEM,SYSAUX...
  • 不要让临时表空间影响数据库性能

    千次阅读 2016-12-26 16:36:26
    一般Oracle数据库(Oracle Database)可以分为两部分,即实例(Instance)和数据库(Database)。 实例:是一个非固定的、基于内存的基本进程与内存结构。...一般情况下,Oracle数据库都是一个数据库对应一个实例。
  • 表空间的概念

    千次阅读 多人点赞 2020-01-06 10:10:46
    一个数据库可以有个表空间,但一个表空间只能属于一个数据库,一个表空间可以有个数据库文件,但一个数据文件只能属于一个表空间。 通俗来讲,数据库(房间外壳),表空间(房间里面的空间),数据库文件(空间...
  • Oracle 表空间详解

    万次阅读 2018-12-20 14:46:45
    表空间概述 表空间的分类 默认表空间 查看默认的永久表空间 查看默认的TEMP表空间 查看默认的表空间类型 逻辑结构到物理结构的映射 对表空间的操作 查看表空间使用情况 查看数据库拥有的表空间 查看表空间中的数据...
  • MySQL表空间简介

    万次阅读 2018-11-13 11:02:47
    本文主要介绍一下MySQL中的几种表空间概念及相关操作。 基础材料: CentOS7.5 MySQL 5.7.24 ...相关定义 : 一般用来存放mysql系统相关信息的一个特殊的共享表空间 存放路径 : 默认为MySQL初始化路径下的ibdat...
  • db2 系统临时表空间

    万次阅读 2014-05-26 14:28:15
    如果结果集中的行大小接近于现有系统临时表空间的最大行长度限制,那么可能需要创建具有更页大小的系统临时表空间。 开始之前 确保具有 SYSCTRL 或 SYSADM 权限来在必要时创建系统临时表空间。 ...
  • 达梦数据库创建表空间

    千次阅读 2020-04-12 20:41:27
    通过图形化界面在一个表空间下可以添加个.dbf文件,其实,通过命令方式也可以创建一个表空间拥有个.dbf文件,比如创建名为bookshop的表空间,要求有2个数据文件,每个数据文件大小为128M,命令如下: ...
  • sp_spaceused [ @objname=], [ @updateusage=] Parameter: [ @objname=] 'objname' ----------------------------要...显示行数、保留的磁盘空间以及当前数据库中的所使用的磁盘空间,或显示由整个数据库保留和使用
  • 一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数: select segment_name, bytes from user_segments where segment_type = 'TABLE'; 或者  Select Segment_Name,Sum...
  • DB2表空间操作详解

    万次阅读 2015-10-26 00:26:50
    1.LARGE, REGULAR, SYSTEM TEMPORARY, or USER TEMPORARY 指定要创建的表空间的类型,如果不指定,默认类型是由”MANAGED BY...当一个表放置在一个large类型的表空间中: 这个表可以比放置在regular类型的表空间中更
  • Oracle undo表空间管理

    千次阅读 2019-01-09 09:13:59
    当在做DML操作的时候,在修改buffer cache里面的数据块的时候,会对当前块的旧镜像信息做一个保存,保存的数据块就是undo块。undo块上面保存着数据修改前的信息。 生成undo块的几个作用: 当事务没有提交,undo...
  • Oracle19c 创建表空间

    千次阅读 2020-02-21 20:50:10
    其实之所以遇到坑是因为相比于oracle11g,oracle19c一个CDB和PDB的概念(从12C开始出现)。 #确定要创建表空间的目录 [oracle@localhost ~]$ su - oracle [oracle@localhost ~]$ cd /opt/...
  • 空间和堆空间大小

    千次阅读 2019-08-20 14:37:47
    一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。 2、堆区(heap):一般是由程序员分配释放,若...
  • Oracle创建用户与授予表空间与权限

    万次阅读 2018-09-15 16:33:40
    一个数据库可以有个表空间,一个表空间里可以有个表。表空间就是存个表的物理空间; 可以指定表空间的大小位置等。 建立表空间的定义 建立表空间(一般建N个存数据的表空间和一个索引空间): create ...
  • 如果已经存在索引,建议你先重建索引先,因为大数据的索引维护到了一个阶段就是乱的,一般建议重建。建立好的一般可以获得几十倍的速度提升。 最大数据量的放在最前,最小的放在最后面。sql是从最后面开始反向...
  • Oracle: Oracle数据库的实例、表空间、用户、表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。 1) 数据库是系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等); 2...
  • oracle 表空间文件达到32G后解决办法

    千次阅读 2019-10-25 11:21:34
    中)扩展"、或者:ora-01652无法通过128(在表空间temp中)扩展temp段,这种错误信息时,表明数据库表空间文件或者临时表空间文件已经达到上限; 解决办法:增加表空间文件,sql语句如下:...
  • oracle 11g表空间之最大最小

    千次阅读 2014-10-27 11:27:13
    oracle支持的文件大小和他的db_block_size和db_block的数量决定的。在oracle 9i以前,oracle 的db_block的数量最大只能为2的22次方,而我们...虽然在oracle 11g没有这限制,但是它默认的能力也是这么。所以我在
  • oracle表空间传输

    千次阅读 2013-03-01 17:11:27
    表空间传输、简介可传输表空间(还有集)最大的优势是其速度比export/import或unload/load要快的。因为可传输表空间主要是复制数据文件到目标路径,然后再使用export/import或Data Pump export/import等应用仅...
  • Oracle-临时表空间(组)解读

    千次阅读 2015-12-28 10:58:18
    以前的整理哪些情况下的操作会使用到临时表空间首先我们要明确下哪些情况下的操作会使用到临时表空间: 排序操作 比如select或dml(ddl)语句中包含order by之类; create index create pk constraint (其实这跟...
  • ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的区别
  • 索引组织(IOT):...数据的查询可以通过查询索引的同时查询到数据,因为索引和数据存储在一个数据块中,减少了一次磁盘I/O。数据是按照主键顺序创建的索引,索引中有对应的数据,这样依据主键做范围扫描时,减少了
  • Oracle 表空间

    千次阅读 2016-04-25 23:04:34
    Oracle磁盘空间管理中的最高逻辑层是表空间(TABLESPACE),它的下一层是段(SEGMENT),并且一个段只能驻留在一个表空间内。段的下一层就是盘区,一个或个盘区(EXTENT)可以组成一个段,并且每个盘区只能驻留在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 711,047
精华内容 284,418
关键字:

一般一个表空间多大