You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 11g XE执行get_prefs查询报ORA-20001:pname输入值无效

报错根因

你触发ORA-20001: Invalid input values for pname错误的核心原因是Oracle Database 11g Express Edition 11.2.0.2版本的DBMS_STATS.GET_PREFS过程不支持TABLE_CACHED_BLOCKS作为合法入参。
TABLE_CACHED_BLOCKS是Oracle 12cR1及之后版本才新增到DBMS_STATS偏好体系的参数,11gR2版本中DBMS_STATS.GET_PREFS支持的合法pname入参仅包含CASCADE、DEGREE、ESTIMATE_PERCENT、METHOD_OPT、NO_INVALIDATE、GRANULARITY、PUBLISH、INCREMENTAL、STALE_PERCENT,传入未定义的参数名就会抛出该错误。
另外你传入的对象名bricks_idx1从命名规则看属于索引,DBMS_STATS.GET_PREFS仅支持表级偏好查询,传入索引名即使参数名合法也可能触发异常。

11g版本可行解决方案
  • 若需要查询实例级的缓存块默认配置:11g中该逻辑由隐藏参数_table_cached_blocks控制,默认值为1,直接查询系统参数视图即可,无需调用DBMS_STATS过程:
select value
from v$parameter
where name = '_table_cached_blocks';
  • 若需要在收集统计信息时为指定表设置缓存块数值:直接在调用DBMS_STATS.GATHER_TABLE_STATS时显式传入cached_blks入参即可,11g版本不支持表级持久化保存该参数的偏好设置,每次收集统计信息时按需指定:
begin
  dbms_stats.gather_table_stats(
    ownname => user,
    tabname => 'BRICKS_IDX1', -- 注意此处需传入真实表名,不要传入索引名
    cached_blks => 10 -- 根据实际业务需求设置对应数值
  );
end;
/

内容的提问来源于stack exchange,提问作者Khadim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:01:40