ShanePark / markdownBlog

This repository is to keep all my blog posting written in MarkDown online
Creative Commons Attribution 4.0 International
6 stars 4 forks source link

400 #60

Closed utterances-bot closed 1 year ago

utterances-bot commented 2 years ago

[MacOS] M1 맥북 도커로 ORACLE DB 실행하기

Intro M1 맥북을 구입 한 이후로 약 1년 반동안, 오라클 데이터베이스를 띄우기 위해 참 많은 노력을 했습니다. 많은 고민과 시도 끝에 결국 오라클 클라우드에 DB를 띄워놓고 사용하는 방법 으로 해결을 해 왔는..

https://shanepark.tistory.com/400

bombo-dev commented 2 years ago

정말 좋은 소식이네요! 정보 감사합니다~

ghost commented 2 years ago

드디어 성공했습니다. 감사합니다! 그리고 컴퓨터를 종료하여 도커가 종료 된다음에 다시 연결하려니까 도커 이미지를 다시 만들어서 실행해야 접속이 가능하더라구요. 이렇게 하는게 맞는건가요?

ShanePark commented 2 years ago

@jasungk 도커가 종료 된 후에, 컴퓨터 재 시작을 할 때에 해당 컨테이너가 자동으로 실행되지는 않아서 그렇습니다. docker ps -al로 종료된 컨테이너 목록도 본다면 만들어두었던 컨테이너 목록을 확인 하실 수 있어요. 컴퓨터를 켠 후에 이미 만들어두었던 컨테이너만 docker run 명령어로 실행 하거나 Linux) docker 컨테이너 자동 실행 설정 및 스케줄 등록 이런 식으로 자동 실행 등록을 할 수도 있습니다. 혹은 docker run --restart=alway 설정을 주셔도 됩니다.

dmlwl commented 2 years ago

오라클때문에 원격 데스크탑으로 집에 있는 PC에 연결해서 리모트 머신으로 써야하나 하던 찰나에 이글을 봤습니다. 제 맥북에어는 기본형 깡통인데 8기가 램으로 docker/colima 쓸 수 있을까요....? 리소스를 많이 잡아먹는다 해서 걱정입니다 ㅜㅜ

ShanePark commented 2 years ago

@dmlwl 안녕하세요. 저도 M1 8기가 제품 쓰고 있는데 전혀 문제 없어요! 램이 좀 부족하기는 할테지만 스왑 메모리를 땡겨 쓰기 때문에 가상환경 오라클 + IDE + 브라우저 몇개 정도는 큰 부담 없어요. 쾌적하게 사용 하실 수 있습니다.

dmlwl commented 2 years ago

@Shane-Park 조언 감사합니다! 집에 가서 한번 해보겠습니다!!

ghost commented 2 years ago

@Shane-Park 감사합니다!

songhui339 commented 2 years ago

와...덕분에 M1맥북에서도 localhost로 연결했습니다ㅜㅠㅜ M1맥북으로 국비 수업 따라가느라 혼자 구글링 하면서 전전긍긍하고 있었는데 Shane님 덕분에 많이 배워갑니다!! 정말 ㄱ ㅏㅁ사합니다!

leezard94 commented 2 years ago

No such container: 라는 문구 가 뜹니다. ㅠㅠㅠ 제가 맥북이 처음이다보니 (개발자도 아니고) 좀 어려운데 도커랑 colima brew 도 다 설치 했습니다. 혹시 도커에서 컨테이너를 어떻게 생성하나요???

ShanePark commented 2 years ago

@leezard94 안녕하세요. 아래의 명령어를 그대로 입력하시면 자동으로 gvenzl/oracle-xe 이미지를 토대로 컨테이너를 생성 합니다.

docker run -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe

run 이 아니고 start 를 하신건 아닐까요? 명령어 입력 하고, 에러 나온 화면을 명령어와 에러 모두 포함되게 찍어서 이메일로 보내 주시면 좀 더 확인이 수월 할 것 같습니다.

맥북에서 스크린샷은 커맨드 + 쉬프트 + 숫자 4 로 찍을 수 있어요.

yeaji862 commented 2 years ago

