[SQL.00] 오라클(Oracle) 데이터베이스(DB)의 오류 해결하기👀

Kama_Code·2023년 8월 12일
1

SQL

목록 보기
5/6
post-thumbnail
post-custom-banner

오라클(Oracle) DB를 사용하면서 참으로 오류가 많았다.
필자도 정말 환장할 듯한 많은 오류를 겪었으며, 이 경험을 토대로
포스팅을 작성해보려고 한다.

▣ 오라클 실행시 패스워드 만료 경고가 뜨는 경우

SQL Developer 를 실행했을때 위와 같이 패스워드 관련 경고창이 뜬다면
만료기간이 다 되었다는 뜻입이다.
이런 경고 메시지가 뜨는 이유는 사용자 계정이 180일 지나면 비밀번호가
만료되도록 변경 되었기 때문이다.

해결방법은 비밀번호를 변경해하는 것!
먼저 system 계정으로 접속한 후 다음 쿼리문을 실행하면 된다.

alter user 계정명 identified by 새비밀번호;
  • 컨트롤 + 엔터를 누르면 더이상 경고창이 뜨지 않는다.

그런데 매번 패스워드를 변경하는것이 번거로울 수도 있다.
이런 경우 만료되지 않도록 설정할 수 있다.

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

▣ TNS 오류 ( 가장 심각하면서 많은 오류 )

Oracle] '상태: 실패 -테스트 실패:IO 오류:
The Network Adapter could not establish the connection'

여기서 서비스 - Oracle TNS Listener를 찾아 실행하면 해결된다는 포스팅이 많다.
하지만 실행이 되면 좋은데.. 아래 사진처럼 서비스 실행이 안될 수도 있다.

OracleOraHomeTNSListener 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다.

필자 역시 가장 환장하는 오류였다.. 오라클 데이터베이스를 삭제하고
다시 설치하면 역시 되는데 시간이 지나면 또 이런 오류가 발생한다.

▶ 해결방법

계정 연결 전 확인 할 사항
먼저 명령 프롬프트 창 실행 후 netstat 친 후 localhost와 오라클 포트번호 확인한다.

아래처럼 이렇게 나올 수도 있다.

다음 tnsping localhost 치면 아래와 같이 되면 정상적으로 연결된 것이다.

하지만, 리스너가 없다는 말이 뜨거나 위 사진처럼 뜨지 않을시 아래를 실행한다.

WINDOW + CMD (명령 프롬포트) 실행

lsnrctl services 

해당 명령어를 입력해준다.

참으로 특이한 점이 뭘 건들고 바꾼 적도 없는데 필자의 ip가 아닌
다른 ip로 연결된다고 쓰여져 있었다.

이것이 왜냐면 인터넷마다 고정ip가 아닌 유동ip로 돌아가는 집이 있다.
그렇다고 해서 고정ip로 바꿔버리면 인터넷이 안켜질 수도 있다.
그래서 ip가 아닌 컴퓨터 이름으로 바꾸는 것이 필요하다!

▶ 내 아이피 확인하기

자신의 오라클 설치한 경로\OracleXE21c\homes\OraDB21Home1\network\admin 들어가서 listener.ora와 tnsnames.ora 2가지를 수정한다.

간혹 sample 폴더에 들어가서 listener.ora와 tnsnames.ora 2가지를 수정하는 사람이 있는데 sample 폴더는 예비용 파일이므로 전혀 관련이 없다.

먼저 listener.ora 파일 노트 패드나 메모창으로 열어서
네모 부분을 localhost (안되면 본인 컴퓨터 이름으로)로 수정한다.

컴퓨터 이름 확인법
cmd - hostname

다음 tnsnames.ora 파일을 열어서 리스너 파일과 마찬가지로 수정한다.

그리고 cmd - SQLPlus에 접속해서
select value from v$parameter where name like '%service_name%'; 을 치면
XE이 나오는지 확인 한다.

그리고 다시 아래를 실행하여 확인한다.

WINDOW + CMD (명령 프롬포트) 실행

lsnrctl services 

정상적으로 listener.ora와 tnsnames.ora 파일을 수정한 내용이 적용되었는지
확인한다. 정상적으로 바뀌었다면 잘한 것이고 적용이 안되었다면
sample 폴더에 있는 잘못된 경로의 파일을 수정한 것이니 확인한다.

  • 서비스를 실행해준다.
  • 빨간색 박스의 OracleOraDB21Home1TNSListener를 중지 후 시작을 하고
    컴퓨터를 재부팅 후 sql을 실행하면 정상적으로 작동된다.

▣ 오라클(Oracle) 11g xe 설치하기

