1
我有一個oracle過程,將「table1 Partition(P1)」中的所有行插入到table2中。我更新了table2中的一個字段,然後將分區交換回table1:Oracle過程中分區交換後的Dbms_Stats.Gather_Table_Stats?
Alter Table table1 Exchange Partition P1 WITH TABLE table2 Including Indexes Without Validation;
This works。
問題:我需要收集表格統計後?代碼:
EXECUTE Dbms_Stats.Gather_Table_Stats (Ownname => 'MySchema', Tabname => 'Table1', Partname
=> 'P1, Granularity => 'ALL', Degree => 32);
需要很長時間才能運行,還有一些其他問題涉及。
非常感謝,我一派,並不能找到一個明確的答案
- 史蒂夫
Oracle數據庫11g企業版發佈11.2.0.3.0 - 64位生產
你好馬丁,感謝您的指導提供。每個分區都有數以百萬計的行,更新特定字段的邏輯相當複雜。處理分區大約需要10分鐘,數據的最終用戶擔心其可用性。所以... 1)使用「Insert into ... Select ...」插入記錄到Swap表中(連接到其他表...)2)將分區交換回源。我認爲收集統計信息的唯一原因是需要以某種方式「修改」已更改的數據。這就是我無法找到的研究結果... – Steve 2014-10-01 13:02:09
另外,運行該進程的Oracle架構/用戶無權收集駐留在不同架構中的源表上的統計信息。我可以在源表模式中創建一個過程,並將執行授予PROCESS_USER模式,但我需要向數據庫管理員諮詢該權限。再次感謝 - 史蒂夫 – Steve 2014-10-01 13:03:48
我只是跑了一個簡短的測試,發現我的答案是不正確的。我會相應地更新我的答案。 – 2014-10-02 16:28:27