问题描述
我有一个函数-ANALYZE_TABLE,如下所示
现在,如何使用相同的函数来分析给定表名的唯一最新分区?我试过下面这样的东西
但这是抛出错误,因为表或视图没有。我所需要的只是在给定表名称的最新分区上收集统计信息。非常感谢帮助。
谢谢
Sai
create or replace FUNCTION ANALYZE_TABLE (P_TAB_NAME IN VARCHAR2) RETURN NUMBER IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN DBMS_STATS.GATHER_TABLE_STATS(USER,P_TAB_NAME); RETURN 0; END;
现在,如何使用相同的函数来分析给定表名的唯一最新分区?我试过下面这样的东西
create or replace FUNCTION ANALYZE_PART_TABLE (P_TAB_NAME IN VARCHAR2) RETURN varchar2 IS
part_name varchar2(20);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
SELECT
MAX(partition_name) KEEP(DENSE_RANK LAST ORDER BY partition_position)
FROM
dba_tab_partitions
WHERE
table_name = P_TAB_NAME;
DBMS_STATS.GATHER_TABLE_STATS(USER,P_TAB_NAME,P_PART_NAME);
RETURN part_name;
END;但这是抛出错误,因为表或视图没有。我所需要的只是在给定表名称的最新分区上收集统计信息。非常感谢帮助。
谢谢
Sai
专家解答
您需要执行此操作而不是使用自动统计工作的任何特殊原因?
无论如何,您需要将dba_tab_partitions上的select授予拥有此过程的用户。
无论如何,您需要将dba_tab_partitions上的select授予拥有此过程的用户。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