덕분에 설치까지 성공했습니다 감사합니다ㅜㅜ 근데 도커를 처음 사용해 봐서 그런데 도커로 오라클 다시 실행하면 기존 데이터는 다 삭제가 되는건가요?? 재실행하면 데이터가 다 없어지더라구요ㅜㅜㅜ

ShanePark commented 2 years ago

@yeaji862 안녕하세요. 같은 컨테이너를 그대로 실행 하시거나, 볼륨지정을 하시면 되는데.. 제가 도커에 익숙하지 않은 분들에 대한 배려가 부족했네요. 컨테이너를 실행 할 때

docker run --name oracle -v ~/Documents/oracledb:/opt/oracle/oradata -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe

이런식으로 옵션을 좀 더 주시면 되는데, 제가 본문에 내용을 추가해서 수정 해 두었으니 한번 확인해주세요. 피드백 감사드려요

dmlwl commented 2 years ago

감사합니다. 덕분에 m1 맥북으로 오라클 연습 잘 하고 있습니다....! 거기에 피드백까지..... 복받으세요 ㅜㅜ

kkmwkk commented 2 years ago

권한은 따로 안줘도되는 건가요?

ShanePark commented 2 years ago

@kkmwkk 안녕하세요. 처음에 획득한 루트 권한으로 아래 처럼 계정 생성해서 사용 하시면 됩니다.

CREATE USER [USERNAME] IDENTIFIED BY [PASSWORD]

GRANT RESOURCE, CONNECT TO [USERNAME];
-- OR --
grant create session, create table, create procedure to [USERNAME];
-- OR --
grant create view to [USERNAME];
MyDreamFlying commented 2 years ago

안녕하세요 선배님 ㅎㅎ 중프 자료 찾아보다가 이곳 지나갔었는데.. 블로깅 하신 내용에 너무 감사드립니다. 맥북에 오라클 설치하려다가 또 찾아 오게 될줄 몰랐었네요 영광입니다. 저는 현재 '그곳'을 다니고 있는 국밥이라고 합니다 저도 맥북에 오라클 설치하기 위해서 거진 2~3주에 한두번씩 자료 찾고 따라하고 있었는데요 선배님 작성하신 글 보고 따라하다보니 colima start --memory 4 실행하다 에러가 나오더라구요.. 도커로 11g 사용하려다가 사용 할 수 없어서 에러난 상태로 유지중이었는데 혹시 이와 관련해서 도움 받을 수 있을까요? 에러코드는 fata[0001] 발생되었고, 버전은 0.4.4 입니다 m1 pro 사용중이고, 256, 16g 몬트레이 입니다.

ShanePark commented 2 years ago

@MyDreamFlying

안녕하세요. 대덕인재개발원에서 공부하고 계신다니 반갑네요. 저도 개발원에서 공부할때는 정말 평일이건 주말이건 밥먹는 시간마저 아껴가며 열심히 했지만. 요즘 드는 생각은 더 필요한걸 잘 찾아서 더 열심히 할껄 하며 아쉬움이 많이 남습니다. 그때 당시에는 가능한 최고로 열심히 했다고 생각했는데 그래도 부족함이 많더라고요.

말씀해주신 에러 상황을 확인하기 위해 기존에 설치된 모든 docker 및 colima 관련된 모든 데이터를 삭제 한 후에 제가 작성한 글을 확인하며 처음부터 다시 진행 해 보았는데요 .. 저는 말씀하신 에러를 찾을 수 없었고 문제 없이 설치가 진행 되었어요.

혹시 중간에 어떤 변수가 꼈을지 모르니 차근차근 다 삭제하고 다시 설치해보시면 좋겠어요. 문제가 생긴다면 어디에서 생겼는지 잡을 수 있도록 중간 중간에 스크린샷을 남겨 주세요. Mac 에서는 커맨드 + 쉬프트 + 숫자4 번을 누르면 범위를 지정해 스크린샷을 찍을 수 있고, 그 상태에서 스페이스바를 누르면 창 전체를 찍을 수도 있어요.

brew 및 colima 삭제

colima stop
brew remove docker
brew remove --cask docker
brew remove colima
brew autoremove

Docker Desktop을 설치하셨었다면 앱 목록에서도 삭제 해 줍니다. 앱 목록은 커맨드+쉬프트+A 단축키로 띄울 수 있어요.

brew 및 colima 설치

brew install colima
brew install docker

