개발은 너무해

[스크랩]ORA-12801 본문

Oracle/Oracle Scrap

[스크랩]ORA-12801

까칠 평생초보 2011.01.26 10:04
http://blog.naver.com/bueun?Redirect=Log&logNo=60062866661

작업을 하면서 이상한 오류가 발생했다.
parallel ......어쩌구 저쩌구....
select * from TCSQCSM
ORA-12801: error signaled in parallel query server P004, instance testdb01:BKTDB
ORA-01157: cannot identify/lock data file 67 - see DBWR trace file
ORA-01110: data file 67: '/dev/rlv006_p023_02'
 
그래서 알아보다가 테이블이 parallel로 구성되어 있는것을 알았다.
TABLESPACE D01B623
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING 
NOCACHE
PARALLEL ( DEGREE 4 INSTANCES 1 );
 
일반적으로 NOPARALLEL로 설정하는데....
 
select table_name, degree
from user_tables
where tablespace_name = 'D01B623'
 
이렇게 하면 해당 tablespace에 소속된 테이블목록을 볼수 있다.
 
select 'alter table '||table_name||' parallel 1;'
from user_tables
where degree > 1 ;
 
alter table TCSQCSM parallel 1 ;
 
을 사용하면 바꿀수 있다.
 
 
parallel의 기능에 대해서 bug가 있다고 하던데..........................................................
 
그리고 오라클 bug보면 parallel 프로세스끼리 통신을 해야하는데 중간에 어떠한 이유(??)로 인해서 통신을 못하는 경우가 발생한다구 하더라구요.
그러면 parallel query의 실행이 종료되구 에러가 난다구 합니다.
가끔 그러나 봐요... 아주가끔..
 
시스템 사용율이 높거나 OLTP상황에서는 별루 권장하지 않습니다.
 
보통땐 1개의 프로세스가 생성되는데 parallel은 degree에 따라서 아무리 간단한 SQL이라도 프로세스를 degree만큼 생성하거든요.
 
테이블 단위로 parallel은 잘 설정하지 않는게 일반적인데.. 테이블이 어떤 SQL에 포함될지 다 추적할 수 없잖아요.. 그래서 sql에 힌트로 넣는다.
 
통계생성이나 batch작업시 효과를 많이 볼수 있다.
 
 ---퍼왔어요  http://blog.empas.com/matata/4624016
0 Comments
댓글쓰기 폼