您好,欢迎访问一九零五行业门户网

Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况

一、oracle10g提供addm的功能,用em来看addm的报告自然非常容易,下面说下如果用sql来获得,两种方法:1、下面的sql可以得到最近
一、oracle10g提供addm的功能,用em来看addm的报告自然非常容易,下面说下如果用sql来获得,两种方法:
1、下面的sql可以得到最近一次的报告
set long 1000000 pagesize 0 longchunksize 1000
column get_clob format a80
select dbms_advisor.get_task_report(task_name)
from dba_advisor_tasks
where task_id = (
select max(t.task_id)
from dba_advisor_tasks t,
dba_advisor_log l
where t.task_id = l.task_id and
t.advisor_name = 'addm' and
l.status = 'completed');
或者通过查询select * from dba_advisor_tasks;
得到需要时间点的task_name,然后单独执行
set long 1000000 pagesize 0 longchunksize 1000
column get_clob format a80
select dbms_advisor.get_task_report('scott_addm', 'text', 'typical|all')
from   sys.dual;
就可以得到所需时间点的报告。
2、下面的脚本可以取得两个快照之间的报告(有点类似statspack):
sql> @?/rdbms/admin/addmrpt
二、使用addm还可以自动监控数据库中表的增删改的数量(类似以前的alter table ... monitoring),方法如下:
1、启用addm当然statistics_level得是typical或all了
2、检查一张新表test.test没有被修改过,如果插入记录:
sql> select * from dba_tab_modifications where table_owner='test' and table_name='test';
no rows selected
sql> insert into test.test values (1,1,1);
1 row created.
sql> commit;
commit complete.
3、手工将sga的修改表信息push到数据字典中(不然要等15分钟),然后查看数据字典里的情况:
sql> exec dbms_stats.flush_database_monitoring_info();
pl/sql procedure successfully completed.
sql> select * from dba_tab_modifications where table_owner='test';
table_owner                    table_name
------------------------------ ------------------------------
partition_name                 subpartition_name                 inserts
------------------------------ ------------------------------ ----------
updates    deletes timestamp tru drop_segments
---------- ---------- --------- --- -------------
test                           test
1
0          0 04-sep-07 no              0
可以看到inserts变为1了。
4、重新收集表的信息会怎么样?
sql> execute dbms_stats.gather_table_stats('test','test');
pl/sql procedure successfully completed.
sql> select * from dba_tab_modifications where table_owner='test' and
table_name='test';
no rows selected
呵呵,,没有了。这是因为重新统计后,oracle认为那些信息是旧的了,所以就没了,这点要注意。
其它类似信息

推荐信息