저는 Vista 64Bit 를 사용하고 있습니다.
그리고 지금 참여하고 있는 프로젝트가 Oracle 을 기반으로 한 .NET Project 이지요.
버전은 10g 이고요

그래서 ODP.NET 을 세팅하게 되었습니다.

그런데 설치를 하고 디버깅을 하게되면 시작하자마자 

이런 에러가 발생하는 것입니다.

"파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다."

제길할... 
엄청 헤메고 다녔습니다.
Vista 64bit 이다보니 자료는 더더욱이나 없더군요.

근데 현상이 비슷한 분들은 많은 듯 보였습니다.
하지만 제의 상황을 해결해 줄만한 내용은 없더군요.

내용을 보면 해당버전의 'Oracle.DataAccess' 을 찾을 수가 없다는 내용같은데...
GAC 에도 올라와있는 상황이었습니다.

혹시나 싶어 64Bit 용 11g ODP.NET 도 설치 해보았습니다만..

지금 이곳은 중국인데 거 다운 받는 것만 해도 7, 8시간은 잡아 먹은 것 같습니다. ㅡㅡ'

그러다 처음엔 Web.Config 를 찬찬히 살펴보았지요...
먼가가 집히는 것이 있었습니다.
Machine.config 를 뒤지기 시작했습니다

<DbProviderFactories>

눈에 확들어오더군요... 캬캬캬 요기다 넣으면 어떨까... 소뒷걸음질을 시작했습니다. 

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Web.Config 의 
<DbProviderFactories>  내용을 보면 

     <DbProviderFactories>
         <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc"
             type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
         <add name="OleDb Data Provider" invariant="System.Data.OleDb"
             description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
         <add name="OracleClient Data Provider" invariant="System.Data.OracleClient"
             description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
         <add name="SqlClient Data Provider" invariant="System.Data.SqlClient"
             description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
     </DbProviderFactories>

이러한 내용들이 들어갑니다.
DB Provider 들에 대한 내용들이죠...


그래서 이곳에다가 
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
             description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
     

요 내용을 끼워 넣었습니다.

그리고 실행... 

됩니다. 캬캬캬

캬캬캬 우할할할할할할 

쥐를 잡았습니다.


제 짐작으로는 

Oracle Data Provider for .NET 내용을 ODP.NET 을 실행할때 Machine.Config 에 적어주도록 했겠지만 
vista 의 UAC 에 걸려서 기록되지 못한 것 같습니다.

아마도... ^^;

여튼 이런식으로 Vista 64Bit 에서 ODP.NET 10g 32Bit Component 설치를 완료했습니다.
OS를 변경해야하나 걱정의 걱정을 했었는데... 그냥 밀고 나가길 잘한 것 같습니다.

^^

아아아.. 그리고 또 한가지..
놓치고 갈뻔했는데...
기억이 확나네... ㅋㅋ


iis 설정에서 응용프로그램 풀에 잡아 놓은 풀 고급설정에 들어가셔서 "32Bit 응용프로그램 사용" 여부를 True 로 해주셔야 할 것입니다.

햐... 정말 이런 정보를 찾지못해서 많은 시행착오를 하니라고... 죽을뻔 했습니다. 어딘가 있을지도 모를 외국자료도 찾기힘들었고... 이틀동안 거의 Man/day 하루를 까먹은 것 같습니다 그래도 기분은 좋으네요..

이히히... ^^

행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\




Posted by woojja
Oracle 의 Bulk Insert 를 했더랬지요...
그것이 Bulk Insert 인지도 모른체 했더랬지요.

그냥 그렇게 하라고 해서 했더랬지요...

어떻게 했냐고요? ㅋㅋㅋ 무식한 방법으로 했더랬지요.

구분자를 둬서... 

예를 들면 

구분자 ^ 와 @ 로 하고

No : 1111
Nick : woojja
Gender : 남자

No : 2222
Nick : woossa
Gender : 여자

No : 3333
Nick : koojja
Gender : 남자

이걸 표현하면 아래와 같은 문자열로... ㅡㅡ'

1111^woojja^남자@2222^woossa^여자@3333^koojja^남자


그럼 이걸 파라미터로 넘겨서 

오라클 SP 내에서 Parsing 을 해 배열로 만들고 그걸 루프로 돌려서...
insert 나 update 를 하고... ㅡㅡ' 

이렇게 노가다를 했더랬지요...

오라클을 몰랐던 까닭에 이렇게 했더랬지요...
그냥 하란데로 했더랬지요...

분명히 시킨 사람도 몰랐음이 분명합니다.

왜 이렇게 해야할까 궁금해 하지 않은 나 자신도 문제였지요... ㅡㅡ

그런데 오늘 문득 참 오랜시간을 개노가다를 해야만 했나 싶더라고요...

그래서 앞자리에서 오가는 이야기를 들으며

찾아보기로 했죠...


거 얼마 안걸립디다...

일찌감치 찾았으면 좋았을 것을...

요는 이렇습니다.

벌크로 넣을 것들을 배열로 만들고 
그 배열을 SP 파라미터로 넣어주면 되는 거죠..

그리고 OracleCommand 의 속성하나만 넣어주면 되는 것이었습니다.
그러면 오라클 ODP.NET 이 다 알아서 해주는... ㅡㅡ'

그 속성이 무엇이냐... 
 두둥!!!

ArrayBindCount

아래는 참고할 내용입니다.

http://download.oracle.com/docs/html/B28089_01/featOraCommand.htm#i1007888

http://www.codeproject.com/KB/cs/Bulk_Insert.aspx


제가 잘못알고 있거나 틀렸으면 알려주십시요...


그럼 행복한 고수되십시요...




woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\



Posted by woojja
이전버튼 1 이전버튼