Mac[맥북 m1 pro 애플실리콘] Oracle + Docker + Colima + Intellij + DBeaver

솨니·2023년 9월 12일
1

JSP

목록 보기
2/2
post-thumbnail

인텔리제이로 오라클을 사용하려는데 오류로 수많은 착오를 겪으며 연결에 성공했다.
누군가에게는 도움이 되기를 바라며 시간을 아꼈으면 하는 바람이다.

성공하자마자 따뜻한 기억력을 바탕으로 바로 블로그에 글을 쓰는 것이지만, 정리가 잘 되지 않아 순서가 맞는진 잘 모르겠다.(정말 이것 저것 헤딩하면서 진행해서 순서까진 잘 모르겠습니다 ㅠㅠㅠㅠ 그래도 최대한 비슷하게 해보겠습니다!)

Docker 설치

$ brew install --cask docker

homebrew에서는 --cask 부분이 빠진걸 권장하지만 애플리케이션 형태로 설치하는게 편해서 이렇게 설치했다.

Colima 설치

$ brew install colima

Colima 실행

$ colima start --arch x86_64 --cpu 4 --memory 8

Docker 컨테이너 리스트 확인

$ docker ps

이미지 실행 및 설정 & 리스트 확인

$ docker run --name {오라클 이름} -e ORACLE_PASSWORD=oracl -d -p 9000:8080 -p 1521:1521 jaspeen/oracle-xe-11g
$ docker ps

NAMES 기억하기, 비밀번호는 위에서 oracle로 설정하였다.
컨테이너가 잘 작동되는 것을 확인했다.

로그 확인

$ docker logs -f compassionate_banzai

성공했다.

인텔리제이에서 확인

Test Connection 에서 정상 작동한다.

예제 소스도 잘 작동 된다 !!!!

DBeaver 에서 확인


마찬가지로 잘 작동한다.

실행 종료

$ docker stop oracle11g
$ colima stop

다시 실행

$ colima start --arch x86_64 --cpu 4 --memory 8
$ docker start oracle // 여기서 oracle은 위에서 만들어진 이름을 rename 한 것 입니다.
$ docker ps // 또는 docker ps -a 로 컨테이너 실행 중인지 확인
$ docker exec -it oracle sqlplus // sql 터미널 연결 확인

scott 계정 생성

SQL> create user scott
  2  identified by tiger
  3  default tablespace users
  4  temporary tablespace temp;

User created.

SQL> grant connect, resource, create view to scott;

Grant succeeded.

SQL> conn scott/tiger

포트 변경 (톰캣과 충돌 방지)

system/oracle 로 계정 접속

select dbms_xdb.gethttpport() from dual;
exec dbms_xdb.sethttpport(8081);

한글 깨지는 현상

table 에 insert 하는데 varchar2 를 한글 3bytes 영문 2bytes 로 계산해서 했음에도 한글이 9bytes로 찍히는 것을 보게 됐다.
varchar2 를 늘려서 일단 insert 했는데, 한글이 ? 물음표로 깨지는 현상을 확인했다.

구글링 결과 character set 이 일치하지 않는다는 등의 이유였다.

우선

$ docker exec -it oracle sqlplus

를 해서 db에 접속한 다음에 select * from v$nls_parameters; 을 실행해서 NLS_CHARACTERSET 과 NLS_NCHAR_CHARACTERSET 를 확인해보고
KO16KSC5601 또는 KO16MSWIN949 또는 AL32UTF8 이 아니라면 character set 의 설정 문제일 가능성이 높다. 글에서는 KO16KSC5601 이 가장 대중적으로 쓰이기 때문에 이것을 채택했다.

exit

나와서 루트 계정에 접속한다.

$ docker exec -it oracle bin/bash 
sqlplus /nolog
SQL> conn sys/oracle as sysdba
SQL> update props$ set value$='KO16KSC5601' where name='NLS_CHARACTERSET';
SQL> update props$ set value$='KO16KSC5601' where name='NLS_NCHAR_CHARACTERSET';
SQL> commit;
SQL> shutdown immediate;
SQL> startup;

이후에 exit 으로 빠져나와서 docker exec -it oracle sqlplus 로 접속해서 테이블을 확인해보면 물음표 ? 가 한글로 바뀌어져 있을 것이다.

만약 안된다면, 다른 방법으로 https://earth-95.tistory.com/160 여길 참고해보길 바란다.
그리고 위 사이트를 참고해서 진행할 때 root 계정에서는 vim 과 gedit 이 사용이 안되어서 vi로만 편집이 가능하더라.
작자는 docker가 우분투라서 그런지 모르겠는데 vi 편집할 때 방향키로 움직일 때 영문이 계속 입력 되었다. 그 문제를 해결하려면
docker exec -it oracle bin/bash 에서
home 디렉터리로 이동 후, vi 에디터로 .exrc 파일 생성한다.

# cd~
# vi.exrc

다음을 입력 후 저장한다.

set bs=2
set nocp

:wq 로 빠져나와서 다음을 실행하여 적용한다.

# source .exrc

그러면 vi 에디터에서 방향키가 잘 작동한다.

하고 나니까 이번엔 다른문제


물음표로 한글이 표시됐지만 그래도 테이블의 컬럼이 딱 맞아 떨어졌는데

이젠 이게 문제네...

(추가)계속 고쳐보다가 MySQL로 바꿨습니다.

맥과 호환이 잘 되지 않는 것 같습니다.
써야된다면 반드시 GUI툴을 활용하셔야 할 것 같습니다.

[참고 사이트]

profile
기억은 유한하지만 기록은 무한하다. 언제든 꺼내 쓸 수 있는 무한한 기억의 창고를 위하여

0개의 댓글