-
--下面的语句既可以用于上线前的脏数据分析:上线之前将产生的垃圾数据删除,然后运行下面的语句,收集完后再查看 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||''''||') ;' 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_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博客 ” ,链接:https://blog.itpub.net/28878983/viewspace-2133927/
,如需转载,请注明出处,否则将追究法律责任。