ORA-12505, TNS:listener does not currently know of SID given in connect descriptor...

개발새발·2022년 1월 30일
0

java

목록 보기
6/12

아 이전에 났던 오류였는데 적어야지 적어야지 했던 걸 이제야 적고있댜... 강의를 들으면서 오라클을 연결하기 위해 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.. 이런 오류가 생겼다면 위 링크를 참고해서 해보면 좋을 것 같다! 아쥬 친절하신 설명이라 좋다! 😘

profile
발새발개

0개의 댓글

관련 채용 정보