安排自动“分析表”的方法是什么。当大量数据通过插入和删除发生更改时,是否可以请求自动“分析表”?参数化自动分析表过程的方法是什么,即设置何时应该触发的规则。
最佳答案
您使用的是哪个版本的 Oracle?从 10.1 开始,Oracle 提供了一项自 Action 业,每晚收集任何对象的统计信息,这些对象自上次统计以来发生了重大变化(基于可能发生变化的内部算法,但我相信阈值约为 15%)聚集。假设您使用的是当前受支持的版本,默认情况下会自动收集统计信息,除非您明确禁用该作业。
您可以使用 DBMS_STATS
包根据事件收集对象的统计信息,您可以使用 DBMS_JOB
(或 DBMS_SCHEDULER
)包以异步完成。因此,在 ETL 过程结束时,您可以收集统计信息
BEGIN
dbms_stats.gather_table_stats(
ownname => <<schema name>>,
tabname => <<table name>>
);
END;
你可以让它异步运行
DECLARE
l_jobno INTEGER;
BEGIN
dbms_job.submit(
l_jobno,
'BEGIN dbms_stats.gather_table_stats( ''<<schema name>>'', ''<<table name>>'' ); END;',
sysdate + interval '1' minute
);
END;
关于Oracle 调整/分析表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1800124/