查询Oracle数据库表空间和数据文件方法

2016-02-19 18:48 2 1 收藏

今天图老师小编要跟大家分享查询Oracle数据库表空间和数据文件方法,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - 编程语言 】

  表空间是oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据文件只可与一个表空间相联系,这是逻辑与物理的统一。了解表空间和数据文件的的属性及使用率,是数据库管理员的一项重要职责。下面以oracle9i为例,详细介绍查询Oracle数据库表空间信息和数据文件信息的方法。

  一、查看Oracle数据库中表空间信息的方法

  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
  (selecttablespace_namea1,sum(nvl(bytes,0))a2fromdba_free_spacegroupbytablespace_name)a,
  (selecttablespace_nameb1,sum(bytes)b2fromdba_data_filesgroupbytablespace_name)b,
  (selecttablespace_namec1,contentsc2,extent_managementc3fromdba_tablespaces)c
  wherea.a1=b.b1andc.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,通过它们之间的关联关系,我们得到了表空间的相关信息。

  语句执行结果如下:

  上面描述中分别介绍了查看Oracle数据库中表空间信息的工具方法和命令方法。

  二、查询Oracle数据库中数据文件信息的方法

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

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

  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)利用率
  fromdba_free_spacea,dba_data_filesb
  wherea.file_id=b.file_id
  groupbyb.tablespace_name,b.file_name,b.bytes
  orderbyb.tablespace_name

  语句执行结果如下:

  上明描述中分别介绍了查看Oracle数据库中数据文件信息的工具方法和命令方法。

  三、查看临时表空间和数据库文件的方法

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

  select
  a.talbespace_name表空间名称,
  b.bytes大小bytes,
  b.file_name数据文件名
  fromdba_tablespacesa,dba_data_filesb
  Wherea.talbespace_name=b.talbespace_nameanda.contents=’TEMPORARY’;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  查询结果如下:

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

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

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

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

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

来源:https://www.tulaoshi.com/n/20160219/1619014.html

延伸阅读
在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定。 一.表空间的自由空间 通过对表空间的自由空间的观察,可用来判断分配给某个表空间的空间是太多还是不够。请看下列的语句 SQL select a.file_id "FileNo",a.tablespace_name"Tablespace_name",2 ...
您正在看的ORACLE教程是:Oracle回滚表空间数据文件误删除处理。 一、 引言: 回滚段是数据库的一部分,它记录数据库变更的信息。使用这些信息实现数据库的读一致性及其恢复。若回滚段出现故障,则数据库不能正常启动,导致数据库瘫痪,用户无法读写数据。若能将回滚段的故障排除,则不会影响用户的实际数据。笔者最近在实际工作中遇到一个问...
Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE...
正在看的ORACLE教程是:在ORACLE移动数据库文件。 ---- ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。由于磁盘空间的变化,或者基于数据库磁盘I/O 性能的调整等,数据库管理员可能会考虑移动数据库文件。下面以UNIX平台为例,分别讨论三种数据库文件的移动方法。 ---- 一.移动数据文件: ---- 可以用ALTER DATABASE,ALTE...
这篇文章里介绍了master数据库中两个非常有用但在SQL Server在线教科书中没有提到的存储过程。 这些系统过程对于处理以下任务非常方便,如判断使用的存储空间大小、行数、用户表索引等等。 第一个过程sp_MSForEachDB对于感兴趣的服务器上的每个数据库执行三条命令。 ◆@command1:第一个执行的命令 ◆@replacechar:用另一个占...

经验教程

415

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部