如果您不使用Cloud Control来设置优化器统计信息首选项,则可以从命令行调用DBMS_STATS过程。
先决条件
此任务具有以下先决条件:
- 要设置全局或数据库首选项,您必须具有
SYSDBA特权,或者既具有特权ANALYZE ANY DICTIONARY又具有ANALYZE ANY系统特权。 - 要设置架构首选项,您必须以所有者身份连接,或者具有
SYSDBA特权,或者具有ANALYZE ANY系统特权。 - 要设置表首选项,您必须以表的所有者身份连接或具有
ANALYZE ANY系统特权。
要从命令行设置优化器统计信息首选项:
- 在SQL * Plus或SQL Developer中,以具有必要特权的用户身份登录数据库。
- (可选)调用该
DBMS_STATS.GET_PREFS过程以查看在对象级别或全局级别(如果未设置特定表)下设置的首选项。例如,按如下方式获取表的
STALE_PERCENT参数设置sh.sales:SELECT DBMS_STATS.GET_PREFS('STALE_PERCENT', 'SH', 'SALES') FROM DUAL; - 从表12-1执行适当的过程,并指定以下参数:
ownname-设置用户名(只有SET_TAB_PREFS和SET_SCHEMA_PREFS)tabname-设置表格名称(只有SET_TAB_PREFS)pname-设置参数名称pvalue-设置参数值add_sys-包括系统表(SET_DATABASE_PREFS仅可选)
以下示例指定在
sh.sales更改该表的统计信息之前,必须更改其中13%的行:EXEC DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES', 'STALE_PERCENT', '13'); - (可选)查询
*_TAB_STAT_PREFS视图以确认更改。例如,查询
DBA_TAB_STAT_PREFS如下:COL OWNER FORMAT a5 COL TABLE_NAME FORMAT a15 COL PREFERENCE_NAME FORMAT a20 COL PREFERENCE_VALUE FORMAT a30 SELECT * FROM DBA_TAB_STAT_PREFS;输出示例如下:
OWNER TABLE_NAME PREFERENCE_NAME PREFERENCE_VALUE ----- --------------- -------------------- ------------------------------ OE CUSTOMERS NO_INVALIDATE DBMS_STATS.AUTO_INVALIDATE SH SALES STALE_PERCENT 13
也可以看看:
《 Oracle数据库PL / SQL软件包和类型参考》中有关程序单元的参数名称和值的描述
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




