SELECT EXECUTIONS, DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS, 2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_mn,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS> 0
AND BUFFER_GETS> 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC;
1:查看哪个session锁定临时表,表格对象.
这个语句在我其它的日志中已经有.
相关对象:V$SESSION,V$OPEN_CURSOR,V$SQL;
SQL:select * from v$session where sid in (select sid from v$open_cursor where sql_id in ( select sql_id from
v$sql where upper(sql_text) like '%?%') );
其中?可以用需要的字串去替代.
其它方面:暂时不查表格之外对象,其次如果sql语句非常长的应该去搜索v$sql.sql_fulltext对象(CLOB).
2.查找过去一段时间新添加或者新修改的对象
相关对象:DBA_OBJECTS
SQL: SELECT * FROM DBA_OBJECTS WHERE (TO_CHAR(LAST_DDL_TIME,'YYYY-
MM-DD')>='2008-11-16' OR TO_CHAR(CREATED,'YYYY-MM-DD')>='2008-11-16')
其它方面:DBA_OBJECTS有丰富的字段,可以通过添加更多的过滤条件来精确定位需要的内容.
3.查找目前占用了大量CPU的SQL
说明:网络上有一些资料,但是并不是很好用,思路都是通过OS来找到消耗最多资源的线程或者进程,因为平台的不同,可能还需要采取不同的方式(WINDOWS是线程,LINUX,UNIX等是进程),然后再通过v$session查找对应的SID,再通过V$OPEN_CURSOR或者v$sqlarea来查找.好像也没有太多的捷径阿.
此部分暂时略.
4:最近被频繁执行的SQL
说明:由于并没有记录sql历史的表格,oracle并不干这样的事儿,所以,这里不讨论由客户自行保存的SQL历史的问题.只说v$sqlarea(位于共享池中的sql语句),然而如果没有监视,也没有太大的意义,所以这也忽略 .
http://blog.csdn.net/shuiqingtinglin/article/details/5678226
ORACLE查看表空间使用率
select *
from (SELECT a.tablespace_name tableSpaceName,
NVL(a.BYTES / 1024 / 1024,0) totalSize,
NVL(b.largest / 1024 / 1024,0) freeSize,
NVL((a.BYTES - b.BYTES) / 1024 / 1024,0) usedSize,
round(NVL((a.BYTES - b.BYTES) / a.BYTES * 100, 0), 2) usedPercent
from (SELECT tablespace_name, sum(BYTES) bytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, sum(BYTES) bytes, max(BYTES) largest
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY a.tablespace_name)
UNION
SELECT d.tablespace_name tableSpaceName,
NVL(a.BYTES / 1024 / 1024, 0) totalSize,
NVL(a.BYTES / 1024 / 1024, 0) - NVL(t.BYTES, 0) / 1024 / 1024 freeSize,
NVL(t.BYTES, 0) / 1024 / 1024 usedSize,
round(NVL(t.BYTES / a.BYTES * 100, 0), 2) usedPercent
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM(BYTES) BYTES
FROM dba_temp_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes_cached) BYTES
FROM v$temp_extent_pool
GROUP BY tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management LIKE 'LOCAL'
AND d.CONTENTS LIKE 'TEMPORARY'