oracle 对表重建索引,oracle 重建索引方法 分析

首先建立测试表及数据:

SQL> CREATE TABLE TEST AS SELECT CITYCODE C1 FROM CITIZENINFO2;

Table created

SQL> ALTER TABLE TEST MODIFY C1 NOT NULL;

Table altered

SQL> SELECT COUNT(1) FROM TEST;

COUNT(1)

----------

16000000

一、drop and re-create和rebuild

首先看看正常建立索引时,对表的加锁情况。

suk@ORACLE9I> @show_sid

SID

----------

14

suk@ORACLE9I> CREATE INDEX IDX_TEST_C1 ON TEST(C1);

索引已创建。

SQL> SELECT OBJECT_NAME,LMODE FROM V$LOCK L,DBA_OBJECTS O WHERE O.OBJECT_ID=L.ID1 AND L.TYPE='TM' AND SID=14;

OBJECT_NAME LMODE

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

OBJ$ 3

TEST 4

可见,普通情况下建立索引时,oracle会对基表加share锁,由于share锁和 row-X是不兼容的,也就是说,在建立索引期间,无法对基表进行DML操作。

对于删除重建索引的方法就不介绍了,它与上面的描

你可能感兴趣的:(oracle,对表重建索引)