기류를 Oracle 데이터베이스에 연결하는 방법
Airflow를 사용하여 Oracle db 인스턴스(oracle:thin)에 대한 연결을 생성하려고 합니다.
그들의 문서에 따르면 나는 내 호스트 이름을 입력한 다음 포트 번호와 SID를 입력했습니다.
호스트: example.com:1524/sid
기타 필드를 다음과 같이 채웠습니다.
연결 유형: Oracle
스키마: 사용자 이름(설명: 스키마에 사용자 이름 사용)
로그인: 사용자 이름
비밀번호: * * *
연결이 설정되면 실행하려고 했던 모든 쿼리에 대한 저장 오류 코드가 나타납니다(ORA-12514).Oracle은 다음과 같이 흐름이 연결되도록 허용하지 않는 것 같습니다.
ORA-12514: TNS: 수신기가 현재 연결 설명자에 요청된 서비스를 알지 못합니다.
이전에 같은 문제를 겪은 적이 있는 사람.제 말은 이런 큰 플랫폼에서는 데이터베이스에 연결하는 것이 문제가 되지 않는다는 것입니다.아니면 제가 뭔가 잘못하고 있는 것 같습니다.감사해요.
버전:기류 v1.7.0, Oracle 11g
편집:
Oracle SQL Developer 클라이언트에서 사용하는 것과 동일한 호스트 이름을 사용하고 있습니다.
소스 코드를 자세히 조사한 후에, 이것이 마침내 저에게 어떻게 작동했는지를 알게 되었습니다.
연결 유형: Oracle
호스트: example.com
스키마: 사용자 이름
로그인: 사용자 이름
포트: 포트 번호
추가: {"sid": "my sid", "dsn": "example.com "}
연결 설정에 문제가 있습니다. 설정이 오라클 후크에 제대로 로드되지 않거나 연결 설정을 저장/로드하는 파이썬 패키지가 없습니다.자격 증명을 하드 코딩하여 테스트할 수 있습니다.
https://github.com/airbnb/airflow/blob/master/airflow/hooks/oracle_hook.py
conn = self.get_connection(self.oracle_conn_id)
dsn = conn.extra_dejson.get('dsn', None)
sid = conn.extra_dejson.get('sid', None)
service_name = conn.extra_dejson.get('service_name', None)
if dsn and sid and not service_name:
dsn = cx_Oracle.makedsn(dsn, conn.port, sid)
conn = cx_Oracle.connect(conn.login, conn.password, dsn=dsn)
elif dsn and service_name and not sid:
dsn = cx_Oracle.makedsn(dsn, conn.port, service_name=service_name)
conn = cx_Oracle.connect(conn.login, conn.password, dsn=dsn)
else:
conn = cx_Oracle.connect(conn.login, conn.password, conn.host)
서비스 이름 사용의 경우(포트, 스키마 및 추가) 비워 두면 호스트 아래에 전체 오라클 연결 설명자를 넣을 수 있습니다.
(설명 = (ADDESCONNECT = (PROTOCT = TCP)(HOST = 로컬 호스트)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATE)(SERVICE_NAME = mysidNAME))
이것은 추가 분야에서 나에게 효과가 있었습니다.
{ "dsn":"192.168.x.x" , "service_name":"some.service.name" }
https://github.com/apache/airflow/blob/master/airflow/hooks/oracle_hook.py#L49 에서 연락 드립니다.
Ad hoc 쿼리 드롭다운에 연결이 보이지 않는 사람이 있다면 어댑터를 설치해야 합니다.pip install cx_Oracle서버에 설치할 수 있습니다.
언급URL : https://stackoverflow.com/questions/36945811/how-to-connect-airflow-to-oracle-database
'programing' 카테고리의 다른 글
| SQL "올바른 달이 아님" (0) | 2023.10.15 |
|---|---|
| "cer"와 "stderr"이 무엇입니까? (0) | 2023.10.15 |
| 왜 #if 0 vs #if (1 > 1)? (0) | 2023.10.15 |
| PowerShell에서 웹 서비스에 액세스하려면 어떻게 해야 합니까? (0) | 2023.10.10 |
| 스프링 데이터 서버 - revinfo 테이블 및 entity_aud가 존재하지 않습니다. (0) | 2023.10.10 |

