我在sql索引创建中犯了一个可怕的错误:
create index IDX_DATA_TABLE_CUSECO on DATA_TABLE (CUSTOMER_ID,SESSION_ID,CONTACT_ID) tablespace IDX_TABLESPACE LOCAL ;
正如您所看到的,我错过了关键字“ONLINE”来创建索引而不会阻止具有600m记录的高使用率的PRODUCTION表.更正的sql是:
create index IDX_DATA_TABLE_CUSECO on DATA_TABLE (CUSTOMER_ID,CONTACT_ID) tablespace IDX_TABLESPACE LOCAL ONLINE;
我是在PL / sql Developer下完成的.当我试图阻止程序停止响应并崩溃.
生产系统现在不工作9个小时,我的老板想要爆炸. :d
有没有机会看到Oracle 11g剩余多少秒/分钟/小时来处理这个索引创建?或者也许有机会看到Oracle仍在处理这个请求吗? (PL / sql Developer崩溃).
对于仇恨者:
我知道我应该像这里提到的那样:(source)
CREATE INDEX cust_idx on customer(id) UNUSABLE LOCAL; ALTER INDEX cust_idx REBUILD parallel 6 NOLOGGING ONLINE;
您应该能够在V $SESSION_LONGOPS中查看操作的进度
SELECT sid,serial#,target,target_desc,sofar,totalwork,start_time,time_remaining,elapsed_seconds FROM v$session_longops WHERE time_remaining > 0
当然,在生产系统中,我可能会在几小时前杀死会话,而不是让DDL操作继续阻止用户访问应用程序.