Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个大表中创建索引/主键花费的时间太长。我正在使用Oracle。我怎么知道进展是否顺利?_Oracle_Indexing_Primary Key_Composite Primary Key - Fatal编程技术网

在一个大表中创建索引/主键花费的时间太长。我正在使用Oracle。我怎么知道进展是否顺利?

在一个大表中创建索引/主键花费的时间太长。我正在使用Oracle。我怎么知道进展是否顺利?,oracle,indexing,primary-key,composite-primary-key,Oracle,Indexing,Primary Key,Composite Primary Key,我有一张非常大的桌子,大约有2亿行。它根本没有索引/pk。此表中的选择(显然)运行缓慢。我决定用3列创建一个PK。我是在一个测试环境中做的,这个表有一个更小的版本,工作起来很有魅力 所以,在回家之前我做了一个 大桌子 添加约束PK_HUGETABLE主键(ID1、ID2、ID3) 我希望它能运行一整晚,但已经超过24小时了,它还在运行 我知道,如果在开始查询之前保留会话Id,我将能够在V$Session_LONGOPS处跟踪它。但我没有 是否有任何方法可以检查我的查询进行得如何,或者还需要多长时

我有一张非常大的桌子,大约有2亿行。它根本没有索引/pk。此表中的选择(显然)运行缓慢。我决定用3列创建一个PK。我是在一个测试环境中做的,这个表有一个更小的版本,工作起来很有魅力

所以,在回家之前我做了一个 大桌子 添加约束PK_HUGETABLE主键(ID1、ID2、ID3)

我希望它能运行一整晚,但已经超过24小时了,它还在运行

我知道,如果在开始查询之前保留会话Id,我将能够在V$Session_LONGOPS处跟踪它。但我没有


是否有任何方法可以检查我的查询进行得如何,或者还需要多长时间?

您应该仍然能够查询V$SESSION\u LONGOPS。如果你像这样跑

SELECT sid, serial#, start_time, sofar, totalwork, time_remaining, message
  FROM v$session_longops
 WHERE time_remaining > 0

您可能只会看到昨天开始的一个会话,其他专栏应该会证实这一点,并指出会话已经完成了大量工作。该消息还应指示HUGETABLE上的完整扫描。

您不需要记住会话id来监视语句的状态。正如Justin所建议的,从前一天开始,您不应该有太多长时间运行的查询。还可以指定开始时间以缩小结果范围

select * from V$SESSION_LONGOPS where time_remaining > 0 and start_time > <'your run date/time here'>;
从剩余时间>0的V$SESSION\u LONGOPS中选择*并开始时间>;

除了“并行n”选项之外,如果您正在创建(或重建)索引,同时在大表上进行并发读/写,那么您也应该考虑使用“联机”选项。我发现有很多过程在进行,但无法识别我的过程。所以我放弃了,取消了:)我会在周末停止一切,再试一次。这次我将在开始作业之前获取会话id。无论如何,谢谢。下次,用PARALLEL n定义索引,其中n是系统上可接受的并行度。完成后,将索引更改为NOPARALLEL。另外,如果您没有使用Data Guard,并且在备份完成后可以对数据库进行备份,请使用NOLOGGING子句。