인텔리제이로 오라클을 사용하려는데 오류로 수많은 착오를 겪으며 연결에 성공했다.
누군가에게는 도움이 되기를 바라며 시간을 아꼈으면 하는 바람이다.
성공하자마자 따뜻한 기억력을 바탕으로 바로 블로그에 글을 쓰는 것이지만, 정리가 잘 되지 않아 순서가 맞는진 잘 모르겠다.(정말 이것 저것 헤딩하면서 진행해서 순서까진 잘 모르겠습니다 ㅠㅠㅠㅠ 그래도 최대한 비슷하게 해보겠습니다!)
$ brew install --cask docker
homebrew에서는 --cask
부분이 빠진걸 권장하지만 애플리케이션 형태로 설치하는게 편해서 이렇게 설치했다.
$ brew install colima
$ colima start --arch x86_64 --cpu 4 --memory 8
$ 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 에서 정상 작동한다.
예제 소스도 잘 작동 된다 !!!!
마찬가지로 잘 작동한다.
$ 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 터미널 연결 확인
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 에디터에서 방향키가 잘 작동한다.
물음표로 한글이 표시됐지만 그래도 테이블의 컬럼이 딱 맞아 떨어졌는데
이젠 이게 문제네...
맥과 호환이 잘 되지 않는 것 같습니다.
써야된다면 반드시 GUI툴을 활용하셔야 할 것 같습니다.