zoukankan      html  css  js  c++  java
  • ORA-54033要修改的列由某个虚拟表达式使用column to be modified is used in a virtual column expression

    oracle 11g添加了新特性虚拟字段,而oracle 12c增加在多个表上收集统计信息。通过在12c版本提高查询性能,开始自动收集信息时会自动创建虚拟列。

    通过语句可以查询创建那些虚拟列。

    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

    可以通过语句删除和创建虚拟列

    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  

    pl sql删除表上虚拟列

    declare
           --类型定义
           cursor c_job
           is
           --查找统计扩展的隐藏列信息
           select  data_default from   user_tab_cols where  hidden_column='YES' and table_name = 'tab';
           --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
           c_row c_job%rowtype;   
           sUser varchar(200);    
    begin  
           select user into sUser  from dual;
           for c_row in c_job loop
             --执行删除操作
             execute immediate 'begin dbms_stats.drop_extended_stats('''||sUser||''', ''tab'', '''||replace(replace(c_row.data_default,'SYS_OP_COMBINED_HASH',''),'"','')||'''); end;';
           end loop;
    end;
  • 相关阅读:
    Linux
    Linux -- 文件统计常用命令
    再论最小二乘
    再论EM算法的收敛性和K-Means的收敛性
    【MySQL】优化—工欲善其事,必先利其器之EXPLAIN
    【Linux】浅谈段页式内存管理
    【Linux】之系统工具top
    【Linux】之shell特殊变量整理
    【Linux】系统 之 RAID
    【MySQL】binlog缓存的问题和性能
  • 原文地址:https://www.cnblogs.com/zhutao1015/p/5972070.html
Copyright © 2011-2022 走看看