如何找出位于HWM之上的对象

[复制链接]
查看11 | 回复3 | 2007-5-20 04:01:01 | 显示全部楼层 |阅读模式
1. 如题,在减小一个表空间的时候,ORA-03297
采用:
alter table tablename move;
alter tabelspace tablespace_name coalesce;
均不起作用, 试问,我怎样才可以把处于 hwm 之上的对象找出来,然后把它移到另外的表空间去(最好不用使用imp,exp之类的)?
2. 动态性能视图在何时会更新?
比如,我在删除一个表的 2 条记录以后, user_tablenum_rows还是妹变化
回复

使用道具 举报

千问 | 2007-5-20 04:01:01 | 显示全部楼层
1、根据dba_extents 去找
2、那个是分析以后才变化,是一个估计值
回复

使用道具 举报

千问 | 2007-5-20 04:01:01 | 显示全部楼层
A SQL refer:
[php]
SQL> col segment_name for a20
SQL> select segment_name,owner from dba_extents
2where (file_id,block_id) in
3(select file_id,max(block_id) from dba_extents group by file_id);
SEGMENT_NAME OWNER
-------------------- ------------------------------
TEST
SYS
_SYSSMU3$
SYS
EYGLE
EYGLE
.
[/php]
回复

使用道具 举报

千问 | 2007-5-20 04:01:01 | 显示全部楼层
1. alter tabelspace tablespace_name coalesce;
oracle文档上说它并不会合并does not coalesce free extents that are separated by data extents
, 而网上很多文章都说它可以合并表空间的碎片,但是不会降低hwm,
请问一下它的原理?
另外大师们可不可以解释一下 它和 alter table table_name move的区别?
2. 请教eygle:
采用你的方法,我把所以的对象全部找了出来,并且把非sys的对象全部
都移动到另外的表空间,可是在 resize 原来表空间的时候,还是ORA-03297
3. 对于第二个问题,可不可以具体点,比如 多少时间oracle对这些动态视图更新一次,
或者是每次触发什么事件时,或者由某个后台进程更新?
我们有没有什么办法手动地要数据库更新这些视图?
如果这样: 那岂不是我们每次看到的动态性能视图都不能保证是准确的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行