레이블이 오라클12cSQL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 오라클12cSQL인 게시물을 표시합니다. 모든 게시물 표시

2013년 11월 2일 토요일

[ORACLE UNIX]유닉스에서 오라클 환경변수 설정(UNIX 오라클 환경변수 설정)

[ORACLE UNIX]유닉스에서 오라클 환경변수 설정(UNIX 오라클 환경변수 설정)


설정된 환경 변수를 확인 하기 위해서는 다음과 같이 합니다.
 
env | grep e ORA e TNS
 
 
--------------------------
Oracle Environment Variables
--------------------------
 
LD_LISRARY_PATH : library file에 대한 경로(예를 들면 /usr/lib:/use/openwin/lib:$ORACLE_HOME/lib:use/games/lib)
 
ORACLE_BASE : 모든 ORACLE Products에 대한 BASE DIRECTORY에 대한 FULL PATH
 
ORACLE_HOME : 현재 사용중인 오라클 버전에 대한 FULL PATH, 오라클이 인스톨되어 있는 기본 디렉토리,  데이터베이스 이름은 ORACLE_SID로 사용 됩니다. ORACLE_HOME은 모든 오라클 Products에서 사용 되어 지며 coraenv 또는 oraenv 스크립트에 위해 setting 됩니다.
 
ORACLE_PATH : files location에 대한 경로만약 값이 setting 되어 있으면 응용 프로그램은 $ORACLE_PATH 부터 먼저 검색그다음 현재 디렉토리를 하게 됩니다만약 setting 되어 있지 않으면 현재 디렉토리를 먼저 검색 합니다.
 
ORACLE_TERM : 터미널 정의에 대한 것값이 setting 되어 있지 않으면 기본적으로 TERM environment 값이 사용됩니다.
 
ORAENV_ASK : 이 값이 YES이면 ORACLE_SID에 대해 묻지 않습니다이 변수는 oraenv가 스크립트로 불리어 지기 전까지는 NO setting 합니다즉 oraenv를 실행했을 때 ORACLE_SID,ORACLE_HOME을 물어볼 지를 지정하며, NO 이외의 경우는 모두 물어 봅니다.
 
TNS_ADMIN : tnsnames.ora, sqlnet.ora 파일과 같은 TNS 파일에 대한 경로 이름
 
ORACLE_TRACE 인스톨 시에 Verification/Trace(shell 에 의한 작업이 모두 화면출력)를 작동시킬지 않을지를 지정, T 이면 작동하고 그 외의 경우는 작동 하지 않습니다.
 
TWO_TASK :  원격의 DB에 대한 접속 시 사용하는 SQL*Net Connect String에 대한 정의,  SQL*Net TWO_TASK 변수를 체크하여 자동으로 그 값을 connect string의 뒤에 add 합니다.
 
아래의 예를 참고 하세요~
 
sqlplus scott/tiger@wink
 
and
 

export TWO_TASK=wink; sqlplus scott/tiger

 [개강임박강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)


[주간]
  [11/13]SQL초보에서실전전문가까지

  [11/13]안드로이드개발자과정

  [11/18]Spring3.X, MyBatis, Hibernate실무과정
  [11/18]iPhone 하이브리드 앱 개발 실무과정

[평일야간]
  [11/08]C#,ASP.NET마스터
  [11/08]Spring3.X, MyBatis, Hibernate실무과정

  [11/12]iPhone 하이브리드 앱 개발 실무과정
  [11/14]JAVA&WEB프레임워크실무과정
[주말]
  [11/09]C#,ASP.NET마스터
  [11/09]JAVA&WEB프레임워크실무과정
  [11/09]Spring3.X, MyBatis, Hibernate실무과정
  [11/09]웹퍼블리싱 마스터
  [11/16]PL/SQL,오라클힌트,SQL튜닝,사례연구
  [11/16]ASP.NET4.0 MVC 프로그래밍


2013년 10월 23일 수요일

오라클 테이블 단편화(행이행, 행연쇄) 체크 (Oracle Table chain )

오라클 테이블 단편화(행이행, 행연쇄) 체크 (Oracle Table chain )



블록사이즈가 4K인데 레코드의 한행이 4K이상이라면 여러 블럭에 나누어 저장되게 되는데 이를
행연쇄 라고 하구요, 처음 insert문에서 입력되는 데이터는 작았는데 추후 많은 량의 데이터로 update
하게되어 해당 불록에 다 기록할 수 없어 다른 블록에 기록할 수 있는 데 이를 행이동 이라고 합니다.

행이행의 경우 원래의 블록에 새로운 블록을 가리키는 포인터를 두며 갱신전 데이터가 있는 영역은 사용하지 못하게 됩니다. 이 처럼 재이용되지 못하는 영역이 생기는 것을 단편화라고 하며 이를 확인하는 방법은 다음과 같습니다.

먼저 Analyze를 이용하여 통계 데이터를 추출 합니다.