하지만 세상에 완벽한 것은 없듯이 위 방법으로도 해결이 안될 수도 있다.
그럴때는 21c를 포기하고 11g xe버전을 사용하는 것을 추천하는 바이다.
21c보다 11g는 번거롭게 hr과 scott 계정을 따로 추가할 필요도 없고
c##을 매번 붙이지 않아도 가능하기에 훨씬 편리하다.
설치만 하면 간단하기에 사실 필자도 11g를 사용하고 있다.

  • 11g xe 를 다운받아서 사용하는 이유
    ● 10g 이후에 처음으로 나온 무료 버전
    ● 기존 회사에 가장 많이 설치되어 있다.(11 버전)
    ● 이 버전의 책 및 참고자료가 가장 많다.

  • 많은 사람들이 착각하는 점
    ● 11g 가 무료다 (X) → xe 가 무료이다. (O)
    Oracle Database Express Edition (XE) Release 11.2.0.2.0 (11gR2)
    https://www.oracle.com/database/technologies/xe-prior-release-downloads.htm

▶ 오라클 XE 11g 다운로드

  • 설치 파일 다운로드 후 setup.exe 실행한다.
  • 다음을 계속 누르면 아래 사진이 뜬다.
    ㄴ절대 잊어버리면 안되는 관리자 비밀번호를 설정한다.

그리고 쭉 Next를 눌러주면 설치가 완료된다.

WINDOW + CMD(명령 프롬프트) 실행
SQLPLUS를 입력해주고 초기에 설정해준 비밀번호를 입력해준다.


▣ 오라클 11g Checking for Oracle XE service instance failed 오류 해결하기

Oracle 11g Express Edition 을 설치하다 다음과 같은 오류가 뜨는 경우가 있다.
이 오류는 대부분의 경우 설치도중 문제가 생겨 다시 설치하는 경우에 발생한다.

오류메세지를 보면 Oracle XE service instance가 설치되어 있으므로 실패했다는 내용이다.

해결방법 1.
프로그램 추가/제거에서 Oracle XE 를 삭제한 후 다시 설치를 시도한다.

해결방법 2.
만약 첫번째 방법으로 안된다면 cmd창에서 다음과 같이 입력하여
서비스를 제거한 후 다시 설치를 시도한다.

C:\nakja> sc delete OracleServiceXE

단 cmd는 관리자로 실행해야 한다.

관리자 권한으로 실행하지 않으면 다음과 같이 오류가 발생한다.

다시 한번 실행하면 정상적으로 삭제된다.
[SC] DeleteService 성공 이라고 출력되면,
오라클 11g Express Edition 설치 작업을 다시 진행하면 된다!


▣ 일부 모듈을 설치하지 못했습니다

오류내용

경고 - 일부 모듈을 설치하지 못했습니다: oracle.ide.searchbar - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\ide\extensions\oracle.ide.searchbar.jar: Not found
bundle:oracle.ide.searchbar oracle.java_annotations - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\ide\lib\annotations.jar: Not found bundle:oracle.java_annotations
oracle.external.jdbc - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\external\oracle.external.jdbc.jar: Not found bundle:oracle.external.jdbc
oracle.javatools - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\ide\lib\javatools.jar: Not found bundle:oracle.javatools
oracle.javatools_nodeps - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\external\oracle.javatools-nodeps.jar: Not found
bundle:oracle.javatools_nodeps oracle.idert - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\ide\lib\idert.jar: Not found bundle:oracle.idert oracle.ide.indexing -
org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\ide\extensions\oracle.ide.indexing.jar: Not found
bundle:oracle.ide.indexing oracle.ide.webbrowser - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\ide\extensions\oracle.ide.webbrowser.jar: Not found
bundle:oracle.ide.webbrowser oracle.external.timing - org.netbeans.InvalidException: Netigso:
C:\01Developkits\sqldeveloper\external\oracle.external.timing.jar: Not found bundle:oracle.external

문제해결
출처: https://thingsthis.tistory.com/40

SQL Developer 실행 시 모듈을 못 찾는다고 모듈 비활성 화 및 계속하기,
종료 버튼이 있는 화면이 뜨면

C:\Users\사용자명\AppData\Roaming\SQL Developer 폴더에 가서
system4.0.2.15.21 폴더를 지우고 다시 해본다.

SQL Developer 처음 실행 후 javaw.exe Path 를 잘못 잡아줘서 발생한 것

  1. SQLDEVELOPER_HOME/sqldeveloper/bin/sqldeveloper.conf 파일 열기
  2. SetJavaHome 변경
    ex) SetJavaHome C:\Program Files\Java\jdk1.7.0_75
  3. C:\Users\사용자명\AppData\Roaming\SQL Developer\system4.0.2.15.21 폴더 삭제
  4. 다시 실행

이렇게 오라클 SQL에 대한 오류 및 해결방안을 알아보았다.
필자도 오라클 DB를 사용하면서 수많은 오류를 마주하여 환장하는 적이
정말 많았다. 지금은 모두 해결한 상태이다.
만일 오라클에 문제가 생겼다면 반드시 이 포스팅을 읽고 모두 해결되었으면 하는
바람이다. 다음 포스팅에서 계속...

profile
[Java SQL HTML CSS JS Studying] 발전을 꿈꾸며 이상을 실현합니다
post-custom-banner

0개의 댓글