tbwshc

          10g中DBA_TAB_STATISTICS的STATTYPE_LOCKED列對分區鎖定顯示為空

          Oracle10g的DBA_TAB_STATISTICS視圖的STATTYPE_LOCKED列沒有正確的顯示結果。

           

           

          看一個簡單的例子:

          SQL> select * from v$version;

          BANNER
          ----------------------------------------------------------------
          Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
          PL/SQL Release 10.2.0.5.0 - Production
          CORE 10.2.0.5.0 Production
          TNS for Linux: Version 10.2.0.5.0 - Production
          NLSRTL Version 10.2.0.5.0 - Production

          SQL> create table t_part (id number, name varchar2(30))
           2 partition by range (id)
           3 (partition p1 values less than (10),
           4 partition p2 values less than (20),
           5 partition pmax values less than (maxvalue));

          Table created.

          SQL> select table_name, partition_name, stattype_locked from tb all_tab_statistics where wner = user and table_name = 'T_PART';

          TABLE_NAME                     PARTITION_NAME                 STATT
          ------------------------------ ------------------------------ -----
          T_PART
          T_PART                         P1
          T_PART                         P2
          T_PART                         PMAX

          SQL> exec dbms_stats.lock_partition_stats(user, 'T_PART', 'P1')

          PL/SQL procedure successfully completed.

          SQL> select table_name, partition_name, stattype_locked from all_tab_statistics where wner = user and table_name = 'T_PART';

          TABLE_NAME                     PARTITION_NAME                 STATT
          ------------------------------ ------------------------------ -----
          T_PART
          T_PART                         P1
          T_PART                         P2
          T_PART                         PMAX

          SQL> exec dbms_stats.gather_table_stats(user, 'T_PART')

          PL/SQL procedure successfully completed.

          SQL> select table_name, partition_name, last_analyzed, stattype_locked from all_tab_statistics where wner = user and table_name = 'T_PART';

          TABLE_NAME                     PARTITION_NAME                 LAST_ANAL STATT
          ------------------------------ ------------------------------ --------- -----
          T_PART                                                        16-JUL-12
          T_PART                         P1
          T_PART                         P2                             16-JUL-12
          T_PART                         PMAX                           16-JUL-12

          可以看到在10.2環境中,LOCK_PARTITION_STATS過程是正常工作的,但是DBA_TAB_STATISTICS視圖的STATTYPE_LOCKED列并沒有正確的顯示分區被鎖定的結果。

          而對于表來說,LOCK_TABLE_STATS過程執行后,STATTYPE_LOCKED的結果顯示是正常的:

          SQL> exec dbms_stats.lock_table_stats(user, 'T_PART')

          PL/SQL procedure successfully completed.

          SQL> select table_name, partition_name, last_analyzed, stattype_locked from all_tab_statistics where wner = user and table_name = 'T_PART';

          TABLE_NAME                     PARTITION_NAME                 LAST_ANAL STATT
          ------------------------------ ------------------------------ --------- -----
          T_PART                                                        16-JUL-12 ALL
          T_PART                         P1                                       ALL
          T_PART                         P2                             16-JUL-12 ALL
          T_PART                         PMAX                           16-JUL-12 ALL

          這說明在10.2中,Oracle對于分區列的鎖定的支持是存在問題的。查詢了一下MOS,Oracle將這個問題確認為內部BUG:7240460,這個問題在11.1.0.7中被FIXED。

          而在11.2中,這個問題以及不存在了:

          SQL> select * from v$version;

          BANNER
          ----------------------------------------------------------------------------
          Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
          PL/SQL Release 11.2.0.3.0 - Production
          CORE    11.2.0.3.0      Production
          TNS for Solaris: Version 11.2.0.3.0 - Production
          NLSRTL Version 11.2.0.3.0 - Production

          SQL> select owner, table_name, partition_name, stattype_locked
           2 from dba_tab_statistics
           3 where wner = 'TEST'
           4 and table_name = 'T_PART';

          OWNER      TABLE_NAME   PARTITION_NAME STATT
          ---------- ------------ --------------- -----
          TEST       T_PART
          TEST       T_PART       P2
          TEST       T_PART       P3
          TEST       T_PART       P4
          TEST       T_PART       P5
          TEST       T_PART       PMAX

          6 rows selected.

          SQL> exec dbms_stats.lock_partition_stats('TEST', 'T_PART', 'P2')

          PL/SQL procedure successfully completed.

          SQL> select owner, table_name, partition_name, stattype_locked
           2 from dba_tab_statistics
           3 where wner = 'TEST'
           4 and table_name = 'T_PART';

          OWNER      TABLE_NAME   PARTITION_NAME STATT
          ---------- ------------ --------------- -----
          TEST       T_PART
          TEST       T_PART       P2              ALL
          TEST       T_PART       P3
          TEST       T_PART       P4
          TEST       T_PART       P5
          TEST       T_PART       PMAX

          6 rows selected

          posted on 2012-08-29 15:27 chen11-1 閱讀(878) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 天气| 万安县| 新蔡县| 龙州县| 瓦房店市| 库伦旗| 绥阳县| 卢湾区| 远安县| 洪雅县| 梧州市| 麻栗坡县| 尉犁县| 博乐市| 家居| 探索| 澄城县| 文山县| 桃源县| 古田县| 达拉特旗| 武强县| 宜川县| 灵宝市| 邳州市| 类乌齐县| 邛崃市| 苏尼特左旗| 阿鲁科尔沁旗| 巴楚县| 潜江市| 金山区| 都匀市| 西盟| 余江县| 双峰县| 庆城县| 天祝| 绥化市| 无锡市| 本溪市|