ORA-14047: ALTER TABLE|INDEX RENAME 不可以与其它分区组合

我们在对其他用户表改名字的时候,会遇到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属于同样的错误代码引起的错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值