实际应用中我们经常会遇到这样错误:某张表再次扩展时表空间没有足够大的空块,结果无法扩展。
我想写段脚本,用以定期检查将要扩展的表的所用的表空间是否有足够大的块。分解为两个问题:
1、如何知道指定表是否将要再次扩展了,从哪个系统表中知道。最好是不需要dba权限。
2、检查指定的表空间是否有足够大的空块。这个问题已解决:
SELECT COUNT(*) INTO ln_cnt FROM user_free_space WHERE tablespace_name='XXXX' AND bytes>YYYY;第一个问题如何解决呢?
我想写段脚本,用以定期检查将要扩展的表的所用的表空间是否有足够大的块。分解为两个问题:
1、如何知道指定表是否将要再次扩展了,从哪个系统表中知道。最好是不需要dba权限。
2、检查指定的表空间是否有足够大的空块。这个问题已解决:
SELECT COUNT(*) INTO ln_cnt FROM user_free_space WHERE tablespace_name='XXXX' AND bytes>YYYY;第一个问题如何解决呢?
user_extents-->blocksif user_tables.blocks 接近 sum(user_extents.blocks)说明表即将扩展
FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)