一、表空间大小

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;

查看数据文件和表空间对应的大小:

select file_id,file_name,tablespace_name,status,bytes/1024/1024 as "bytes MB" from dba_data_files;

临时表空间查询:

1.查看默认的临时表空间

SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';或 SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS;

2.临时表空间信息

SELECT FILE# AS FILE_NUMBER,
       NAME AS NAME,
       CREATION_TIME AS CREATION_TIME,
       BLOCK_SIZE AS BLOCK_SIZE,
       BYTES / 1024 / 1024 / 1024 AS "FILE_SIZE(G)",
       CREATE_BYTES / 1024 / 1024 / 1024 AS "INIT_SIZE(G)",
       STATUS AS STATUS,
       ENABLED AS ENABLED
  FROM V$TEMPFILE;

select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

用sys管理员账户登录查看

select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;

SELECT temp_used.tablespace_name,
      total - used as "Free",
       total as "Total",
       round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
  FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
          FROM GV_$TEMP_SPACE_HEADER
         GROUP BY tablespace_name) temp_used,
       (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
          FROM dba_temp_files
         GROUP BY tablespace_name) temp_total
 WHERE temp_used.tablespace_name = temp_total.tablespace_name
 ORDER BY B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS;

查看每个表空间的大小
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;
 
3.查询整个数据库剩余和使用的表空间大小使用情况:
select df.tablespace_name "表空间名",totalspace "总空间M",freespace "剩余空间M",round((1-freespace/totalspace)*100,2) "使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;

二、表的实际大小

分配给表的大小:

select sum(bytes)/1024/1024 "表大小(M)" from user_segments where segment_name='table_name';--注,仅表数据的大小,不含索引、分区、LOB类型

select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name having Segment_Name='table_name';

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;以上查询均是分配给表的大小

实际使用大小查询:select num_rows * avg_row_len from user_tables where table_name = 'EMP';

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

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

表空间可以按4种方式分类

一、按数据文件的类型,分为:

大文件表空间(bigfile tablespace)此为10g新增功能
小文件表空间(smallfile tablespace)此为创建时默认值

大文件表空间的优点有:

1、在一个表空间里只有一个大的数据文件,以后不需要再去管理数据文件;
2、一个大的数据文件相当于1024个小的数据文件,这样一来,在一个块大小为32K时,整个数据库可以达到(4g*32K)128TB,不过在实际环境中还是要受到操作系统的影响;
3、使用一个大的数据文件可以代替多个小数据文件,这样对数据文件的管理就少多了;
4、当打开数据库,发生检查点,执行DBWR进程时使用大文件表空间会增强性能。

大文件表空间的的需要注意有:

1、要使用在ORACLE的ASM(自动存储管理)的存储空间或者分散(striping)存储的LVM中,或者RAID阵列上;
2、不要把大文件表空间建立在不能分散(striping)存储的系统上;
3、不要把大文件表空间建立在没有空间(剩余空间少)的磁盘组上;
4、建立大文件表空间时不推荐建立在不能扩展的存储空间里;
5、大文件表空间只支持本地管理表空间(LMT)和本地段空间管理(ASSM);
6、在临时表空间与回滚段表空间,只能用手动段空间管理;
7、自动扩展数据文件必须是起用的,而且最大文件大小必须是不限制;
8、系统表空间和系统辅助(SYSAUX)表空间不能使用大文件表空间;
9、每个表空间只能包含一个数据文件。如果试图添加新的文件,则会报告 ora-32771 错误;
10、在 bft 上存储的表的 rowid 和 smallfile 表空间上的 rowid 结构有些不同的。要正确得到 rowid 信息,dbms_rowid 包增加了一个新的参数 ts_type_in 来解决这个问题。参考这个范例:

sql> select dbms_rowid.rowid_block_number (rowid, bigfile) 2 from foo;
dbms_rowid.rowid_block_number(rowid,bigfile)
----------------------------------------------
24
sql>

二、按管理方式,分为:

本地管理表空间(LMT)
数据字典管理表空间(DMT)

本地管理表空间:
  一种比较先进的管理扩展(extent)的方式;
  是用bitmap来管理表空间里的所有的extent;
  当使用本地管理表空间时是使用6个块(从第三个到第八个)来标识整个表空间里的每一个扩展(extent);
  其中的每一位(bit)来表示每个扩展的状态。1为已被分配,0为可被分配。
  在本地管理表空间的方式里可以选择每个extent的大小是固定(Uniform)的或是自动的:在自动管理,系统一般是刚开始一个extent8个block,然后逐渐增加;固定大小为每个extent都是固定大小的,推荐使用。

字典管理表空间:这种方式是为了与之前版本兼容而提供的。不推荐使用。

10G里是不能创建字典管理表空间的,被强制推荐,只能倒入老版本中的字典管理表空间。

三、按使用类型,分为:

永久段表空间()
临时段表空间()
回滚段表空间()

永久表空间:
  一般存储数据的表空间;
  系统表空间,普通用户使用的表空间都为永久表空间;
  永久表空间的状态有三种:读写,只读,脱机;
  只有在永久表空间,才能配置ASSM管理模式;
  可以设置记录日志模式。建立选yes,以便数据库出问题后进行恢复;
  以设置为系统默认表空间。这样,创建用户时,没有指定默认表空间,就自动设置为系统默认表空间;
  设置默认表空间的命令:

