Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[DocWiki 번역] 오라클(Oracle) 데이터베이스를 FireDAC으로 연결하기


Recommended Posts

Docwiki에 있는 "Connect to Oracle Server (FireDAC)"를 번역한 글 (번역일: 2022년 2월 3일)

위로 가기: Database Connectivity (FireDAC)

이글은 오라클(Oracle) 데이터베이스에 연결하는 방법을 설명한다. 

목차


지원버전

FireDAC 네이티브 드라이버는 Oracle Enterprise, Standard (구. Workgroup), Express (구. Personal) 서버 에디션 버전 8.0.3 이상을 지원한다. 델파이를 기준으로 보다 자세히 설명된 도움말은  "FireDAC으로 오라클 사용하기" 이다.
 

클라이언트 소프트웨어

윈도우용 클라이언트 소프트웨어

FireDAC으로 오라클을 연결하려는 컴퓨터에는 오라클 클라이언트 (x86 또는 x64) 소프트웨어가 아래 두가지 중 한가지 유형으로 설치되어 있어야 한다.

  • "Fat" 오라클 클라이언트 (다운로드) -- 일반적인 표준 설치 절차를 따라 별도로 설치한다. (설치할 때 기본 설정을 따르는 경우) FireDAC의 오라클 드라이버는 오라클 홈 경로에 설치된 오라클 클라이언트를 사용한다.
  • "Thin" 오라클 즉석 클라이언트 (다운로드) -- (따로 명시하지 않는 경우) FireDAC에 있는 오라클 드라이버는 PATH에 지정된 폴더 또는 오라클을 사용하는 애플리케이션 EXE가 들어있는 폴더 안에 복사된 이 즉석 클라이언트를 사용한다. (즉, 애플리케이션과 같이 배포할 수 있다)

만약 오라클 클라이언트 소프트웨어가 제대로 설치되지 않았다면, 연결하려고 할 때 아래 예외가 발생된다.

[FireDAC][Phys][Ora]-1309. OCI is not properly installed on this machine (NOE1/INIT)

 

즉석 클라이언트 사용하기(Using Instant Client)

즉석 클라이언트를 설치하려면,  Oracle 다운로드 페이지에서 Instant Client (x86 또는 x64)를 다운로드 한 후, 압축을 풀고, 아래 파일들을 복사한다.

  • oci.dll
  • oraocci11.dll
  • oraociei11.dll
  • orasql11.dll

오라클을 사용하는 애플리케이션 EXE가 들어있는 폴더 또는 PATH에 지정된 폴더 안에 복사한 파일을 넣는다.

TNS 이름을 사용한다면, tnsnames.ora 파일을 같은 폴더 안에 넣거나, 또는, tnsnames.ora 파일이 있는 경로를 TFDPhysOracleDriverLink.TNSAdmin 프로퍼티 값에 지정한다. 또는, TNSAdmin 드라이버 구성 파라미터를 사용한다.

TFDPhysOracleDriverLink.NLSLang 프로퍼티에 필요한 값을 지정하거나 NLSLang 드라이버 구성 파라미터를 사용한다.

 

맥OS 클라이언트 소프트웨어

FireDAC 요구 사항:

  • libclntsh.dylib x86 클라이언트 라이브러리

이 파일을 맥OS용 즉석 클라이언트로 다운로드 받을 수도 있다 (자세히 보기)

설치하는 방법

리눅스 클라이언트 소프트웨어

리눅스 클라이언트 라이브러리를 설치하려면,

  1. libaio 라이브러리를 설치한다.
    • Ubuntu Server 16.04 LTS에서 아래 명령 실행: 
      sudo apt-get install libaio1
    • Red Hat Enterprise Linux 7에서 아래 명령 실행: 
      sudo yum install libaio
  2. 리눅스용 즉석 클라이언트 (Instant Client)를 아래 도움말 중 하나를 따라 설치한다.

 

드라이버 연결

FireDAC의 오라클 드라이버를 연결하려면,

  • TFDPhysOracleDriverLink 컴포넌트(툴 팔레트에서 FireDAC Links 카테고리를 열면 찾을 수 있다)를 폼 위에 올려 놓는다.
  • 또는 FireDAC.Phys.Oracle 유닛을 uses 절 안에 넣어서 포함(include) 한다.

 

연결 정의 파라미터

일반적인 경우 애플리케이션에서 오라클 DBMS를 연결하려면 DriverID, Database, User_Name, Password가 지정되어 있어야 한다. (자세한 내용은 [DocWiki 번역] 연결을 정의하기 (FireDAC)를 참고)

DriverID=Ora

파라미터 설명 값 (예시)
Database

이 값은 다음 중 하나가 될 수 있다:

  • TNS alias name -- 어느 데이터베이스에 연결할 지를 명시.
  • TNS connection descriptor -- TNSNames.ora 파일 안에 있는 대로.
  • Oracle connection string -- SQL*Plus에 있는 대로.
  • Oracle easy connect string -- 여기에 설명된 대로
  • OraSrv
  • (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OraSrv)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)))
  • scott/tiger@OraSrv
  • system/manager@OraSrv as sysdba
  • OraSrv:1521/orcl
OSAuthent

