Oracle表空间信息查询

--Oracle表空间信息查询
--DBA_* 描述的是数据库中的所有对象
--ALL_* 描述的是当前用户有访问权限的所有对象
--USER_* 描述的是当前用户所拥有的所有对象
--表名带有“DBA”的需要有DBA权限才能访问

--查询oracle表空间信息
SELECT * FROM DBA_TABLESPACES T;
SELECT * FROM USER_TABLESPACES T;
--查询oracle物理文件信息
SELECT * FROM DBA_DATA_FILES T;
--查询oracle控制文件 
SELECT NAME FROM V$CONTROLFILE;
--查询oracle日志文件 
SELECT MEMBER FROM V$LOGFILE;

--查询oracle对象信息
SELECT * FROM DBA_OBJECTS;
SELECT * FROM ALL_OBJECTS;
SELECT * FROM USER_OBJECTS;
--查询oracle函数和储存过程
SELECT * FROM DBA_SOURCE;
SELECT * FROM ALL_SOURCE;
SELECT * FROM USER_SOURCE;
--查询oracle段信息(包括表、索引等)
SELECT * FROM DBA_SEGMENTS;
SELECT * FROM USER_SEGMENTS;
SELECT *
  FROM USER_SEGMENTS S
 WHERE S.BYTES IS NOT NULL
 ORDER BY S.BYTES DESC;
--查询oracle表信息
SELECT * FROM USER_ALL_TABLES;
SELECT * FROM DBA_TABLES;
SELECT * FROM ALL_TABLES;
SELECT * FROM USER_TABLES;
SELECT *
  FROM USER_TABLES T
 WHERE T.NUM_ROWS IS NOT NULL
 ORDER BY T.NUM_ROWS DESC;
--查询oracle视图
SELECT * FROM DBA_VIEWS;
SELECT * FROM ALL_VIEWS;
SELECT * FROM USER_VIEWS;
--查询oracle所有dblink
SELECT * FROM DBA_DB_LINKS T;
SELECT * FROM ALL_DB_LINKS T;
SELECT * FROM USER_DB_LINKS T;

--查询表空间的名称及大小 
SELECT T.TABLESPACE_NAME,
       ROUND(SUM(BYTES / (1024 * 1024)), 0) || 'M' AS TS_SIZE
  FROM DBA_TABLESPACES T, DBA_DATA_FILES D
 WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
 GROUP BY T.TABLESPACE_NAME;
--查询表空间物理文件的名称及大小 
SELECT TABLESPACE_NAME,
       FILE_ID,
       FILE_NAME,
       ROUND(BYTES / (1024 * 1024), 0) || 'M' TOTAL_SPACE
  FROM DBA_DATA_FILES
 ORDER BY TABLESPACE_NAME;

--查询回滚段名称及大小 
SELECT SEGMENT_NAME,
       TABLESPACE_NAME,
       R.STATUS,
       (INITIAL_EXTENT / 1024) || 'K' AS INITIALEXTENT,
       (NEXT_EXTENT / 1024) || 'K' AS NEXTEXTENT,
       MAX_EXTENTS,
       V.CUREXT CUREXTENT
  FROM DBA_ROLLBACK_SEGS R, V$ROLLSTAT V
 WHERE R.SEGMENT_ID = V.USN(+)
 ORDER BY SEGMENT_NAME;

--查询oracle指定表空间下的所有表
SELECT *
  FROM DBA_TABLES T
 WHERE TABLESPACE_NAME = 'USERS'
   AND T.OWNER = 'TA_TEST_GZNS'
 ORDER BY T.TABLE_NAME;
SELECT * FROM DBA_DATA_FILES T;
SELECT T.TABLESPACE_NAME,
       ROUND(SUM(BYTES / (1024 * 1024)), 0) || 'M' TS_SIZE
  FROM DBA_DATA_FILES T
 GROUP BY T.TABLESPACE_NAME;
--查询表空间的使用情况 
SELECT SUM(BYTES) / (1024 * 1024) || 'M' AS FREE_SPACE, TABLESPACE_NAME
  FROM DBA_FREE_SPACE
 GROUP BY TABLESPACE_NAME
 ORDER BY TABLESPACE_NAME;
