프린트 하기

OS환경 : Oracle Linux6.8(64bit)

 

DB 환경 : Oracle Database 12.2.0.1

 

에러 : Private strand flush not complete

10gR2에서 expdp 후 12cR2로 impdp 중 alert log에 발생한 메세지

1
2
3
4
5
6
7
8
9
10
11
2019-01-28T12:34:41.665283+09:00
Thread 1 cannot allocate new log, sequence 679
Private strand flush not complete
  Current log# 1 seq# 678 mem# 0/oradata/ORCL/redo01a.log
  Current log# 1 seq# 678 mem# 1/oradata/ORCL/redo01b.log
2019-01-28T12:34:47.247588+09:00
Thread 1 advanced to log sequence 679 (LGWR switch)
  Current log# 3 seq# 679 mem# 0/oradata/ORCL/redo03a.log
  Current log# 3 seq# 679 mem# 1/oradata/ORCL/redo03b.log
2019-01-28T12:35:09.212209+09:00
Archived Log entry 676 added for T-1.S-678 ID 0xf27dab7d LAD:1
 

 

 

해결 방법 : 

"cannot allocate new log" 메세지와 "advanced to log sequence" 사이에 심각한 시간 차이가 없는 한 이 메세지들에 대하여 우려할 필요는 없음

이런 메세지들이 스토리지나 아카이브 경로에 대한 네트워크에 문제가 있을 때 발생이 될 수 있는데 

이러한 문제로 LGWR 스위치에 지연이나 행이 발생될 수 있기 때문임

 

 

원인 : 

 

해당 메세지는 오라클이 log switch를 시도할 때 모든 redo 정보를 log에 기록하지 못했다는 것을 의미함

log에 기록되는 redo만 관여한다는 점을 제외하고는 사실 "checkpoint not complete" 메세지와 비슷한 의미의 메세지임

Log switch는 모든 redo가 기록되기 전에는 일어나지 않음(checkpoint not complete https://positivemh.tistory.com/196)

 

 

"strand"는 10g에서 사용되기 시작한 새로운 용어로 redo를 위한 latch들과 관련이 있음

strand들은 여러 프로세스들이 redo buffer에 redo를 좀 더 효율적으로 기록할 수 있게 하기 위하여 multiple allocation latch들을 사용할 수 있도록 해주는 mechanism 이며 9i의 log_parallelism parameter와 연관이 있음

Strand의 개념은 instance가 최적의 redo 생성 비율을 보장 받을 수 있도록 해 주고, redo contention이 있을 때는 strand의 수를 동적으로 조절하여 보상해 준다는 것임

 

 

 

참조 : 

alert log 에 기록되는 'Private strand flush not complete' 메세지 (문서 ID 1557734.1)

372557.1