도커를 설치했을때 link가 제대로 되지 않는다면 brew link docker 로 링크 해줘야 할 수도 있는데, 전체삭제를 정상적으로 진행 하고 한다 필요가 없을거에요. 제 PC에 현재 설치된 colima 및 docker 버전은 아래와 같습니다.

colima: stable 0.4.4 (bottled), HEAD Docker version 20.10.17, build 100c70180f

이후 설치가 다 완료 되었다면, 아래와같이 Colima 실행

colima start --memory 4 --arch x86_64

Oracle 11G 실행

docker run --name oracle -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe:11

colima 실행 부터 해 주시면 되는데 .. 사실 정말 자세하게 오류가 발생한 상황에 대해 작성을 해 주셨음에도 제가 에러 상황을 파악하기가 쉽지 않네요. 일단 제가 전체 삭제 후 처음부터 진행 한 건 문제가 없었으니 (M2 Air 24G/512G Monterey 12.5.1) 전체 삭제 후 처음부터 다시 진행 해 보시는게 좋겠어요. FATA001 에러가 찾아보니 colima 에러는 아니고 docker 에러인 모양 이더라고요. 제가 작성해둔 명령어들을 한 토시도 달라지지 않도록 처음부터 다른 사람에게 알려준다는 느낌으로 꼼꼼히 해 보시고 중간중간 기록을 남겨보세요. 그래도 안된다면 제가 그 기록들을 이메일로 보내주시면 확인 해 보고 제가 도와드릴 수 있는 부분이라면 도와드리도록 하겠습니다 psh40963@naver.com 감사합니다.

yeaji862 commented 2 years ago

감사합니다!!! 덕분에 오라클 잘 사용중 입니다 ㅜㅜㅜㅜ !!!!

kkmwkk commented 2 years ago

혹시 Documents/oracledb:/u01/app/oracle/oradata 이 경로에서 /u01/app/oracle/oradata 경로는 어디서 찾을 수 있을까요.. oradata에 꼭 들어가야 해서요.. Finder에서 찾을 수 없는 곳인가요..

ShanePark commented 2 years ago

@kkmwkk 안녕하세요.

-v ~/Documents/oracledb:/u01/app/oracle/oradata

위와 같이 볼륨 설정을 거셨다면, : 좌측에 있는, 위의 경우에는 로컬 드라이브의 ~/Documents/oracledb 에서 찾으실 수 있어요.

