修改表名時遇到ORA-14047錯誤

東北胖子發表於2019-12-22

使用test使用者建立測試表rename_table

SQL> show user;
USER is "TEST"
SQL> create table rename_table ( id int);
Table created.
SQL> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
RENAME_TABLE


使用SYS使用者修改test使用者的表名

SQL> show user;
USER is "SYS"
SQL> alter table test.RENAME_TABLE rename to test.RENAME_TABLE2;
alter table test.RENAME_TABLE rename to test.RENAME_TABLE2
                                            *
ERROR at line 1:
ORA-14047: ALTER TABLE|INDEX RENAME may not be combined with other operations


問題原因

Oracle是允許A使用者修改B使用者表名的,但是在新表名前是不能指定使用者名稱的,使用如下方法修改表名成功。

SQL> alter table test.RENAME_TABLE rename to RENAME_TABLE2;
Table altere
SQL> select OWNER,TABLE_NAME from dba_tables where owner='TEST';
OWNER                TABLE_NAME
-------------------- --------------------
TEST                 RENAME_TABLE2


++++++++++++++++++++++++++++++++分割線+++++++++++++++++++++++++++++++

還有一個修改表名的命令rename to ,但是這個命令只能修改自己使用者下表的表名


使用Sys使用者修改test使用者表的表名

SQL> show user;
USER is "SYS"
SQL> select OWNER,TABLE_NAME from dba_tables where owner='TEST';
OWNER                TABLE_NAME
-------------------- --------------------
TEST                 RENAME_TABLE2
SQL> rename test.RENAME_TABLE2 to RENAME_TABLE;
rename test.RENAME_TABLE2 to RENAME_TABLE
       *
ERROR at line 1:
ORA-01765: specifying owner's name of the table is not allowed


切換為test使用者,修改表名成功

SQL> show user;                               
USER is "TEST"
SQL> select OWNER,TABLE_NAME from dba_tables where owner='TEST';
OWNER                TABLE_NAME
-------------------- --------------------
TEST                 RENAME_TABLE2
SQL> rename RENAME_TABLE2 to RENAME_TABLE;
Table renamed.
SQL> select OWNER,TABLE_NAME from dba_tables where owner='TEST';
OWNER                TABLE_NAME
-------------------- --------------------
TEST                 RENAME_TABLE


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2317695/viewspace-2669901/,如需轉載,請註明出處,否則將追究法律責任。

相關文章