들어가기에 앞서 저는 MacBook Pro14(Apple M1 Pro칩)를 사용하고 있습니다.
자바 국비강의는 Windows OS를 기준으로 진행이 됩니다.
OS가 달라도 어려움 없이 수강을 하던 와중에 오라클DB 파트에 접어들면서 위기가 생깁니다.
강의가 Oracle Database Express Edition(에서도 예전 버전인 Oracle XE 11g) 프로그램으로 진행이 됩니다.
문제는, 오라클XE는 Mac용을 지원하지 않습니다. 대안으로 docker 이미지만 제공을 하고 있어요.
https://www.oracle.com/database/technologies/appdev/xe/quickstart.html
docker desktop을 설치해서 가장 인기많은 oracleinanutshell/oracle-xe-11g 이미지를 받고 컨테이너 실행까진 했는데, sqlplus로 system 계정에 접속하는 과정에서 몇번이고 실패했어요.
% docker run --name oracleXe11g -d -p 1521:1521 oracleinanutshell/oracle-xe-11g WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
사유는 이미지의 플랫폼이 안맞는다고 합니다.
비슷해보이는데 서로 다르다네요ㅎㅎ,,
- linux/amd64: Intel 및 AMD의 64비트 프로세서용. 주로 데스크탑, 랩탑, 서버에서 사용.
- linux/arm64/v8: ARM의 64비트 프로세서용. 주로 모바일 기기, 임베디드 시스템, 저전력 서버에서 사용.
인텔 칩이 아니라 그런가?
실패는 거듭되지만 강의는 절 기다려주지않고 저는 당장 오라클XE가 필요합니다.
서치 끝에 찾은 사자님의 글을 보고 gvenzl의 oracle-xe 이미지를 받아서 oracle2라는 이름의 컨테이너로 준비 완료했습니다.
참고로 PC를 재부팅하면 Collima로 docker를 다시 실행해야 합니다.
colima start --memory 4 --arch x86_64
이제 sqlplus 차례인데요. sqlplus는 명령 기반의 sql 쿼리 툴로 Oracle Database XE를 설치하면 기본적으로 포함되어 설치됩니다.
docker exec -it oracle2 sqlplus
이렇게 실행하면 username과 password를 묻습니다.
username에 system을 입력
password는 임의로 설정. 저는 사자님의 글을 보고 명령어 그대로 쳐서 비번이 pass입니다
드디어 접속이 됩니다!
Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
하지만 아직 끝이 아닙니다. 실습에 HR 샘플 스키마가 필요하대요. 오라클에서 제공하는 기본 데이터 샘플입니다.
일반적으로 xe 깔면 user HR을 unlock하고 바로 접근이 가능한 것 같은데 Mac에서는 Docker를 사용해야 해서 포함이 안된 것 같습니다. 폴더를 뒤져봐도 없어요
hr 샘플 스키마를 찾는 방법을 또 검색해서 열심히 해봅니다.
터미널에서
docker exec -it oracle2 bash
그 다음은 oracle 환경 변수를 설정합니다. /opt/oracle/product/21c/dbhomeXE/bin/oracle_env.sh 인데 이게 안먹어서
대안으로
source /opt/oracle/product/21c/dbhomeXE/bin/oraenv
를 입력했습니다.
스크립트가 ORACLE_SID(데이터베이스 식별자)를 물어보는데 기본값인 XE를 입력했습니다.
그 다음은 샘플 스키마를 깃에서 복제해 왔습니다.
git clone https://github.com/oracle/db-sample-schemas.git
샘플 스키마가 성공적으로 복제가 됐으면
cd db-sample-schemas
를 통해 해당 디렉토리로 이동한 후에
docker cp . 컨테이너ID:/opt/oracle/scripts/
cp 명령어로 다운로드한 스크립트를 docker컨테이너로 복사합니다.
위 과정까지 정상적으로 마치면 아래 명령어 입력
sqlplus / as sysdba
연결 성공
드디어 sqlplus가 작동합니다. [SQL]> 이 활성됐습니다.
@hr_install.sql를 입력하면 설치가 시작됩니다.
HR스키마 설치 완료
SQL> CREATE USER hr IDENTIFIED BY pass;
User created.
SQL> GRANT CONNECT, RESOURCE TO hr;
Grant succeeded.
이제 username: hr, password: pass로 접속이 됩니다.
sqldeveloper로 열어볼까요?
사용자 hr로 접속
실행문을 돌려볼까요?
드디어 실습 환경 셋팅 완료
oracle xe 11g가 아닌 oracle xe 21c이지만 11g 실습 화면과 거의 동일합니다.
HR 데이터는 윈도우 환경 사용자들과 99% 동일합니다. 내가 발견한 차이점은 employee 데이터에서 한명의 last_name이 다른 정도?
실습 환경을 갖추는 일이 수고스러우니 국비강의는 윈도우로 듣는 게 편하긴 하겠어요
인텔리제이에서 jdbc 연결할때 URL은 jdbc:oracle:thin:@localhost:1521:xe로 윈도우OS랑 같았습니다
Mac이라고 컨테이너이름, 컨테이너IP 여러개 넣어봤는데 다 실패하고 다른 윈도우 수강생들이랑 똑같이 해봤더니 되네;
'Et cetera' 카테고리의 다른 글
[Mac] 인텔 아이맥 초기화하기 (iMac late 2013 Intel 칩, macOS Catalina) (1) | 2024.08.07 |
---|---|
[Mac] 맥 응용프로그램 강제 종료 단축키 (0) | 2024.08.02 |
[Mac] VSCODE Remote-SSH 기존 RSA 키 비밀번호 없애는 방법 (0) | 2024.01.19 |
[REACT] npm install 안될 때 (패키지 종속성 충돌) (1) | 2023.12.06 |
SSH 키 하나에 여러 서버를 연결해도 괜찮을까? | 마스터 비밀번호로 여러 서버 접속하기 (0) | 2023.11.29 |