본문 바로가기

oracle10

[ORACLE] 파티션(Partiton) 파티션(Partition) 파티셔닝은 테이블 또는 인덱스 데이터를 파티션 단위로 나누어 저장하는 것을 말한다. 테이블을 파티셔닝하면 파티션 키에 따라 물리적으로는 별도의 세그먼트에 데이터를 저장하며, 인덱스도 마찬가지다. - 관리적 측면: 파티션 단위 백업, 추가, 삭제 변경 - 성능적 측면: 파티션 단위 조회 및 DML 수행, 경합 및 부하 분산 테이블 파티션 - Range 파티션: 파티션 키 값의 범위를 이용하여 파티셔닝 - Hash 파티션: 파티션 키값을 해쉬처리하여 파티셔닝 - List 파티션: 파티션 키를 지정하여 파티셔닝 - Composite 파티션: 주파티션, 서브파티션을 지정하여 복합적으로 파티셔닝 CREATE TABLE sales ( prod_id NUMBER(6) , cust_id NU.. 2015. 8. 4.
[ORACLE] Index Scan 종류 Index Range Scan 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔하는 방식 B-Tree 인덱스의 가장 일반적이고 정상적인 액세스 방식 인덱스를 스캔하는 범위를 얼마만큼 줄일 수 있느냐와 테이블로 액세스하는 횟수를 얼마만큼 줄일 수 있느냐 인덱스를 구성하는 선두 컬럼이 조건절에 사용되어야 index Range Scan 가능 Index Range Scan 과정을 거쳐 생성된 결과집합은 인덱스 컬럼 순으로 정렬, order by 연산을 생략하거나 min/max값을 빠르게 추출 가능 between, like, 부등호 조건 처리 Index Full Scan 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식 최적의 인덱스가 없을 때.. 2015. 8. 4.
[ORACLE] 인덱스 인덱스 테이블 내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조 데이터와 무관하게 생성 및 삭제를 독립적으로 할 수 있다. 자동 인덱스: 프라이머리 키 또는 UNIQUE 제약조건에 의해 자동적으로 생성되는 인덱스 수동 인덱스: create index 명령을 실행해서 만드는 인덱스 논리적 인덱스: 단일, 복합, 유일, 비유일, 함수 기반 인덱스 물리적 인덱스: B-Tree, Bitmap, IOT 인덱스 등 인덱스 칼럼의 선정기준 - 하나의 칼럼에 독립적인 인덱스를 선정하는 경우, 양호한 분포도를 가져야 함 - 결합 인덱스의 첫번째 칼럼이 조건절에 없다면 인덱스는 사용되지 않으므로, 결합 인덱스의 순서는 '='로 사용되는 것을 먼저 쓰고 다음으로 분포도가 좋은것을 사용 - 인덱스 머지가 발.. 2015. 8. 4.
.Net 의 오라클 커넥션을 이용할 때 select 문 처리중 delete 문을 이용하면 어떻게 될 까? .Net의 System.Data.OracleClient 를 이용하여 데이터를 select 하던 중 delete 문을 처리하면 오류가 생길까? 하나의 OracleConnection, OracleCommand, OracleDataReader 객체를 하나만 이용해서 처리했기 때문에 오류가 생길 것이라고 생각했었는데 테스트 해보니 문제가 없다. ㅎ 일단 테스트해본 row는 5000 row 인데 처리하는데 문제가 없는 것으로 보아 ExecuteReader() 명령이 한번에 5000개의 데이터를 다 가져와서 그렇거나, OracleCommand 객체를 이용하여 새로운 쿼리를 날리면 다른 세션을 생성해서 그런게 같다. 그리고 MSDN 예제에도 이런식으로 처리하는 예제가 있는 것으로 보아(같은 방식은 아니지만) 그냥 이.. 2013. 4. 25.
.Net에서 오라클 DB Select 하기 .Net에서 오라클에 Select 하는 쿼리는 다음과 같다. // DB연결 URL 생성 string oradb = ConfigurationManager.ConnectionStrings["stxerp"].ConnectionString; using (OracleConnection conn = new OracleConnection(oradb)) { // 커넥션 오픈 conn.Open(); // 커맨드 생성 using (OracleCommand cmd = new OracleCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT ia_key, empno ,deptcode ,apprstatecode FROM stx_ap_card_check_list2"; // .. 2013. 4. 25.
.Net에서 오라클 DB에 데이터 insert와 트랜잭션 처리 우선 오라클 DB를 연결하기 위한 라이브러리를 참조한다. 프로젝트 -> 참조추가 항목을 이용하여 위의 System.Data.OracleClient 서비스를 참조한다. 참조시 주의 할 점은 이 라이브러리는 .Net 프레임워크 4이하이서만 유효하다. 상위에서는 더이상 지원을 하지 않는다. 상위버전에서는 오라클에서 제공하는 Orace Driver 를 다운로드 받아야 한다. // 오라클 커넥션 string string oradb = "Data Source=(DESCRIPTION=" + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=아이피)(PORT=1521)))" + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=사용하는SID)));" + ".. 2013. 4. 24.
Oracle.DataAccess 과 System.Data.OracleClient 의 차이 Oracle.DataAccess(ODA) 와 System.Data.OracleClient(SDO) 는 둘다 .Net 에서 오라클 DB 연결을 위한 라이브러리를 제공한다. SDO는 닷넷 프레임워크에서 기본적으로 제공되는 라이브러리이고 ODA는 오라클에서 제공해준다. SDO는 닷넷 프레임워크 4 까지는 지원 되었으나, 그 이상에서는 지원하지 않을 예정이라고 한다. 따라서 되도록 이면 ODA를 사용하는 것이 좋을 것같다. ODA 다운로드 하기로그인을 해야 다운로드 할 수 있다. 로그인을 한 후 진행하는 것이 좋겠다.* 설치후 컴퓨터를 재부팅 하는 것이 좋다. 재부팅을 하지 않으면 VS가 제대로 인식하지 못하는 것 같다.** 기존에 오라클을 설치 했다면 레지스트리, 환경변수 설정등에 영향이 갈 수 있으므로 주의.. 2013. 4. 23.
오라클의 소스코드에 특정 문자열 검색하기 오라클을 유지보수 하다보면 사용자가 작성한 프로시저, 함수, 뷰등의 소스코드 중에서 특정 문자열을 검색하고 싶을 때가 있을 것이다. 이럴 때 이용할 수 있는 쿼리가 다음과 같다. SELECT * FROM all_source aas WHERE aas.NAME LIKE 'XXMSC%' -- object 명 AND aas.owner = 'APPS' -- owner 명 AND (upper(aas.text) LIKE '%CREATE_SOURCE_PGM%') -- 검색하고자 하는 문자열 이렇게 입력하면 문자열이 입력되어 있는 소스명, 타입, 라인번호를 반환해 준다. 2013. 4. 17.
오라클 over() 함수 참고1, 참고2, 참고3, 참고4 over 함수는 group by, order by 를 이용한 서브쿼리의 사용을 편리하게 하기 위해 사용하는 함수이다. 보통 over 함수는 단독으로 사용하기 보다는 count(), max(), min(), sum(), avg(), rank(), row_number() 등과 같은 분석 함수와 함께 사용된다. -- OVER 함수 이용 SELECT NAME, NO, SUM(NO) over(PARTITION BY NAME ORDER BY NAME) FROM ( SELECT 'A' AS NAME, '31' AS NO FROM dual UNION SELECT 'B', '32' FROM dual UNION SELECT 'B', '45' FROM dual UNION SELECT 'D'.. 2013. 4. 17.
오라클 ERP의 Forms 에서 마지막으로 시스템에 전송한 쿼리 확인하기 오라클 ERP의 Forms 에서 내가 마지막으로 시스템에 전송한 쿼리를 확인하고 싶을 때가 있다 .이럴때 다음처럼 Properties 에서 확인이 가능하다. Help -> Diagnostics -> Properties -> Item 항목으로 가면 팝업창이 나타난다. 여기에서 Object 를 Block으로 변경하고 Object 1 을 원하는 Block 으로 선택한 후, Property 를 Last Query로 선택하면 마지막으로 전달한 쿼리가 나타난다. 2013. 4. 17.