체인의정석

docker에 DB 설치하기 (1) - oracle 본문

개발/docker & linux

docker에 DB 설치하기 (1) - oracle

체인의정석 2021. 8. 9. 14:34
728x90
반응형

상황 : 서비스 다큐먼트 페이지에서 여러 데이터 베이스 테이블을 보여주고 하나를 골라 쓰라고 말해야하는 상황

현재 확인된 것은 mysql 뿐이다.

 

방안 : 이 경우 가장 확실한 방법은 도커로 모든 환경을 설치하고 테이블이 생성이 되나 테스트 해보는 것.

 

 

1. 참고 사이트

https://pakss328.medium.com/docker-oracle-%EA%B8%B0%EB%B3%B8-%EC%85%8B%ED%8C%85-a09bf869cb59

 

docker oracle 기본 셋팅

docker를 이용하여 로컬에 오라클 12c 셋팅 하는 방법이다.

pakss328.medium.com

먼저 등록을 한다. 개인정보는 아무거나 집어넣어도 상관이 없다.

https://hub.docker.com/u/ethanlambda/content/sub-3b1391a8-a706-4de5-b5ab-6f1e0318e506

 

Docker Hub

 

hub.docker.com

(base) lambda256@ethan ~ % docker login
Authenticating with existing credentials...
Login Succeeded
(base) lambda256@ethan ~ % docker run -d -it --name <Oracle-DB> store/oracle/database-enterprise:12.2.0.1
zsh: no such file or directory: Oracle-DB
(base) lambda256@ethan ~ % docker run -d -it --name oracle store/oracle/database-enterprise:12.2.0.1
Unable to find image 'store/oracle/database-enterprise:12.2.0.1' locally
12.2.0.1: Pulling from store/oracle/database-enterprise
4ce27fe12c04: Pull complete
9d3556e8e792: Downloading [=================================>                 ]    102MB/151MB
fc60a1a28025: Download complete

다음과 같이 로그인 후 설치가 가능.

한참을 기다리고 나니 설치가 완료되었다.

 

설치 후 도커에 접속하기

(base) lambda256@ethan ~ %  docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus /nolog"

SQL*Plus: Release 12.2.0.1.0 Production on Mon Aug 9 04:28:23 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

SQL>

이렇게 할 시 쿼리에서 에러발생, 권한 부여를 해줘야 함

https://hilu0318.tistory.com/144

 

오라클 에러 정리.

1> SP2-0640: Not connected : 해당 스크립트 실행 권한이 있는 계정으로 로그인. conn ID/PW ex> SQL> conn sys/oracle as sysdba; 2> ORA-65096: invalid common user or role name : 유저 생성 시 발생..

hilu0318.tistory.com

SQL> select * from 테이블명;
SP2-0640: Not connected
SQL> conn / AS SYSDBA
Connected.

권한 부여시 create 문 테스트 가능

 

ERROR at line 1:
ORA-00910: specified length too long for its datatype

다음과 같은 에러 발생

 

https://www.oraexcel.com/oracle-10gR2-ORA-00910/lang-ko

 

오라클10gR2 ORA-00910 데이터형에 지정된 길이가 너무 깁니다 - ORA-00910

데이터베이스: 10g 출시 2 오류 코드: ORA-00910 설명: 데이터형에 지정된 길이가 너무 깁니다 원인: 데이터 유형 CHAR 및 RAW의 경우 지정된 길이는> 2000입니다. 그렇지 않으면, 지정된 길이는> 4000입니

www.oraexcel.com

데이터베이스: 10g 출시 2
오류 코드: ORA-00910
설명: 데이터형에 지정된 길이가 너무 깁니다
원인: 데이터 유형 CHAR 및 RAW의 경우 지정된 길이는> 2000입니다. 그렇지 않으면, 지정된 길이는> 4000입니다.
조치: VARCHAR2, LONG CHAR 또는 LONG RAW와 같이 더 짧은 길이를 사용하거나 더 긴 길이를 허용하는 데이터 유형으로 전환

 

이를 해결하기 위해서는 datatype limit을 보고 자료형이나 limit을 알맞게 변형시켜주어야 한다.

https://docs.oracle.com/cd/E18283_01/server.112/e17110/limits001.htm

 

Datatype Limits

BFILE Maximum size: 4 GB Maximum size of a file name: 255 characters Maximum size of a directory name: 30 characters Maximum number of open BFILEs: see Comments The maximum number of BFILEs is limited by the value of the SESSION_MAX_OPEN_FILES initializati

docs.oracle.com

현재 있는 데이터 타입은 varchar2 인데 크기를 4000 보다 훨씬 큰 크기까지 다룰 수 있어야 한다.

이 경우 아래 이미지에서 볼 수 있듯이 CLOB를 데이터 타입으로 사용해 준다.

혹시 몰라 다른 사용자들이 한 질문도 살펴봤는데 같은 답변이 나왔다.

https://community.oracle.com/tech/developers/discussion/1029959/store-string-4000

# LONG VARCHAR (or CLOB) – variable length character data more than 32,000 bytes and up to 2 Gig, you do not need to specify length
# LONG BYTE (or BLOB) – variable length binary data more than 32,000 bytes and up to 2 Gig, you do not need to specify length

 

다만 이 경우 길이를 specify 할 필요가 없다고 나온다. 하지만 일단 specify한 후에 다시 테이블을 생성해 보았다.

 

ERROR at line 1:
ORA-00907: missing right parenthesis

 

다음과 같은 에러가 발생하였다.

쿼리문에 괄호나 컴마가 빠져서 나오는 오류라고 하는데 쿼리문이 매우 길다. 

 

clob 설명을 보면 specify 할 필요가 없다고 나와있다. 그래서 괄호를 없애봤더니 테이블이 생성되었다.

할 필요가 없는게 아니라 하면 에러를 나는 거였나 보다.

 

https://stackoverflow.com/questions/15844434/defining-size-of-clob-in-oracle

 

Defining size of CLOB in Oracle

I am making a table in which i am storing XML. To store XML i am using CLOB data type. The max size of my XML would be 5kb. What size of CLOB column should i define while creating the table?

stackoverflow.com

찾아보니 알아서 사이즈를 정해주고 4GB까지 가능하다고 한다.

 

일단 이 부분은 사이즈 지정 없이 넣어주고 노션에 정리하고 넘어가도록 하기로 했다.

728x90
반응형
Comments