首页数据库查看数据库表空间(oracle怎么查询所有的表空间的名称)

查看数据库表空间(oracle怎么查询所有的表空间的名称)

编程之家2023-10-22105次浏览

其实查看数据库表空间的问题并不复杂,但是又很多的朋友都不太了解oracle怎么查询所有的表空间的名称,因此呢,今天小编就来为大家分享查看数据库表空间的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

查看数据库表空间(oracle怎么查询所有的表空间的名称)

如何使用SQL语句查询数据库及表的空间容量

sybase公司是世界著名的数据库厂家,其关系数据库产品sybase

sql

server在中国大中型企事业单位中拥有大量的用户。针对获取数据库相关信息也提供了对应的api,以便管理进行维护。

一.sp_spaceused

可看到数据库空间包括日志(对应数据库)

打开sql

查看数据库表空间(oracle怎么查询所有的表空间的名称)

advantage

对话框——输入sp_spaceused(上边数据库选择要查的数据库)或直接

use

your_db_name

go

sp_spaceused

查看数据库表空间(oracle怎么查询所有的表空间的名称)

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怎么查询所有的表空间的名称的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

ip代理服务器,什么是代理ip数据库课后题答案 数据库系统概论课后题答案