일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- multicall
- 스마트컨트렉트 예약어 함수이름 중복
- ethers
- 러스트 기초 학습
- 러스트 기초
- git rebase
- 스마트컨트렉트테스트
- rust 기초
- chainlink 설명
- erc4337 contract
- 머신러닝기초
- Vue.js
- 티스토리챌린지
- erc4337
- ambiguous function description
- 체인의정석
- ethers typescript
- SBT표준
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- 러스트기초
- ethers websocket
- vue기초
- ethers type
- ethers v6
- 계정추상화
- Vue
- 스마트 컨트렉트 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- 오블완
- 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
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까지 가능하다고 한다.
일단 이 부분은 사이즈 지정 없이 넣어주고 노션에 정리하고 넘어가도록 하기로 했다.
'개발 > 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 |