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;
  • 相关阅读:
    Centos设置开机启动Apache和Mysql[总结]
    主机无法访问虚拟机的apache解决办法
    PHP使用DOM XML操作XML[总结]
    Linux下C结构体初始化[总结]
    libxml2的安装及使用[总结]
    Linux动态链接库的使用
    linux获取系统启动时间
    解析oui.txt文件,通过MAC前缀获取Organization
    linux命令学习——cat
    linux内核数据结构之kfifo
  • 原文地址:https://www.cnblogs.com/zhutao1015/p/5972070.html
Copyright © 2011-2022 走看看