SQL>analyze table emp compute statistics


행이행과 행연쇄가 있는지 조사 합니다. 아래에서 chain_cnt 값은 행이행이나 행연쇄로 인해
여러 블록으로 쪼개져 있는 행의 수를 의미합니다.

SQL> SELECT table_name, num_rows, blocks, empty_blocks, avg_space, chain_cnt
        FROM    dba_table
        WHERE chain_cnt > 0; 

2013년 10월 3일 목요일

[ORACLESQL강좌,오라클SQL가로출력, 오라클 SQL] 하나의 테이블 값을 가로로 두 번 표시하는 방법

[ORACLESQL강좌,오라클SQL가로출력, 오라클 SQL] 하나의 테이블 값을 가로로 두 번 표시하는 방법

오라클 SQL 하나의 테이블 값을 가로로 두 번 표시.

아래 EMP TABLE의 원본 데이터가 있다고 할 때

SQL> select empno, ename from emp;

    EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7900 JAMES
      7902 FORD
      7934 MILLER

14 개의 행이 선택되었습니다.


위 원본 데이터를 다음과 같이 한 테이블의 값을 가로로 두 번 표시하고자 하는 경우...


ORD      EMPNO ENAME      JOB            EMPNO ENAME      JOB
----- ---------- ---------- --------- ---------- ---------- ---------
    1      7369 SMITH      CLERK          7499 ALLEN      SALESMAN
    2      7521 WARD      SALESMAN        7566 JONES      MANAGER
    3      7654 MARTIN    SALESMAN        7698 BLAKE      MANAGER
    4      7782 CLARK      MANAGER        7788 SCOTT      ANALYST
    5      7839 KING      PRESIDENT      7844 TURNER    SALESMAN
    6      7876 ADAMS      CLERK          7900 JAMES      CLERK
    7      7902 FORD      ANALYST        7934 MILLER    CLERK.



STEP 1 : 우선 ROWNUM을 짝수, 홀수로 구분하여 가로로 표시한다.


SQL> SELECT ROWNUM,TRUNC((ROWNUM+1)/2) AS ORD,
  2            DECODE(MOD(ROWNUM,2),1,EMPNO,NULL) AS FIRST_EMPNO,
  3            DECODE(MOD(ROWNUM,2),0,EMPNO,NULL) AS SECOND_EMPNO
  4      FROM  EMP;

    ROWNUM        ORD FIRST_EMPNO SECOND_EMPNO
---------- ---------- ----------- ------------
        1          1        7369
        2          1                    7499
        3          2        7521
        4          2                    7566
        5          3        7654
        6          3                    7698
        7          4        7782
        8          4                    7788
        9          5        7839
        10          5                    7844
        11          6        7876
        12          6                    7900
        13          7        7902
        14          7                    7934

14 개의 행이 선택되었습니다.

STEP 2 : 빈 컬럼을 없애기 위해 SUM(DECODE...) 를 사용한다.

SQL>  SELECT TRUNC((ROWNUM+1)/2) AS ORD,
  2              SUM(DECODE(MOD(ROWNUM,2),1,EMPNO,NULL)) AS FIRST_EMPNO,
  3              SUM(DECODE(MOD(ROWNUM,2),0,EMPNO,NULL)) AS SECOND_EMPNO
  4      FROM  EMP
  5      GROUP BY TRUNC((ROWNUM+1)/2);

      ORD FIRST_EMPNO SECOND_EMPNO
---------- ----------- ------------
        1        7369        7499
        2        7521        7566
        3        7654        7698
        4        7782        7788
        5        7839        7844
        6        7876        7900
        7        7902        7934

7 개의 행이 선택되었습니다.

STEP 3 : 해당 EMPNO 컬럼에 ENAME, JOB 데이터를 덧붙인다.

SQL> SELECT ORD,
  2        F_EMPNO AS EMPNO,A.ENAME,A.JOB,
  3        S_EMPNO AS EMPNO,B.ENAME,B.JOB
  4  FROM  ( SELECT ORD,
  5                  SUM(FIRST_EMPNO)  AS F_EMPNO,
  6                  SUM(SECOND_EMPNO) AS S_EMPNO
  7          FROM  ( SELECT TRUNC((ROWNUM+1)/2) AS ORD,
  8                          DECODE(MOD(ROWNUM,2),1,EMPNO,NULL) AS FIRST_EMPNO,
  9                          DECODE(MOD(ROWNUM,2),0,EMPNO,NULL) AS SECOND_EMPNO
 10                    FROM EMP)
 11          GROUP BY ORD ), EMP A, EMP B
 12  WHERE  F_EMPNO = A.EMPNO
 13  AND    S_EMPNO = B.EMPNO(+)
 14  ORDER BY ORD ;

OUTER 조인을 사용하지 않으면 SECOND_EMPNO 컬럼의 값이 NULL인 경우 전체 로우의 값이 나오지 않게 되므로 반드시 S_EMPNO와 조인되는 B.EMPNO 컬럼에 (+) 사인을 추가해야 한다.

