【问题标题】:Oracle 12c - getting IMPORT_TABLE_STATS from viewOracle 12c - 从视图中获取 IMPORT_TABLE_STATS
【发布时间】:2018-05-15 12:22:52
【问题描述】:

我有一些代码在 Oracle 11g 上运行,我们正在迁移到 12c (12.2.0.1.0)。
在其中一个处理过程中调用DBMS_STATS.IMPORT_TABLE_STATS,并在stattab 中提供了视图的参数名称。
该视图是一个表的简单选择查询,一列由解码函数计算,其他列在源列中。调用IMPORT_TABLE_STATS的用户是目标表、视图和视图下表的所有者。
在 11g 中代码正在运行,在 12c 中我收到以下错误:

ORA-20000: 对象不存在或权限不足。

关于理性的任何想法? 12c 版本的DBMS_STATS 实现是否有更改,禁止使用视图作为IMPORT_TABLE_STATS 的源?

【问题讨论】:

  • 出于好奇,如果您将其作为 sysdba 运行,或者授予用户 ANALYZE ANY 权限,它会起作用吗?
  • 在第一次阅读你的问题时,我的反应是:你入侵了DMBS_STATS,发现IMPORT_TABLE_STATS 接受了一个视图而不是官方的CREATE_STAT_TABLE 表,现在很不高兴这个黑客没有不能在 12.2 中工作。话虽如此,我觉得这样的创造力令人印象深刻,当然值得研究一下。

标签: oracle view oracle12c optimizer-statistics


【解决方案1】:

CREATE_STAT_TABLE 在 11.2 和 12.2 中创建的表是不同的。如果您想让IMPORT_TABLE_STATS 吞下它,您的视图至少应该看起来有点像官方表格。

Column    11.2                12.2
statid    VARCHAR2(30 CHAR)   VARCHAR2(128 BYTE)
type      CHAR(1 CHAR)        CHAR(1 BYTE)
version   NUMBER              NUMBER
flags     NUMBER              NUMBER
c1        VARCHAR2(30 CHAR)   VARCHAR2(128 BYTE)
c2        VARCHAR2(30 CHAR)   VARCHAR2(128 BYTE)
c3        VARCHAR2(30 CHAR)   VARCHAR2(128 BYTE)
c4        VARCHAR2(30 CHAR)   VARCHAR2(128 BYTE)
c5        VARCHAR2(30 CHAR)   VARCHAR2(128 BYTE)
c6        -                   VARCHAR2(128 BYTE)
n1        NUMBER              NUMBER
n2        NUMBER              NUMBER
n3        NUMBER              NUMBER
n4        NUMBER              NUMBER
n5        NUMBER              NUMBER
n6        NUMBER              NUMBER
n7        NUMBER              NUMBER
n8        NUMBER              NUMBER
n9        NUMBER              NUMBER
n10       NUMBER              NUMBER
n11       NUMBER              NUMBER
n12       NUMBER              NUMBER
n13       -                   NUMBER
d1        DATE                DATE
R1        RAW(32)             RAW(1000)
R2        RAW(32)             RAW(1000)
R3        -                   RAW(1000)
CH1       VARCHAR2(1000 CHAR) VARCHAR2(1000 BYTE)
CL1       CLOB                CLOB
BL1       -                   BLOB

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多