度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1206|回复: 7
打印 上一主题 下一主题

[分享] Oracle索引表空间数据文件丢失及重建

[复制链接]

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
跳转到指定楼层
楼主
发表于 2020-6-5 22:56:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
重新创建索引:
使用以下选项可缩短创建索引所花费的时间:

PARALLEL NOLOGGING

PARALLEL(NOPARALLEL 是默认值):多个进程可以同时协同工作来创建索引。与单个服务器进程按顺序创建索引相比,通过在多个服务器进程之间分配创建索引所需的工作,Oracle 服务器可以更快速地创建索引。将随机对表取样并找到一组索引关键字,这些索引关键字按照指定的并行度将索引平均分为相同数目的片段。第一组查询进程将扫描表,提取关键字、行 ID 对并基于关键字将每个对发送到第二组查询进程中的一个进程中。第二组中的每个进程都对关键字进行排序并按常规方式构建索引。所有索引片段构建完成后,并行协调程序会将这些片段(已进行排序)级联以形成最终的索引。

SQL> CREATE INDEX rname_idx  
  ON hr.regions (region_name)
  PARALLEL 4;


  NOLOGGING:使用此关键字会加快索引的创建速度,因为创建进程创建的重做日志 条目极少。这种工作量大幅减小的重做生

成也适用于直接路径插入和 Direct Loader (SQL*Loader) 插入。这是永久性属性,因此将显示在数据字典中。可以随时使用

ALTER INDEX NOLOGGING/LOGGING 命令来加以更新。
注:若数据库在nologging状态时,所操作的数据应该备份,再将nologging改回来,以免重大失误难以恢复

丢失了索引表空间后进行恢复:
  索引丢失时,更为快速、简单的方法是重新创建而不是尝试恢复索引。

索引是计算得到的对象,因为它们不提供任何原始数据,只是已存在数据的另一表示形式。因此,在大多数情况下,可以很容易地重新创建索引。
如果您的表空间仅包含索引,则可以简化在丢失了属于该表空间的数据文件后的恢复工作。
如果丢失了此类数据文件,则可以

执行以下步骤:


1.删除数据文件。

2.删除表空间。
3.重新创建索引表空间。

4.重新创建包含在表空间中的索引。
1.可以在不执行 RECOVER 任务的情况下恢复仅包含索引的表空间。

2.如果属于仅包含索引的表空间的数据文件丢失,则更为简单的方法可能是重新创建表空间和重新创建索引。



实验:索引表空间数据文件丢失

1.创建实验数据;

create tablespace INT_TBS datafile
  '/u01/app/oracle/oradata/PROD/ind_tbs.dbf' size 20m;
create user ind_user indentified by user
    default tablespace ind_tbs;

grant dba to ind_user;

conn ind_user/user

create table t1 tablespace user
    as select  * from dba_objects
    where rownum<=100;

create index ind_t1_id on t1 (object_id);
create index ind_t1_name on t1 (upper(object_name));
create index ind_t1_com on t1 (object_id,object_name);

select index_name,tablespace_name,status from ind;
  --查看索引状态

2.删除所有表空间的数据文件

!rm /u01/app/oracle/oradata/PROD/ind_tbs.dbf
!ls /u01/app/oracle/oradata/PROD/ind_tbs.dbf

3.触发问题;
set autot traceonly
  --开启跟踪
select * from t1 where object_id=2;
  --报错,索引文件没有找到
set autot off

alter index ind_t1_id rebuild online;
  --报错,索引文件未找到

4.重建索引并指定到别的表空间

set long 99999
select dbms_metadata.get_ddl('INDEX','IND_T1_ID') from dual;

IND_USER@PROD>select dbms_metadata.get_ddl('INDEX','IND_T1_ID') FROM DUAL;

  CREATE INDEX "IND_USER"."IND_T1_ID" ON "IND_USER"."T1" ("OBJECT_ID")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "IND_TBS"
  --建议关注compute statistics

alter index ind_t1_id rebulid online tablespace users;
alter index ind_t1_name rebulid online tablespace users;
alter index ind_t1_com rebulid online tablespace users;

select index_name,tablespace_name,status from ind;
  --查看重建结果

5.删除或重建数据文件丢失的索引表空间

drop tablespace ind_tbs including contents and datafiles;
  --删除表空间
alter system datafile 7 offline;
  --如果删除表空间报错,数据文件正在打开,先offline 7 ,再删除;

create tablespace ind_tbs datafile '/u01/app/oracle/oradata/PROD/ind_tbs.dbf' size 20m;

alter index ind_t1_id rebulid online tablespace ind_tbs;
alter index ind_t1_name  rebulid online tablespace ind_tbs;
alter index ind_t1_com rebulid online tablespace ind_tbs;

select index_name,tablespace_name,status from ind;
  --查看重建状态;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
8#
发表于 2020-6-12 18:04:51 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
7#
 楼主| 发表于 2020-6-9 20:59:01 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
6#
发表于 2020-6-9 13:47:59 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
5#
 楼主| 发表于 2020-6-8 22:39:03 | 只看该作者

这么给面子呀
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-6-8 16:39:01 | 只看该作者
万望 发表于 2016-8-7 15:30
索引好是不是,但是不能乱用啊

这话顶一个

点评

这么给面子呀  详情 回复 发表于 2020-6-8 22:39
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9335

积分

论坛元老

Rank: 8Rank: 8

积分
9335
板凳
发表于 2020-6-7 15:37:09 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9335

积分

论坛元老

Rank: 8Rank: 8

积分
9335
沙发
发表于 2020-6-7 15:30:29 | 只看该作者
索引好是不是,但是不能乱用啊

点评

这话顶一个  详情 回复 发表于 2020-6-8 16:39
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-28 07:00 , Processed in 0.127908 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表