<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825418
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    原文  http://blogs.oracle.com/sql/entry/ora_54033_and_the_hidden

    A colleague recently asked me a question:

    "I'm modifying the data type of a column. When doing so I get the following error:

    ORA-54033: column to be modified is used in a virtual column expression

    But there's no virtual columns defined on the table! What on earth's going on?!"

    This was exceptionally confusing. Looking at the table definition we couldn't see any virtual columns defined: 

    create table tab (
      x integer, 
      y date, 
      z varchar2(30)
    );

    Sure enough, when we tried to change the data type of y we got the exception:

    alter table tab modify (y timestamp);
    
    ORA-54033: column to be modified is used in a virtual column expression

    How could this be? 

    Perhaps there was a column defined that we couldn't see. Querying user_tab_cols revealed something interesting:

    select column_name, data_default, hidden_column 
    from   user_tab_cols
    where  table_name = 'TAB';
    
    COLUMN_NAME 			DATA_DEFAULT 			HID
    ------------------------------ 	-----------------------------   ---
    SYS_STUYPW88OE302TFVBNC6$MMQXE	SYS_OP_COMBINED_HASH("X","Y")	YES
    Z		                                                NO
    Y								NO
    X								NO

    The SYS_... column isn't in the table DDL! Where does it come from? And what's SYS_OP_COMBINED_HASH all about? Has someone been mucking around with the database?

    The SYS_ prefix is a sign that the column is system generated. So something's happened that's caused Oracle to create this on our behalf.

    SYS_OP_COMBINED_HASH is an undocumented feature. The name implies Oracle is merging the arguments together to form a hash.

    Is there a feature where we want to capture information about a group of columns?

    Indeed there is -extended statistics!This feature enables to Oracle calculate statistics on a group of columns. It uses this information to improve row estimates. This is useful when there's a correlation between the values of two (or more) columns in a table.

    Someone had created extended stats on this table for (x, y).

    Now we've identified the problem, how do we get around it?

    Simple: drop and recreate the extended stats:

    exec dbms_stats.drop_extended_stats(user, 'tab', '(x, y)');
    
    alter table tab modify (y timestamp);
    
    select dbms_stats.create_extended_stats(user, 'tab', '(x, y)')
    from   dual;
    
    DBMS_STATS.CREATE_EXTENDED_STATS(USER,'TAB','(X,Y)')                           
    --------------------------------------------------------------------------------
    SYS_STUYPW88OE302TFVBNC6$MMQXE  

    Success!

    Extended stats are a great way to improve the optimizer's row estimates. If you need to create these, I recommend you also do the following:

    • Apply the extended stats to all environments
    • Put a comment on the columns explaining what you've done, e.g. 
      • comment on column tab.x is 'part of extended stats. To modify data type drop and recreate stats';
    These actions will help prevent future developers getting stuck tracking down the cause of "missing" virtual columns!


    posted on 2015-09-16 14:30 Ke 閱讀(2812) 評論(0)  編輯  收藏 所屬分類: oracle
    主站蜘蛛池模板: 国产免费人成视频尤勿视频| 精品日韩亚洲AV无码| 亚洲日本乱码卡2卡3卡新区| 97视频免费在线| 亚洲人成影院77777| 成全高清视频免费观看| 亚洲日韩国产欧美一区二区三区 | 成人毛片18女人毛片免费视频未| 亚洲一区二区在线视频| 最新黄色免费网站| 2020久久精品亚洲热综合一本| AV免费网址在线观看| 亚洲av无一区二区三区| 亚洲AV无码一区二区三区国产| 一个人免费观看视频在线中文 | 日韩成全视频观看免费观看高清| 亚洲人成人无码.www石榴| 国产免费久久精品| 国产免费AV片在线观看播放| 亚洲va中文字幕无码久久不卡| 99热这里只有精品6免费| 亚洲成av人片在线看片| 午夜一级免费视频| 一级毛片不卡免费看老司机| 亚洲AV电影院在线观看| 无码人妻一区二区三区免费| 国产精品亚洲а∨天堂2021| 亚洲精品乱码久久久久久自慰| 120秒男女动态视频免费| 亚洲av中文无码字幕色不卡| 无码欧精品亚洲日韩一区夜夜嗨 | 免费看污成人午夜网站| 美女免费视频一区二区三区| 国产亚洲精品岁国产微拍精品| 国产精彩免费视频| 免费手机在线看片| 亚洲VA中文字幕不卡无码| 最近中文字幕大全中文字幕免费| 亚洲AV成人噜噜无码网站| 亚洲精品国产精品乱码不卞| 亚洲美女视频免费|