[20170628]12C ORA-54032.txt

[20170628]12C ORA-54032.txt

https://hourim.wordpress.com/2017/06/24/ora-54032-column-to-be-renamed-is-used-in-a-virtual-column-expression/

--//重复测试:

SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SCOTT@test01p> create table t1(x number, y number, z number);
Table created.

SCOTT@test01p> alter table t1 rename column x to x_bis;
Table altered.

SCOTT@test01p> SELECT dbms_stats.create_extended_stats (ownname=> user ,tabname=> 't1' ,extension => '(x_bis,y)') ext FROM dual;
EXT
------------------------------
SYS_STU3L40_B_DWBMIA8PMJRGR$S0

--//删除column group.
--//SCOTT@test01p> exec dbms_stats.drop_extended_stats (ownname=> user ,tabname=> 't1' ,extension => '(x_bis,y)')
--//PL/SQL procedure successfully completed.

--//顺便建立脚本放入脚本库中:
--// owner tablename column_group(using , delimiter).
SELECT dbms_stats.create_extended_stats (ownname=> nvl('&1',user) ,tabname=> '&&2' ,extension => '(&&3)') ext FROM dual;

SCOTT@test01p> alter table t1 rename column x_bis to x;
alter table t1 rename column x_bis to x
                             *
ERROR at line 1:
ORA-54032: column to be renamed is used in a virtual column expression

--//实际上这样已经是虚拟列的一部分.

D:\tools\rlwrap>oerr ora 54032
54032, 0000, "column to be renamed is used in a virtual column expression"
// *Cause:  Attempted to rename a column that was used in a virtual column
//          expression.
// *Action: Drop the virtual column first or change the virtual column
//          expression to eliminate dependency on the column to be renamed.

SCOTT@test01p> select column_name ,data_default ,data_length from user_tab_cols where table_name = 'T1' and hidden_column = 'YES';
COLUMN_NAME                    DATA_DEFAULT                             DATA_LENGTH
------------------------------ ---------------------------------------- -----------
SYS_STU3L40_B_DWBMIA8PMJRGR$S0 SYS_OP_COMBINED_HASH("X_BIS","Y")                 22

--//而在12.2.0.1.0 版本这个问题消失.我没有12.2以上版本无法测试!!

SCOTT@test01p> insert into t1 values (1,2,3);
1 row created.

SCOTT@test01p> commit;
Commit complete.

SCOTT@test01p> set numw 18
SCOTT@test01p> select x_bis,y,z,SYS_STU3L40_B_DWBMIA8PMJRGR$S0 from t1;
             X_BIS                  Y                  Z SYS_STU3L40_B_DWBMIA8PMJRGR$S0
------------------ ------------------ ------------------ ------------------------------
                 1                  2                  3             298332787864732998

--//在11g下执行:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select SYS_OP_COMBINED_HASH(1,2) from dual ;
SYS_OP_COMBINED_HASH(1,2)
-------------------------
       298332787864732998

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2141323/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267265/viewspace-2141323/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORA-01017错误是Oracle数据库中一个常见的错误,它表示用户在进行认证时没有提供正确的用户名或密码,导致登录失败。这个错误可能会在用户在进行各种数据库操作时出现,例如启动或连接数据库、执行SQL查询、创建或删除表等。 如果您遇到ORA-01017错误,首先应该确认您输入的用户名和密码是否正确。您可以尝试使用其他有效的用户名和密码重新登录数据库。如果您使用的是Oracle数据库的默认账户,例如SYS或SYSTEM账户,那么可以使用以下命令来重置密码: ALTER USER username IDENTIFIED BY new_password; 其中username为您要重置密码的账户名,new_password为新密码。 除了输入错误的用户名或密码外,还有一些其他常见的原因可能会导致ORA-01017错误。例如,您的数据库可能已被锁定,可能是由于某些数据库对象被其他用户或进程所占用,或者因为数据库正在进行备份或恢复操作。在这种情况下,您需要等待一段时间,直到数据库解锁。您还可以尝试重启数据库实例来解决此问题。 另外,ORA-01017错误也可能是由于网络故障或连接问题引起的。如果您正在通过网络连接数据库,请检查您的网络连接是否正常、数据库服务器是否可用,并确保您使用的是正确的连接字符串和端口号。 总之,ORA-01017错误可能是由多种原因引起的,但它通常表示用户输入了错误的用户名或密码。如果您遇到此问题,您需要核实提供的认证信息是否正确,并尝试使用其他有效的用户名和密码重新登录数据库。如果错误仍然存在,您可以考虑其他可能的原因,并采取相应的措施来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值