일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 컨트렉트 배포 자동화
- ambiguous function description
- ethers websocket
- 러스트 기초 학습
- Vue.js
- rust 기초
- nest.js설명
- 머신러닝기초
- 프록시배포구조
- ethers typescript
- SBT표준
- 스마트컨트렉트 함수이름 중복 호출
- Vue
- multicall
- 스마트컨트렉트프록시
- 컨트렉트 동일한 함수이름 호출
- ethers type
- 러스트 기초
- 스마트컨트렉트테스트
- 티스토리챌린지
- ethers v6
- 러스트기초
- vue기초
- chainlink 설명
- git rebase
- 스마트컨트렉트 예약어 함수이름 중복
- 체인의정석
- ethers
- 스마트 컨트렉트 함수이름 중복
- 오블완
- Today
- Total
체인의정석
docker에 DB 설치하기 (1) - oracle 본문
상황 : 서비스 다큐먼트 페이지에서 여러 데이터 베이스 테이블을 보여주고 하나를 골라 쓰라고 말해야하는 상황
현재 확인된 것은 mysql 뿐이다.
방안 : 이 경우 가장 확실한 방법은 도커로 모든 환경을 설치하고 테이블이 생성이 되나 테스트 해보는 것.
1. 참고 사이트
https://pakss328.medium.com/docker-oracle-%EA%B8%B0%EB%B3%B8-%EC%85%8B%ED%8C%85-a09bf869cb59
먼저 등록을 한다. 개인정보는 아무거나 집어넣어도 상관이 없다.
https://hub.docker.com/u/ethanlambda/content/sub-3b1391a8-a706-4de5-b5ab-6f1e0318e506
(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
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
데이터베이스: 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
현재 있는 데이터 타입은 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
찾아보니 알아서 사이즈를 정해주고 4GB까지 가능하다고 한다.
일단 이 부분은 사이즈 지정 없이 넣어주고 노션에 정리하고 넘어가도록 하기로 했다.
'개발 > docker & linux' 카테고리의 다른 글
mac terminal 압축파일 관련 명령어 (0) | 2021.08.23 |
---|---|
운영체제, 터미널의 구조와 그에 따른 환경 변수의 설정 (direnv 사용) (0) | 2021.08.18 |
docker에 DB 설치하기 (3) - postgreSQL (0) | 2021.08.12 |
docker에 DB 설치하기 (2) - MS SQL (0) | 2021.08.09 |
Docker 사용하기 (0) | 2021.08.07 |