2011-02-03 4 views
0

오라클 데이터베이스 서버 스왑 사용률이 100 % 였고 그 기간 동안 시스템에 사용 가능한 메모리가 있음을 알면 이상한 인스턴스가 있습니다. 내 지식으로는 시스템이 사용 가능한 RAM이 부족하면 스왑 메모리 사용이 시작됩니다 (제발 내가 틀렸다면 수정하십시오). 이 비정상적인 활동을 일으킨 원인이 무엇인지 확신 할 수 없습니다. 다른 누구도 그러한 행동을 경험 했습니까? 당신은 당신이 당신의 통계를 얻을 수 있지만, 스왑 및 RAM 사용률 사이에 직접적인 관계가없는 방법에 대한 자세한 내용을 제공해야사용 가능한 RAM이 스왑 메모리를 사용하는 솔라리스의 Oracle DB

+0

"내가 아는 한 시스템이 사용 가능한 RAM이 부족 해지면 스왑 메모리 사용이 시작됩니다."-> 당신이 틀렸고 문제의 근본 원인에 초점을 맞추지 않는 답을 받아 들인 것에 대해 다소 실망 스럽습니다. – jlliagre

답변

1

solaris 10 이상을 사용하는 경우 시스템 매개 변수는 더 이상/etc/system에 없습니다. 대신 을 영역, 작업 또는 사용자 수준에서 "프로젝트"를 통해 동적으로 관리되는 리소스로 구성합니다.

예를 들어 우리 영역 중 하나에있는 프로젝트 구성 파일 중 하나입니다.

system:0:::: 
user.root:1:::: 
noproject:2:::: 
default:3:::: 
group.staff:10:::: 
user.oracle:100:Oracle:::process.max-sem-nsems=(privileged,256,deny);project.ma-shm-ids=(privileged,256,deny);project.max-shm-memory=(privileged,42949672960,dny) 

여기서 설정은 사용자 이름 Oracle의 사용자가 특정 리소스 설정의 이점을 얻는다는 것을 의미합니다.

프로젝트 파일에 이러한 행을 추가하려면 projadd 명령을 사용하십시오. 그것에게 projmod 명령을 수정하려면, 당신은 오라클 현재 사용 가능한 모든 자원을 나열 할 경우 것 신탁

  • 유형

    1. 스와 :

      은 prctl -i 프로젝트 user.oracle

    '프로젝트'에서 사용 가능한 모든 리소스가 나열됩니다.

  • +0

    이 정보를 제공해 주셔서 감사 드리며 귀하의 의견을 바탕으로 추가 조사를 실시하고 있습니다. – Ara

    1

    사무 처리 규정 제. 스왑 공간에서 자유로운 RAM을 사용할 수 있습니다.

    모든 (가상) 메모리 예약이 적합하도록 충분한 스왑이 있어야합니다. 메모리 예약 (즉, malloc)은 RAM을 사용하지 않습니다. RAM은 가상 메모리 액세스 중에 만 필요합니다.

    0

    Solaris에서 실행중인 Oracle DB에는 "버그"가 있습니다. "swap"과 "ram"이 하나의 가상 메모리 풀에 결합 된 운영 체제에서 "예약"스왑입니다. 스왑 예약은 아무런 이유없이 디스크 기반 스왑 영역을 소모하므로 전혀 수행하지 않아야합니다. 램과 스왑 간의 모든 전환은 Solaris OS 자체에서 처리됩니다. Sun/Oracle에서 Java와 정확히 동일한 문제를 이해하는 데는 거의 5 년이 걸렸습니다.

    최신 Java 7 및 8은 더 이상 메모리 풀에 "이중 딥 (double dip)"하지 않습니다.

    OS가 "스왑"한도로 실행되는 경우, 그에 따라 메모리를 크기 조정하고 스왑을 모두 제거하는 것이 좋습니다.

    스왑을 사용할 수있는 경우 모든 메모리 상호 작용이 물리적 RAM에 있으며 이중 딥 문제가 표시되지 않으며 실행할 RAM이 충분하면 스왑 소모에 대한 오류는 표시되지 않습니다.

    관련 문제