OracleDB에서 아카이브 오류 (ORA-00257)가 발생했을 때의 해결 방법
경위
어느 아침, 평소와 같이 OracleDB를 이용하고 있는 시스템의 개발을 진행하려고 했는데,
다음과 같은 메시지가 나왔다.
과연. 뭔가 모르겠지만 에러가 발생한 것 같다.
조사
오라클의 EnterpriseManager에 액세스하려고했는데, 외형은 다르지만 위와 같은 에러 메세지가 표시되어 로그인조차 할 수 없다.
조사해 보면, 이번 에러는 「아카이브·로그」라고 하는 것이 너무 쌓여 있는 것이 문제다.
사내에서 듣기를 했는데, 누군가 다른 사람이 아카이브·로그의 기입 설정을 무효→ 유효로 변경하고 있었다고 하는 것.
증상의 해소 순서(잠정 대응)
1. teraterm 등으로 root 권한으로 로그인
2. oracle 사용자로 변경
3. 복구 관리자(RMAN) 시작
4. 일정기간(이번에는 7일간) 이상 이전 아카이브 로그 삭제
5. 복구 관리자 종료
6. oracle 사용자로 SQLPlus에 로그인
7. Oracle 인스턴스 시작
8. SQLPlus 종료
9. 리스너 컨트롤 시작
10. 리스너 시작
11. 리스너 컨트롤 종료
12. oracle 사용자로부터 로그아웃
13. teraterm 등을 종료
다음은 모두 실행하는 명령입니다. 처리 결과는 기재되어 있지 않습니다.
$ su - oracle
$ rman
RMAN> DELETE ARCHIVELOG UNTIL TIME 'sysdate - 7';
RMAN> exit
$ sqlplus [User]/[Password] as sysdba
SQL> startup
SQL> exit
$ lsnrctl
LSNRCTL> start
LSNRCTL> exit
$ exit
지속적인 대응
우선 오라클은 사용할 수 있게 되었지만, 이대로라면 어차피 다시 재발하기 때문에, 아카이브 로그를 정기적으로 삭제하는 구조를 넣기로 했다.
참고 : 아카이브 로그 삭제 방법 정리(ORA-00257 대처 방법)
삭제 배치 (배치? 쉘?) 작성
1. oracle 사용자의 홈 디렉토리(이번은 /home/oracle
) 바로 아래에, 이하의 2 파일을 작성한다
del_arclog.rcvrun{
# 7日以前を削除
delete noprompt archivelog until time 'sysdate-7';
# OSから削除された場合、oracle側も削除する
crosscheck archivelog all;
delete expired archivelog all;
}
del_arclog.shsu -l oracle -c "rman target / @del_arclog.rcv log=del_arclog.log append nocatalog"
2. 위 두 파일의 소유자를 oracle 사용자로 변경
3. 위의 두 파일에 소유자의 실행 권한 부여
4. 소유자 및 권한 설정 확인
$ cd /home/oracle
$ chown oracle:oinstall del_arclog.rcv
$ chown oracle:oinstall del_arclog.sh
$ chmod 744 del_arclog.rcv
$ chmod 744 del_arclog.sh
$ ll
▼실행 결과
crontab에 스케줄 등록
1. root 권한으로 teraterm 등에 로그인
2. crontab에 지정된 스케줄로 /home/oracle/del_arclog.sh
를 실행하도록 등록
$ crontab -e
0 19 * * * /home/oracle/del_arclog.sh (毎日19時に実行することとした)
cron의 실행 로그는 이하의 커맨드로 확인할 수 있다.
$ tail -f /var/log/cron
cron 메일 스풀 삭제
초기 상태에서는, cron의 실행 후에 루트 어카운트에 메일 송신하는 처리가 움직인다.
하지만 메일 설정을 하지 않은 경우에는 스풀 폴더에 점점 메일이 모여 가고,
앞으로는 이쪽이 넘쳐 버린다.
대책은 다양하다고 생각하지만, 이번에는 실행 결과를 메일 송신할 필요도 없지만,
메일을 보내지 않는 설정으로 변경하는 것도 조금 불안하기 때문에,
일정 기간마다 스풀의 메일을 삭제하는 처리를 상기와 같이 cron에 등록하기로 했다.
$ crontab -e
0 19 * * * /home/oracle/del_arclog.sh (←さっきの)
0 5 * * * cat /dev/null > /var/spool/mail/root (←今回の。毎朝5時にスプールを上書きする)
Reference
이 문제에 관하여(OracleDB에서 아카이브 오류 (ORA-00257)가 발생했을 때의 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kariyaitaru/items/4b18f6dc1f9a3ef18017
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
오라클의 EnterpriseManager에 액세스하려고했는데, 외형은 다르지만 위와 같은 에러 메세지가 표시되어 로그인조차 할 수 없다.
조사해 보면, 이번 에러는 「아카이브·로그」라고 하는 것이 너무 쌓여 있는 것이 문제다.
사내에서 듣기를 했는데, 누군가 다른 사람이 아카이브·로그의 기입 설정을 무효→ 유효로 변경하고 있었다고 하는 것.
증상의 해소 순서(잠정 대응)
1. teraterm 등으로 root 권한으로 로그인
2. oracle 사용자로 변경
3. 복구 관리자(RMAN) 시작
4. 일정기간(이번에는 7일간) 이상 이전 아카이브 로그 삭제
5. 복구 관리자 종료
6. oracle 사용자로 SQLPlus에 로그인
7. Oracle 인스턴스 시작
8. SQLPlus 종료
9. 리스너 컨트롤 시작
10. 리스너 시작
11. 리스너 컨트롤 종료
12. oracle 사용자로부터 로그아웃
13. teraterm 등을 종료
다음은 모두 실행하는 명령입니다. 처리 결과는 기재되어 있지 않습니다.
$ su - oracle
$ rman
RMAN> DELETE ARCHIVELOG UNTIL TIME 'sysdate - 7';
RMAN> exit
$ sqlplus [User]/[Password] as sysdba
SQL> startup
SQL> exit
$ lsnrctl
LSNRCTL> start
LSNRCTL> exit
$ exit
지속적인 대응
우선 오라클은 사용할 수 있게 되었지만, 이대로라면 어차피 다시 재발하기 때문에, 아카이브 로그를 정기적으로 삭제하는 구조를 넣기로 했다.
참고 : 아카이브 로그 삭제 방법 정리(ORA-00257 대처 방법)
삭제 배치 (배치? 쉘?) 작성
1. oracle 사용자의 홈 디렉토리(이번은 /home/oracle
) 바로 아래에, 이하의 2 파일을 작성한다
del_arclog.rcvrun{
# 7日以前を削除
delete noprompt archivelog until time 'sysdate-7';
# OSから削除された場合、oracle側も削除する
crosscheck archivelog all;
delete expired archivelog all;
}
del_arclog.shsu -l oracle -c "rman target / @del_arclog.rcv log=del_arclog.log append nocatalog"
2. 위 두 파일의 소유자를 oracle 사용자로 변경
3. 위의 두 파일에 소유자의 실행 권한 부여
4. 소유자 및 권한 설정 확인
$ cd /home/oracle
$ chown oracle:oinstall del_arclog.rcv
$ chown oracle:oinstall del_arclog.sh
$ chmod 744 del_arclog.rcv
$ chmod 744 del_arclog.sh
$ ll
▼실행 결과
crontab에 스케줄 등록
1. root 권한으로 teraterm 등에 로그인
2. crontab에 지정된 스케줄로 /home/oracle/del_arclog.sh
를 실행하도록 등록
$ crontab -e
0 19 * * * /home/oracle/del_arclog.sh (毎日19時に実行することとした)
cron의 실행 로그는 이하의 커맨드로 확인할 수 있다.
$ tail -f /var/log/cron
cron 메일 스풀 삭제
초기 상태에서는, cron의 실행 후에 루트 어카운트에 메일 송신하는 처리가 움직인다.
하지만 메일 설정을 하지 않은 경우에는 스풀 폴더에 점점 메일이 모여 가고,
앞으로는 이쪽이 넘쳐 버린다.
대책은 다양하다고 생각하지만, 이번에는 실행 결과를 메일 송신할 필요도 없지만,
메일을 보내지 않는 설정으로 변경하는 것도 조금 불안하기 때문에,
일정 기간마다 스풀의 메일을 삭제하는 처리를 상기와 같이 cron에 등록하기로 했다.
$ crontab -e
0 19 * * * /home/oracle/del_arclog.sh (←さっきの)
0 5 * * * cat /dev/null > /var/spool/mail/root (←今回の。毎朝5時にスプールを上書きする)
Reference
이 문제에 관하여(OracleDB에서 아카이브 오류 (ORA-00257)가 발생했을 때의 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kariyaitaru/items/4b18f6dc1f9a3ef18017
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ su - oracle
$ rman
RMAN> DELETE ARCHIVELOG UNTIL TIME 'sysdate - 7';
RMAN> exit
$ sqlplus [User]/[Password] as sysdba
SQL> startup
SQL> exit
$ lsnrctl
LSNRCTL> start
LSNRCTL> exit
$ exit
우선 오라클은 사용할 수 있게 되었지만, 이대로라면 어차피 다시 재발하기 때문에, 아카이브 로그를 정기적으로 삭제하는 구조를 넣기로 했다.
참고 : 아카이브 로그 삭제 방법 정리(ORA-00257 대처 방법)
삭제 배치 (배치? 쉘?) 작성
1. oracle 사용자의 홈 디렉토리(이번은
/home/oracle
) 바로 아래에, 이하의 2 파일을 작성한다del_arclog.rcv
run{
# 7日以前を削除
delete noprompt archivelog until time 'sysdate-7';
# OSから削除された場合、oracle側も削除する
crosscheck archivelog all;
delete expired archivelog all;
}
del_arclog.sh
su -l oracle -c "rman target / @del_arclog.rcv log=del_arclog.log append nocatalog"
2. 위 두 파일의 소유자를 oracle 사용자로 변경
3. 위의 두 파일에 소유자의 실행 권한 부여
4. 소유자 및 권한 설정 확인
$ cd /home/oracle
$ chown oracle:oinstall del_arclog.rcv
$ chown oracle:oinstall del_arclog.sh
$ chmod 744 del_arclog.rcv
$ chmod 744 del_arclog.sh
$ ll
▼실행 결과
crontab에 스케줄 등록
1. root 권한으로 teraterm 등에 로그인
2. crontab에 지정된 스케줄로
/home/oracle/del_arclog.sh
를 실행하도록 등록$ crontab -e
0 19 * * * /home/oracle/del_arclog.sh (毎日19時に実行することとした)
cron의 실행 로그는 이하의 커맨드로 확인할 수 있다.
$ tail -f /var/log/cron
cron 메일 스풀 삭제
초기 상태에서는, cron의 실행 후에 루트 어카운트에 메일 송신하는 처리가 움직인다.
하지만 메일 설정을 하지 않은 경우에는 스풀 폴더에 점점 메일이 모여 가고,
앞으로는 이쪽이 넘쳐 버린다.
대책은 다양하다고 생각하지만, 이번에는 실행 결과를 메일 송신할 필요도 없지만,
메일을 보내지 않는 설정으로 변경하는 것도 조금 불안하기 때문에,
일정 기간마다 스풀의 메일을 삭제하는 처리를 상기와 같이 cron에 등록하기로 했다.
$ crontab -e
0 19 * * * /home/oracle/del_arclog.sh (←さっきの)
0 5 * * * cat /dev/null > /var/spool/mail/root (←今回の。毎朝5時にスプールを上書きする)
Reference
이 문제에 관하여(OracleDB에서 아카이브 오류 (ORA-00257)가 발생했을 때의 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kariyaitaru/items/4b18f6dc1f9a3ef18017텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)