BULLETIN CATEGORY BULLETIN TOPIC |
: RDBMS : 오라클과 유닉스 세마포어와의 관계 |
유닉스는 내부 프로세스간의 커뮤니케이션을 위하여 세마포어를 사용한다. 세마포어는 유닉스에 의해서 증감되는 정수(integer)값 이다. 하나의 세마포어에 대해서 하나의 프로세스만이 작업을 할 수 있도록 하여 프로세스 간의 동기화를 유지하는데 이용된다. 다른 프로세스가 사용중인 세마포어를 이용하고자 하는 프로세스는 세마포어의 상태가 증가되거나 0 이 될 때 까지 기다리게 된다. (옵션에 따라 다를 수 있다).
유닉스에서의 세마포어는 한개씩 이용되는 경우는 거의 없기 때문에 보통 세마포어 집합으로 관리된다. 유닉스 커널이 설정될 때 시스템에서 사용 가능한 세마포어의 최대 갯수와 세마포어 집합 당 최대 세마포어 갯수 및 할당 가능한 세마포어 집합의 최대 갯수가 설정된다. 이 값들은 유닉스 커널을 다시 만들고 시스템을 리부팅 하여야만 변경이 가능하다. 오라클은 백그라운드 프로세스들 간의 Concurrency 를 조절하기 위하여 세마포어를 사용한다. 그리고 Fast(Shared Memory) Driver 가 사용되는 경우 유저 프로세스와 쉐도우 프로세스 간의 Two-Task Communication 에도 사용된다. 1. 사용중인 세마포어 확인 및 할당된 세마포어 해제
즉, 오라클이 할당한 세마포어 집합에 대하여
2. 세마포어 사용 계획
+ test(MIPS RISC 프로세서를 쓰는 경우는 1, 그외에는 0) + 3*f(fast driver connection 갯수) + sys(오라클 외의 프로그램에서 필요한 세마포어 수) ------------------------------------------------------------ = tot(필요한 최소한의 세마포어 수) 3. 데이타베이스의 기동시 세마포어와 관련된 오류 오라클은 백그라운드 프로세스에 필요한 모든 세마포어를 데이타베이스 기동시에 할당한다. init<SID>.ora 화일의 Processes 파라미터는 오라클에서할당할 최대 세마포어 갯수를 결정한다. (1) 세마포어와 관련하여, 가장 흔하게 발생하는 에러는 데이타베이스 기동시에 나타나는 다음과 같은 에러이다. 시스템은 한 집합내에 가장 많은 세마포어를 가진 것이나 Processes 변수에 의해 설정되는 세마포어 갯수 중 적은 값을 가진 첫번 째 세마포어 집합을 할당하려고 한다. 만약, 시스템에 설정된 세마포어가 부족하거나, 세마포어가 이미 너무 많이 사용중이거나, 사용중이지 않은 세마포어 집합이 세마포어를 너무 많이 갖고 있는가를 체크해 보고, 그렇지 않다면 시스템에 충분한 세마포어를 할당하도록 한다. (2) 설정된 세마포어가 없거나 모든 세마포어가 이미 할당된 상태라면 다음과 같은 에러가 발생한다. (3) 첫번째 세마포어 집합이 할당되었지만 두번째 세마포어를 할당받지 못하면 다음과 같은 에러가 발생한다. 4. shutdown abort와 세마포어 ORA-7264 : spwat:semop error, unable to decrement semaphore 5. MIPS RISC 기반의 유닉스 시스템과 세마포어 해결방법은 Undo Structure가 사용가능할 때까지 기다리든지 시스템의 Undo Structure 의 최대값(SEMMNU)를 늘리면 된다. 6. Fast Driver의 사용과 세마포어 시스템의 세마포어가 모두 할당되었다면 다음과 같은 에러가 발생한다. 이 경우에는 이용가능한 세마포어가 생길 때 까지 기다려야 한다. 그리고 비정상적으로 프로세스를 종료하는 경우에는 할당된 세마포어가 Release되지 못하며 어떤 프로세스가 어떤 세마포어를 사용하는가를 구분하기 힘드므로 사용상의 주의가 필요하다. |
Oracle Korea Customer Support Technical Bulletins |
'오라클' 카테고리의 다른 글
REDO LOG FILE의 SIZE 변경 또는 추가하는 방법 (0) | 2006.11.02 |
---|---|
How to select hidden initialization parameters (0) | 2006.10.30 |
ORA-4031 조치 방법 (0) | 2006.10.30 |
ORA-165X 조치 방법 (0) | 2006.10.30 |
ORA-162X 또는 ORA-163X 조치 방법 (0) | 2006.10.30 |