SELECT (SELECT SUM(TOTAL_SIZE)/1024.0/1024.0 FROM V$MEM_POOL)||'MB' AS MEMPOOL_SIZE
,(SELECT SUM(N_PAGES)*(SELECT SF_GET_PAGE_SIZE())/1024.0/1024.0 FROM V$BUFFERPOOL)||'MB' AS BUFFER_SIZE
,(SELECT (SELECT SUM(TOTAL_SIZE)/1024.0/1024.0 FROM V$MEM_POOL)
+
(SELECT SUM(N_PAGES)*(SELECT SF_GET_PAGE_SIZE())/1024.0/1024.0 FROM V$BUFFERPOOL))||'MB' AS TOTAL_SIZE;
SELECT
NAME, --内存池名称
IS_SHARED, --是否是共享的
IS_OVERFLOW, --是否用到了备份池
ORG_SIZE/1024.0/1024.0, --内存池初始大小
TOTAL_SIZE/1024.0/1024.0, --内存池总大小(包括扩展的)
RESERVED_SIZE/1024.0/1024.0, --当前已分配大小(包括扩展的)
DATA_SIZE/1024.0/1024.0, --实际有效字节
EXTEND_SIZE, --每次扩展多少
TARGET_SIZE, --目标大小
N_EXTEND_NORMAL , --TARGET 范围内累计扩展次数
N_EXTEND_EXCLUSIVE --超过 TARGET 累计扩展次数
,S.SQL_TEXT
FROM V$MEM_POOL M
LEFT JOIN V$SESSIONS S ON M.CREATOR=S.THRD_ID
ORDER BY TOTAL_SIZE DESC;
/*
注意:
1、N_EXTEND_EXCLUSIVE 如果长期大于 0,说明长期从池外扩展,可能存在内存泄露。需要重点关注。
2、用到备份池的话,需要保持高度关注,此时系统非常危险。
3、内存池创建的线程号 CREATOR 可以与 SESSION 的 THRD_ID 关联,查看对应的某个会话的内存使用情况。
4、如果 RESERVED_SIZE 比 ORG_SIZE 小,说明内存池非常空闲,需要把对于的初始内存放小,否则浪费。
*/
SELECT
NAME, --缓冲区名称
N_PAGES, --页数
FREE, --空闲页数目
N_DISCARD64 --淘汰的页数
FROM V$BUFFERPOOL
/*
注意重点:
1、如果 FREE 很多说明该缓冲区很空闲,可以适当的调整降低 BUFFER 缓冲区参数值。
2、如果 FREE 项为 0,或者 N_DISCARD64 非零,表示该缓冲区经常淘汰。
这种情况,就说明对应的缓冲区参数太小,导致频繁淘汰,需要调整对应的缓冲区的参数。
*/
SELECT MAX_MEM_USED/1024.0||'MB' AS MEM,DDL_SQL_CNT,DEL_SQL_CNT,INS_SQL_CNT,SEL_SQL_CNT,UPD_SQL_CNT ,IO_WAIT_TIME,* FROM V$SQL_STAT ORDER BY MAX_MEM_USED DESC;
文章
阅读量
获赞