大于10M表无统计信息的收集
declare
v_sql varchar2(2000) :='';
v_count number;
begin
for r in (
select tab.owner, tab.TABLE_NAME ,partitioned
from (SELECT seg.owner, seg.segment_name, sum(bytes / 1024 / 1024) mb
FROM dba_segments seg
where seg.owner in ('COMMON','TBCS')
and seg.segment_type in ('TABLE', 'TABLE PARTITION')
group by owner, segment_name
having sum(seg.bytes / 1024 / 1024) > 10) seg,
dba_tables tab
where tab.TABLE_NAME = seg.segment_name
and tab.OWNER = seg.owner
and tab.segment_created<>'NO'
and tab.NUM_ROWS = 0
and tab.owner in ('COMMON','TBCS'))
loop
v_sql:='select /*+parallel (t 8)*/count(*) from '||r.owner||'.'||r.TABLE_NAME||' t';
dbms_output.put_line(v_sql);
execute immediate v_sql into v_count;
if v_count>0 then
dbms_output.put_line('exec dbms_stats.GATHER_TABLE_STATS(OWNNAME=>'||''''||r.owner||''''||',TABNAME=>'||''''||r.table_name||''''||',cascade=>TRUE,estimate_percent => dbms_stats.auto_sample_size,method_opt=>''FOR TABLE FOR ALL COLUMNS SIZE REPEAT'', degree => 8,no_invalidate=>false);');
end if;
end loop;
end;
/
PL/SQL中两个单引号会输出一个单引号
begin
for r in (select tablespace_name from dba_data_files where online_status='OFFLINE')
loop
begin dbms_output.put_line('select dbms_metadata.get_ddl(''TABLESPACE'','||''''||r.tablespace_name||''''||') from dual;');
end;
end loop;
end;
/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)