我们在对其他用户表改名字的时候,会遇到ORA-14047错误.
例如:
SQL> connect scott/tiger
已连接。
SQL> create table test
2 ( id number,
3 name varchar2(20)
4 );
表已创建。
SQL> alter table scott.test rename to scott.test1;
alter table scott.test rename to scott.test1
*
ERROR 位于第 1 行:
ORA-14047: ALTER TABLE|INDEX RENAME 不可以与其它分区组合
SQL> alter table scott.test rename to test1;
表已更改。
我们来分析一下这个问题,当你执行alter table scott.test的时候,你已经告诉oracle你要修改哪个用户下的哪个表了,所以在rename to 的时候就不需要在指定用户名称了.如果在写用户名的话,oracle也许会认为你是要把scott下的test表改名存储到其他用户下面去,oracle不允许这么做!
例如我想把刚才的test放到sys下面去.
SQL> alter table test rename to sys.test;
alter table test rename to sys.test
*
ERROR 位于第 1 行:
ORA-14047: ALTER TABLE|INDEX RENAME 不可以与其它分区组合
到这儿就不难理解oracle为什么要这么设计了!因为不能保证你有sys的密码,随随便便的执行个rename to 的命令就把一个用户下的表放到sys下了,那还有什么安全性啊!
所以oracle设定了这样的限制
与上一篇的ORA-01765属于同样的错误代码引起的错误