CONTEXT SIZE & CURSORS
1. Context size 에 관련한 error message
.ora-1046 :can't acquire space to extend context area.
.ora-1050 :can't acquire space to open context area.
.ora-1051 :maximum context area extents exceeded.
2. Context size란 무엇인가?
(1) Cursor의 initial size이다 . 즉, Cursor 에 allocate 되는 user memory이다.
(2) 이는 init.ora 의 CONTEXT_SIZE 에 의해 결정된다.
(3) Cursor 에 할당되는 additional space 는 CONTEXT_INCR 에 의하며 50 extents를 갖는다.
(4) Recommended context size increment 는 4096 bytes(4K)이다.
(5) SQL statement가 수행 시마다 cursor 가 open 되며, 같은 cursor가 reuse 되도록 design 되어 SQL*PLUS session은 2-3 개 이상 open 되어지지 않는다.
그러나 SQL*FORMS 는 여러 다른 task를 수행하므로 많은 cursor를 open한다. (100 or more)
(6)Cursor 가 hold 하는 item
* the SQL statement
* the parsed SQL statement
* one row of the result
3. ORA-1051 은 무엇이 문제인가?
(1) cursor의 size를 줄인다.
(2) CONTEXT_SIZE, CONTEXT_INCR 를 늘린다.
4. OPEN_CURSORS 수를 줄이는 전략
(1) Commit을 자주한다.
(2) Synonym이나 view를 사용하지 않음으로써 implicit cursor 수를 줄인다.
(3) SQL*FORMS 에서 select 문대신 #COPY로 바꿔 사용한다.
(4) SQL*FORMS 에서 large forms를 여러 개의 작은 forms로 나눈다.
(5) ASAP, EXEC SQL CLOSE C1; 을 수행한다.
(6) HOLD_CURSOR=NO & RELEASE_CURSOR=YES를 사용한다.
'DB - ORACLE > Oracle Trouble Shooting' 카테고리의 다른 글
SYSAUX tablespace에서 table 재생성 하는 방법 (0) | 2015.10.02 |
---|---|
ORACLE RAC 환경 interconnect 에 gigabit switch 사용권고 (0) | 2015.09.07 |
Data block이나 Index block이 corrupt 난 경우 (0) | 2015.09.03 |
Rollback segment corrupt error message가 발생 했을 경우에 (0) | 2015.09.03 |
Oracle Dump 뜨기 스크립트 (0) | 2015.09.02 |