1、因为oracle运行在Linux系统下,首先,要连接Linux系统。
2、连上后,进行oracle控制台。输入命令: sqlplus / as sysdba;
3、在sql命令行,输入:
SELECT UPPER(FTABLESPACE_NAME) "表空间名",DTOT_GROOTTE_MB "表空间大小(M)",DTOT_GROOTTE_MB - FTOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((DTOT_GROOTTE_MB - FTOTAL_BYTES) / DTOT_GROOTTE_MB 100,2),'99099') || '%' "使用比",FTOTAL_BYTES "空闲空间(M)",FMAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 1024), 2) MAX_BYTES,
FROM SYSDBA_FREE_SPACE,GROUP BY TABLESPACE_NAME) F,
(SELECT DDTABLESPACE_NAME,ROUND(SUM(DDBYTES) / (1024 1024), 2) TOT_GROOTTE_MB,
FROM SYSDBA_DATA_FILES DD,GROUP BY DDTABLESPACE_NAME) D,
WHERE DTABLESPACE_NAME = FTABLESPACE_NAME,ORDER BY 1;
4、这样就可以查看到相应结果。 完成效果图。
--1、查看表空间的名称及大小
select
ttablespace_name,
round(sum(bytes/(10241024)),0)
ts_size
from
dba_tablespaces
t,
dba_data_files
d
where
ttablespace_name
=
dtablespace_name
group
by
ttablespace_name;
--2、查看表空间物理文件的名称及大小
select
tablespace_name,
file_id,
file_name,
round(bytes/(10241024),0)
total_space
from
dba_data_files
order
by
tablespace_name;
3查看所有表空间使用情况
select
bfile_id
文件ID号,
btablespace_name
表空间名,
bbytes/1024/1024||'M'字节数,
(bbytes-sum(nvl(abytes,0)))/1024/1024||'M'
已使用,
sum(nvl(abytes,0))/1024/1024||'M'
剩余空间,
round(100
-
sum(nvl(abytes,0))/(bbytes)100,2)||
'%'
占用百分比
from
dba_free_space
a,dba_data_files
b
where
afile_id=bfile_id
group
by
btablespace_name,bfile_id,bbytes
order
by
bfile_id;
总有一款适合你!
1 查看数据库的索引空间大小
在MySQL Workbench中运行以下SQL语句:
— 以GB为单位
SELECT
CONCAT(ROUND(SUM(index_length)/(102410241024), 6), ‘ GB’) AS ‘Total Index Size’
FROM
information_schemaTABLES
WHERE
table_schema LIKE ‘database’;
— 以MB为单位
SELECT
CONCAT(ROUND(SUM(index_length)/(10241024), 6), ‘ MB’) AS ‘Total Index Size’
FROM
information_schemaTABLES
WHERE
table_schema LIKE ‘database’;
其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:
2 查看数据库的数据空间大小
在MySQL Workbench中运行以下SQL语句:
— 以GB为单位
SELECT
CONCAT(ROUND(SUM(data_length)/(102410241024), 6), ‘ GB’) AS ‘Total Data Size’
FROM
information_schemaTABLES
WHERE
table_schema LIKE ‘database’;
— 以MB为单位
SELECT
CONCAT(ROUND(SUM(data_length)/(10241024), 6), ‘ MB’) AS ‘Total Data Size’
FROM
information_schemaTABLES
WHERE
table_schema LIKE ‘database’;
其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:
3 查看数据库中所有表的信息
在MySQL Workbench中运行以下SQL语句,查看数据库中所有表的表名、表行数、数据空间大小、索引空间大小和总大小:
SELECT
CONCAT(table_schema,’’,table_name) AS ‘Table Name’,
table_rows AS ‘Number of Rows’,
CONCAT(ROUND(data_length/(10241024),6),’ MB’) AS ‘Data Size’,
CONCAT(ROUND(index_length/(10241024),6),’ MB’) AS ‘Index Size’,
CONCAT(ROUND((data_length+index_length)/(10241024),6),’ MB’) AS’Total Size’
FROM
information_schemaTABLES
WHERE
table_schema LIKE ‘database’;
其中,database是待查看数据库的名称,例如:lsqdb%。
打开oracle控制台,在oracle命令行中,输入命令。
一、首先,要连接Linux系统。
二、连上后,进行oracle控制台。输入命令: sqlplus / as sysdba;
三、在oracle命令行中,输入: select t1name,t2name from v$tablespace t1,v$datafile t2 where t1ts# = t2ts#;
四、这样就可以查看oracle数据库的表空间数据文件位置了。
一 查询某个表所在表空间的简单方法
PostgreSQL 提供类似" \ "命令很方便得到相关信息,命令如下:
skytf=> \d test_2
Table "skytftest_2"
Column | Type | Modifiers
--------+-----------------------+-----------
id | integer |
obj_id | integer | not null
name | character varying(64) |
Indexes:
"idx_hash_name" hash (name)
"idx_test_2" btree (id, obj_id)
Tablespace: "tbs_skytf_idx"
备注:如果这个表的表空间为当前数据库的默认表空间,那么上面则不会显示 Tablespace 信息,
相反,则会显示这张有的表空间,例如上面的表 test_2 的表空间为 tbs_skytf_idx,而
表空间 "tbs_skytf_idx" 不是数据库 skytf 的默认表空间, 那么如何查询数据库的默认
表空间呢,可以通过以下命令查询。
--11 查询数据库的默认表空间
skytf=> select datname,dattablespace from pg_database where datname='skytf';
datname | dattablespace
---------+---------------
skytf | 14203070
(1 row)
skytf=> select oid,spcname from pg_tablespace where oid=14203070;
oid | spcname
----------+-----------
14203070 | tbs_skytf
(1 row)
备注:通过以上查出数据库 skytf 的默认表空间为 tbs_skytf。
二 批量查询数据库表和索引的表空间
--21 查询表和索引所在的表空间
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)), tbspcname
from pg_class a, pg_tablespace tb
where areltablespace = tboid
and arelkind in ('r', 'i')
order by arelpages desc;
备注:上面只取了部分结果,这个查询能够查询表和索引所处的表空间,但是有一点需要注意,这个查询
仅显示表空间不是数据库默认表空间的数据库对像,而我们通常需要查出位于数据库默认表空间的
对像,显然上面的查询不是我们想要的,接下来看另一个查询。
--22 查询位于默认数据库表空间的对像
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)),reltablespace,relowner
from pg_class a
where arelkind in ('r', 'i')
and reltablespace='0'
order by arelpages desc;
备注:这个查询加入限制条件 reltablespace='0',即可查找出位于当前数据库默认表空间的
数据库表和索引。 通常这才是我们想要的结果,接下来可以把部分表转移到其它表空间上去,转移
的方法可以用 "ALTER TABLE move tablespace "或者重建索引移表空间等方法,这里不详细介绍。
--23 查询在某个表空间上的对像
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)),reltablespace,relowner
from pg_class a, pg_tablespace tb
where arelkind in ('r', 'i')
and areltablespace=tboid
and tbspcname='tablespace_name'
order by arelpages desc;
--24 手册上对于 pgclass 视图的 reltablespace 字段解释
The tablespace in which this relation is stored If zero, the database is default tablespace is
implied (Not meaningful if the relation has no on-disk file)
oracle 数据库里查看表空间使用状况;
oracle表空间的事情状况要经常查看,一般空闲比例过低的时候就应该考虑增大表看空间了。查看方法如下SQL:
方法一:
select dbftablespace_name,
dbftotalspace "总量(M)",
dbftotalblocks as 总块数,
dfsfreespace "剩余总量(M)",
dfsfreeblocks "剩余块数",
(dfsfreespace / dbftotalspace) 100 "空闲比例"
from (select ttablespace_name,
sum(tbytes) / 1024 / 1024 totalspace,
sum(tblocks) totalblocks
from dba_data_files t
group by ttablespace_name) dbf,
(select tttablespace_name,
sum(ttbytes) / 1024 / 1024 freespace,
sum(ttblocks) freeblocks
from dba_free_space tt
group by tttablespace_name) dfs
where trim(dbftablespace_name) = trim(dfstablespace_name)
方法二:
SELECT Totalname "Tablespace Name",
Free_space, (total_space-Free_space) Used_space, total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sysdba_free_space
group by tablespace_name
) Free,
(select bname, sum(bytes/1024/1024) TOTAL_SPACE
from sysv_$datafile a, sysv_$tablespace B
where ats# = bts#
group by bname
) Total
WHERE FreeTablespace_name = Totalname
当发现有的表空间不够的错误时,处理如下:
1:找出该表空间对应的数据文件及路径
select from dba_data_files t
where ttablespace_name = 'ARD'
2:增大数据文件
alter database datafile '全路径的数据文件名称' resize M
3:增加数据文件
alter tablespace 表空间名称
add datafile '全路径的数据文件名称' M
注解:表空间尽量让free百分比保持在10%以上,如果低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2G
可以通过PL/SQL查看。\x0d\1 查看所有表空间大小\x0d\ select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; \x0d\2 未使用的表空间大小 \x0d\select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name; \x0d\\x0d\补充回答:\x0d\查看当前用户每个表占用空间的大小: \x0d\Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name
以上就是关于怎么查看oracle表空间,剩余大小,表空间利用全部的内容,包括:怎么查看oracle表空间,剩余大小,表空间利用、如何使用SQL语句查询数据库及表的空间容量、怎么通过SQL语句查看MySQL数据库的表空间状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)