oracle根据索引名删除索引,在ORACLE里按用户名重建索引的方法

---------------------------------------------------------------------------

SET ECHO      OFF;

SET FEEDBACK  OFF;

SET VERIFY    OFF;

SET PAGESIZE  0;

SET TERMOUT   ON;

SET HEADING   OFF;

ACCEPT username CHAR PROMPT 'Enter the index username: ';

spool /oracle/rebuild_&username.sql;

SELECT

'REM +-----------------------------------------------+' || chr(10) ||

'REM | INDEX NAME : ' || owner   || '.'|| segment_name

|| lpad('|', 33 - (length(owner) + length(segment_name)) )

|| chr(10) ||

'REM | BYTES      : ' || bytes

|| lpad ('|', 34-(length(bytes)) ) || chr(10) ||

'REM | EXTENTS    : ' || extents

|| lpad ('|', 34-(length(extents)) ) || chr(10) ||

'REM +-----------------------------------------------+' || chr(10) ||

'ALTER INDEX ' || owner || '.'|| segment_name || chr(10) ||

'REBUILD ' || chr(10) ||

'TABLESPACE ' || tablespace_name || chr(10) ||

'STORAGE ( ' || chr(10) ||

'  INITIAL     ' || initial_extent || chr(10) ||

'  NEXT        ' || next_extent || chr(10) ||

'  MINEXTENTS  ' || min_extents || chr(10) ||

'  MAXEXTENTS  ' || max_extents || chr(10) ||

'  PCTINCREASE ' || pct_increase || chr(10) ||

');' || chr(10) || chr(10)

FROM   dba_segments

WHERE  segment_type = 'INDEX'

AND  owner='&username'

ORDER BY owner, bytes DESC;

spool off;

-----------------------------------------------------------------------------如果你用的是WINDOWS系统,想改变输出文件的存放目录,修改spool后面的路径成:

spool c:\oracle\rebuild_&username.sql;如果你只想对大于max_bytes的索引重建索引,可以修改上面的SQL语句:在AND  owner='&username'后面加个限制条件AND  bytes> &max_bytes如果你想修改索引的存储参数,在重建索引rebuild_&username.sql里改也可以.比如把pctincrease不等于零的值改成是零.如果你想把index从一个TABLESPACE转移到另外一个TABLESPACE,也可以修改其中的tablespace_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值