1.查询数据存储的物理块信息
select e.rowid,
(select file_namefrom dba_data_files where file_id =
dbms_rowid.rowid_to_absolute_fno(e.rowid,'SCOTT','EMP')) FILEN,
dbms_rowid.rowid_block_number(e.rowid) block_no,
dbms_rowid.rowid_row_number(e.rowid) row_no
from emp e
where e.ename='KING'
/
注:记得第二个参数,是用户名,一定要大写。
2.收集统计信息
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname =>'DPCRM',
TABNAME => 'T_CUST_CUSTBASEDATA',
CASCADE =>TRUE,
METHOD_OPT =>'for ALL columns SIZE 1');
END;
还有很多参数可以自行搜索。
3.统计索引聚簇因子
select i.table_name || '.' || i.index_name index_name,
i.clustering_factor,
t.blocks,
t.num_rows
from user_indexes i, user_tables t
where t.table_name = i.table_name
聚簇因子是oracle决定是否使用索引的一个关键因素。但是聚簇因子往往是不那么准确的。
这是在一本书上看到的关于聚簇因子计算的原理的模拟。
聚簇因子是先按照索引列排序,然后查看前后两行记录是否在同一个块上。如果不在这个索引的聚簇因子就加1
4.查询最近执行过的sql
select sql_id, child_number, hash_value, address, executions, sql_text
from v$sql
where parsing_user_id =
(select user_Id from all_users where username = 'DPCRM')
and command_type in (2, 3, 6, 7, 189)