본문 바로가기
Oracle/이관

Redo log,Datafile 경로 변경

by 취미툰 2020. 10. 27.
반응형

지난주에 Redo log 와 Datafile을 사용하는 디렉토리의 용량이 거의 가득차서 다른 디렉토리로 파일을 옮기는 작업을 했었습니다.

 

최초에 사용했던 방법은 아래와 같은 방법으로 경로 변경을 시도 했고, 디렉토리에 있는 모든 DBF파일과 Redo log 파일을 통으로 경로 변경할 예정이었습니다.

 

1. DB down -> 2. 물리적으로 파일 복사 -> 3. startup mount -> 4. alter database rename file ~ to ~ ; -> 5. alter database open

 

하지만 제가 운영하던 서버에서 DB down상태면 sqlplus가 접속이 되지 않는 상황(ORA-12560 발생)이 었고, 서버에서 자동으로 기동하여야 sqlplus가 접속이 되는 현상이 발생하고 있었습니다. (Window 기반)

그러다보니 2번과 3번사이에 DB기동이 한번 있게 되었습니다.  그 결과 5번 DB Open 시에 리두로그 싱크가 맞지 않는 아래와 같은 에러가 발생하게 되었습니다. 실제 운영서버의 특이사항을 고려하지 않고 테스트 한 결과 DB가 Open되지 않는 상황을 맞은 것입니다.

 

ORA-00319  log string of thread string has incorrect log reset status
ORA-00312

ORA-00322 (Online redolog is not current copy)

 

이 현상에 대한 해결법은 문제가 되는 리두로그 그룹을 DROP 후 새로운 경로에 다시 ADD해주는 방법입니다.

저의 경우 log Group 1번에 대해 해당 이슈가 발생하였습니다. 

mount 상태

--log group 1 삭제
sql> alter database drop group 1;

--DB Open
alter database open;

-- log group1 새경로에 추가
sql> alter database add logfile group 1 ('/app/oracle/oradata/ysbae/redo01.log','/app/oracle/oradata/ysbae/redo01_02.log') size 52428800 reuse;




 

결과적으로 원복 후, 

DBF 파일은 DB Open 상태에서 offline -> 물리적으로 파일복사 -> rename -> Online의 방식으로 수행하였습니다.

이 방법은 System과 같은 Offline이 되지 않는 Tablespace에는 적용이 되지 않습니다. Offline이 되지 않는 Tablespace의 경우에는 mount에서 rename의 방식으로 변경하여야 합니다.

 

OPEN 상태
--Tablespace offline
sql> alter tablespace TEST offline;


--물리적으로 새 경로에 파일복사

--database rename
sql> alter database rename file '/app/oracle/oradata/ysbae/test01.dbf' to '/app/oracle/oradata/ysbae2/test01.dbf';

--Tablespace Online
sql> alter tablespace TEST online;

 

경로 변경은 무사히 잘 끝났고, 확실하게 정리하기 위해서 테스트를 한번 더 진행한 후 정리하였습니다.

(역시... 아는것이 힘인것 같습니다.. 배울게 매일매일 나오네요^^)

반응형

댓글