查看Oracle表空间SQL语句.pdf
文本预览下载声明
查看Oracle表空间SQL语句
1.查看所有表空间大小
SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 tablespacesize_M FROM
DBA_DATA_FILES
GROUPBYTABLESPACE_NAME;
2.未使用的表空间大小
SELECTTABLESPACE_NAME,SUM(BYTES)/1024/1024TABSPACE_FREE_SIZE_MFROM
DBA_FREE_SPACE
groupbyTABLESPACE_NAME;
3.所有使用空间可以这样计算
SELECTa.tablespace_name,a.total,b.free,a.total-b.freeusedfrom
( SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 TOTAL FROM
DBA_DATA_FILES
GROUPBYTABLESPACE_NAME)A,
(SELECTTABLESPACE_NAME,SUM(BYTES)/1024/1024FREEFROMDBA_FREE_SPACE
GROUPBYTABLESPACE_NAME)B
wherea.tablespace_name=b.tablespace_name;
4.下面这条语句查看所有段的大小
selectsegment_nam,sum(bytes)/1024/1024fromUSER_EXTENTSGROUPBYsegment_name;
5.在命令行情况下如何将结果放到一个文件里 用到了telnet
SETTRIMSPOOLON
SETLINESIZE2000
SETPAGESIZE2000
SETNEWPAGE 1
SETHEADINGOFF
SETTERMOFF
SPOOLD:\EXP.TXT
SELECT*FROMV$DATABASE;
spooloff
6.查看当前正在使用的临时表空间大小
SELECT SE.USERNAME,SE.SID,SU.BLOCKS*TO_NUMBER(RTRIM(P.VALUE)) AS
SPACE,tablespace,segtype,sql_text
FROMV$SORT_USAGESU,V$PARAMETERP,V$SESSIONSE,V$SQLS
WHEREP.NAME=db_block_size
ANDSU.SESSION_ADDR=SE.SADDR
ANDS.HASH_VALUE=SU.SQLHASH
ANDS.ADDRESS=SU.SQLADDR
orderbyse.username,se.sid;
7.查询所有的表空间
SELECTTABLESPACE_NAMEFROMDBA_TABLESPACES;
8.查看表空间中分布的用户信息
SELECTTABLESPACE_NAME,OWNER,SUM(BYTES)FROMDBA_SEGMENTS
GROUPBYTABLESPACE_NAME,OWNER;
9.查看表空间已经使用的百分比
SELECT A.TABLESPACE_NAME,A.BYTES/1024/1024 Sum
MB,(A.BYTES-B.BYTES)/1024/1024usedMB,B.BYTES/1024/1024freeMB,
round(((a.bytes-b.bytes)/a.bytes)*100,2)percent_used FROM
(SELECTTABLESPACE_NAME,SUM(BYTES)BYTES FROM DBA_DATA_FILES GROUP
BYTABLESPACE_NAME)A,
(SELECT TABLESPACE_NAME,SUM(BYTES) BYTES, MAX(BYTES) LARGEST FROM
DBA_FREE_SPACEGROUPBYTABLESPACE_NAME)B
WHEREA.TABLESPACE_NAME=B.TABLESPACE_NAME
ORDERBY((A.BYTES-B.BYTES)/A.BYTES)DESC;
--SumMB表示表空间所有的数据文件总共在操作系统占用磁盘空间的大小
--比如:test表空间有2个数据文件,datafile1为300MB,datafile2为400MB,那么test表空
间的 “SumMB就是700MB
--
显示全部