oracle DB사용하기 - minnie0531/fastapi-template GitHub Wiki
- docker pull store/oracle/database-enterprise:12.2.0.1(계정 생성 후 trial 버전 가능)
- docker run -d -it --name store/oracle/database-enterprise:12.2.0.1
- 두개의 DB생성 여기에서 sid 선택해서 가져감(ORCLCDB, ORCLCDB1)
- docker exec -it bash -c "source /home/oracle/.bashrc; sqlplus /nolog"
- 이대로 실행하면 sqlPlus가 실행됨 접속된게 아니라서 sys로 로그인후 사용가능
- connect sys as sysdba
- Enter password: Oradoc_db1
- Create a new user (sys로 접속하기엔 뭔가 귀찮다 , role도 설정해 줘야 한다.), 권한도 준다
- alter session set "_ORACLE_SCRIPT"=true;
- create user aaa identified by 1234;
- GRANT ALL PRIVILEGES TO aaa; 모두 주자!
- sqlAlchemy로 구현된 위의 프로젝트를 실행 - 스크립트 돌리지 마자 바로 에러확인 가능. (Wow)- sql developer로 해당 아이디와 비번으로 접속 가능 확인 근데 안됨.
db = cx_Oracle.connect('aaa','1234', 'localhost:1521/sid=ORCLCDB'
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit **Oracle Client library**:
"dlopen(libclntsh.dylib, 1): image not found".
See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html
for help
=> **Oracle Instant Client를 설치하고 이를 통해 Oracle DB접속 가능**
설치 후 아래 path설정
export PATH="/Applications/instantclient_19_8:$PATH"
export ORACLE_HOME="/Applications/instantclient_19_8"
export DYLD_LIBRARY_PATH="/Applications/instantclient_19_8"
export CLASSPATH=$CLASSPATH:$ORACLE_HOME
2. 실행하면 다시 에러 발견!! (Mac에서…)
“ Developer Cannot be Verified”
아래 들어가서 사용가능 하게 허락해 주시면 됩니다.
****Control Panel -> Security & Privacy -> General tab
3. Errors..
1. ORA-12154: TNS:could not resolve the connect identifier specified cx_Oracle :
아래와 같이 dsn을 만들어 줘서 접속
1) cx_Oracle
dsn = cx_Oracle.makedsn(host='0.0.0.0', port=1521, sid='ORCLCDB')
con = cx_Oracle.connect(user='aaa', password='1234', dsn=dsn)
2) SQLArlchemy
dsn = cx_Oracle.makedsn(host='0.0.0.0', port=1521, sid='ORCLCDB')
engine = create_engine('oracle+cx_oracle://aaa:1234@%s' % str(dsn))
2. ORA-00906: missing left parenthesis
ORM model definition 에서 String variables에 대해 사이즈 설정이 필요함.
Integer는 따로 하지 않아도 됨.
기존 linux 이미지와 다르게 위에서 설정한 path및 oracle instant client가 같이 빌드 되어야 합니다.
Oraclelinux:8이상 사용해야지 python3.8 이상 사용가능(fastAPI)
microdnf로 설치 진행
https://yum.oracle.com/oracle-linux-python.html
oraclelinux로 부터 oracle-instantclient, python을 microdnf로 설치하고 pipenv를 이용하여 package 설치
FROM oraclelinux:8-slim
COPY . /src
WORKDIR /src
RUN microdnf install oracle-instantclient-release-el8 && \
microdnf install oracle-instantclient-basic && \
microdnf install python39 &&\
microdnf install python39-pip &&\
microdnf clean all
COPY Pipfile /src/Pipfile
COPY Pipfile.lock /src/Pipfile.lock
RUN python3.9 -m pip install pipenv
RUN pipenv install --deploy --system
CMD ["python3.9", "entrypoint.py"]