Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 68. ODP.NET + OraMTS 사용 [링크 복사], [링크+제목 복사],
조회: 24107
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 6개 있습니다.)
개발 환경 구성: 63. ODP.NET 설치 없이 .NET 클라이언트 프로그램 배포하는 방법
; https://www.sysnet.pe.kr/2/0/822

개발 환경 구성: 64. ODP.NET 설치 작업 없이 ASP.NET 응용 프로그램 배포
; https://www.sysnet.pe.kr/2/0/823

개발 환경 구성: 65. .NET 응용 프로그램에서 64비트 Oracle Data Access Components 사용
; https://www.sysnet.pe.kr/2/0/825

개발 환경 구성: 66. .NET 응용 프로그램에서 64비트 Oracle Data Access Components 사용 (2)
; https://www.sysnet.pe.kr/2/0/827

개발 환경 구성: 67. 환경 변수를 이용한 다중 ODAC 버전 테스트
; https://www.sysnet.pe.kr/2/0/828

개발 환경 구성: 68. ODP.NET + OraMTS 사용
; https://www.sysnet.pe.kr/2/0/829




ODP.NET + OraMTS 사용


마침, 질문을 하신 분이 있어서 TransactionScope를 이용한 트랜잭션 테스트를 마저 해보았습니다. 지난 글에서 odp.net20을 설치하는 편한 방법을 살펴봤는데요.

.NET 응용 프로그램에서 Oracle XE 사용
; https://www.sysnet.pe.kr/2/0/821

E:\...[압축해제폴더]>install.bat odp.net20 E:\oracle\odpnet20 odac

위와 같이 한 경우에는 ORAMTS 구성요소가 복사되지는 않습니다. 그래서 아래와 같이 명령을 다시 추가해주면,

E:\...[압축해제폴더]>install.bat oramts E:\oracle\odpnet20 true

다음과 같이 폴더 구성이 완료됩니다.

[그림 1: ODP.NET 20과 OraMTS가 설치된 폴더 구조]
odpnet_plus_oramts_1.png

이 상태에서 해당 폴더를 PATH 환경 변수에 전역적으로 등록하든가, 아니면 환경 변수를 이용한 다중 ODAC 버전 테스트에서 설명한 대로 응용 프로그램 상에서 PATH 환경 변수에 등록해 주면 사용이 가능합니다.

정상적으로 OraMTS가 동작하는지 다음과 같은 코드로 응용 프로그램을 실행해 보면 끝!

static void Main(string[] args)
{
    SetOdpnetPath();

    string oradb = "user id=hr;password=hr; data source=xeservername";

    using (TransactionScope scope = new TransactionScope())
    using (OracleConnection conn = new OracleConnection(oradb))
    {
        conn.Open();

        Random random = new Random((int)DateTime.Now.Ticks);
        int regionId = random.Next(Int32.MaxValue);

        OracleCommand command = new OracleCommand();
        command.Connection = conn;
        command.Parameters.Add(new OracleParameter("REGION_ID", regionId));
        command.Parameters.Add(new OracleParameter("REGION_NAME", "test"));
        command.CommandText = "INSERT INTO Regions(REGION_ID, REGION_NAME) VALUES(:REGION_ID, :REGION_NAME)";
        command.ExecuteNonQuery();

        command = new OracleCommand();
        command.Connection = conn;
        command.Parameters.Clear();
        command.Parameters.Add(new OracleParameter("REGION_ID", regionId));
        command.CommandText = "DELETE FROM Regions WHERE REGION_ID = :REGION_ID";
        command.ExecuteNonQuery();

		scope.Complete();
    }
}

이 경우, MS DTC가 연동되기 때문에 코드 중간에 디버그 BP(Break Point)를 걸어두고 실행한 다음, "관리 도구" / "Component Serviices" 에서 다음과 같이 "Active" 수치가 1이 된 것을 확인할 수 있습니다.

[그림 2: MS DTC 동작 상태 확인]
odpnet_plus_oramts_2.png




