查看表空间使用情况

转自http://suan2046.iteye.com/blog/379544

查找表空间对应数据文件的路径:
select file_name from dba_data_files where tablespace_name = 'TESTSPACE';

所有表空间大小
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 

未使用的表空间大小 
select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name; 

所有使用空间可以这样计算:
select a.tablespace_name,total,free,total-free used from 
( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files 
group by tablespace_name) a, 
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space 
group by tablespace_name) b 
where a.tablespace_name=b.tablespace_name; 

表空间各用户使用情况
select SEGMENT_TYPE,owner,sum(bytes)/1024/1024 from 
       dba_segments
       where tablespace_name='TESTSPACE'
      group by segment_type,owner

增加表空间大小:
可以为表空间增加数据文件:
alter tablespace users add datafile 'c:\oracle\ora81\oradata\sid\user002.dbf' size 100M;
也可以增加表空间原有数据文件尺寸:
alter database datafile 'c:\oracle\ora81\oradata\sid\users.dbf' resize 1000M

在命令行情况下如何将结果放到一个文件里
SQL> spool out.txt 
SQL> select * from v$database; 
SQL> spool off

在 H2 数据库中,虽然不像某些企业级数据库(如 Oracle 或 PostgreSQL)那样提供完整的表空间管理功能,但可以通过一些系统表和内置的 SQL 查询来检查表的存储使用情况。H2 数据库主要将所有数据存储在一个文件中,因此没有传统意义上的“表空间”概念,但可以通过查询系统表来获取与表大小相关的信息。 以下是一些可以用来查看使用情况的查询方法: ### 使用 `INFORMATION_SCHEMA` 查询表大小 H2 提供了 `INFORMATION_SCHEMA.TABLES` 表,其中包含了一些关于表的基本信息,包括近似的行数和存储大小: ```sql SELECT TABLE_NAME, SELF AS "Table_Size", ROW_COUNT_ESTIMATED AS "Row_Count" FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'PUBLIC'; ``` - `SELF` 表示该表在数据库文件中占用的大致字节数。 - `ROW_COUNT_ESTIMATED` 是表的行数估计值。 ### 查询具体的表大小 如果需要更详细的存储信息,可以结合系统表和自定义查询来估算每个表的空间使用情况: ```sql SELECT TABLE_NAME, SELF AS "Data_Size", INDEX_LENGTH AS "Index_Size", (SELF + INDEX_LENGTH) AS "Total_Size" FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'PUBLIC'; ``` - `SELF` 表示数据部分的大小。 - `INDEX_LENGTH` 表示索引部分的大小。 ### 使用 `SCRIPT` 命令导出数据库结构和大小信息 如果需要更全面的数据库文件信息,可以使用 `SCRIPT` 命令导出整个数据库的 SQL 脚本,这将包括所有表、索引和数据,从而帮助评估数据库的整体大小: ```sql SCRIPT TO 'backup.sql'; ``` 这将生成一个包含完整数据库结构和数据的 SQL 文件,可用于分析数据库文件的实际大小。 ### 使用 Java API 获取数据库文件大小 如果 H2 数据库是以文件形式存储(默认方式),可以通过文件系统查看数据库文件的大小。例如,在 Java 中可以这样获取: ```java import java.io.File; public class H2DatabaseSizeChecker { public static void main(String[] args) { String dbFilePath = "path/to/your/database"; // 不包含 .mv.db 后缀 File dbFile = new File(dbFilePath + ".mv.db"); if (dbFile.exists()) { long sizeInBytes = dbFile.length(); System.out.println("Database file size: " + sizeInBytes + " bytes"); } else { System.out.println("Database file does not exist."); } } } ``` ### 查看表空间使用情况的注意事项 - H2 的 `INFORMATION_SCHEMA.TABLES` 中的大小信息是估计值,可能不会完全精确。 - 对于频繁更新的表,建议定期运行 `ANALYZE` 命令以更新统计信息: ```sql ANALYZE; ``` - 如果使用的是内存数据库(`mem:` 模式),则无法通过文件系统查看数据库大小。 通过这些方法,可以在 H2 数据库中有效地监控和分析表的存储使用情况[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值