今天操作将表名重命名,犯了个很low的错误,执行如下操作
SQL> alter table API_ODS.FACT_T_FS_EMPLOY**_RT**_240907 rename to API_ODS.FACT_T_FS_EMPLOY**_RT**_240908;
alter table API_ODS.FACT_T_FS_EMPLOY**_RT**_240907 rename to API_ODS.FACT_T_FS_EMPLOY**_RT**_240908
*
ERROR at line 1:
ORA-14047: ALTER TABLE|INDEX RENAME may not be combined with other operations
查看这个ORA-14047的报错
[oracle@ops-oracle-hdsp-sty-ts-bj tmpbak]$ oerr ora 14047
14047, 00000, "ALTER TABLE|INDEX RENAME may not be combined with other operations"
// *Cause: ALTER TABLE or ALTER INDEX statement attempted to combine
// a RENAME operation with some other operation which is illegal
// *Action: Ensure that RENAME operation is the sole operation specified in
// ALTER TABLE or ALTER INDEX statement;
从错误信息 ORA-14047 可以看出,Oracle 数据库不允许在 ALTER TABLE 语句中同时执行重命名操作和其他操作。这个错误是因为尝试在一个 ALTER TABLE 语句中只执行重命名操作时可能无意中包含了其他内容,或者使用了不正确的语法。
要解决这个问题,需要确保 ALTER TABLE 语句中只包含重命名操作,并且语法正确。根据 Oracle 的要求,重命名表的正确写法如下,然后执行成功,没有报错
ALTER TABLE API_ODS.FACT_T_FS_EMPLOY**_RT**_240907 RENAME TO FACT_T_FS_EMPLOY**_RT**_240908;
这里我没有指定 schema 名称(即 API_ODS.)作为新表名的一部分,因为 RENAME TO 子句后面直接跟新的表名。如果你想要保持表在相同的 schema 下,那么不需要重复指定 schema 名称。
如果确实需要改变表所属的 schema,那将涉及到更复杂的操作,比如导出导入数据或使用 DBMS_REDEFINITION 包来在线重定义表,这通常不是简单的 RENAME 操作可以完成的
Ps:
另外在impdp表的时候,也是这样,remap_table的时候只需要指定原表的schema名字,重命名后的schema名也是不需要指定的
最后修改时间:2024-09-20 18:13:43
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




