2011年7月13日水曜日

[备份恢复] 索引表空间的恢复


1. 索引表空间数据文件损坏, 导致数据库不能启动
归档模式下
alter database datafile 5 offline;

非归档模式下
alter database datafile 5 offline drop;
alter database open;

2. 重建索引表空间
查询指定索引表空间中创建的索引
select
    i.owner,
    i.index_name,
    i.table_owner,
    ic.column_name,
    ic.column_position
from dba_indexes i
join dba_ind_columns ic
on
(
    i.owner=ic.index_owner and
    i.index_name=ic.index_name and
    i.table_owner=ic.table_owner and
    i.table_name=ic.table_name
)
where tablespace_name='IDX';

3. 删除索引表空间
drop tablespace idx including contents and datafiles;

4. 创建索引表空间
create tablespace idx datafile '/data/idx01.dbf' size 5m autoextend on next 1m;

5. 创建索引, 也可以用 exp 或 datapump 生成
select dbms_metadata.get_ddl('INDEX','T_A_IDX','SYS') from dual;
create index t_a_idx on t(a) tablespace idx nologging parallel 2;

6. 收集统计信息
analyze table t compute statistics;

begin
dbms_stats.get_index_stats(ownname=>'SCOTT',indname=>'IDX_NAME');
end;

0 件のコメント:

コメントを投稿