oracle 查看所有表大小、表行数和占用空间信息
时间: 2024-01-14 17:03:04 浏览: 763
你可以使用以下 SQL 语句来查询 Oracle 数据库中所有表的大小、行数和占用空间信息:
```
SELECT
segment_name AS table_name,
segment_type AS table_type,
bytes / 1024 / 1024 AS size_mb,
num_rows,
blocks * 8 AS size_blocks
FROM
user_segments
WHERE
segment_type = 'TABLE';
```
这将返回一个结果集,其中包含所有表的名称、类型、大小(以 MB 为单位)、行数和占用的块数(每个块大小为 8 KB)。请注意,此查询仅适用于当前用户拥有的表。如果需要查询其他用户的表,请使用 `dba_segments` 视图。
相关问题
oracle12c 查看所有表大小、表行数和占用空间信息
可以使用以下 SQL 语句查看 Oracle 数据库中所有表的大小、行数和占用空间信息:
```sql
SELECT
owner,
table_name,
round(num_rows) AS num_rows,
round((num_rows * avg_row_len) / 1024 / 1024, 2) AS size_mb,
round((blocks * 8) / 1024 / 1024, 2) AS space_mb
FROM
all_tables
WHERE
owner NOT IN ('SYS', 'SYSTEM')
ORDER BY
size_mb DESC;
```
其中,`owner` 为表所属用户,`table_name` 为表名,`num_rows` 为表中行数,`avg_row_len` 为平均行长度,`blocks` 为表所占用的块数。
注意,该 SQL 语句只适用于所有者不为 `SYS` 或 `SYSTEM` 的表。如果要查看这些系统表的信息,需要使用其他方法。
oracle表查询行数和容量sql
在Oracle数据库中,你可以使用以下SQL命令来获取表的行数和估计的物理存储空间(也称为数据量或容量):
1. 查询表的行数(总记录数):
```sql
SELECT COUNT(*) FROM table_name;
```
这里`table_name`需要替换为你实际想要查询的表名。
2. 获取表的实际占用空间(数据量):
- 对于确定大小的列(如数值、日期等),可以使用DBA_TAB_COL_STAT视图:
```sql
SELECT SUM(bytes) FROM DBA_TAB_COL_STAT WHERE TABLE_NAME = 'table_name';
```
- 对于不可确定大小的列(如VARCHAR2、BLOB/CLOB等),通常需要估算,可以查看表的统计信息:
```sql
SELECT ROUND(TBS.space_used / 1024 / 1024, 2) MB
FROM USER_TABLE_STATS TBS
WHERE TBS.TABLE_NAME = 'table_name';
```
注意这里`space_used`代表的是每个块的字节数,乘以 blocks_in_table 计算出总大小。
执行以上SQL命令时,确保有足够的权限访问相关信息。
阅读全文