[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 6/10/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 91  92  93  94  95  96  97  98  [99]  100  101  102  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11492정성태4/13/201816005개발 환경 구성: 360. Azure Active Directory의 사용자 도메인 지정 방법
11491정성태4/13/201819173개발 환경 구성: 359. Azure 가상 머신에 Web Application을 배포하는 방법
11490정성태4/12/201818142.NET Framework: 739. .NET Framework 4.7.1의 새 기능 - Configuration builders [1]파일 다운로드1
11489정성태4/12/201815913오류 유형: 463. 윈도우 백업 오류 - a Volume Shadow Copy Service operation failed.
11488정성태4/12/201819619오류 유형: 462. Unhandled Exception in Managed Code Snap-in - FX:{811FD892-5EB4-4E73-A147-F1E079E36C4E}
11487정성태4/12/201817852디버깅 기술: 115. windbg - 닷넷 메모리 덤프에서 정적(static) 필드 값을 조사하는 방법
11486정성태4/11/201816975오류 유형: 461. Error MSB4064 The "ComputeOutputOnly" parameter is not supported by the "VsTsc" task
11485정성태4/11/201824922.NET Framework: 738. C# - Console 프로그램이 Ctrl+C 종료 시점을 감지하는 방법파일 다운로드1
11484정성태4/11/201826218.NET Framework: 737. C# - async를 Task 타입이 아닌 사용자 정의 타입에 적용하는 방법파일 다운로드1
11483정성태4/10/201829488개발 환경 구성: 358. "Let's Encrypt"에서 제공하는 무료 SSL 인증서를 IIS에 적용하는 방법 (2) [1]
11482정성태4/10/201821425VC++: 126. CUDA Core 수를 알아내는 방법
11481정성태4/10/201833683개발 환경 구성: 357. CUDA의 인덱싱 관련 용어 - blockIdx, threadIdx, blockDim, gridDim
11480정성태4/9/201823615.NET Framework: 736. C# - API를 사용해 Azure에 접근하는 방법 [2]파일 다운로드1
11479정성태4/9/201818494.NET Framework: 735. Azure - PowerShell로 Access control(IAM)에 새로운 계정 만드는 방법
11478정성태11/8/201921527디버깅 기술: 115. windbg - 덤프 파일로부터 PID와 환경변수 등의 정보를 구하는 방법 [1]
11477정성태4/8/201818630오류 유형: 460. windbg - sos 명령어 수행 시 c0000006 오류 발생
11476정성태4/8/201820057디버깅 기술: 114. windbg - !threads 출력 결과로부터 닷넷 관리 스레드(System.Threading.Thread) 객체를 구하는 방법
11475정성태3/28/201822692디버깅 기술: 113. windbg - Thread.Suspend 호출 시 응용 프로그램 hang 현상에 대한 덤프 분석
11474정성태3/27/201820925오류 유형: 459. xperf: error: TEST.Event: Invalid flags. (0x3ec).
11473정성태3/22/201825866.NET Framework: 734. C# - Thread.Suspend 호출 시 응용 프로그램 hang 현상파일 다운로드2
11472정성태3/22/201819490개발 환경 구성: 356. GTX 1070, GTX 960, GT 640M의 cudaGetDeviceProperties 출력 결과
11471정성태3/20/201822695VC++: 125. CUDA로 작성한 RGB2RGBA 성능 [1]파일 다운로드1
11470정성태3/20/201825463오류 유형: 458. Visual Studio - CUDA 프로젝트 빌드 시 오류 C1189, expression must have a constant value
11469정성태3/19/201818395오류 유형: 457. error MSB3103: Invalid Resx file. Could not load file or assembly 'System.Windows.Forms, ...' or one of its dependencies.
11468정성태3/19/201817666오류 유형: 456. 닷넷 응용 프로그램 실행 시 0x80131401 예외 발생
11467정성태3/19/201817453오류 유형: 455. Visual Studio Installer - 업데이트 실패
... 91  92  93  94  95  96  97  98  [99]  100  101  102  103  104  105  ...