아 이전에 났던 오류였는데 적어야지 적어야지 했던 걸 이제야 적고있댜... 강의를 들으면서 오라클을 연결하기 위해 BeanConfigClass 에 아래처럼 적었는데, , “ORA-12505, TNS:listener does not currently know of SID given in connect descriptor...” 라는 오류가 떴다.
@Bean public BasicDataSource dataSource() { BasicDataSource source = new BasicDataSource(); source.setDriverClassName("oracle.jdbc.OracleDriver"); source.setUrl("jdbc:oracle:thin:@localhost:1521:orcl"); source.setUsername("c##scott"); source.setPassword("password"); return source; }
이 오류의 원인은 찾아보니 접속하려는 SID가 맞지 않는 경우라고 한다.
어떻게 하다가 이것까지 보게됐는지 기억이 안나는데, https://jhnyang.tistory.com/272 이 에러와 비슷한가 싶어(이제보니 에러메세지도 다르다;) 여기에 나온 해결방법 1번을 진행하는 와중이였다. 갑자기 위 코드에서 source.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
이 부분이 마음에 걸렸다. 나의 경우 listener.ora 파일이 아래와 같았는데, service listener가 xe
였다. 그런데 위에 내가 세팅한 부분은 orcl
이였다.(https://stackoverflow.com/questions/18192521/ora-12505-tnslistener-does-not-currently-know-of-sid-given-in-connect-descript 이걸 보면 바로 해결되는 문제였는데 😅 그래도 하나 배웠다!)
# listener.ora Network Configuration File: C:\app\hkjung\product\21c\homes\OraDB21Home1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
DEFAULT_SERVICE_LISTENER = XE
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\hkjung\product\21c\dbhomeXE)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\hkjung\product\21c\dbhomeXE\bin\oraclr.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-MMM4GN3.mshome.net)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
그래서 아래와 같이 사용하는 XE
로 변경을 해줬더니 해결이 됐다.
// data source
@Bean
public BasicDataSource dataSource() {
BasicDataSource source = new BasicDataSource();
source.setDriverClassName("oracle.jdbc.OracleDriver");
source.setUrl("jdbc:oracle:thin:@localhost:1521:XE"); // orcl -> XE
source.setUsername("c##scott");
source.setPassword("password");
return source;
}
만약 The Network Adapter could not establish the connection..
이런 오류가 생겼다면 위 링크를 참고해서 해보면 좋을 것 같다! 아쥬 친절하신 설명이라 좋다! 😘