f How to tell memory usage of an oracle db session ~ 迪貝之家

How to tell memory usage of an oracle db session

幹DBA常常會被AP challenge
就突然丟個top 指令的output
質問為什麼你們的連線用這麼多記憶體??
這是他們的貼圖
人家都框起來囉!!質問你用了超過11GB的記憶體
我想RES及SHR的解釋部分
我來引用一個org網站所寫的top指令output文章
(找好久...至少覺得它說出來的,較有說服力)
Understand Fedora memory usage with top
這篇文章裡,舉gnome-shell 這個process為例
來解釋記憶體的使用
基本上,其實就是RES - SHR
一減下來,其實就沒什麼記憶體的用量
就我們DBA來說,依據Oracle的連線架構
有可能去跟作業系統要記憶體的就是PGA的用量
所以我透過下列語法,去找到對應Server Process的PGA用量
SELECT --distinct s.inst_id,
distinct s.sid,
s.serial#,
p.spid,
s.username,
s.program,
-- s.machine,
s.status,
pga_used_mem/1024/1024,
pga_alloc_mem/1024/1024
FROM gv$session s, gv$process p
where p.addr = s.paddr
AND p.inst_id = s.inst_id
and p.spid in ( 10681,16565,8757,16095) ;
這是Query OUTPUT
了不起頂多就allocate了11MB
我們能說什麼 ???
SHR的部分,就有DB的環境
最大宗的應該是buffer cache所用掉的 shared memory
我們得為了這種事情去做解釋