ORD      EMPNO ENAME      JOB            EMPNO ENAME      JOB
---- ---------- ---------- --------- ---------- ---------- ---------
  1      7369 SMITH      CLERK          7499 ALLEN      SALESMAN
  2      7521 WARD      SALESMAN        7566 JONES      MANAGER
  3      7654 MARTIN    SALESMAN        7698 BLAKE      MANAGER
  4      7782 CLARK      MANAGER        7788 SCOTT      ANALYST
  5      7839 KING      PRESIDENT      7844 TURNER    SALESMAN
  6      7876 ADAMS      CLERK          7900 JAMES      CLERK
  7      7902 FORD      ANALYST        7934 MILLER    CLERK

7 개의 행이 선택되었습니다. 

오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  



[ORACLE강좌,오라클교육]오라클테이블 참조무결성, TABLE 참조 무결성(Referential Integrity)

[ORACLE강좌,오라클교육]오라클테이블 참조무결성, TABLE 참조 무결성(Referential Integrity)

데이터참조무결성(Referential Integrity) 에는 참조되는값(referenced value)이 delete 되거나 update 될 때 자식테이블의값(dependent value)을 어떻게 유지할 것인지에 따라 다음과 같은 rule의 종류가 있다.
 
 
Restrict
Referenced value에 대해 deleteupdate를 허락하지 않음(DML문장의 끝이나 Transaction의 끝에 check)
Set to Null
Referenced value에 대한 deleteupdate를 하면서 모든 dependent valueNULL로 설정함
Set to Default
Referenced value에 대한 deleteupdate를 하면서 모든 dependent valueDefault value로 설정함
Cascade
Referenced valueupdate 될 때 dependent value를 같은 값으로 설정하고, delete 될 때는 dependent row들을 함께 delete .
No Action
Referenced value에 대해 deleteupdate를 허락하지 않음
 
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  



2013년 8월 2일 금요일

자바 위임을 이용한 Adapter 패턴 예제 (java adapter pattern, java design pattern

안녕하세요~ oraclejavacommunity 입니다. 위임을 이용한 Adapter 패턴 예제 입니다.
 
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 



위임이란 어떤 메소드의 처리를 다른 인스턴스의 메소드에 맡긴다는 의미 


Banner.java및 Main.java는 앞 예제와 동일함

//Print.java
public abstract class  Print {
public abstract String printString();
}


//PrintBanner.java
public class PrintBanner extends Print {
private Banner banner;
public PrintBanner (String str) {
this.banner = new Banner(str);
}
public String  printString() {
return "(" + banner.showString() + ")";
}
}
 
  

자바 상속을 이용한 Adapter 패턴 예제 (java adapter pattern)


안녕하세요~ 오라클자바커뮤니티(www.oraclejavacommunity.co.kr) 입니다.
<"자바 디자인 패턴에 입문" 에 나와 있는 사례소개 합니다.>
 
 오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 


상속을 이용한 Adapter 패턴 예제

이미 제공 되는것과  필요로 하는것과의 사이에서 그 사이를 메꾸어 주는것이  Adapter의 역할
 Adapter 패턴은 Wrapper 패턴이라고도 한다.
 Adapter 패턴은 기존의 클래스를 이용해서 필요한 클래스를 만든다.  기존의 것과 필요한 클래스가 기능이 차이가 많은 경우에는 Adapter 패턴을 이용할수 없다. 물론 기존 클래스의 소스는 필요없다.
 Adapter 패턴은 기존버전과 새버전을 공존시키면서 S/W의 유지보수를 가능하게 해 준다.
 Adapter 패턴에는 Class에 위한 Adapter 패턴(상속이용)과 인스턴스에 의한 Adapter 패턴(위임이용) 두가지 형태가 있다.




이 예제는 기존에 제공되는 Class의 기능(주어진 문자열을 출력)을 이용하여 양쪽으로 괄호를 붙여 출력하는 간단한 예제이다.
 이미 제공되는것은 Banner Class이며 필요한것은 Print 인터페이스이고 교환장치(Adpater)는 PrintBanner Class이다.


//Banner.java
public class Banner {
private String str;
public Banner (String str) {
this.str = str;
}
public String  showString() {
return str ;
}
}
//Print.java
public interface Print {
public abstract String printString();
}
//PrintBanner.java
public class PrintBanner extends Banner implements Print {
public PrintBanner (String str) {  super(str);  }
public String  printString() {
return "(" + showString() + ")";
}
}
//Main.java
public class Main {
public static void main(String args[]) {
//PrintBanner p = new PrintBanner("hello"); ?
//만약 PrintBanner의 고유의 메소드가 있다면 
//이를 사용하기 위해서는 어떻게?
Print p = new PrintBanner("hello");
System.out.println(p.printString());
}