在庞大的表中创建index/pk花费的时间太长了.我正在使用Oracle.我怎么知道它是否顺利?

Mic*_*ael 7 oracle indexing primary-key composite-primary-key

我有一张非常大的桌子,有大约2亿行.它根本没有索引/ pk.在这个表中选择(显然)运行缓慢.我决定使用3列创建PK.我是在一个测试环境中做到的,它有一个较小版本的表,它就像一个魅力.

所以,在回家之前,我做了一个ALTER TABLE HUGETABLE ADD CONSTRAINT PK_HUGETABLE PRIMARY KEY(ID1,ID2,ID3);

我预计它会持续过夜,但已经超过24小时,它仍在运行.

我知道如果我在开始查询之前保留了会话ID,我就可以在V $ SESSION_LONGOPS中跟踪它.但我没有.

有没有办法检查我的查询是如何进行的,或者它还需要多长时间?

Jus*_*ave 7

您仍然可以查询V $ SESSION_LONGOPS.如果你运行类似的东西

SELECT sid, serial#, start_time, sofar, totalwork, time_remaining, message
  FROM v$session_longops
 WHERE time_remaining > 0
Run Code Online (Sandbox Code Playgroud)

你可能只会看到昨天开始的一个会话,其他列应该证实会话已经完成了很多工作.MESSAGE还应该表示类似于HUGETABLE的完整扫描.

  • 下一次,使用PARALLEL n定义索引,其中n是系统上可接受的并行度.完成后,将索引更改为NOPARALLEL.此外,如果您没有使用Data Guard并且可以在完成后备份数据库,请使用NOLOGGING子句. (2认同)