2017-02-14 70 views
-3

好的一个同义词表意味着它指向另一个数据库,它现在从当前数据库拥有,它只是一个镜像,即使它的情况是有道理的,如果我授予选择我可以从其他数据库中选择,我明白这一点。但为什么我无法分析这个同义词的统计数据。我需要一些技术说明或官方文件为什么我不能分析stastics一个synonm表?

+0

你试图收集的代名词本身统计(这没有多大意义),或者它指向的表格;并且实际上是在同一个数据库(但另一个模式)或不同的数据库(通过数据库链接)?包括你尝试的陈述和你得到的错误可能也有帮助。 (无论如何,已经发布的一些答案可能会解释这一点,但它仍然是一个很好的缩小范围) –

+0

@AlexPoole开发者正在运行分析同义词表上的语句(该表被引用到同一服务器上的另一个数据库)错误是课程表不存在;我试图用技术手段解释,让他明白为什么他的做法是错误的。 anywya你指出的答案是好的 – Moudiz

回答

0

你必须看看Oracle Doc其中明确spefices,作为一个先决条件,以分析所有对象:

要分析必须是本地的架构对象,而且它必须是在你 自己的模式,或者你必须具有ANALYZE ANY系统特权。 •您不能使用ANALYZE来收集数据字典表的统计信息

还请务必阅读本:在分析表受到以下限制

限制。

•不能使用ANALYZE来收集外部表的统计信息。相反,您必须使用DBMS_STATS包。

•不能使用ANALYZE在临时表上收集默认统计信息。但是,如果您已经在临时表的一列或多列与用户定义的统计类型之间创建了关联,则可以使用ANALYZE在临时表上收集用户定义的统计信息。

•您无法计算或估计以下列类型的统计信息:REF列类型,变量,嵌套表,LOB列类型(不分析LOB列类型,它们被跳过),LONG列类型或对象类型。但是,如果统计类型与此列关联,则Oracle数据库将收集用户定义的统计信息。

+1

您不应该使用ANALYZE来收集统计信息。你应该使用DBMS_STATS() – BobC

+0

那么,首先我没有回答我们是否应该使用'ANALYZE'或不。我刚才提到OP在哪些情况下可以找到失败。也不是所有的'DBMS_STATS'都是有用的。请阅读文档。它表示您必须使用ANALYZE语句(而不是DBMS_STATS)进行与基于成本的优化器无关的统计信息收集。此外,我不能找到“分析”是否得到了解决。所以不能理解你的陈述'你不应该使用ANALYZE来收集统计信息。' – XING

+0

对于收集统计信息,你应该使用DBMS_STATS()。 ANALYZE正在验证结构,例如链接行,空闲列表块等。 – BobC

0

我怀疑你会找到一个文件,列举你所有的东西不能做。 DBMS_STATS.GATHER_TABLE_STATS()的文档非常清晰,因为您可以指定模式名称和表格。 但是,我看到是否可以找到可能会被拒绝的技术原因。

+0

这是nt一个答案,而应该是一个评论。 – XING

0

没有技术上的原因,我们不允许通过同义词收集统计数据。我们只是假设(因为它是如何指定的),该对象是一个表。

0

如果我正确地理解了你,通过“同义词”,你指的是通过数据库链接访问的另一个数据库中的表格。如果是这样,你不能通过数据库链接分析远程对象(至少不是11g)。

From the horses mouth:对远程对象

授予的权限执行DESCRIBE一些远程对象的操作:

不能使用数据库链接执行以下操作。下面 远程对象,但是,做支撑解释性说明:

表视图程序功能

分析远程对象

定义或实施参照完整性

角色授予远程数据库中的用户

获取远程数据库上的非默认角色。例如,如果jane 连接到本地数据库并执行 使用固定用户链接作为scott连接的存储过程,jane会在远程数据库上接收scott的 默认角色。简不能发出SET ROLE到 获得非默认角色。

执行哈希联接的查询使用共享服务器连接

使用当前用户连接不需要认证通过SSL,密码, 或NT本地认证

+0

您假定同义词是通过数据库链接指向远程数据库中某事物的“指针”并不完全正确(或者应该说完整)。您可以在您自己的模式或本地数据库中的另一个模式中创建表的同义词 – BobC

+1

@BobC嗨鲍勃,我基于OPs语句“同义词表格表示它指向另一个数据库”做出了这个假设。我也猜测,英语不是海报的第一语言,所以我试图从帖子中推断出我能做些什么。 – tbone

相关问题