查看数据库表空间(oracle怎么查询所有的表空间的名称)
其实查看数据库表空间的问题并不复杂,但是又很多的朋友都不太了解oracle怎么查询所有的表空间的名称,因此呢,今天小编就来为大家分享查看数据库表空间的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
如何使用SQL语句查询数据库及表的空间容量
sybase公司是世界著名的数据库厂家,其关系数据库产品sybase
sql
server在中国大中型企事业单位中拥有大量的用户。针对获取数据库相关信息也提供了对应的api,以便管理进行维护。
一.sp_spaceused
可看到数据库空间包括日志(对应数据库)
打开sql
advantage
对话框——输入sp_spaceused(上边数据库选择要查的数据库)或直接
use
your_db_name
go
sp_spaceused
go
运行!出现如下信息
database
name:数据库名称
datebase
size:数据库空间总大小
reserved:已分配空间
data数据:已分配空间中数据占用空间大小
index_size索引:已分配空间中index_size索引占用空间大小
unused:为已分配空间中未使用空间大小
计算关系:
reserved(已分配空间)=data+index_size+unused
剩余空间=
datebase
size(总空间)—已分配空间(resrved)
二.sp_helpdb
db_name
可看到数据库占用的数据库设备device的空间信息(对应数据库设备和数据库)
打开sql
advantage
对话框——输入sp_s
helpdb
db
local(local为要看的数据库名字如不输入则显示所有数据库)
运行!显示如下信息:
(一).数据库方面
1.
name:数据库名字
2.
db_size:数据库空间大小
3.
owner:数据库所有者
4.
created:数据库创建时间
5.
status:状态
(二).数据库设备方面
1.
device_fragments:数据库设备名称
2.
size:数据库占用数据库设备的空间大小
单位mb
3.
usage:用法
用途
4.
created:数据库占用的数据库设备的空间的创建时间
5.
free
kbytes
:数据库占用的数据库设备的剩余空间
单位kb
6.
log
only
free
kbytes:数据库日志设备中日志剩余空间
单位kb
注意:由于数据库创建后不一定全部占用数据库设备的所有空间,可以在以后通过增加的方法占用设备空间,因此每增加一次就会有一条数据库设备信息
计算关系:
剩余空间=所有free
kbytes(剩余kb)相加+log
only
free
kbytes
数据库占用数据库设备总空间(size)=size1+size2+……..(所有相加)=数据库总空间(db_size)=
reserved(已分配空间)+剩余空间
free
kbytes(剩余kb)相加+log
only
free
kbytes=
datebase
size(总空间)—已分配空间(resrved)
oracle怎么查询所有的表空间的名称
oracle数据库中,查询素有表空间的名称只需要一条sql语句即可:
select tablespace_name from user_tablespaces;
结果输出如下图:
在上式的sql中,“user_tablespaces”即为表空间信息所在表,所需的表空间信息需要从该表中获取,“tablespace_name”即为表空间名称,
如果希望查询所有表空间名称和其他相关信息,可以将使用如下sql语句:
select* from user_tablespaces;
结果输出如下:
扩展资料:
针对表空间,还有其他的查询可供参考:
1、查看表空间的名称及对应大小
SELECT t.tablespace_name, round(SUM(bytes/(1024* 1024)), 0) ts_sizeFROM
dba_tablespaces t, dba_data_files dWHERE t.tablespace_name=
d.tablespace_nameGROUP BY t.tablespace_name;
输出结果如下:
2、查看表空间物理文件的名称及大小
SELECT tablespace_name,file_id,file_name,round(bytes/(1024* 1024), 0) total_space
FROM dba_data_filesORDER BY tablespace_name;
输出结果为:
3、查询当前用户所有表名及其所属表空间
selecttable_name表名,tablespace_name所使用表空间fromuser_tables;
输出结果为:
查看数据库中有哪些表空间
一、系统表空间
在 MySQL数据目录下有一个名为 ibdata1的文件,可以保存一张或者多张表。
923275 12M-rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
这个文件就是 MySQL的系统表空间文件,默认为 1个,可以有多个,只需要在配置文件 my.cnf里面这样定义即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系统表空间不仅可以是文件系统组成的文件,也可以是非文件系统组成的磁盘块,比如裸设备,定义也很简单innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系统表空间里都有些啥内容?
具体内容包括:double writer buffer、 change buffer、数据字典(MySQL 8.0之前)、表数据、表索引。
那 MySQL为什么现在主流版本默认都不是系统表空间?
究其原因,系统表空间有三个最大的缺点:原因 1:无法做到自动收缩磁盘空间,造成很大的空间浪费。即使它包含的表都被删掉,这部分空间也不会自动释放。
二、单表空间
单表空间不同于系统表空间,每个表空间和表是一一对应的关系,每张表都有自己的表空间。具体在磁盘上表现为后缀为.ibd的文件。比如表 t1,对应的表空间文件为 t1.ibd917107 96K-rw-r----- 1 mysql mysql 96K 3月 18 16:13 t1.ibd
单表空间如何应用到具体的表呢?
有两种方式:方式 1:在配置文件中开启。在配置文件中开启单表空间设置参数 innodb_filer_per_table,这样默认对当前库下所有表开启单表空间。innodb_file_per_table=1另外也可以直接建表时指定单表空间mysql> create table t1(id int, r1 char(36)) tablespace innodb_file_per_table;
Query OK, 0 rows affected(0.04 sec)
单表空间除了解决之前说的系统表空间的几个缺点外,还有其他的优点,详细如下:
1. truncate table操作比其他的任何表空间都快;
2.可以把不同的表按照使用场景指定在不同的磁盘目录;
比如日志表放在慢点的磁盘,把需要经常随机读的表放在 SSD上等。
mysql> create table ytt_dedicated(id int) data directory='/var/lib/mysql-files';
Query OK, 0 rows affected(0.04 sec)3.可以用 optimize table来收缩或者重建经常增删改查的表。一般过程是这样的:建立和原来表一样的表结构和数据文件,把真实数据复制到临时文件,再删掉原始表定义和数据文件,最后把临时文件的名字改为和原始表一样的。
三、通用表空间
通用表空间先是出现在 MySQL Cluster里,也就是 NDB引擎。从 MySQL 5.7引入到 InnoDB引擎。通用表空间和系统表空间一样,也是共享表空间。每个表空间可以包含一张或者多张表,也就是说通用表空间和表之间是一对多的关系。
怎么查看数据库表空间足不足oracle
这个方法很多吧,可以使用语句查询,也可以使用oracle数据库工具查看,还可以用EM。
我这有个自己写的sql脚本,是平时自己看公司数据库表空间状态时用的。你可以参考下:
.查看所有表空间的碎片程度(值在30以下表示碎片很多)
select tablespace_name,sum(bytes),sum(free),sum(free)*100/sum(bytes) from(select
b.file_id file_ID,
b.tablespace_name tablespace_name,
b.bytes Bytes,
(b.bytes-sum(nvl(a.bytes,0))) used,
sum(nvl(a.bytes,0)) free,
sum(nvl(a.bytes,0))/(b.bytes)*100 Percent
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id) group by tablespace_name order by sum(free)*100/sum(bytes);
查看表空间是否自动扩展
select file_name,autoextensible,increment_by from dba_data_files;
表空间自动扩展
alter database datafile'path:\datafile name' autoextend on next 1M maxsize 100M;
表空间大小
select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024
from dba_data_files
group by tablespace_name;
使用情况
select df.tablespace_name"表空间名",totalspace"总空间M",freespace"剩余空间M",round((1-freespace/totalspace)*100,2)"使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;
查看数据库表空间和oracle怎么查询所有的表空间的名称的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!