DB/ORACLE

[오라클 - 도커] 도커로 오라클 23ai 설치하기

Kang_hobin 2024. 6. 24. 13:41

회사 PC에 오라클을 설치해서 이것저것 테스트 해보려 하는데..

회사 PC 라서 그런지(보안프로그램 등등) 오라클 설치가 쉽지 않다..

물론 간단한 SQL 테스트라면 아래 LiveSQL에서도 충분하지만 이번엔 도커로 설치해보려 한다.

 

https://livesql.oracle.com/ 

 

Oracle Live SQL

2,193,170 scripts, 6,269 likes, 1,078 published scripts, 4,971 new scripts created in the last 7 days.

livesql.oracle.com

 


먼저 도커를 설치한다.

아래 주소에 설치 메뉴얼이 있으니 참고해서 설치하자.

https://docs.docker.com/desktop/install/windows-install/

 

Install Docker Desktop on Windows

Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

설치파일 다운
실행.. 하기전에!!

 

WSL2과 기본 환경 설정을 하자.

 


도커 설치 및 환경설정 하기

아무 세팅 없이 지금 실행하면 아래 처럼 뜬다.

요건 윈도우 -> 서비스 -> Server사용 안함으로 되어 있는 경우이다. 자동으로 변경하자.

윈도우키 -> 서비스 -> Server 부분을 우클릭 -> 속성

 

✔️ Docker는 wsl2 기반에서 실행되기 때문에 wsl2를 설치를 해주어야 한다. 

cmd 창을 실행해서 아래 명령어를 실행하자. (매우간단~)

wsl --install

 

설치
됬군.

그 다음.. 성능 - CPU 부분에서 "가상화: 사용" 되어 있는지 확인 하고!

우측 아래 가상화: 사용 부분 확인

그리고 Hyper-V 옵션 켜기!!
Windows 기능 켜기/끄기 에서 Hyper-V 옵션에 체크가 되어있어야 한다.

Hyper-V 부분에 체크

그럼 변경 사항 어쩌구 뜨면서 progress 바가 나온 후 재부팅 하라고 한다.

 이제 껏다 켜보자.


 

껏다키면 아마 cmd 창이 뜨면서 "이 기능을 사용하도록 설정?" 뭐 어쩌구 이런 비슷한 멘트가 나올 것이다. 

그리고 자동으로 꺼지니까 신경 쓰지 않아도 된다.

이제 다시 설치 파일을 실행해본다.

 

OK!
설치 진행중.. 밥먹고 와서 다시 볼 예정

 

또 재시작.. 재시작해주자

이제 실행!

도커 회원가입(난 구글계정으로 했다) 후에 로그인 하면!

도커 설치 끝

도커 설치는 끝난다.

 

도커에서 오라클 이미지 PULL 하기

이제 도커에서 oracle 이미지를 Pull 할 것이다.

오라클 이미지중 이왕이면 가장 최신버전 받고 싶은데.. 아래 명령어로 오라클 이미지를 검색해보자

(https://hub.docker.com/ 에서 찾아도 된다)

stars는 좋아요같은, official은 공식!

난 검색하다가 23c 개발자용이 있다고 해서 아래와 같이 설치하였다.

(이미지만 따로따로 받는 방법은 MySQL 이중화 블로그에서 참고 또는 하단의 참고 블로그 가장 마지막 것 참고!)

docker run -dit --name oracle23c -p 1521:1521 container-registry.oracle.com/database/free

설치 완료
상태 확인

UI에서도 상태확인이 가능하다.

 


DB 접속 

이제 먼저 도커로 오라클에 접속해보자.

docker exec -it oracle23c sqlplus sys as sysdba
-> 이후 비밀번호는 system (기본값)

잘 설치되어있다. 23ai군.. 무작정 따라하다가 이름 oracle23c로 지정했는데..

아참.. 난 그냥 복붙하다가 컨테이너 명을 oracle23c로 했는데.. 이번에 23버전에서는 oracle23ai인가 보다.

(오라클 버전 후에 붙는 알파벳은 버전별 특징이라고 한다. 초창기 i는 internet, g는.. 까먹었고.. c는 cloud.. 이젠 ai는 당연히 우리가 아는 그 ai 겠다.)

+ 추가) 2024/05/02에 ai로 업데이트 된 거 였다.. 뭔 기능이 추가됬는지 한번 보는 포스팅도 만들어야겠다.

이제 DBeaver로 접속해보자.

먼저 database명이 뭔지 조회..

FREE네?

sys 계정 비밀번호도 바꿔주고..

포트는 1521로 했으니 기본으로 하고.. 이렇게..!

접속 -완-

 

접속 테스트는 끝냈으니,  SYS 계정을 쓰기보단.. 계정을 새로 만들어주고 쓰자.

--12C 이후 공통 계정 앞에 C## 키워드 안붙이게 하기
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;

-- 사용자 계정 생성
CREATE USER DBA_23AI IDENTIFIED BY 1234;
-- 사용자 계정 권한 부여
GRANT CONNECT, RESOURCE, DBA TO DBA_23AI;
-- 사용자 계정 테이블 공간 설정
ALTER USER DBA_23AI DEFAULT TABLESPACE USERS;
-- 테이블 공간 쿼터 할당
ALTER USER DBA_23AI QUOTA UNLIMITED ON USERS;

COMMIT;

 

접속 후에 23ai의 신기능,

Table Value Constructor(TVC)

를 한번 써보고 끝내자.

SELECT *
  FROM (VALUES (1, '하이')
             , (2, '두번째')
             , (51, 'YDB')) AS TEMP_TABLE(NO, NAME)
;

PLAN_TABLE_OUTPUT                                                    |
---------------------------------------------------------------------+
SQL_ID  gswt12n0hrgph, child number 0                                |
-------------------------------------                                |
SELECT *   FROM (VALUES (1, '하이')              , (2, '두번째')          |
    , (51, 'YDB')) AS TEMP_TABLE(NO, NAME)                           |
                                                                     |
Plan hash value: 1233125608                                          |
                                                                     |
----------------------------------------------------------------     |
| Id  | Operation        | Name | Starts | A-Rows |   A-Time   |     |
----------------------------------------------------------------     |
|   0 | SELECT STATEMENT |      |      1 |      3 |00:00:00.01 |     |
|   1 |  VIEW            |      |      1 |      3 |00:00:00.01 |     |
|   2 |   VALUES SCAN    |      |      1 |      3 |00:00:00.01 |     |
----------------------------------------------------------------     |
                                                                     |

이렇게 여러개 한번에 insert도 됨!

이제 select dual 문을 Union all 해서 여러개 붙이는 짓은 안해도 되긴 하겠다.

 

끝.

 

참고자료 : 

더보기