> 몇번의 잦은 다운이 있은 후부터 다음과 같은 에러가 나타 납니다.
> Warning: OCIStmtExecute: ORA-01552:
> cannot use system rollback segment for non-system tablespace 'USERS'
>
> tablesspace 부분이 잘못된거 같은데...
> 어떻게 해결해야 할지를 모르겠습니다.
> 고수님들의 조언을 기다립니다.
같은 질문이 많이 나오는군요 ^^;
700번에서 복사해 왔습니다.
현재 잘 사용하다가 다운 후에 이런 현상이 발생했다면 사정이 약간
다를 수 있지만 같은 방법으로 해결하시면 될겁니다.
리눅스에서 8.1.6.1 버전에서는 디폴트 생성시에 롤백세그먼트 이름이
rbs1 ~ rbs11 등으로 조금 바뀌었더군요.
참조하세요.
===================================================================
이 에러는 일반 트랜잭션 수행을 위한 rollback segment를
사용할 수 없다는 메세지입니다.
svrmgrl에서 connect internal 한 다음에 아래와 같이 확인해 보세요.
SVRMGR> select SEGMENT_NAME, TABLESPACE_NAME from DBA_ROLLBACK_SEGS ;
SVRMGR> select SEGMENT_NAME, TABLESPACE_NAME, status from DBA_ROLLBACK_SEGS ;
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
R01 RBS ONLINE
R02 RBS ONLINE
R03 RBS ONLINE
R04 RBS ONLINE
일반적으로 정상적으로 DB를 만들고 restart 했으면 위와 같이
나옵니다. 즉 system rollback segment 이외에도
일반 트랜잭션을 위한 rollback segment가 4개 있습니다.
( r01, r02, r03, r04 ) 물론 더 만들면 더 생기겠지요?
그리고 상태가 online 이어야지만 일반 트랜잭션이 사용할 수 있습니다.
확인 사항은 상태가 offline 이라면 ( 만들어져 있다는 증거지요)
restart하시면 되고, 아니면 online 시키든가.
alter rollback segment r01 online;
alter rollback segment r02 online;
...
아예 없으면 RBS 테이블스페이스가 있는지 확인하고,
있으면 rollback segment를 만드세요
create rollback segment r01 tablespace rbs;
create rollback segment r02 tablespace rbs;
...
당연히 online 시켜주세요.
alter rollback segment r01 online;
alter rollback segment r02 online;
...
그러면 될 것입니다.
|