不同用户中的 Oracle TRUNCATE 表在未指定表的实际用户的情况下无法工作,尽管有授权和公共同义词

问题描述 投票:0回答:1

我们将 Oracle 从 11g 升级到 19c,并且尝试截断 user1 中由 user2 拥有的表。我们有必要的 ALTER 授权、user1 中表的同义词和公共同义词。我们可以通过指定模式(即“user2.table”)来截断表。但是,如果不添加 user2 前缀,我们无法直接截断它。

我们尝试重新创建公共同义词,然后在 user1 中创建一个同义词,并通过撤销现有的授予来再次提供授予。没有运气。

我们希望在不指定 user2 前缀的情况下截断表。在 Oracle 11g 中截断表而不指定 user2 前缀效果很好。

我在 Oracle 文档中找不到与此相关的任何更改。所以,我怀疑我错过了什么。

请提出解决方案。

oracle oracle11g oracle19c
1个回答
0
投票

Oracle 19c 创建同义词文档 说:

您可以在以下 DML 语句中引用同义词:SELECT、INSERT、UPDATE、DELETE、FLASHBACK TABLE、EXPLAIN PLAN、LOCK TABLE、MERGE 和 CALL。

您可以在以下 DDL 语句中引用同义词:AUDIT、NOAUDIT、GRANT、REVOKE 和 COMMENT。

因此您不能在 TRUNCATE 语句(即 DDL)中引用同义词。

Oracle 11gR2 文档也说了同样的事情,所以它似乎不太可能像您在该版本中想象的那样工作。

© www.soinside.com 2019 - 2024. All rights reserved.