ALTER DATABASE DEFAULT TABLESPACE ;

临时表空间:
  一般用来排序和创建索引时使用;
  临时表空间里不存放实际的数据,所以,即使出了问题,也不需要恢复,而且,也不需要备份,因此也不需要记录日志;
  临时表空间只能使是读写模式,而且只能为手动管理段空间模式;
  可以设置为系统默认临时表空间。这样,创建用户时,没有指定默认临时表空间,就自动设置为系统默认临时表空间,命令如下:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE ;

回滚段表空间:
  用来存放修改中数据的原数据;
  回滚段表空间是用来保证数据读一致性的;

四、在永久表空间中按存储内容方式,分为:

系统表空间(SYSTEM TABLESPACE)
系统辅助表空间(SYSAUX TABLESPACE)
非系统表空间

oracle 空间大小查询的更多相关文章

  1. SQL2008数据表空间大小查询脚本

    --尽量少用触发器,否则数据库增长很快,特别是关于登陆的数据表字段不要用出发器,一周左右能使得数据库增长1G的空间. --数据库表空间大小查询脚本 IF  EXISTS (SELECT * FROM ...

  2. oracle 查询数据库表空间大小和剩余空间

    dba_data_files:数据库数据文件信息表.可以统计表空间大小(总空间大小). dba_free_space:可以统计剩余表空间大小. 增加表空间即向表空间增加数据文件,表空间大小就是数据文件 ...

  3. Oracle 查看表空间大小及其扩展

    在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成.系统中默认创建的几个表空间:S ...

  4. 开发手记:Linux下更改Oracle表空间大小

    问题:同事反馈我们的测试环境数据库执行SQL和编译PKG非常慢,猜测可能是我们的测试环境数据库的表空间满了,但是我不知道数据库DBA的用户和密码. 步骤1:查看表空间占用情况 SELECT UPPER ...

  5. Oracle 删除表中记录 如何释放表及表空间大小

    1.查看一个表所占的空间大小:SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_NA ...

  6. [转载]Oracle修改表空间大小

    Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...

  7. Oracle修改表空间大小

    在向orale数据库导入数据的时候报 ORA-01658: 无法为表空间 XXX中的段创建 INITIAL 区错误. Oracle我在创建表空间的时候初始化大小为200M,当数据库中数据量达到这个值, ...

  8. oracle表空间大小的限制和DB_BLOCK_SIZE的概念

    之前接触的项目表空间最大也不超过10G,所以导入数据库时一直使用导入本地的oracle数据库文件的方法,即根据dmp文件大小设置一个数据文件,设定表空间最大值. --创建表空间,数据文件为'F:\ap ...

  9. 查询sql数据库中表占用的空间大小

    最近在给一家客户做系统维护时,需要查看数据库表的大小,相关的sql如下: 先在左上角下拉框中选对要查的数据库再执行以下语句 1. exec sp_spaceused '表名'          --( ...

随机推荐

  1. Python基础(二)之字符串

    字符串在python语言中极为常用,下面就带大家来一起回顾一下字符串常用的方法: 1.count 作用:统计字符串中字符的个数 例: str_yu = 'xiAoyuhaha' print(str_y ...

  2. dom4J 学习

    Java给我们提供了标准的W3C接口实现,已完成对XML的处理.主要有两大类,分别是DOM操作,SAX解析.DOM可以将XML加载到内存中,对XML进行方便的增删查改.由于是将整个XML都加载到内存中 ...

  3. oracle修改字符集

    在linux下面安装了oracle 11G,由于安装的时候没有注意导致字符集问题,impdp导入操作后中文乱码. 1.用命令select userenv('language') from dual; ...

  4. owncloud7.0.2.1升级8.0.3

    进入更新中心升级,会自动备份下载安装,安装完提示更新数据库,跳转页面后提示需要php5.4以上版本,检查当前环境为php5.3.3.服务器为CentOS6.4,使用yum更新最新版本即5.3.3.   ...

  5. 安利一个MVC的好东西,RazorGenerator.MsBuild,可以自动编译cshtml文件

    在传统的asp.net webForm 开发里,在发布时,如果选择预编译,就会自动将所有的aspx 文件编译,在发布后的目录里,就看不到aspx的源代码了,同时因为是预编译的,所以每个页面打开速度都挺 ...

  6. Android性能优化典范

    来源:http://hukai.me/android-performance-patterns/#jtss-tsina 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主 ...

  7. nodejs + ionic2 + cordova环境搭建

    1.nodejs 下载地址:https://nodejs.org/zh-cn/,执行默认安装就可以,可执行命令 node(环境变量) 2.修改 npm 源,执行:npm config set regi ...

  8. 国内常用DNS地址介绍

    1.谷歌全球通用DNS地址: 首选DNS地址:8.8.8.8 备选DNS地址:8.8.4.4 2.国内知名的114 DNS地址 首选DNS地址:114.114.114.114 备选DNS地址:114. ...

  9. Linux中fork的秘密

    linux中fork()函数详解         一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以 ...

  10. .net工作准备系列--01前言

    注:学习参考朱毅编著的进入IT名企必读200题. 内容重在自我学习与巩固. 前言: 章节划分 01应聘须知 02基础知识(重点) 03进阶知识 04重点应用(aspnet第一部分) 04重点应用(as ...