表空间查询

Posted 挥戈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表空间查询相关的知识,希望对你有一定的参考价值。


--sys 登录,查询表空间
SELECT FREE.TABLESPACE_NAME,

ROUND(TOTAL.MB, 2) AS TOTAL_MB,
ROUND(TOTAL.MB - FREE.MB, 2) AS USED_MB,
ROUND(TOTAL.MB, 2) - ROUND(TOTAL.MB - FREE.MB, 2) FREE_MB,
  ROUND((1 - FREE.MB / TOTAL.MB) * 100, 2) || ‘%‘ AS USED_PCT,
TOTAL.FILE_NAME

FROM (SELECT TABLESPACE_NAME,
SUM(BYTES) / 1024 / 1024 AS MB   FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) FREE,

(SELECT TABLESPACE_NAME,
FILE_NAME,
SUM(BYTES) / 1024 / 1024 AS MB   FROM DBA_DATA_FILES  GROUP BY TABLESPACE_NAME,
FILE_NAME) TOTAL
WHERE FREE.TABLESPACE_NAME = TOTAL.TABLESPACE_NAME;

--sys 登录,查询临时表空间
SELECT D.TABLESPACE_NAME,
ROUND((F.BYTES_FREE + F.BYTES_USED) / 1024 / 1024, 2) TOTAL_MB,

ROUND(NVL(P.BYTES_USED, 0) / 1024 / 1024, 2) USED_MB,
ROUND(((F.BYTES_FREE + F.BYTES_USED) - NVL(P.BYTES_USED, 0)) / 1024 / 1024, 2) FREE_MB,
ROUND((ROUND(NVL(P.BYTES_USED, 0) / 1024 / 1024, 2) /
ROUND((F.BYTES_FREE + F.BYTES_USED) / 1024 / 1024, 2)) * 100,
2) || ‘%‘ AS USED_PCT,
D.FILE_NAME "Datafile name"

FROM SYS.V_$TEMP_SPACE_HEADER F, DBA_TEMP_FILES D, SYS.V_$TEMP_EXTENT_POOL P
WHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME
AND F.FILE_ID(+) = D.FILE_ID
AND P.FILE_ID(+) = D.FILE_ID
ORDER BY D.TABLESPACE_NAME;

SELECT T3.USERNAME, T3.DEFAULT_TABLESPACE, T3.TEMPORARY_TABLESPACE, T2.NAME, T4.FILE_NAME
FROM V$TABLESPACE T1, V$DATAFILE T2, DBA_USERS T3, DBA_TEMP_FILES T4
WHERE T1.TS# = T2.TS#
AND T1.NAME = T3.DEFAULT_TABLESPACE
AND T3.TEMPORARY_TABLESPACE = T4.TABLESPACE_NAME;

  

  1. SELECT A.A1 表空间名称,
  2. C.C2 类型,
  3. C.C3 区管理,
  4. B.B2 / 1024 / 1024 表空间大小M,
  5. (B.B2 - A.A2) / 1024 / 1024 已使用M,
  6. SUBSTR((B.B2 - A.A2) / B.B2 * 100, 1, 5) 利用率
  7. FROM (SELECT TABLESPACE_NAME A1, SUM(NVL(BYTES, 0)) A2
  8. FROM DBA_FREE_SPACE
  9. GROUP BY TABLESPACE_NAME) A,
  10. (SELECT TABLESPACE_NAME B1, SUM(BYTES) B2
  11. FROM DBA_DATA_FILES
  12. GROUP BY TABLESPACE_NAME) B,
  13. (SELECT TABLESPACE_NAME C1, CONTENTS C2, EXTENT_MANAGEMENT C3 FROM DBA_TABLESPACES) C
  14. WHERE A.A1 = B.B1
  15. AND C.C1 = B.B1;



  1. 查询oracle中所有用户信息 

       select  * from dba_users;

  2. 只查询用户和密码

       select username,password from dba_users; 

  3. 查询当前用户信息

       select * from dba_ustats;

  4. 查询用户可以访问的视图文本

       select * from dba_varrays;

   5. 查询数据库中所有视图的文本 

       select * from dba_views;

   6. 查看当前用户的表

       select  table_name  from user_tables;

   7. 查看所有用户的表

       select  table_name  from all_tables;

   8. 查看系统表

       select  table_name  from dba_tables;

   9.查看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,通过它们之间的关联关系,我们得到了表空间的相关信息。

 

 

 

 


以上是关于表空间查询的主要内容,如果未能解决你的问题,请参考以下文章

oracle表空间使用率统计查询

oracle查询表空间的位置

Oracle-查询表空间使用量

如何查询oracle表空间使用情况

Oracle中如何查询所有表及其所使用的表空间

Hibernate的HQL多表查询