--查询表空间的使用情况 
SELECT A.TABLESPACE_NAME,
       A.BYTES TOTAL,
       B.BYTES USED,
       C.BYTES FREE,
       TO_CHAR((B.BYTES * 100) / A.BYTES, 'fm9999990.00') AS "% USED ",
       TO_CHAR((C.BYTES * 100) / A.BYTES, 'fm9999990.00') 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
 ORDER BY A.TABLESPACE_NAME;
--查询表空间的使用情况 
--1G=1024MB 
--1M=1024KB 
--1K=1024Bytes 
--1M=11048576Bytes 
--1G=1024*11048576Bytes=11313741824Bytes 
SELECT A.TABLESPACE_NAME AS "表空间名",
       TOTAL AS "表空间大小",
       FREE AS "表空间剩余大小",
       (TOTAL - FREE) AS "表空间使用大小",
       TOTAL / (1024 * 1024 * 1024) AS "表空间大小(G)",
       FREE / (1024 * 1024 * 1024) AS "表空间剩余大小(G)",
       (TOTAL - FREE) / (1024 * 1024 * 1024) AS "表空间使用大小(G)",
       ROUND((TOTAL - FREE) / TOTAL, 4) * 100 AS "使用率 %"
  FROM (SELECT TABLESPACE_NAME, SUM(BYTES) FREE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) A,
       (SELECT TABLESPACE_NAME, SUM(BYTES) TOTAL
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) B
 WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
 ORDER BY (TOTAL - FREE) / TOTAL DESC;
--查询所有表空间使用情况
SELECT A.FILE_ID "FileNo",
       A.TABLESPACE_NAME "Tablespace_name",
       A.BYTES "Bytes",
       A.BYTES - SUM(NVL(B.BYTES, 0)) "Used",
       SUM(NVL(B.BYTES, 0)) "Free",
       SUM(NVL(B.BYTES, 0)) / A.BYTES * 100 "%free"
  FROM DBA_DATA_FILES A, DBA_FREE_SPACE B
 WHERE A.FILE_ID = B.FILE_ID(+)
 GROUP BY A.TABLESPACE_NAME, A.FILE_ID, A.BYTES
 ORDER BY A.TABLESPACE_NAME;
 
--查询oracle表的数据量
SELECT (T.BYTES / 1024 / 1024) || 'M' AS DBSIZE, T.*
  FROM USER_SEGMENTS T
 WHERE T.BYTES IS NOT NULL
 ORDER BY T.BYTES DESC;
--查询oracle记录条数
SELECT *
  FROM USER_TABLES T
 WHERE T.NUM_ROWS IS NOT NULL
 ORDER BY T.NUM_ROWS DESC;
--查询oracle数据库对象 
SELECT OWNER, OBJECT_TYPE, STATUS, COUNT(*) AS CNT
  FROM ALL_OBJECTS
 GROUP BY OWNER, OBJECT_TYPE, STATUS
 ORDER BY OWNER, OBJECT_TYPE, STATUS;

--查询oracle表大小
SELECT SEGMENT_NAME, BYTES / (1024 * 1024) || 'M' AS BYTESM
  FROM USER_SEGMENTS
 WHERE SEGMENT_TYPE = 'TABLE'
 ORDER BY BYTES DESC;
--查询oracle表大小
SELECT T.OWNER, T.SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 || 'M' AS BYTESM
  FROM DBA_SEGMENTS T
 WHERE T.TABLESPACE_NAME = 'USERS'
   AND T.SEGMENT_TYPE = 'TABLE'
 GROUP BY T.OWNER, T.SEGMENT_NAME
 ORDER BY SUM(BYTES) DESC;
--查询oracle索引大小
SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 || 'M' AS BYTESM
  FROM USER_SEGMENTS
 WHERE SEGMENT_TYPE = 'INDEX'
 GROUP BY SEGMENT_NAME
 ORDER BY SUM(BYTES) DESC;

--查询oracle表空间自动扩展
SELECT A.FILE_NAME,
       A.AUTOEXTENSIBLE,
       A.MAXBYTES / 1024 / 1024 || 'M' AS BYTESM,
       A.INCREMENT_BY
  FROM DBA_DATA_FILES A;
 

猜你喜欢

转载自blog.csdn.net/hualei_c/article/details/87989592