为什么针对此同义词的查询在针对其引用的表进行查询时不返回任何记录?

时间:2011-04-04 15:46:09

标签: sql oracle

我有一个名为AP.AP_BATCHES_ALL的表:

SELECT
  OWNER,
  OBJECT_NAME,
  OBJECT_TYPE
FROM
  ALL_OBJECTS
WHERE
  OWNER = 'AP' AND OBJECT_NAME = 'AP_BATCHES_ALL'
+-------+----------------+-------------+
| OWNER | OBJECT_NAME    | OBJECT_TYPE |
+-------+----------------+-------------+
| AP    | AP_BATCHES_ALL | TABLE       |
+-------+----------------+-------------+

我可以查询此表:

SELECT * FROM AP.AP_BATCHES_ALL

返回200,000多条记录。

现在,有一个名为APPS.AP_BATCHES的同义词引用了前面提到的AP.AP_BATCHES_ALL表:

SELECT * FROM ALL_SYNONYMS WHERE OWNER = 'APPS' AND SYNONYM_NAME = 'AP_BATCHES'
+-------+--------------+-------------+----------------+---------+
| OWNER | SYNONYM_NAME | TABLE_OWNER | TABLE_NAME     | DB_LINK |
+-------+--------------+-------------+----------------+---------+
| APPS  | AP_BATCHES   | AP          | AP_BATCHES_ALL |         |
+-------+--------------+-------------+----------------+---------+

现在,当我查询APPS.AP_BATCHES(同义词)时,我得到 no 记录:

SELECT * FROM APPS.AP_BATCHES

不会返回任何记录,即使APPS.AP_BATCHES仅仅是AP.AP_BATCHES_ALL的同义词(包含200,000多条记录的表)。

对引用的表进行查询时,为什么查询不会对同义词返回记录?

1 个答案:

答案 0 :(得分:4)

起初我以为您遇到了视图和公共同义词之间的阴影问题。但是,这不是这种情况,因为APPS只能拥有一个名为AP_BATCHES(同义词)的对象。

这个同义词上是否存在行级策略(v$vpd_policies)?

顺便说一下,我不知道(1)您可以为同义词添加策略,(2)版本12正在使用它们。