Oracle 데이터베이스의 높은 메모리 사용률

하나의 오라클 데이터베이스 서버에서 메모리가 거의 소모되었습니다. 거의 100GB가 사용됩니다..

우리가 알고 있듯이,오라클 메모리는 PGA와 SGA로 구성됩니다.,그래서 나는 그것을 분석하기 위해 awr 보고서를 생성합니다.. 다음과 같이.

PGA의 크기는 66GB에 이르고 SGA의 크기는 29GB라는 것이 분명합니다.,따라서 PGA에 대한 큰 의심이 있습니다.
아래 그림에서,PGA가 서버 프로세스 및 백그라운드 프로세스와 관련된 정보를 얻을 수 있습니다., 모든 사용자 세션은 PGA에 보관됩니다..

그래서 각 프로세스의 메모리 사용률을 확인하기 위해 다음 SQL을 실행했습니다..

PID 선택,SPID,v $ process ORDER BY MB의 PGA_ALLOC_MEM / 1024 / 1024MB;

위의 정보 읽기 상자에서, 각 공정이 거대한 PGA를 차지. SPID는 운영 체제 프로세스 번호를 의미합니다.. 그리고 프로세스 번호에 따라 명령을 실행하여 jdbc 클라이언트가 데이터베이스 서버에 연결하는 정보를 얻을 수 있습니다. “netstat -tanlp | grep SPID”, 예를 들어 SPID는 44175, 클라이언트 연결 데이터베이스의 IP 및 포트를 알 수 있습니다..

그래서. 클라이언트 IP는 192.168.17.6 포트는 47244. 클라이언트 로그인 및 명령 실행 “netstat -tanlp | 그렙 47244” 클라이언트 프로그램의 PID 번호를 얻으려면.

PID 번호에서 4842, ps 명령으로 어떤 프로그램이 데이터베이스 서버에 연결되는지 알 수 있습니다..

이제 로그를 분석 할 수 있습니다.(예 : catalina.out) 이 프로그램의, 또는 PID로 SQL 문장과 세션을 분석 할 수도 있습니다..

하지만 긴급 상황이라면, 가장 빠른 방법은 클라이언트 프로그램을 다시 시작하는 것입니다.(abow 바람둥이 ). 데이터베이스 서버의 메모리 사용률이 감소합니다.. 하지만 문제를 완전히 해결해야한다면, 프로그램 로그 분석 시도, SQL 문장 또는 데이터베이스의 awr,버그 수정, 프로그램 및 데이터베이스 최적화.

답장을 남겨주세요