- --下面的语句既可以用于上线前的脏数据分析:上线之前将产生的垃圾数据删除,然后运行下面的语句,收集完后再查看 dba_tables 中 NUM_ROWS 字段中
- --是否有大于0的表,根据这个字段来分析是否还有脏数据没有清除干净
- --也能用于上线后的数据分析
-
- SELECT 'exec dbms_stats.gather_table_stats('||''''||a.owner||''''||','||''''||a.table_name||''''||') ;' FROM dba_tables a WHERE a.owner='ZLHIS' ;
-
- SELECT 'exec dbms_stats.gather_table_stats('||''''||a.owner||''''||','||''''||a.table_name||''''||','||'cascade=>true'||') ;'
- FROM dba_tables a WHERE a.owner='ZLHIS' ;
- SELECT 'exec dbms_stats.gather_table_stats('||''''||a.owner||''''||','||''''||a.table_name||''''||','||'cascade=>true'||') ;'
- SELECT 'exec dbms_stats.gather_table_stats('||''''||a.owner||''''||','||''''||a.table_name||''''||') ;' FROM dba_tables a WHERE a.owner='ZLTOOLS' ;
-
- SELECT 'exec dbms_stats.gather_table_stats('||''''||a.owner||''''||','||''''||a.table_name||''''||','||'cascade=>true'||') ;'
- FROM dba_tables a WHERE a.owner='ZLTOOLS' ;
- SELECT 'exec dbms_stats.gather_table_stats('||''''||a.owner||''''||','||''''||a.table_name||''''||','||'cascade=>true'||') ;'
- SELECT 'exec dbms_stats.gather_index_stats('||''''||a.owner||''''||','||''''||a.index_name||''''||') ;' FROM dba_indexes a WHERE a.owner='ZLHIS' ;
-
- SELECT 'exec dbms_stats.gather_index_stats('||''''||a.owner||''''||','||''''||a.index_name||''''||') ;' FROM dba_indexes a WHERE a.owner='ZLTOOLS' ;
-
- --也可按照以下的语句直接进行分析
- SELECT 'ANALYZE TABLE '||A.owner||'.'||A.table_name||' COMPUTE STATISTICS ;' FROM DBA_tables a WHERE a.owner IN ('ZLHIS','ZLTOOLS') ;
- SELECT 'ANALYZE INDEX '||A.owner||'.'||A.INDEX_NAME||' COMPUTE STATISTICS ;' FROM DBA_INDEXES a WHERE a.owner IN ('ZLHIS','ZLTOOLS') ;
- --删除统计分析的数据
- ANALYZE TABLE TableName DELETE STATISTICS ;
- ANALYZE INDEX IndexName DELETE STATISTICS ;
-
- --查询表是否分析过
- SELECT A.LAST_ANALYZED, A.TABLE_NAME, A.NUM_ROWS, A.SAMPLE_SIZE
- FROM DBA_TABLES A
- WHERE OWNER IN ('ZLHIS','ZLTOOLS')
- ORDER BY A.LAST_ANALYZED DESC ;
-
- --查看自动收集统计信息的任务
- --查询的列值auto optimizer stats collection为enabled即代表自动收集任务
- SELECT CLIENT_NAME, STATUS FROM DBA_AUTOTASK_CLIENT ;
-
- ----以下为收集表信息、索引信息等的语法
- –收集数据库信息
- EXEC DBMS_STATS.gather_database_stats;
- EXEC DBMS_STATS.gather_database_stats(estimate_percent => 15);
-
- –收集schema信息
- EXEC DBMS_STATS.gather_schema_stats(‘SCOTT’);
- EXEC DBMS_STATS.gather_schema_stats(‘SCOTT’, estimate_percent => 15);
-
- –收集表信息
- EXEC DBMS_STATS.gather_table_stats(‘SCOTT’, ‘EMPLOYEES’);
- EXEC DBMS_STATS.gather_table_stats(‘SCOTT’, ‘EMPLOYEES’, estimate_percent => 15);
-
- –收集index信息
- EXEC DBMS_STATS.gather_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’);
- EXEC DBMS_STATS.gather_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’, estimate_percent => 15);
-
- –删除收集信息
- EXEC DBMS_STATS.delete_database_stats;
- EXEC DBMS_STATS.delete_schema_stats(‘SCOTT’);
- EXEC DBMS_STATS.delete_table_stats(‘SCOTT’, ‘EMPLOYEES’);
- EXEC DBMS_STATS.delete_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’);
-
- –创建备份收集信息表
- begin
- dbms_stats.create_stat_table(USER,stattab => ‘STAT_TABLE’);
- end;
-
- –备份收集信息
- BEGIN
- dbms_stats.export_table_stats(USER,tabname => ‘FEI_T’,stattab => ‘STAT_TABLE’);
- END;
-
- –删除收集信息
- BEGIN
- DBMS_STATS.delete_table_stats(USER,tabname => ‘FEI_T’);
- END;
-
- –导入收集信息
- BEGIN
- dbms_stats.IMPORT_TABLE_STATS(USER,’FEI_T’,stattab => ‘STAT_TABLE’);
- END;
-
- –说明:
- 当前用户可以使用user代替用户名
- 分析表相关对象信息cascade => true
-
- --启用自动收集统计信息的任务
- BEGIN
- DBMS_AUTO_TASK_ADMIN.ENABLE(
- client_name => 'auto optimizer stats collection',
- operation => NULL,
- window_name => NULL);
- END;
-
- --禁用自动收集统计信息的任务
- BEGIN
- DBMS_AUTO_TASK_ADMIN.DISABLE(
- client_name => 'auto optimizer stats collection',
- operation => NULL,
- window_name => NULL);
- END
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28878983/viewspace-2133927/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28878983/viewspace-2133927/