1. 오라클 접속 하려고 했더니 아래와 같은 에러 발생.
oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12528, TNS:listener: all appropriate instances are blocking new connections.
2. 오라클 서버에 접속해서 리스너 상태 확인.
lsnrctl stat
상태가 BLOCKED로 나옴.
Instance "orcl", status BLOCKED, has 1 handler(s) for this service...
3. sqlplus 접속해서 오라클 재시작. ORA-00205 에러가 난다.
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
...
Total System Global Area 1.0133E+10 bytes
Fixed Size 3721272 bytes
Variable Size 1778386888 bytes
Database Buffers 8321499136 bytes
Redo Buffers 29831168 bytes
ORA-00205: error in identifying control file, check alert log for more info
...
4. alert log 확인. alert log의 기본위치는 아래와 같다.
10g 이하는 $ORACLE_BASE/admin/$ORACLE_SID/bdump
11g부터는 $ORACLE_BASE/diag/rdbms/'DATABASE NAME'/$ORACLE_SID/trace
아래와 같은 에러 확인.
Wed Oct 21 17:55:04 2020
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
starting up 1 shared server(s) ...
ORACLE_BASE from environment = /home/oracle/app
Wed Oct 21 17:55:04 2020
ALTER DATABASE MOUNT
Wed Oct 21 17:55:04 2020
ORA-00210 : cannot open the specified control file
ORA-00202: control file: '/oradata/oradata/mydatabase/control01.ctl'
ORA-27086: unable to lock file - already in use
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 8
ORA-205 signalled during: ALTER DATABASE MOUNT...
Wed Oct 21 17:55:07 2020
Using default pga_aggregate_limit of 6440 MB
5.
/oradata 위치는 nfs로 연결된 스토리지이다.
/oradata/oradata/로 이동해서 파일 권한, 소유자 확인 했지만, 이상없음.
파일생성, 삭제, 수정 해봤지만, 정상임.
6.
에러 원인 확인 불가. 해결법은 찾음.
해결법은 에러가 나는 control01.ctl 파일이름을 변경 후 다시 원래 이름으로 복사.
오라클 중지 후 작업한다.
mv control01.ctl control01.ctl.bak
cp control01.ctl.bak control01.ctl
오라클 시작.
control01.ctl의 에러는 사라졌지만, /oradata 위치의 몇몇 파일들이 같은 문제를 일으킴. 역시 위와 같은 방식으로 다시 처리.
정상화 완료.
파일 디스크립터가 어떤 이유로 스토리지에서 열린 상태로 유지되어 발생하는 오류로 보인다. 아마도 네트워크에 뭔가 문제가 생겼을 때, 그냥 끊어져 버린게 아닌가 싶다.