我使用以下脚本向我展示了使用Oracle 9i数据库时,如果表空间中的一个或多个段已满(还保留了自动扩展区的帐户)。
将数据库升级到10g后,即使段已满,也不会返回任何内容。
为什么它不再起作用了?我应该做些什么修改才能使它起作用?
这是剧本:
SELECT rpad(s.owner,10) "Owner",
rpad(s.segment_type,12) "Tip segment",
rpad(s.segment_name,25) "Nume segment",
rpad(tablespace_name,15) "Tablespace",
s.next_extent * ( 1 + s.pct_increase / 100 )/1024 "Urmatorul extent"
FROM dba_segments s
WHERE 2*s.next_extent * ( 1 + s.pct_increase / 100 ) >
( SELECT MAX( f.bytes )
FROM dba_free_space f
WHERE f.tablespace_name = s.tablespace_name )
order by 1,2
答案 0 :(得分:0)
您是否从字典管理的表空间更改为本地管理的表空间?肯定是10g(这是一个奇怪的事情升级,因为它已经被支持了几年),本地管理的表空间是默认的。如果内存服务,本地管理的表空间仍然是9i中的首选方法,但是在很久以前我不会相信我的记忆。
根据定义,本地管理的表空间具有NULL pct_increase
。这将导致您的WHERE
子句不返回行(表达式2*s.next_extent * ( 1 + s.pct_increase / 100 )
将评估为NULL)。