oracle – exec从程序中收集表统计信息
发布时间:2020-12-12 15:13:31 所属栏目:百科 来源:网络整理
导读:如果我创建一个程序: CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS ISBEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS( 'SchName','TableName',CASCADE = TRUE);END; 并执行它; EXEC SchameB.PRC_GATHER_STATS; 这给了我错误ORA-20000:无法分析TABLE“
如果我创建一个程序:
CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS IS BEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS( 'SchName','TableName',CASCADE => TRUE); END; 并执行它; EXEC SchameB.PRC_GATHER_STATS; 这给了我错误ORA-20000:无法分析TABLE“SchameA”.“TableName”,权限不足或不存在.但这有效: EXEC SYS.DBMS_STATS.GATHER_TABLE_STATS( 'SchameA',CASCADE => TRUE); 执行过程和表的用户使用不同的模式. 为什么我在通过程序执行此操作时出错? 要收集另一个模式中的对象的统计信息,您需要ANALYZE ANY系统特权.我似乎运行您的过程的用户具有该权限,但通过角色授予.如 the documentation says:
您可以直接向用户进行GRANT ANALYZE ANY,也可以创建程序with invoker’s rights,如下所示: CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS AUTHID CURRENT_USER IS BEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS('SchName',CASCADE => TRUE); END; / 当您直接执行DBMS_STATS过程时,它将作为匿名块运行,并且始终以调用者的权限运行 – 尊重角色. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 解析浏览器端的AJAX缓存机制
- SWFObject: Javascript Flash Player detection and embed
- Oracle insert大量数据经验之谈
- c – Boost中的线程访问冲突在关闭时登录
- ajax post中在firefox返回值一个值得注意的地方
- cocos2dx3.2 实现控制面板进进出出,其乐无穷,哈哈
- 第26章《享元模式》
- [cocos2d-js]cc.RenderTexture几种用法(数字图片、刮刮乐效
- CitrusEngine系列教程六:使用Tiled Map Editor创建地图
- reactjs – React性能:渲染中等大小的列表,具有明显的延迟