[oracle sql] error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 에러 해결 // oracle sqlDeveloper 갑자기 접속 안됨 해결 // Oracle 11g ora 12541 no listener
프로젝트로 mySQL만 쓰다가 게시판작성 공부할 겸 오랜만에 oracle SQL에 접속했는데 DB접속이 안되면서
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 라는 에러가 발생했다...
분명히 한달 전까지는 잘만 접속했는데 몹시 당황했다...
구글느님통해 검색해봤지만 코찔이(코딩찌질이)인 나는 무슨말인지 하나도 모르겠더라....
일단 해결했으니 방법 공유함
명령어에 lsnrctl status 를 입력한다.
그럼 이렇게 뭔가가 뜰텐데 우리가 필요한 정보는 빨간 네모다!
저 빨간 네모에는 기존 DB가 쓰던 SID나 서비스 이름이 있어야한다.
만약 xe 라는 SID를 쓴다면, "XE"서비스는 1개의 인스턴스를 가집니다~~~ 뭐 이런게 떠야함
나는 orcl이라는 서비스를 썼는데 이 문제를 해결하기 전에는 "CLRExProc"라는 놈만 떴었다.
내가 쓰는 sid나 서비스 이름이 뜨지 않는다면 oracle 설정 파일을 바꿔줘야한다.
첫 번째로 listener.ora 라는 파일과 두 번째로 tnsnames.ora 라는 파일을 수정해야한다.
파일의 경로는
OFF리스너 매개변수 파일 이라는 곳 뒤에 나오게된다.
저 경로를 복사하고, 처음부터 admin까지만 복사한다.
그리고 파일탐색기를 열어 주소창에 복사해서 넣으면 해당 경로가 뜬다!
admin 파일이니 메모장을 관리자 권한으로 실행한 뒤 저 파일을 열어주자
메모장 -> 우클릭 -> 관리자 권한으로 실행
메모장 실행 후 Ctrl + O (파일 열기)로 해당 파일을 각각 연다.
파일이 보이지 않는다면 우측하단에 selectBox를 텍스트문서 -> 모든파일 이 보이게 변경해주면 된다.
내가 필요한 SID나 서비스이름이 여기 빨간박스처럼 2개 설정되어있어야한다.
각각 ADDRESS에 본인에게 해당하는 프로토콜과 ip주소, 포트번호를 작성하자.
LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) |
SERVICE_NAME 과 변수명(?)을 동일하게 해주면 추후에 관리하기 편할 듯
이제 SID_LIST_LISTENER= 되어있는 곳에 내가 추가한 TNSNAME 을 적자
ADDRESS 는 기존에 있던 것과 정보가 동일하면 추가안해도되고,
port번호가 다르거나 할 때 새로 추가해주면 된다.
(SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = C:\oracleSQL\product\11.2.0\dbhome_1) ) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) |
lsnrctl stop 이라는 명령어를 통해 lsnrctl를 꺼준 후
lsnrctl start 로 다시 켜주면!!!
내가 만든 ORCL이라는 서비스가 생긴 것을 볼 수 있다!!!
이대로 오라클 SQL이 잘 접속되면 끝인데...
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
프로세스 ID: 0
세션 ID: 0 일련 번호: 0
해당 에러가 발생한다면 아래 주소로...