728x90
반응형
기존에는 서버에서 쓸때는 그냥 tnsnames.ora 에 등록된 것을 그대로 쓰면서 어딘가 설정파일이 있어서 되나보다..
하고 있었는데 로컬에서 돌릴때는 직접 cxo 를 잡고 sid를 적으면서 사용했었다..
그러다가 이번에 sid 접속 대신 service name 을 사용하게 되면서 설정에 문제가 생겼다..
로컬에서도 tnsnames.ora를 통해 설정하면 되는걸 알고 이런 설정파일이 있다는걸 뒤늦게 알아버렸다....
그래서 알고 쓰는 것과 모르고 쓰는 것은 다르다니까 ㅡ_ㅡ
아래와 같이 설정하는데 만약 위치에 파일이 없다면?? 만들면 된다 -0-/
하고 있었는데 로컬에서 돌릴때는 직접 cxo 를 잡고 sid를 적으면서 사용했었다..
그러다가 이번에 sid 접속 대신 service name 을 사용하게 되면서 설정에 문제가 생겼다..
로컬에서도 tnsnames.ora를 통해 설정하면 되는걸 알고 이런 설정파일이 있다는걸 뒤늦게 알아버렸다....
그래서 알고 쓰는 것과 모르고 쓰는 것은 다르다니까 ㅡ_ㅡ
아래와 같이 설정하는데 만약 위치에 파일이 없다면?? 만들면 된다 -0-/
♣ listener.ora - 위치: $ORACLE_HOME/network/admin/listener.ora - 오라클 서버에서 클라이언트의 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일 - 오라클 서버에 존재하며, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보등을 설정하는 - 프로토콜은 주로 TCP/IP가 많이 사용 - 설정형식: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트ip)(PORT = 포트번호)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트ip)(PORT = 포트번호)) ) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = SID_name) (ORACLE_HOME = 오라클위치) ) ) - description_list 의 description 에는 address_list 는 여러개의 리스닝포트가 올 수 있다. ♣ tnsnames.ora - 위치: $ORACLE_HOME/network/admin/tnsnames.ora - 오라클 클라이언트에서 오라클 서버로 접속할 때 필요한 프로토콜 및 포트번호, 서버주소, 인스턴스등을 설정해주는 파일 - 설정형식: DB_Alias = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 오라클서버ip)(PORT = 포트번호)) ) (CONNECT_DATA = (SID/SERVICE_NAME = DB_name) ) ) - DB_Alias 는 호출해서 쓸 별칭이며 실제 DB명칭은 connect_data 의 sid나 service_name 부분이다. SID는 서버에 환경변수로 설정되어 있으며 서버에서 echo $ORACLE_SID 또는 env 명령으로 확인할 수 있다. ※ listener.ora와 tnsnames.ora파일의 위치는 ORACLE_HOME/network/ADMIN/에 존재 ※ linstener.ora와 tnsnames.ora는 둘다 오라클 설치시 Net8 configuration 작업을 해주면 생성 ※ 원격 DB의 연결은 Net8 을 통해 이루어지며 원격 DB를 연결하기 위해 원격 DB 서버에서는 listener.ora 파일이 설정되어 있어야 하며 클라이언트 쪽에는 tnsnames.ora 파일이 설정되어 있어야 함 |
Q. 파이썬에서 쓸 경우?
기존에 sid 를 직접 썼을 때는,
cxo = cx_Oracle.makedsn('오라클서버ip','포트번호','SID')
conn = cx_Oracle.connect("아이디", "비밀번호", cxo)
cursor = conn.cursor()
tnsnames.ora를 불러오는 경우는,
conn = cx_Oracle.connect("아이디", "비밀번호", "DB_Alias")
cursor = conn .cursor()
728x90
반응형