error & sol/좌충우돌 맥 사용기

mac에서 sqlplus 접속하기

익명의 구름 2020. 2. 22. 02:26
반응형
사용 노트북(MacBook Pro 2017)  
OS : macOS High Sierra
DB : docker 다운 후, docker에서 Oracle DB 11g image를 pull 하여 설치

 

둥둥 ~! (구름 떠다니는 ~!)

안녕하세요 둥둥! 

이 글을 보시는 분들은 Oracle DB 설치는 물론, Oracle SQL Developer 까지 연동하신 분들이시겠죠?

정말 고생하셨습니다. 

 

윈도우에서는 cmd를 통해서 sqlpus를 접속했는데, 맥에서는 Oracle DB가 docker 위에 올려져 있으니 괜히 더 어렵게 느껴집니다. sqlplus에서는 보다 환경설정적인 부분들(user 계정 생성 및 삭제, 특정 user에게 특정 권한을 부여, table space quota 제한 등)을 다룰 수 있기 때문에 반드시 알고 계셔야 합니다.  

 


sqlplus에 빨리 접속해야 하시는 분들은 맨 밑으로 스크롤을 내려 주시면

전체 명령어를 바로 확인할 수 있습니다.


 

우선 터미널 창을 켠 후, 다음과 같은 명령어를 입력합니다. 

docker exec '[특정 컨테이너]'의 bash 터미널을 실행시키기 위한 명령어입니다.

docker exec -it [자신이 설정한 container name] /bin/bash

tip. 자신이 설정한 컨테이너 이름이 기억나지 않을 때가 있습니다. Oracle DB가 docker에 run 되어 있다는 가정하에, docker ps라는 명령어를 입력하면 현재 실행중인 컨테이너 목록을 확인할 수 있습니다. oracle이 보이는 row에서 맨 끝 column인 NAME 부분을 보면 자신이 설정한 container name을 볼 수 있습니다. 

 

docker exec에 /bin/bash  -it 옵션이 있는 이유가 궁금하다면, 아래의 더보기를 눌러주세요. 

더보기

1. /bin/bash는 뭘까?

 우선 '/bin/bash'에 대한 의문을 해소하기 위해 Docker Container 내부를 살펴보겠습니다.

 

[그림1] 해당 컨테이너에서 "ls" command 실행 

ls 명령어를 통해 "oracle11g"(이건 제가 정한 컨테이너명이에요! 여러분과 다를 수 있어요!)라는 이름을 가진 컨테이너 속 파일 및 디렉터리 리스트를 확인해볼 수 있었는데, 이때 bin이 있는 걸 볼 수 있습니다.

 

[그림2] 일반 파일 bash

더 나아가 bin 디렉토리를 살펴보니 bash라는 일반 파일이 있는 걸 확인할 수 있습니다.

이 파일을 실행시킴으로써 Docker Container 안에 Bash Terminal이 열리게 되는 것입니다.  

 

2. -it(Interactive)옵션이 왜 필요할까?

 docker exec command를 실행하기 위해서 열어둔 터미널이 host terminal인데, 이 terminal과 Docker Container 안에 있는 bash terminal의 입출력(error 포함)을 연결하기 위해서입니다. binding이 되어 있어야 host terminal에서 입력한 command가 Docker Container의 bash terminal로 전달이 되고, bash terminal에서 수행된 결과가 host terminal에게 전달되어 우리에게 보일 것입니다.

 

▶ 자세한 설명은 링크된 사이트를 참고하시면 좋을 것 같습니다.


 

Docker Container 안의 bash terminal로 root 계정에 접속한 후에는 다음과 같은 명령어를 실행합니다. 

root@CONTAINER_ID:/# su - oracle

"su"는 (substitute user 약자) 다른 사용자로 전환시켜주는 linux 명령어입니다.

하지만 '-', '-l', '--login' 옵션을 주지 않으면 우리가 생각하는 통상적인 전환(새로 로그인)이 아닌, 외부인으로서 방문 차원의 Guest 로그인 수준의 권한을 갖기 때문에 제약 사항이 생길 수 있습니다.

 

▶ su와 su - 의 차이에 대한 자세한 설명은 링크된 사이트를 참고하시면 좋을 것 같습니다. 

 

 

oracle의 환경 변수로 세팅된 환경에서 "sqlplus"를 입력하시면 sqlplus로 접속이 됩니다.  

oracle@CONTAINER_ID:/# sqlplus

 

해당 계정을 로그아웃, 즉 빠져 나가고 싶으시면 control(^) + D 하시면 됩니다. 

이때는 ^+D를 2번 하시면 host terminal로 돌아오겠네요 ! 

 


전체 명령어

 

[그림3] mac에서 Oracle DB sqlplus 접속 방법


도움이 되셨다면

둥둥 떠다니는 광고를 눌러 주실 수 있을까요..? 

광고를 클릭하시면 익명의 구름의 포스팅 제작에 작은 도움이 됩니다.

 

반응형