查询ORACLE表空间和数据⽂件信息
表空间是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
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group bytablespace_name) a,
(select tablespace_name b1,sum(bytes) b2 from dba_data_files group bytablespace_name) b,
(select tablespace_name c1,contents c2,extent_management c3 fromdba_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,通过它们之间的关联关系,我们得到了表空间的相关信息。
语句执⾏结果如下:
上⾯描述中分别介绍了查看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) 利⽤率
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
语句执⾏结果如下:
上明描述中分别介绍了查看Oracle数据库中数据⽂件信息的⼯具⽅法和命令⽅法。
三、查看临时表空间和数据库⽂件的⽅法
在oracle数据库中,临时表空间主要⽤于⽤户在使⽤order by 、group by语句进⾏排序和汇总时所需的临时⼯作空间。要查询数据库中临时表空间的名称,⼤⼩及数据⽂件,可以查询数据字典dba_tablespaces及dba_data_files。命令如下:
select
a.talbespace_name 表空间名称,
b.bytes ⼤⼩bytes,
oracle数据库表结构怎么看
b.file_name 数据⽂件名
from dba_tablespaces a, dba_data_files b
Where a.talbespace_name=b.talbespace_name ts=’TEMPORARY’;
查询结果如下:
从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使⽤临时⽂件。临时⽂件的信息被存储在数据字典V$tempfile中。命令如下:
Select file#,status,name from V$tempfile;
查询数据字典V$tempfile结果如下:
在上⾯介绍的⽅法中,建议掌握命令⽅法,因为你的环境可能没有图形⼯具,⽽SQLPLUS⼀般情况下
都是可以使⽤的,有了命令脚本,很容易得到表空间和数据⽂件的相关信息。另外,数据库管理员应该多整理命令脚本,在需要时直接执⾏脚本以提⾼⼯作效率。
在数据库管理员的⽇常⼯作中,应该经常查询表空间的利⽤率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利⽤率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据⽂件,扩展现有数据⽂件⼤⼩等⽅法来降低表空间的利⽤率,避免表空间利⽤率接近100%时,将产⽣空间不够的错误
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论