OS 인증을 사용하려면 Yes를,
DBMS 인증을 사용하려면 No를 지정

No
User_Name

오라클 user name, OSAuthent=No인 경우

Scott
Password

오라클 user의 비밀번호, OSAuthent=No인 경우

tiger
AuthMode

오라클 인증 모드:

  • Normal -- 표준 사용자. 기본 설정 값.
  • SysDBA -- 데이터베이스 어드민(administrator) 특권이 있는 사용자.
  • SysOper -- 데이터베이스 운영자(operator) 특권이 있는 사용자.
  • SysASM -- Oracle Automatic Storage Management 인스턴스(들)에 대한 데이터베이스 관리(administrative) 특권이 있는 사용자.
  • SysBackup -- 백업 및 복구 작동에 대한 데이터베이스 관리(administrative) 특권이 있는 사용자.
  • SysDG -- 오라클 Data Guard 작동에 대한 데이터베이스 관리(administrative) 특권이 있는 사용자.
  • SysKM -- Transparent Data Encryption 키 작동에 대한 데이터베이스 관리(administrative) 특권이 있는 사용자.

Note: 더 많은 정보는 Oracle Database Administrator's Guide 참고

Normal
ReadTimeout

수신 또는 읽기 시간 제한(timeout) 값을 밀리초(milliseconds) 단위로 지정한다.

0으로 지정하면 시간 제한이 없다.

주의: 이 파라미터는 의도하거나 또는 비정상적으로 가끔 클라이언트가 꺼지는 환경에서 사용한다. 
그렇지 않으면, 클라이언트가 꺼졌거나 장애를 겪고 있는 중에도 오라클 데이터베이스 서버는 데이터를 계속 기다리게 된다.

 
WriteTimeout

오라클 데이터베이스 서버가 클라이언트에 보내기를 완료하기까지의 시간 제한(timeout) 값을 밀리초(milliseconds) 단위로 지정한다.

0으로 지정하면 시간 제한이 없다.

주의: 이 파라미터는 의도하거나 또는 비정상적으로 가끔 클라이언트가 꺼지는 환경에서 사용한다. 
그렇지 않으면, 클라이언트가 작동하지 않는데도 오라클 데이터베이스 서버는 응답 보내기를 지속하게 된다.

 
CharacterSet

오라클 연결에 사용될 문자 집합(character set). 별도로 명시하지 않으면, NLS_LANG 변수에 있는 값이 사용된다.

  • UTF8
  • cl8mswin1251
BooleanFormat

불리언(Boolean) 값을 표현하는 방법을 정의한다:

  • Choose -- 불리언(Boolean) 타입을 사용하여 PL/SQL 불리언(Boolean)을 표현한다. 기본 설정(default) 모드이다.

주의: 이 값은 오라클 12c 이상에서 사용할 수 있다. 오라클이 그 이전 버전에서 Choose를 선택하면, 인티저(Integer) 타입이 사용된다.

  • Integer -- 인티저(Integer) 타입을 사용하여 PL/SQL 불리언(Boolean)을 표현한다. 이 경우, False = 0, True = 1 이다.
  • String -- 스트링(String) 타입을 사용하여 PL/SQL 불리언(Boolean)를 표현한다. 이 경우, False = 'F', True = 'T' 이다.
     
Choose
ApplicationName

애플리케이션의 이름. 명시하면, 이 값이 V$SESSION의 MODULE 컬럼(column)에 저장된다.

AllBooks
OracleAdvanced

오라클 세션의 부가적인 옵션(들). 상세 내용은 ALTER SESSION SET 도움말에서 "Initialization Parameters and ALTER SESSION" 단락을 참고. 값을 지정하는 형식 - <option>=<value>[;...].

 
NewPassword

오라클 사용자의 새 비밀번호 명시. FireDAC은 기존 비밀번호를 사용하여 DB에 연결하고 나서 바로 비밀번호를 여기에 명시된 값으로 바꾼다.

tiger2
MetaDefSchema

애플리케이션에서 사용할 기본 스키마(default schema)를 명시. 이 값이 MetaDefSchema와 같은 경우,  개발하는 코드(design time code)에서 해당 스키마 이름을 생략한다. 

SCOTT

 

사용 사례 (Use Case)

  • tnsnames.ora 파일 안에 이미 정의된 TNS 이름을 사용하여 데이터베이스에 연결하기:
DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a

 

  • host, port, instance name 정보를 사용하여 데이터베이스에 연결하기:
DriverID=Ora
Database=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OraSrv)(PORT = 1521)))
(CONNECT_DATA = (SERVER =    DEDICATED)(SERVICE_NAME = orcl)))
User_Name=ADDemo
Password=a

 

  • 로컬 데이터베이스에 sysdba 권한으로 연결하기
DriverID=Ora
User_Name=sys
AuthMode=sysdba

 

  • TNS 이름을 사용하여 데이터베이스에 연결하고 비밀번호 바꾸기:
DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a
NewPassword=b

 

  • 간편한 연결 문자열을 사용하여 데이터베이스에 연결하기:
DriverID=Ora
Database=OraSrv:1521/orcl
User_Name=ADDemo
Password=a

 

관련 도움말 (See Also)

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.