--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;
---------------------
作者:Geekool
来源:CSDN
原文:https://blog.csdn.net/hualei_c/article/details/87989592
版权声明:本文为博主原创文章,转载请附上博文链接!