■ 개요


접속이 안된다는 이상이 있다고 연락을 받고 확인을 하려 할 때 maximum processes 값을 초과하여 접속을 할 수 없을 경우가 있을 수 있다.

아니면 shared pool의 부족 등의 이유도 있을 수 있다.

 

이때 선택하는 방법은 pmon을 kill하고 startup 하는 비상 조치를 취할 수 있는데 문제는 이 경우 추후 원인을 찾지 못할 수도 있고 이 조치를 취하면 안되는 즉, DB를 내리면 안되는 경우도 있을 수 있다.

 

그래서 -prelim 옵션이 존재한다. preliminary connect 이다.

(오라클 매뉴얼에서 검색으로도 찾을 수 없다)

 

일반적으로 정상 상태에서 sysdba 접속시 새 프로세스를 시작하고, 새 프로세스가 SGA에 접속하고, SGA내에 프로세스와 세션 상태 정보를 넣기 위한 메모리를 할당받아 남긴다.

 

하지만 prelim 옵션은 마지막 과정이 없다.

그래서 Lock이나 latch나 mutext를 사용하는 작업을 할 수는 없다.

(prelim 접속시 shutdown 명령도 abort만 가능하다.) 

 

■ 테스트


$ sqlplus -prelim / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Fri May 27 13:17:51 2016

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> select 1 from dual;                       
select 1 from dual
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0

SQL> oradebug setmypid
Statement processed.

SQL> oradebug unlimit

Statement processed.

SQL> oradebug hanganalyze 12
Statement processed.

 

RAC일 경우에는 옵션이 다르게 있다.

 

SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug -g all hanganalyze 3
SQL> oradebug -g all dump systemstate 266

 

 

※해당 기능을 사용한 케이스의 링크

 

 

http://arup.blogspot.kr/2008/08/diagnosing-library-cache-latch.html

'Knowledge > Oracle' 카테고리의 다른 글

Oracle DBA와 개발자의 필독서  (2) 2016.09.23
Data guard와 Active data guard license  (0) 2016.08.12
impdp, imp 주의사항  (0) 2016.03.20
Oracle Create Table 내부 절차  (0) 2015.10.21
SQL Loader Direct Load  (0) 2015.10.05
Posted by neo-orcl
,