open_cursor session_cached_cursors 優化
open_cursor session_cached_cursors 優化
--當前資料庫連線的會話數和程式數
select count(*) from v$session
union
select count(*) from v$process;
-- 檢視當前session_cached_cursors 的使用情況:
select e.* from v$sesstat e, v$statname s
where s.NAME = 'session cursor cache count' and e.STATISTIC# = s.STATISTIC# order by e.VALUE desc;
-----session cursor cache hits就是系統在快取記憶體區中找到相應cursors的次數,parse count(total)就是總的解析次數,二者比值越高,效能越好。如果比例比較低,並且有較多剩餘記憶體的話,可以考慮加大該引數。
SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME LIKE '%cursor%'
union
SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME LIKE '%parse%';
select (select v.VALUE from V$SYSSTAT v where v.NAME='session cursor cache hits')/(select a.VALUE from V$SYSSTAT a where a.NAME='parse count (total)') from dual;
/*解釋一下v$sesstat中相關取值的重要概念
1 > opened cursors current (當前單個session開啟的cursors數量)
2 > parse count (hard) (當前session硬解析次數)
3 > parse count (total) (當前session解析總次數)
4 > session cursor cache count (設定session_cached_cursors引數後,"相同"sql被解析3次後被cache在session cursor cache中的數量
5 > session cursor cache hits (軟軟解析的次數 a "softer" soft parse )
6 > 手工計算一下軟解析次數parse count (total) - session cursor cache hits - parse count (hard) = parse count(soft)*/
---每個會話開啟的遊標數
select sid, count(*) from v$open_cursor group by sid order by count(*) desc;
-----使用下面的sql判斷'session_cached_cursors' 的使用情況。如果使用率為100%則增大這個引數值
SELECT 'session_cached_cursors' PARAMETER,
LPAD(VALUE, 5) VALUE,
DECODE(VALUE, 0, ' n/a', TO_CHAR(100 * USED / VALUE, '990') || '%') USAGE
FROM (SELECT MAX(S.VALUE) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME = 'session cursor cache count'
AND S.STATISTIC# = N.STATISTIC#),
(SELECT VALUE FROM V$PARAMETER WHERE NAME = 'session_cached_cursors')
UNION ALL
SELECT 'open_cursors',
LPAD(VALUE, 5),
TO_CHAR(100 * USED / VALUE, '990') || '%'
FROM (SELECT MAX(SUM(S.VALUE)) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME IN
('opened cursors current', 'session cursor cache count')
AND S.STATISTIC# = N.STATISTIC#
GROUP BY S.SID),
(SELECT VALUE FROM V$PARAMETER WHERE NAME = 'open_cursors');
--pga實際的總使用量
select sum(m.ALLOCATED)/1024/1024 from v$process_memory m;
--先備份spfile
-- alter system set session_cached_cursors=500 scope=spfile sid='*';
--當前資料庫連線的會話數和程式數
select count(*) from v$session
union
select count(*) from v$process;
-- 檢視當前session_cached_cursors 的使用情況:
select e.* from v$sesstat e, v$statname s
where s.NAME = 'session cursor cache count' and e.STATISTIC# = s.STATISTIC# order by e.VALUE desc;
-----session cursor cache hits就是系統在快取記憶體區中找到相應cursors的次數,parse count(total)就是總的解析次數,二者比值越高,效能越好。如果比例比較低,並且有較多剩餘記憶體的話,可以考慮加大該引數。
SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME LIKE '%cursor%'
union
SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME LIKE '%parse%';
select (select v.VALUE from V$SYSSTAT v where v.NAME='session cursor cache hits')/(select a.VALUE from V$SYSSTAT a where a.NAME='parse count (total)') from dual;
/*解釋一下v$sesstat中相關取值的重要概念
1 > opened cursors current (當前單個session開啟的cursors數量)
2 > parse count (hard) (當前session硬解析次數)
3 > parse count (total) (當前session解析總次數)
4 > session cursor cache count (設定session_cached_cursors引數後,"相同"sql被解析3次後被cache在session cursor cache中的數量
5 > session cursor cache hits (軟軟解析的次數 a "softer" soft parse )
6 > 手工計算一下軟解析次數parse count (total) - session cursor cache hits - parse count (hard) = parse count(soft)*/
---每個會話開啟的遊標數
select sid, count(*) from v$open_cursor group by sid order by count(*) desc;
-----使用下面的sql判斷'session_cached_cursors' 的使用情況。如果使用率為100%則增大這個引數值
SELECT 'session_cached_cursors' PARAMETER,
LPAD(VALUE, 5) VALUE,
DECODE(VALUE, 0, ' n/a', TO_CHAR(100 * USED / VALUE, '990') || '%') USAGE
FROM (SELECT MAX(S.VALUE) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME = 'session cursor cache count'
AND S.STATISTIC# = N.STATISTIC#),
(SELECT VALUE FROM V$PARAMETER WHERE NAME = 'session_cached_cursors')
UNION ALL
SELECT 'open_cursors',
LPAD(VALUE, 5),
TO_CHAR(100 * USED / VALUE, '990') || '%'
FROM (SELECT MAX(SUM(S.VALUE)) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME IN
('opened cursors current', 'session cursor cache count')
AND S.STATISTIC# = N.STATISTIC#
GROUP BY S.SID),
(SELECT VALUE FROM V$PARAMETER WHERE NAME = 'open_cursors');
--pga實際的總使用量
select sum(m.ALLOCATED)/1024/1024 from v$process_memory m;
--先備份spfile
-- alter system set session_cached_cursors=500 scope=spfile sid='*';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-1435387/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180822]session_cached_cursors與子游標堆0.txtSession
- [20201207]12c v$open_cursor檢視.txt
- 前端效能優化(JS/CSS優化,SEO優化)前端優化JSCSS
- sql優化之邏輯優化SQL優化
- [效能優化]DateFormatter深度優化探索優化ORM
- 前端效能優化 --- 圖片優化前端優化
- 效能優化|Tomcat 服務優化優化Tomcat
- 資料庫優化 - SQL優化資料庫優化SQL
- Android 效能優化 ---- 啟動優化Android優化
- Android效能優化----卡頓優化Android優化
- 【前端效能優化】vue效能優化前端優化Vue
- (mysql優化-3) 系統優化MySql優化
- Android效能優化——圖片優化(二)Android優化
- Android效能優化之佈局優化Android優化
- hive優化-資料傾斜優化Hive優化
- 效能優化04-圖片優化優化
- Android效能優化(1)—webview優化篇Android優化WebView
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- 效能優化(二) UI 繪製優化優化UI
- Android 優化之路(一)佈局優化Android優化
- Apache網頁優化與安全優化Apache網頁優化
- Oracle優化案例-使用with as優化Subquery Unnesting(七)Oracle優化
- SQL優化案例-使用with as優化Subquery Unnesting(七)SQL優化
- Android 效能優化之記憶體優化Android優化記憶體
- MySQL優化(1)——–常用的優化步驟MySql優化
- Android效能優化篇之服務優化Android優化
- Spark效能優化:優化資料結構Spark優化資料結構
- 系統優化怎麼做-Tomcat優化優化Tomcat
- MySQL優化之系統變數優化MySql優化變數
- 前端優化清單(一):之首屏優化前端優化
- 程式分析與優化 - 6 迴圈優化優化
- Golang優化-優雅退出Golang優化
- [20200417]跟蹤特定sql語句以及v$open_cursor檢視.txtSQL
- react優化React優化
- 效能優化優化
- listen優化優化