sql 批量清空表,批量分析表

 

 


--写一个对表批量 truncate 的语句,执行后复制出来,批量执行即可 如下清空表
DECLARE
  CURSOR CUR_TRUNC IS
    SELECT TABLE_NAME FROM USER_TABLES;
BEGIN
  FOR CUR_DEL IN CUR_TRUNC LOOP
    EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || CUR_DEL.TABLE_NAME;
  END LOOP;
END;



--先批量分析表
DECLARE CURSOR CUR_ANALYZE
 IS SELECT TABLE_NAME FROM USER_TAB_COMMENTS;
 BEGIN
   FOR ANALYZE_1 IN CUR_ANALYZE LOOP
     EXECUTE IMMEDIATE 'ANALYZE TABLE '||ANALYZE_1.TABLE_NAME||' COMPUTE STATISTICS';
     END LOOP;
   END;
 




CALL dbms_stats.create_stat_table(ownname=>'SCOTT',stattab=>'STAT_TABLE'); --创建备份的统计信息表
CALL dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'EMP');  --收集一个表的统计信息
CALL dbms_stats.export_table_stats(ownname=>'SCOTT',tabname=>'EMP',stattab=>'STAT_TABLE');  --导出统计信息
CALL dbms_stats.delete_table_stats(ownname=>'SCOTT',tabname=>'EMP'); --删除统计信息
CALL dbms_stats.import_table_stats(ownname => 'SCOTT',tabname => 'EMP',stattab => 'STAT_TABLE'); --导入备份的统计信息
CALL dbms_stats.delete_table_stats(ownname=>'SCOTT',tabname=>'EMP'); --删除统计信息

CALL dbms_stats.gather_schema_stats(ownname=>'SCOTT'); --收集一个用户下的统计信息



select 'CALL DBMS_STATS.gather_table_stats('''||owner||''','''||table_name||''');'   from all_all_tables a where a.owner ='TEMPUSER'

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值