기본 콘텐츠로 건너뛰기

라벨이 Oracle인 게시물 표시

[ ORACLE ] BLOB 작업하기

현재 진행 중인 프로젝트에서 IMAGE 나 PDF 등 (Binary Data)을 저장하고 조회하는 기능이 필요해서 오라클 DB에 ODP.NET을 이용해서 작업을 구성하였다. BLOB  작업 LOBs Basic   LOBs 는 데이터베이스에 저장할 수 있는 데이터 스트림으로서의  Large OBject 를 의미한다. 최대 처리할 수 있는 크기는 4G이며 다음과 같은 형식을 제공한다. BLOB - 비정형 바이너리 데이터로 저장되는 형식으로 문자형식(Character set)에 상관없는 비트스트림이다. CLOB - Single byte 와 Multi byte 의 문자형 데이터를 의미하고 고정/가변 길이를 제공하고 데이터베이스의 Character Set 기준을 따라서 저장된다. NCLOB - CLOB 과 같지만 Unicode 데이터로 저장된다.    LONG 이나 LONG RAW 형식을 처리하는 것과 같이 OracleDataReader를 이용해서 LOB 필드에 저정된 값을 읽을 수 있다. LOB 데이터 형식을 사용하는 방식의 다른 점은 DML 이나 PL/SQL 을 이용해서 해당 필드에 접근하는 경우에 명확하게 구분된다. BLOB 이나 CLOB 의 경우는 별도의 테이블스페이스에 저장이 되기 때문에 해당 필드는 데이터가 존재하는 위치의 포인터 정보만 가지고 있게 된다. (LOB Locator) 따라서 LONG 이나 LONG RAW 형식과는 다른 방식으로 관리가 된다. Working with BLOB   아래와 같이 기본 테이블을 구성하도록 한다. CREATE TABLE BLOBSAMPLE (    FILE_ID VARCHAR2(32) NOT NULL,    FILE_NAME VARCHAR2(200) NOT NULL, FILE_EXTENSION VARCHAR2(10) NOT NULL, FILE_CONTENT BLOB NOT NULL, CONSTRAINT

[Oracle] Oracle Schemas Metadata…

역시나 이번 프로젝트에서 새롭게 추가할 항목이 Oracle Database에 대한 Code Generator (C#) 이다. 어떻게 하면 쉽고, 간편하게(?) 스키마 정보를 가져올 수 있을까 생각하고 있던 중에 예전에 잠시 보았던 DbConnection 개체의 GetSchema 메서드를 활용해 보기로 했다. 별도의 코드 작성 없이도 구성할 수 있는 부분이 매력적이다. Tool 로 구성하기 위해서는 범용적인 부분을 염두에 두어야 하지만, 당장은 프로젝트에 적용해야 하는 문제로 Oracle에 대해서만 정리해 놓도록 한다. GetSchema() 를 이용하면 일반적인 DBMS 의 각종 스키마들을 모두 또는 지정한 것들만 DataTable 형식으로 받아서 처리할 수 있다. 물론 Oracle 도 DbConnection을 구현한 것이기 때문에 다른 DBMS도 동일하게 적용될 수 있다. 사용 방법 public virtual abstract DataTable GetSchema(); public virtual abstract DataTable GetSchema(string collectionName); public virtual abstract DataTable GetSchema(string collectionName, string[] restrictionValues); collectionName 은 찾고자 하는 스키마의 종류를 의미하고, restrictionValues 는 스키마 정보를 조회할 때 사용할 제약정보들을 지정하면 된다. 자세한 부분은 참고와 샘플로 확인한다. 참고 사항 collectionName 은 다음과 같은 것들을 지정할 수 있다. Collection Name Number of restrictions Remarks MetaDataCollections 0 Returns this list. Same as using GetSchema() method without parameters. ReservedWords 0

[Oracle] Oracle Client 설치 없이 접속하기

이번 프로젝트는 여러 가지로 상당한 제약이 존재한다. 그 중에서 가장 큰 문제가 시스템에 뭘 설치하려면 요청 > 승인 > 설치 과정을 거쳐야 하고, 국외의 담당자와 연계되기 때문에 시간이 많이 걸린다는 것이다. Oracle Client도 역시 미 설치 상태가 요청되기 때문에 여러 가지 자료들을 조사해서 정리를 해 놓도록 한다. 우선 필요한 라이브러리와 어셈블리들은 다음과 같다. (다른 PC에 설치를 하고 어셈블리들을 가져와야 한다) oci.dll Oracle.DataAccess.dll oraociicus11.dll OraOps11w.dll orannzsbb11.dll oraocci11.dll ociw32.dll 물론 기본 설치 파일은 여기 로 가서 환경에 맞는 버전을 다운로드 해야 한다. ODAC 32bit ODAC 64bit 실제 사용은 Client가 설치되지 않았으므로 TNSNames를 이용하는 것이 아니라 Raw한 ConnectionString을 이용하는 것이다. "user id=사용자ID;password=사용자비밀번호;data source=TNSNames에 지정한 것과 동일한 포맷의 연결정보;" 기타 더 필요한 부분은 다음을 검토해 보도록 한다. http://www.oracle.com/technetwork/database/windows/downloads/index.html http://www.splinter.com.au/connecting-to-oracle-from-c-winforms-aspnet-w/ http://www.splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c/ http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&wid=822 http://stackoverflow.com/questions/11366695/how-do

[ORACLE] 11g XE 버전 설치 후에 샘플 사용자/DB 설정하기

9월에 시작된 프로젝트가 Oracle 11g를 사용하고 있다. 당장 투입이 되어 개발에 필요한 검증과 기본 구조를 생성해야 하는데 시스템 접근 권한을 준비하는데 최대 1개월까지 걸린다고 한다. ;;;; 뭐.. 회사마다 보안정책이 있기는 하지만… 어차피 진행할 것이라면 한달 전부터 접근권한 등을 준비하시던지.. –_–.. 일단 로컬 PC에 Oracle 11g R2 Express 버전이라도 깔아서 진행을 하려고 한다.  한달 동안 놀고 있을 수는 없으니 말이다. 그런데 일단 설치를 하고 사용하는데 무거움이 느껴진다. (그냥 느낌상으로.. MSSQL 보다는 훨씬 더…) 그리고 또 하나는  막상 작업을 하려니 scott 계정으로 로그인이 되지 않는다.. 이건 뭐.. 계정이 없다네… ㅠㅠ 기본 계정 생성은 다음과 같이 작업을 하면 된다. 1. System 계정으로 로그인해서 “scott” 계정을 생성하도록 한다. CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; 2. 계정 권한 설정과 관련된 예제 DB는 다음의 경로에 존재하므로 이 파일을 이용해서 수동으로 생성하여 사용하면 된다. 관리자 콘솔을 실해하고 C:\oraclexe\app\orcle\product\<설치버전>\server\rdbms\ admin 경로로 이동해서 sqlplus를 실행한다.   SQL > @scott.sql 3. 계정도 샘플 데이터도 생성이 되었지만 로그인은 아직 허용되지 않는다. 아래의 문장을 추가로 실행하도록 한다. ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK; 쩝.. 일단 작업은 하지만… 좀 그렇다.. –_– 작업이 완료된 후에 ODP.NET을 설치하고 연결을 하려고 하니 ORA-12560 : TNS:Protocol Ada