티스토리 뷰
저는 아카이브모드가 아니라 아카이브 파일들이 필요없고
저 혼자 사용하기 때문에 날리면 다시 설치가능한 개발서버에서 적용한 내용으로
중요 DB라면 따라하셨을때 문제 발생하실수도있습니다.
관련 글이 너무 없어서 쓴거...
오라클 DB가 mount까지만 되고 open이 안되는 경우가 종종 발생한다.
DBA가 없어서 걍 내가 치고받고 싸우고 설정하고 했더니 (개발서버)
종종 용량이 부족해서 sqlplus에는 접근이 되는데! 켜지지 않을때가 있다.
ORA-27101: shared memory realm does not exist
ORA-03113: end-of-file on communication channel
shutdown 조차 안먹히고 그냥 마운트만 켜진 상태로 유지된다? ==> 용량없음
df로 전체 용량 확인
근데 내가 속한 파티션이 어딘지 모름...그렇다면 oracle이 설치된 폴더로 이동 후
(주의할건 sqlplus가 설치된 폴더가 아님, 나는 파티션이 나눠있었다, 다른분들은...나두몰람...)
df -k . 명령어로 내가 속한 파티션 용량 확인
삭제해도 괜찮은 파일들 찾아서 가봄
위치 못외워~! find . -name trace 갈겨~
/oracle/diag/rdbms/db명/db명/
에 trace, alert 폴더가 존재함
trace, alert폴더에 있는 파일들 중 14일 이전 파일들 삭제해줌
*당연히 다른 곳으로 파일 다 백업해둠!
trace파일의 경우 alert_xe.log 파일은 삭제하면 안된다고 하는데
나는 파일 하나 용량이 4GB라서 걍 지우고 새로 생성함
해당 파일 tail -f 10000 해서 끝자리만 복붙한 파일 생성해서 둠
근데 이렇게 해도...용량이 적다!
그럼 archivelog로 이동해서 log.xml파일들 중 최신파일만 남기고 싹다 지워줌
== 이로서 용량 확보됨
확보된 용량을 믿고
다시
su - oracle
sqlplus '/as sysdba'
SQL> startup nomount;
SQL> alter database mount;
이 상태에서
SQL> recover database until cancel ;
recovery_file 저장하는데에 용량이 부족하댕
ㅇㅋㄷㅋ
SQL> alter system set db_recovery_file_dest_size=10G;
용량 조따올려~!
System altered. 뜨면
SQL> Alter database open resetlogs;
++++++++++++
추가추가
그러고 다음날 또 깨짐 진짜 돌아버려~
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 5801
Session ID: 191 Serial number: 1
SQL> select * from v$recover_file;
ERROR:
ORA-03114: not connected to ORACLE
==> 이거 무한 반복 눈물 좔좔...오라클 연결이 안되있으니 ...
우선 리스너 껐다 켜보고 또 껐다 켜보고 무한반복
lsnrctl status: 현재 상태
lsnrctl start: 서비스 시작
lsnrctl stop: 서비스 종료
SQL> startup nomount;
SQL> alter database mount;
==> 항상 여기까진 괜찮은데
SQL> alter database open;
alter database open
*
여기서 오류뜸
근데 뭐 검색할라해도 안되고 촤...
SQL> select * from v$recover_file; >> 파일 크기 부족한거 같아서 또 늘려줌
SQL> select * from v$log; >> 검색하니까 로그 존재함!
~> 아마 로그 존재하는 걸 인식을 못한거같음?
SQL>startup mount
SQL>recover database until cancel
SQL>alter database open resetlogs;