我有一个名为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多条记录的表)。
当对引用的表进行查询时,为什么查询不会对同义词返回记录?
答案 0 :(得分:4)
起初我以为您遇到了视图和公共同义词之间的阴影问题。但是,这不是这种情况,因为APPS只能拥有一个名为AP_BATCHES(同义词)的对象。
这个同义词上是否存在行级策略(v$vpd_policies
)?
顺便说一下,我不知道(1)您可以为同义词添加策略,(2)版本12正在使用它们。