.NET와의 oracleclient + tnsless 연결
-
18-09-2019 - |
문제
Oracle에 연결하기 위해 System.Data.oracleClient 및 Abstract Base Classes DBConnection, DBCommand (ETC)를 사용하고 있습니다.
연결은 개발 단계에서 잘 작동합니다. 준비 중에 우리는 오류 ORA-12514 : TNS : TNS : 청취자는 현재 Connect Descriptor에서 요청 된 서비스를 모릅니다.
우리의 목표는 TNS 항목없이 연결하고 연결 문자열에 모든 관련 정보를 제공하는 것이 었습니다 (www.connectionstrings.com/oracle#19)
SQL Plus가 스테이징 서버에서 원하는 스키마에 연결되는지 확인할 수 있습니다 (리스너가 듣고 있습니다). SQLPLUS에 연결된 TNS 항목은 구축중인 쿼리 문자열의 모든 자격 증명과 일치합니다.
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;
우리가 놓친 서버에 설치가 있습니까? 우리가 조정할 수있는 것?
모든 도움이 감사합니다.
해결책
SID는 서비스 이름이 아닙니다. 서비스 이름은 일반적으로 완전히 자격을 갖춘 데이터베이스 이름이며 SID는 짧은 식별자입니다.
SID는 dbname 인 동안 서비스 이름은 dbname.company.com 일 수 있습니다. 인스턴스에는 실제로 여러 서비스 이름이 관련 될 수 있지만 하나의 SID 만 가질 수 있습니다.
Connect String에서 SID로 Service_Name을 변경하거나 Service_Name 옵션의 서비스 이름을 지정하십시오.
다른 팁
올바르게 기억하면 Oracle 제공 업체 및 OracledBConnection 및 OracledBCommand를 사용하여 전환 할 때까지 같은 문제가 발생했습니다. 일반적인 것들이 모든 경우에 항상 올바른 제공자를 인스턴스화하는 것은 아닙니다.
Microsoft는 System.data.oracleClient를 더 이상 사용하지 않았습니다.이 기사를 참조하십시오. http://blogs.oracle.com/databaseinsider/2009/07/microsoft_deprecates_systemdataoracleclient_net_developers_for_oracle_should_migrate_to_oracle_data_provider_for_net.html
Oracle 클라이언트가 버전 10+ 인 경우 사용할 수도 있습니다. ezconnect (이는 의미합니다 쉬운 연결 명명 방법). 그런 다음 연결 문자열이 다음과 같습니다.
"Data Source=MyHost:MyPort/MyServiceName;User ID=myUserName;Password=myPassword"
결합 오라클 인스턴트 클라이언트, 그것은 Oracle의 사용이 거의 전문적인 느낌을줍니다! ...