oracle怎么查看表空间

01. 概述

表空间在 Oracle 数据库中扮演着非常重要的角色,它是存储表、索引、视图、存储过程、触发器等对象信息的容器。因此,管理表空间的使用情况、容量、空间释放等是 Oracle 数据库管理员必须要掌握的技能之一。在本文中,我们将详细介绍如何使用 SQL 语句查询 Oracle 数据库中的表空间信息。

02. 查看表空间信息

2.1 查询表空间名称

在 Oracle 数据库中,表空间名称可以用来标识各个表空间之间的差异。因此,查询表空间名称是非常常见的需求。

SELECT tablespace_name FROM dba_tablespaces;

以上 SQL 语句将返回数据库中所有表空间的名称。

2.2 查询表空间的大小和空闲情况

在 Oracle 数据库中,表空间的大小和空闲情况是非常重要的信息。可以通过以下 SQL 语句来查询表空间的总大小、已用空间、剩余空间及空间使用率。

SELECT tablespace_name AS "表空间名称",

sum(bytes) / (1024 * 1024) AS "表空间大小(M)",

sum(bytes - blocks * 1024) / (1024 * 1024) AS "已使用空间(M)",

sum(blocks * 1024) / (1024 * 1024) AS "剩余空间(M)",

round((sum(bytes - blocks * 1024) / sum(bytes)) * 100,2) AS "空间使用率(%)"

FROM dba_free_space

WHERE tablespace_name NOT LIKE '%UNDO%'

GROUP BY tablespace_name

UNION ALL

SELECT tablespace_name AS "表空间名称",

sum(bytes) / (1024 * 1024) AS "表空间大小(M)",

sum(bytes - blocks * 1024) / (1024 * 1024) AS "已使用空间(M)",

sum(blocks * 1024) / (1024 * 1024) AS "剩余空间(M)",

round((sum(bytes - blocks * 1024) / sum(bytes)) * 100,2) AS "空间使用率(%)"

FROM dba_data_files

WHERE tablespace_name NOT LIKE '%UNDO%'

GROUP BY tablespace_name;

注: 以上 SQL 语句用了两个 union all 合并了 dba_free_space(已分配但未使用的空间)和 dba_data_files(已使用的空间)两张表。

2.3 查询表空间数据文件信息

表空间的数据文件是用来存储表空间中表、索引等数据库对象的,查询数据文件信息可以帮助 DBA 了解数据文件的位置、状态等信息。

SELECT tablespace_name, file_name, bytes / (1024 * 1024) AS "数据文件大小(M)", status

FROM dba_data_files;

以上 SQL 语句将返回数据库中所有数据文件的信息。

03. 系统表空间和用户表空间

在 Oracle 数据库中,有两类表空间:系统表空间和用户表空间。

3.1 查询系统表空间

系统表空间是 Oracle 数据库内置的表空间,包括 SYSTEM 和 SYSAUX 两个表空间。

SELECT tablespace_name, file_name, bytes / (1024 * 1024) AS "数据文件大小(M)", status

FROM dba_data_files

WHERE tablespace_name IN ('SYSTEM', 'SYSAUX');

3.2 查询用户表空间

用户表空间是由 DBA 和普通用户创建和管理的表空间。

3.2.1 查询已创建的用户表空间

SELECT tablespace_name, contents, extent_management

FROM dba_tablespaces

WHERE tablespace_name NOT IN ('SYSAUX', 'SYSTEM');

3.2.2 创建用户表空间

DBA 可以使用以下 SQL 语句创建用户表空间。

CREATE TABLESPACE user_ts DATAFILE '/u01/app/oracle/oradata/ORCL/user_ts01.dbf' SIZE 10M;

注:以上 SQL 语句创建了一个名为 user_ts 的用户表空间,大小为 10MB。

04. 表空间管理

在 Oracle 数据库中,管理员可以通过以下方法管理表空间的使用情况,包括:为表空间添加数据文件、移除表空间数据文件、调整表空间大小等。

4.1 为表空间添加数据文件

ALTER TABLESPACE user_ts ADD DATAFILE '/u01/app/oracle/oradata/ORCL/user_ts02.dbf' SIZE 10M;

以上 SQL 语句为用户表空间 user_ts 添加了一个大小为 10MB 的数据文件。

4.2 移除表空间数据文件

ALTER TABLESPACE user_ts DROP DATAFILE '/u01/app/oracle/oradata/ORCL/user_ts02.dbf';

以上 SQL 语句从用户表空间 user_ts 中移除了数据文件 /u01/app/oracle/oradata/ORCL/user_ts02.dbf。

4.3 调整表空间大小

管理员可以通过以下 SQL 语句调整表空间的大小:

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/user_ts01.dbf' RESIZE 100M;

以上 SQL 语句将用户表空间 user_ts01.dbf 的大小调整为 100MB。

05. 总结

在 Oracle 数据库中,表空间是一个非常重要的概念,管理好表空间可以有效地控制数据库的使用情况,并且保证数据库的性能和可靠性。本文中我们介绍了多种方法来查询表空间信息,包括了表空间名称、表空间大小、空闲情况、数据文件信息等,并且简单介绍了表空间管理的常用方法。

数据库标签