만약 볼륨을 옵션을 걸지 않으셨다면 `

docker exec -it oracle /bin/bash

로 컨테이너 내부에 접근 하셔서 해당 경로를 찾아 들어가셔야 해요.

볼륨을 거신 것 같은데 Finder를 켜고 Documents 폴더 하위의 oracledb 폴더를 확인 해 보세요.

kkmwkk commented 2 years ago

컨테이너 내부에 접근해서 pwd해보면 u01/app/oracle로 나옵니다. dir을 해보면 제가 찾고 있는 lst 파일들이나, sql 파일들이 보이는데, 이것을 메모장이나 다른 편집기로 출력하고 싶습니다. 윈도우에서는 ed 명령어로 손쉽게 하던데, mac은 좀 다른가요.. ㅠㅠ

ShanePark commented 2 years ago

@kkmwkk 볼륨을 거셨다면 호스트에서 디렉터리로 바로 접근이 가능한데, 볼륨을 걸지 않으셨다면 원하는 파일을 호스트로 복사해와서 읽으시면 될 듯 합니다.

docker cp <컨테이너ID>:<컨테이너파일경로> <호스트경로>

예를 들면 아래처럼 하시면 될거에요

sudo docker cp oracle:/u01/app/oracle/something.sql .
jeeweon commented 2 years ago

안녕하세요. 블로그 글 참고해서 오라클 DB 실행에 대한 설정을 진행했습니다. 설명이 넘 친절해서 따라하는 데 큰 이슈가 없었어요. 감사합니다!

문제는 SQL DEVELOPER에서 ‘관리자 계정 접속’ 시도 시 계정 정보 오류 에러(ORA01017-invalid username/password)가 발생하는 건데요, 지금까지 확인한 내용은 아래와 같습니다.

  1. SQL DEVELOPER ver22.2..173.2018
  2. Oracle DB ver21c
  3. SQL PLUS에서는 관리자 계정으로 로그인 됨(user name: sys as sysdba만 가능)
  4. SQL PLUS에서는 관리자 계정에 락이 걸려있지 않은 상태인 것도 확인
  5. SQL PLUS에서 생성한 사용자 계정은 SQL DEVELOPER에서 접속 테스트 성공
(유저 계정: c##id/pw)
  6. 비밀번호 대소문자 구분 영향 없음

혹시 DEVELOPER에서만 접속 에러가 나는 것에 대해서 추가로 확인할 사항이 있는지 도움 받을 수 있을까요?

ShanePark commented 2 years ago

@jeeweon 안녕하세요. 저는 예전에 한영키가 눌려 있었을 때, SQL Developer 에서 한글을 영문처럼 한글자씩 입력받다 보니 눈치 채지 못한 사이에 한글이 입력되어서 그런 적이 있었어요. 혹시 모르니깐 한/영을 입력 해 보거나 패스워드를 바꿔서 입력 해 보세요.

invalid username/password 가 나오고, SQL PLUS에서도 로그인이 된다는건 서버가 문제없이 떴지만 SQL Developer에서 접속을 못 하고 있다는건데 혹시 제가 위에서 작성한 예제대로 하면 system/pass로 아이디,비밀번호 초기화 되는데 똑같이 입력 해보시구요.. 또 하나 확인해야할건 Database 인데. 혹시 ORCL 로 되어있다면 xe로 변경해서 확인 해 보세요. 그래도 안된다면 SQL Developer 외의 클라이언트, 예를 들면 DBeaver를 다운받아서 접속을 시도 해 보세요. 정상적으로 접속이 된다면 Sql Developer에 문제가 있다는건데. 사실 MacOS 에서의 SQL Developer에 문제가 너무 많아서 주변에서는 쓰는 분을 못봤어요

kkmwkk commented 2 years ago

너무너무 감사드립니다. 모든 것이 해결됐습니다!

leezard94 commented 2 years ago

안녕하세요! 많은 도움 되었습니다 정말로 감사합니다. 도커로 연결을 했을경우 sts 와 연동은 안되는것 같은데 ㅠㅠ 이러한부분도 해결방안이 있을지 궁금합니다.!!

ShanePark commented 2 years ago

@leezard94 안녕하세요 STS와 연동한다는게 무슨 말씀이신지 잘 모르겠어요. 혹시 프로젝트와 DB 연동을 말씀하신거라면, 윈도우에서 localhost:1521로 오라클 띄웠을 때와 동일하게 datasource 혹은 jdbc 설정을 해 주시면 사용 가능합니다. 안되는 부분이 있다면 어떤게 안되는지, 그리고 어디까지 성공 했는지를 자세히 설명 해주시면 도움 드릴 수 있을 것 같아요 .감사합니다.

jeeweon commented 2 years ago

위에 invalid username/password 에러 발생한다고 댓글 남겼었는데요, 알려주신 방법대로 시도해봤으나 모두 실패했습니다. 현재 상황은 아래와 같습니다.

  1. 볼륨을 걸고 컨테이너 정상적으로 뜸
  2. DBeaver에 system 계정 최초 연결 성공(system/pass)
  3. sqlplus에서 user 계정 생성 후 권한 부여 성공 3-1. user 계정 password 변경은 가능 3-2. user 계정 DBeaver에서 테스트 연결 성공
  4. DBeaver에서 system 계정 연결 끊김 -> 새 연결 시도 시 invalid~ 에러 발생
  5. sqlplus에서 system계정 password 변경 시도 시, password file''을 열 수 없다는 에러 발생 5-1. ORA-01990: error opening password file ''

왜.. 클라이언트에서만 그리고 관리자 계정만 연결이 안될까요..? 비밀번호에 무슨 문제가 있는 걸까요ㅠㅠ 시간 내서 살펴봐주셔서 감사합니다.

ShanePark commented 2 years ago

@jeeweon 안녕하세요. 번거로우시겠지만, 이미 떠있는 컨테이너를 모두 제거 한 뒤에

  1. 컨테이너 띄우기
  2. Dbeaver로 접속
  3. sqlplus로 접속하여 user 생성
  4. 생성한 user로 접속
  5. 이후 에러 발생하는 내역들 재현

위의 순서대로 말씀하신 내용들이 모두 확인이 가능하도록 유투브에 영상을 찍어서 올려주실 수 있을까요? 전체적으로 10분 내외면 충분할 것 같은데 제가 보면서 입력하신 내용들 및 액션들을 똑같이 진행 해보면 도움을 드릴 수 있지 않을까 싶어요. 말씀해주신 내용만으로는 문제 상황을 정확히 재현해내기도 어렵고 어떤게 문제일지 저도 감이 잘 오지가 않네요. M2 맥북을 제가 집에서만 쓰고 있고 회사에서는 리눅스 환경에서 개발을 하다 보니 퇴근 후에나 확인 해 볼 수 있어요

jeeweon commented 2 years ago

안녕하세요. invalid username/password 에러 재현을 위해 말씀해주신 대로 모든 컨테이너 삭제 후 컨테이너 띄우기부터 다시 진행했습니다.

여러 번 재시도를 하다 보니, 볼륨을 설정해 컨테이너를 띄우려고 할 때 에러가 발생한다는 것을 발견했습니다. 영상 5분 7초에 보시면 아래와 같은 에러 메시지가 뜨는데, 이 때문에 system 계정 로그인이 실패하는 것 같습니다.

CONTAINER: Resetting SYS and SYSTEM passwords.
ALTER USER SYS    IDENTIFIED BY "pass"
*
ERROR at line 1:
ORA-01990: error opening password file ''

이어서 이름만 지정해서 컨테이너를 띄우는 방식을 시도했는데, 영상에서 보시는 것과 같이 에러 없이 DBeaver에서의 접속과 sqlplus에서의 계정 생성 및 접속까지 잘 됐습니다.

볼륨을 설정하는 부분에서 뭔가 문제가 있는 걸까요?

영상은 아래 주소에서 확인하실 수 있고, 터미널에 입력한 코드는 모두 블로그와 동일한 내용입니다. https://youtu.be/AuyYU0AyXYw

+) 상세한 피드백과 도움주시려는 마음에 감동했습니다.. 덕분에 M1 쓰시는 다른 분들께도 이 내용을 공유드릴 수 있었어요. 정말 감사합니다.

jeeweon commented 2 years ago

위에 남긴 유튜브 영상이 아직 hd 처리 중이라 저화질로만 확인 가능하네요..ㅎㅎ 오후까지 기다려보고 처리가 안 되면 다른 방법으로 다시 공유드리겠습니다. 감사합니다.

ShanePark commented 2 years ago

@jeeweon 안녕하세요. 영상 준비한다고 고생하셨어요. 덕분에 자세히 확인 할 수 있었네요. 데이터 베이스가 마운트까지잘 되고 나서 패스워드를 변경하는 과정에서 에러가 발생하네요.

제가 지금 사무실에 맥북을 안가져와서 바로 확인은 힘들고, 퇴근 후에 똑같이 진행 해 보도록 하겠습니다.

비밀번호 변경

docker exec oracle resetPassword <변경할 비밀번호>

위에 있는 도커 명령으로 비밀번호 변경을 할 수 있는데요, 로그를 띄워 놓고 이렇게 명령을 했을때 비밀번호가 잘 변경 되는지. 혹시 변경이 안된다면 어떤 로그가 찍히는지 확인해주세요. 이렇게 하면 SYS 와 SYSTEM 계정의 비밀번호를 변경 합니다.

볼륨 설정

그리고 제가 쭉 봤을때 가장 의심되는 부분은, 볼륨을 통해 생성한 파일에 컨테이너가 접근을 하다가 모종의 권한 문제가 발생하지 않았을까 싶어요. 그래서 파일에 접근을 못했고, password 파일을 오픈하는데 실패 한거죠. 저도 도커를 쓰다 보면 이런 일이 굉장히 빈번하게 발생하더라고요. 보통은 볼륨설정된 폴더를 통째로 chmod 로 권한변경을 해 줘서 해결하곤 합니다.

한번 이미 볼륨이 설정된 폴더의 권한을 통째로 열어 주고 볼륨설정 한 상태로 컨테이너를 다시 띄워 보시겠어요?

sudh chmod -R 777 ~/Documents/oracledb

볼륨 설정을 했을 때 문제가 발생하는 부분에 대해 이렇게해도 해결이 안된다면 제가 퇴근 후에 확인 해서 좀 더 자세히 해결 방법을 도와드리도록 할게요. 일단 그래도 볼륨을 걸지 않았을 때는 문제 없이 사용이 가능해서 다행이네요. 볼륨걸지 않은 컨테이너를 사용하다가 나중에 백업 해야 할 일이 있다면 컨테이너를 통째로 도커 이미지로 생성하는 방법이 있어요. 일단 쓰시다가 이미지로 만들어서 나중에 볼륨을 추가하는 방법도 있으니 걱정하지 않으셔도 됩니다.

leezard94 commented 2 years ago

안녕하세요 많은 도움을 받고있습니다 감사합니다. 우선 궁금한점은 아이디 system 과 설정한비밀번호로 오라클 을 접속한후 다른 사용자를 만드는부분에있어서 계속 생성이 안된다고 뜨는데 이러한 경우는 어디를 좀더 살펴봐야할까요??

저는 맥북 에어 m1을 사용하고있고 다른 사용자의 이름 은 exdb 와 비밀번호 는 12345 로 하였으며( system 비밀번호는 pass) 부여해줘야 할 체크 사항은 다했습니다.

leezard94 commented 2 years ago

안녕하세요! 자꾸 댓글 달아서 죄송합니다... 궁금한게 많아서 위의 글은 제가 해결하였습니다.

다만 sts 와 sqldeveloper 의 연동이 안되어서

java.lang.NullPointerException: Cannot invoke "java.sql.Connection.prepareStatement(String)" because "this.conn" is null

이러한 오류가 뜨는데 (테스트 하면)

저는 맥북 에어 m1 을 사용하고있구요

String jdbcUrl="jdbc:oracle:thin:@localhost:1521:xe"; String dbId ="MVCDB"; String dbPass="12345";

  Class.forName("oracle.jdbc.driver.OracleDriver");
  conn=DriverManager.getConnection(jdbcUrl,dbId,dbPass);

이런식으로 제대로 줬음에도 연결이 안되고 있습니다. 혹시 해결방안이 있을까 해서 여쭤 봅니다.. ㅠ

ShanePark commented 2 years ago

@leezard94 안녕하세요. DB는 정상적으로 띄우셨지만 프로젝트에서 커넥션을 가져와서 DB 요청을 보내는데 어려움을 겪고 계신 것 같네요. java.lang.NullPointerException: Cannot invoke "java.sql.Connection.prepareStatement(String)" because "this.conn" is null 오류를 보면, prepareStatement 를 요청 할 때 해당 ps에 커넥션이 설정이 안되어 있는 모양이에요. 해당 문제는 수업진행 할 때 선생님에게 커넥션이 원하는대로 잘 되지 않는다며 코드를 보여 드리면 쉽게 문제를 해결 해 주실 거에요.

코드 전문을 제가 확인할 수 없어서 정확히는 알 수 없지만

  conn=DriverManager.getConnection(jdbcUrl,dbId,dbPass);

하신 이후에는 preparedStatement 를 얻어 올 때 정상적으로 생성한 커넥션을 이용해야 해요. conn이 null 이면 아래의 코드도 진행이 안되겠죠? 에러 메시지도 저 한줄로는 부족하고 위 아래로 정보가 더 필요해요. 커넥션이 없다면 뭐때문에 없는지를 알아야 하니깐요.

String sql = "select * from ..."
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
...

사용하시는 드라이버 버전을 모르겠는데, OJDBC도 버전을 신경 써 주셔야 할 거에요. 공개된 깃헙 저장소가 없으신데 프로젝트를 통째로 커밋 하고 말씀 해 주시면 코드를 한번 확인 해 드릴게요. 질문주신 내용은 맥북에서 Oracle DB 띄우는것과는 연관이 없는 jdbc 커넥션 관련 내용이기 때문에 본 글에서는 관련된 내용만 필요하신 분들이 찾아 보실 수 있도록 이후 커넥션 관련 추가 질문은 psh40963@naver.com 으로 이메일 보내주시면 답변 해 드릴게요! 감사합니다.

ShanePark commented 2 years ago

@jeeweon 안녕하세요. 퇴근후에 똑같이 진행 해 보았고. 저도 같은 상황을 재현해 냈고 문제를 해결 하는데 성공 했어요. 일단 chmod로 777 한다고 해도 문제가 해결되지는 않고 소유자를 변경 해줘야 했습니다.

같은 에러

image

같은 문제 상황. error opening password file

볼륨 문제

그래서 oracle 컨테이너로 접속 해서 볼륨 되어 있는 부분을 확인 해 보니 image 제 맥북에서의 uid로 소유자가 지정되어있더라고요. 이게 아마 문제를 발생시킨 것 같아요.

소유자변경

그래서 일단 컨테이너 내부의 uid를 확인 하고

id

image 이후 호스트에서 chown으로 해당 uid로 oracledb 폴더의 소유자를 변경 해 주었어요. (sudo 권한이 필요합니다) image

그러고 나서 컨테이너 내부에서 다시 oradata 폴더를 확인 해 보면 image 소유자가 oracle로 변경 된 걸 보실 수 있어요.

이후에는 호스트에서 리셋 패스워드를 하면 이제 패스워드가 정상적으로 변경 됩니다. 권한 문제가 있을때는 이게 먹히지 않아요.

docker exec oracle resetPassword pass

image

마치며

사실 sqlplus 로 접속 후에 username에는 sys as sysdba 비밀번호는 없이 엔터 치고 로그인 해서 alter user system identified by 1234; 으로도 변경 할 수도 있긴 했는데 궁극적으로 권한 문제가 해결 되어야 하기 때문에 uid를 변경 해주는게 맞긴 합니다. 애초에 컨테이너를 띄울때부터 uid를 지정 해서 띄워주는 방식으로 해야 할 것 같은데 블로그 글을 어떤식으로 쉽게 정리할지 벌써부터 머리가 아프네요. 결론

ShanePark commented 2 years ago

@jeeweon 본문에 볼륨 설정해서 컨테이너 띄우기 라는 내용으로 추가 해 두었으니 확인 하고 천천히 진행 해 보세요. 감사합니다.

jeeweon commented 2 years ago

안녕하세요. 안그래도 어제 에러 영상을 다시 준비 중이었는데 해결책을 올려주셨더라고요. 근본적인 원인을 해결할 수 있게 됐네요. 주말동안 찬찬히 따라해보겠습니다. 누군가에게 에러에 대한 피드백을 받을 수 있겠다는 게 심적으로도 도움이 많이 됐습니다. 감사합니다!

gunmandu1 commented 2 years ago

정말 좋은 정보 감사합니다 본문에 나와있는데로 하니 오라클 연동이 됩니다 하지만 재부팅후 다시 docker start 할때 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 의 에러가 나옵니다. 구글링을 해보고 나름 노력을 해보았지만 해결이 잘안되네요 혹시 해결방법이 있을까요? 맥북 m1 max입니다

gunmandu1 commented 2 years ago

오류 내용에 대해 다시금 올려볼려고합니다 Cannot connect to the Docker daemon at unix:///Users/사용자이름/.colima/default/docker.sock. Is the docker daemon running? 이렇게 나옵니다 긴글 읽어주셔서 감사합니다

ShanePark commented 2 years ago

@gunmandu1 안녕하세요. 해당 에러 메시지는 docker 엔진이 돌아가고 있지 않으니 확인을 해 보라고 하네요.

재부팅 후에도 colima를 다시 실행 해 주셔야 해요.

colima start --memory 4 --arch x86_64

이후에 colima 가 준비 되면 oracle db를 띄워 주시면 됩니다.

docker start oracle
hyeonuk-kor commented 2 years ago

정말 감사합니다. 생에 첫 맥 입문을 위해 M2 맥북 에어를 구매하고 오라클을 설치하며 좌절을 맛 보고 있었는데 덕분에 환경 구축을 잘 할 수 있었습니다. 선한 지식 영향을 주신만큼, 항상 행복하시길 바랍니다!!

juneyounghao commented 2 years ago

안녕하세요!!현재 공부중인 학생입니다 다름이 아니라 colima 실행했을때 계속 에러가 발생해서 질문드리게 되었습니다 ㅠㅠ colima 실행시 INFO[0000] starting colima
INFO[0000] runtime: docker
INFO[0000] preparing network ... context=vm INFO[0001] starting ... context=vm

Using the existing instance "colima" errors inspecting instance: [failed to get Info from "/Users/hahajun-yeong/.lima/colima/ha.sock": Get "http://lima-hostagent/v1/info": dial unix /Users/hahajun-yeong/.lima/colima/ha.sock: connect: connection refused] FATA[0001] error starting vm: error at 'starting': exit status 1

이런식으로 오류가 발생합니다 ㅠㅠ

ShanePark commented 2 years ago

@juneyounghao colima가 이미 실행중이라는 것 같은데 docker ps 명령어를 한번 입력 해 보세요. 혹은 재설치를 한번 해 보세요

brew unlink colima # If it is already installed, uninstall it first
brew install --HEAD colima
Namjin-kimm commented 2 years ago

안녕하세요! 컴퓨터를 재시작 후에 데이터가 사라져서 컨테이너를 다시 실행해야 한다고 하셨는데 이때 colima start --memory 4 --arch x86_64 이 colilma도 다시 매번 실행해줘야 하는건가요?!

ShanePark commented 2 years ago

@Namjin-kimm 안녕하세요. 컴퓨터를 재시작 하셨으면 colima도 실행을 해 주셔야 합니다.

애플 실리콘 맥북의 경우에는 핸드폰이나 아이패드처럼 대기상태에서 전력을 거의 소모하지 않기 때문에 굳이 컴퓨터를 종료하실 필요는 없어요. 저도 한번 컴퓨터를 켜면 보통 다음 업데이트가 있을 때 까지 몇주씩은 종료 없이 계속 사용 합니다.

계속 컴퓨터를 끄고 다니셨다면 지금부터는 덮개만 덮거나 지문인식 버튼을 눌러서 맥을 재워 보세요. 감사합니다.

Chohanwo commented 2 years ago

안녕하세요. 현재 학교 다니고 있는 학생인데요. 볼륨 지정해서 사용할려고 따라하다가 퍼미션 정보 변경중 sudo chmod -R 777 oracledb 입력하고, chmod: oracledb: No such file or directory 라고 뜨는데 여기서 어떻게 해줘야 할지 모르겠네요.. 답변 해주시면 감사하겠습니다 ㅎ

Chohanwo commented 2 years ago

질문이 많아서 죄송합니다.. ㅠㅠ 퍼미션 정보 변경은 넘어 갔는데 그 이후 docker logs -f oracle를 입력하면 Linux-x86_64 Error: 13: Permission deniad 라고 뜨는데 어떻게 해야할까요 ㅠㅠ

ShanePark commented 2 years ago

@Chohanwo 안녕하세요! 퍼미션 정보 변경을 넘어가셨다고 하셨지만 일련의 과정에서 문제가 있었기 때문에 오라클 컨테이너가 로그 정보를 읽을 권한을 얻지 못하고 있어요. 제가 볼륨 지정에 대해서 너무 어렵게 설명을 해 두었는데, 사실 볼륨을 꼭 특정 디렉터리로 설정 하실 필요는 없어요.

아래의 절차로 따라 해 주세요

  1. 기존의 오라클 컨테이너 삭제
    docker rm oracle
  2. 기존의 오라클 볼륨 파일 제거 (oracledb 폴더가 있는 곳에서)
    sudo rm -rf oracledb
  3. 볼륨 생성하며 오라클 컨테이너 생성 및 실행
    docker run --name oracle -d -p 1521:1521 -e ORACLE_PASSWORD=pass -v oracledb:/opt/oracle/oradata gvenzl/oracle-xe

이후에 나중에 오라클 다시 띄우실 떄는 colima를 실행 한 후에

docker start oracle

을 입력 하면 기존에 사용하시던 오라클 컨테이너를 이어서 사용 하실 수 있어요 안되는 부분 있으면 댓글이나 이메일 또 남겨주세요. 감사합니다.

JaeWooYi commented 2 years ago

docker ps -a로 컨테이너 확인후 -> docker start 컨테이너 이름 -> docker logs -f 컨테이너 이름 까지 하고 난후 오라클에서 데이터베이스 연결 하면

Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

이 오류가 납니다. mac os에서 이 오라클 오류 해결법이 있나 궁금합니다.ㅜㅜ