반응형
Oracle DB 및 .NET 사용 시 모범 사례
웹 서비스 센터에서 Microsoft Oracle 공급자를 사용할 때 주의해야 할 모범 사례 또는 함정은 무엇입니까?NET 어플리케이션?
프로덕션 경험을 기반으로 사용하는 몇 가지 관행:
- 연결 풀에서 연결을 검색할 때 연결의 유효성을 확인합니다.
- 연결이 유효하다고 가정하지 않도록 서비스 코드를 작성합니다. 그렇지 않으면 특히 프로덕션 환경에서 상당한 문제가 발생할 수 있습니다.
- 가능한 한 연결을 사용한 후에는 연결을 명시적으로 닫고 폐기합니다.
using(conn){}
블록이 잘 작동함) - 서비스에서는 특히 확장 가능한 솔루션을 만들려는 경우 가능한 한 짧은 시간 동안 연결을 사용해야 합니다.
- 일반적인 요청 기간에 적합한 요청에 명시적인 시간 제한을 사용하는 것을 고려합니다.시스템 전체를 잠재적으로 차단하기 위해 한 가지 유형의 요청을 보류하는 것은 가장 원치 않는 일입니다.
- 가능한 경우 바인딩 변수를 사용하여 데이터베이스에서 하드 구문 분석을 방지합니다(이 작업을 시작하지 않으면 성능이 저하될 수 있습니다).바인딩 변수를 사용하면 기본적인 SQL 주입 공격으로부터도 보호할 수 있습니다.
- 시스템에 적절한 진단 지원이 내장되어 있는지 확인합니다. Oracle ADO 호출을 모두 계측하고 기록하고 찾을 수 있도록 래퍼를 만드는 것이 좋습니다.
- 가능한 경우 저장 프로시저 또는 뷰를 사용하여 쿼리 의미론 및 데이터 모델에 대한 지식을 데이터베이스에 푸시하는 것을 고려합니다.따라서 프로파일링 및 쿼리 조정이 더 쉬워집니다.
- 또는 양호한 ORM 라이브러리(EF, 최대 절전 모드 등)를 사용하여 특히 읽기 및 쓰기 작업을 모두 수행하는 경우 데이터 액세스를 캡슐화하는 것이 좋습니다.
- 위에서 확장 - 개별적으로 작성된 수십 개의 SQL 조각으로 코드를 페퍼하지 마십시오.이는 곧 유지보수성에 대한 악몽이 됩니다.
- Oracle을 데이터베이스로 사용하는 경우 Oracle 관련 기능을 사용하는 것을 두려워하지 마십시오.ODP 라이브러리를 사용하면 테이블 커서 반환, 배치 작업 등 대부분의 기능에 액세스할 수 있습니다.
- Oracle은 빈 문자열("") 및 NULL을 동등한 -로 처리합니다.NET은 그렇지 않습니다.Oracle에 적합한 문자열 처리를 표준화합니다.
- 유니코드를 저장하려면 VARCHAR2 대신 NVARCHAR2를 사용하는 것이 좋습니다.데이터베이스에 직접 있는 NET 문자열입니다.그렇지 않으면 모든 유니코드 문자열을 코어 ASCII 하위 집합에 맞게 변환합니다.그렇게 하지 않으면 모든 종류의 혼란스럽고 해로운 데이터 손상 문제가 발생할 수 있습니다.
Oracle 공급자는 ASP에서 정상적으로 작동합니다.NET 애플리케이션, 단, 다음 사항에 유의해야 합니다.
- 애플리케이션 풀에 적합한 Oracle 클라이언트 32비트 또는 64비트 버전 일치
- 32비트 앱 풀의 경우 32비트 클라이언트, 64비트 앱 풀의 경우 64비트 클라이언트.
- 사용 권한 - Oracle 클라이언트 디렉토리(c:\oracle\product\10.2.0\client_1)에 대한 앱 풀 사용자 권한을 부여합니다.
이것은 ASP와는 아무런 관련이 없습니다.NET, 그러나 Oracle은 빈 문자열과 null을 모두 null로 저장하므로, null이 아닌 빈 문자열이 있는지 알아야 할 경우 추적할 열을 추가해야 합니다.
추가 팁:
- Microsoft Oracle 공급자는 지원되지 않으므로 사용하지 마십시오(http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx)
- Oracle에 전념하고 있다면 Oracle 관련 기능을 사용하고 Oracle을 연결하십시오.코드에 대한 데이터 액세스 어셈블리
- 확실하지 않고 유연하게 하려면 시스템을 사용합니다.Data.공통 클래스 및 로드 오라클 공급자
언급URL : https://stackoverflow.com/questions/1233714/best-practices-when-using-oracle-db-and-net
반응형
'programing' 카테고리의 다른 글
데이터베이스에서 실행 중인 예약된 작업을 나열하려면 어떻게 해야 합니까? (0) | 2023.08.09 |
---|---|
JNI 대 유고 인민군 경기력 (0) | 2023.08.09 |
sqdeveloper에서 다른 스크립트를 실행하는 스크립트 (0) | 2023.08.09 |
'Microsoft' 파일 또는 어셈블리를 로드할 수 없습니다.보고서 뷰어.공통, 버전=11.0.0.0 (0) | 2023.08.09 |
z-index가 작동하지 않는 이유는 무엇입니까? (0) | 2023.08.09 |