본문 바로가기

Windows Developer/Oracle

[Oracle] 오라클 Listener - 접속 [출처] 오라클 Listener - 접속|작성자 jxs2 http://blog.naver.com/jxs2/110116836654 1. 오라클 서버를 위한 준비과정 - Listener 준비 1) Listener 상태보기 콘솔에서 C:\루트로가서.. lsnrctl status 파일로 status 결과를 저장할려면 lsnrctl status 드라이브명:\경로\저장할이름.txt : 리스너 중지 lsnrctl stop 리스너 시작 lsnrctl start 2) 오라클 서버의 IP주소가 변경되어질때 - 리스너 수정해야 한다. c:\oracle\procudt\10.2.0\db_a\network\admin 폴더의 listener.ora 를 편집기(메모장등)으로 연다. 내용들중 2가지 변경 host - 변경 (현재 ip.. 더보기
[Oracle] Sequence 증가 분 이상 시 증상: sequence 생성 이후 seq_name.nextval로 생성되는 숫자가 1, 2, 3 으로 순차적으로 증가하는 것이 아니라 10, 20씩 늘어나는 경우가 있다. 이유: sequence에 cache 옵션이 선택되었기 때문이다. cache 옵션을 사용하면 속도를 증가시키기 위해 sequence 번호를 한 번에 여러 개씩 메모리에 올려놓고 작업을 한다. 이것을 사용하면 매번 sequence 번호를 생성하는 것보다 빠르기 때문이다. 이러한 경우에 DB를 중지시키거나 전원이 off 되는 경우에 메모리에 있던 번호가 삭제되기 때문에 이러한 증상이 발생된다. 즉 cache 옵션이 20개씩 시퀀스 번호를 생성하도록 설정되어 있다면 한번에 1부터 20까지 시퀀스 번호를 생성한다. 이 상태에서 DB를 중지하고 .. 더보기
[Oracle]시퀀스 생성 및 삭제 Unique Key를 생성하는 방법은 DBMS마다 차이가 있다. MS-SQL은 IDENTITY를, MySQL은 auto_increment와 같이 쉽게 사용할 수 있는 방법이 있는데 오라클에서는 Sequence를 사용하여 다음과 같이 유사하게 구현할 수 있다 1. 자동증가컬럼을 사용하고자 하는 MYTABLE테이블을 생성한다. CREATE TABLE MYTABLE (ID NUMBER, NAME VARCHAR2(20)); 2. CREATE SEQUENCE 라는 문장을 사용하여 SEQ_ID라는 이름의 시퀀스를 만든다. CREATE SEQUENCE SEQ_ID INCREMENT BY 1 START WITH 10000; -- INCREMENT BY 1 : 증가값은 1 -- START WITH 10000 : 1000.. 더보기
[oracle]Drop User asp013 계정만 삭제되고 TableSpace는 존재하게 되는 것을 확인할 수 있다. 더보기
[Oracle] 힌트사용 index_desc Max함수로 인한 풀스캔을 범위스캔으로 변경할 수 있다. 힌트를 사용하면 수십만건의 데이터를 순식간에 뽑아 낼수 있다. 다음 예제로 확인을 해보자. 풀스캔으로 인한 쿼리 실행 힌트를 사용한 부분범위 쿼리 실행 결과가 확연히 다른것을 볼 수 있다. 9912291151411은 PbsResNum의 Max값이 9912291151412이므로 해당조건을 맞추기 위함이다. 위 경우는 예시를 든것이고 날짜의 경우 MAX로 인한 풀스캔을 하지 않고도 위와 같이 힌트를 줘서 데이터를 순식간에 뽑아 낼수 있다. 더보기
[Oracle] Inline View [출처] 오라클 클럽 http://www.oracleclub.com - 인라인 뷰란? FROM절에 오는 서브쿼리로 최종집합을 만들어 내기 위한 중간집합이다 - 인라인뷰의 남용 절차적 사고에 젖어있는 개발자에겐 인라인뷰로 만들어내지 못할 집합은 없다. 1차로 생성해둔 집합에 추가적인 처리를 하고 싶으면 괄호로 묶어 인라인뷰로 만들어 다른 집합과 조인하거나 2차 가공처리에 들어간다. 여기에 또다른 처리가 있으면 UNION을 하거나 조인을 하고, 또다시 인라인뷰를 만들어 가면서 쿼리는 소설이 되고 만다. 되도록이면 절차적인 쿼리인 인라인 뷰를 줄이고 한번에 처리하는 것이 좋다. 더보기
[oracle] 다이나믹 쿼리에서의 DECOD함수 활용 보호되어 있는 글입니다. 더보기
[oracle] OracleDataAdapter를 사용한 DataTable 채우기 비주얼 스튜디오 2008에서는 DataTable에 Load()멤버 함수가 있어서 DataTable에 값을 채우기에 편하지만 2003의 경우는 Load()함수가 없다. 그럼 이런 경우에는 어떻게 해야 할까? 위와 같이 OracleDataAdapter를 사용해서 DataTable에 결과쿼리의 값을 얻을 수 있다. 더보기
[oracle] DBNull 예외 처리 위 에러는 DB에서 값을 가져올 때 0이 아닌 널을 리턴하기 때문에 값을 DBNUll형식이기 때문에 에러가 발생한다 이는 아래와 같이 IsNullOrEmpty속성으로 예외처리를 할 수 있다. (수정전) If sDbNullCheck.IsNullOrEmpty(oPatients.Rows(0).Item("ComPay").ToString) Then iDataCnt = 0 Else (수정후) If String.IsNullOrEmpty(oPatients.Rows(0).Item("ComPay").ToString) Then iDataCnt = 0 Else String객체의 멤버 함수 속성을 사용해야 Warring이 사라진다. if DB 값(DBNull) is System.DBNull.Value Then 과 같이 하면 해.. 더보기
[oracle] 쿼리 문자열에서 나는 에러 메세지 관계 연산자가 부적합하다는 에러 메세지의 경우 쿼리상에서 문자열을 대입할때는 '문자'(콤마)로 감싸야 한다. 대부분 콤마가 빠져서 나는 에러다. 누락된 우괄호 에러 메세지의 경우 대부분 이 경우는 쿼리 상에서 () 괄호가 빠졌거나 문자열 상에서 붙어서 쿼리가 잘못 씌여지는 경우에 발생한다. 누락된 표현식의 경우는 , 쉼표가 빠지거나 잘못 추가된 곳이 있다면 에러가 난다. 위의 경우는 첫번째 라인에 , as WatPay, 이부분에 쉼표가 두개 들어가서 나는 에러이다. 위 에러 메세지는 눈에 잘 보이지 않고 오렌지로 실행시에 문제가 없어서 헤매는 경우가 많다. 에러 메세지 단번에 잡아 버리자 ㅎ 더보기