Oracle创建index 使用Online导致的问题

在本地的测试库中,本来空间就不足,结果创建了一个表有600多万条记录,想创建一个index. 物理段有340多M.

临时段大小有100M,结果想创建一个索引,总是报临时表空间不足的错误。

[ora11g@rac1 test]$ ksh test.sh "create unique index t_pk on t(object_id) tablespace pool_data nologging online;"
create unique index t_pk on t(object_id) tablespace pool_data nologging online
                            *
ERROR at line 1:
ORA-01652: unable to extend temp segment by 128 in tablespace TEMPTS1

排除了索引所在的表空间不足的问题,实时监控了一下,发现确实临时表空间使用率在瞬间飙到100%,然后就报了ORA-01652的错误。

Oracle index 和null 研究

Oracle 索引index那些事

介绍Oracle Virtual index虚拟索引

Oracle 索引监控(monitor index)

online rebulid index 异常终止遇到ORA-08104

在尝试各种方法之后,先扩大临时段再次尝试。

alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M;

结果再次尝试的时候,就有了如下的错误。
create unique index t_pk on t(object_id) tablespace pool_data nologging online
                            *
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01114: IO error writing block to file  (block # )
ORA-01114: IO error writing block to file 201 (block # 15439)
ORA-27072: File I/O error
Additional information: 4
Additional information: 15439
Additional information: 4096
Process ID: 5683
Session ID: 18 Serial number: 103

Elapsed: 00:00:21.11
ERROR:
ORA-03114: not connected to ORACLE

一看就有些崩溃了,以为数据库又挂了。一看进程,还在,还能连接。

[ora11g@rac1 dbm_lite]$ ps -ef|grep smon
ora11g    2357    1  0 05:32 ?        00:00:01 ora_smon_TEST01
ora11g    5746  5327  0 06:27 pts/0    00:00:00 grep smon

查看alert日志。

Fri Jun 06 06:26:14 2014
alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M
Completed: alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M
Fri Jun 06 06:26:39 2014
online index (re)build cleanup: objn=15331 maxretry=2000 forever=0
Fri Jun 06 06:26:57 2014
Non critical error OR

那就再次尝试创建,结果错误接二连三。

再次创建,提示索引已经存在了。 
create unique index t_pk on t(object_id) tablespace pool_data nologging
                    *
ERROR at line 1:
ORA-00955: name is already used by an existing object

那我删除重建呢。

drop index t_pk
          *
ERROR at line 1:
ORA-08104: this index object 15334 is being online built or rebuilt

试试force选项。

drop index t_pk force
*
ERROR at line 1:
ORA-29862: cannot specify FORCE option for dropping non-domain index

查看Index的状态,显示是valid

********** INDEX DETAILS INFO *****************

INDEX_NAME                    TABLESPACE INDEX_TYPE UNIQUENES PAR COLUMN_LIST                    TABLE_TYPE STATUS  NUM_ROWS LAST_ANAL G
------------------------------ ---------- ---------- --------- --- ------------------------------ ---------- ------ ---------- --------- -
T_PK                          POOL_DATA  NORMAL    UNIQUE    NO  OBJECT_ID                      TABLE      VALID                      N
 
TABLE_NAME                    INDEX_NAME                    CLUSTERING_FACTOR    BLOCKS  NUM_ROWS
------------------------------ ------------------------------ ----------------- ---------- ----------
T                              T_PK                                                  39174    6856704
 
那我再次rebuild 可以吗?

alter index t_pk rebuild parallel 4
*
ERROR at line 1:
ORA-08104: this index object 15334 is being online built or rebuilt

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b6153ba16aacb4c90391e94c4f1a00d0.html