2011년 12월 12일 월요일

eclipse와 Oracle 연동하기

1. ojdbc14.jar
D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 복사
C:\Program Files\Java\jdk1.7.0_01\jre\lib\ext 위치에 붙여넣기

2. 이클립스 시작
JAVA EE 선택


이클립스 하단 콘솔창이 출력되는 영역부분 Data Source Explorer로 이동
Database Connections에서 마우스 오른쪽 클릭 후 New 선택


Coneection Profile Types에서 ORACLE 선택





































시계 모양 작은 아이콘 클릭 후 설치한 버젼에 맞는 오라클 버젼을 선택

JAR list 탭에서 ojdbc14.jar를 추가
기존에 디폴트로 추가되어 있는 ojdbc14.jar 삭제

Properties 탭에서 속성 수정

Catalog : [오라클 설치할 때 입력한 SID, default=orcl]
URL : jdbc:oracle:thin:@127.0.0.1:1521:orcl
DataBaseName : db
User ID : system
Password : [오라클 설치할 때 입력한 비밀번호]


수정 완료 후 OK


Test connection 버튼을 눌렀을 때 "Ping succeeded!" 메시지가 출력되면 DB 설정 성공
Finish 눌러 설정 마무리











eclipse와 tomcat 연동하기

1. 톰캣 다운로드
 http://tomcat.apache.org/ 


2. 압축 푼 후에 conf 폴더로 이동 - context.xml, server.xml 설정 바꾸기
--------------------------------------------------------------


    <Connector port="7777" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="euc-kr" />






Connector port="8080" → Connector port="7777" 변경
URIEncoding = "euc-kr" 추가
-------------------------server.xml----------------------------


port 번호 변경 이유 : 오라클과 충돌 방지
euc-kr : 한글 인코딩 때문에
---------------------------------------------
<Context>


<Context reloadable="true"> 추가
------------------------context.xml----------


3. JRE_HOME, JAVA_HOME 환경변수 잡아주기
시작 → 내 컴퓨터 → 속성 → 고급 → 환경변수 → 시스템 변수 새로만들기
변수이름 : JAVA_HOME / 변수 값 : C:\Program Files\Java\jdk1.7.0_01
변수이름 : JRE_HOME   / 변수 값 : C:\Program Files\Java\jre7


재부팅


4. 이클립스 실행
Server tab에서 마우스 오른쪽 버튼 누른 후, New→Server











server type에 설치한 Tomcat 버젼 선택 후 next


































톰캣 설치 경로와 JRE 선택 후 Finish














생성된 서버 더블 클릭












Server Locations에서 Radio 버튼 아래와 같이 수정
Deploy Path 수정(작업 소스 파일은 워크 스페이스에 저장되지만 결과물은 별도의 폴더에 저장)
























수정 후 저장































[JAVA] Calendar를 이용한 달력

* 원하는 달을 입력받아 해당 달을 출력

import java.util.Calendar;
import java.util.Scanner;

public class start_1 {

/**
* Calendar를 사용한 달력 만들기
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Calendar cal = Calendar.getInstance();
String yyyymm;
int yyyy, mm, start_day, end_day, temp=0;
System.out.print("년 월 입력 (yyyymm) : ");
Scanner scan = new Scanner(System.in);
yyyymm=scan.next();
yyyy=Integer.parseInt(yyyymm.substring(0, 4));
mm=Integer.parseInt(yyyymm.substring(4, 6))-1;
cal.set(Calendar.YEAR, yyyy);
// 월은 0부터 11로 리턴되기 때문에 항상 1을 증가해야 한다. 7을 입력하면 8월이 된다.
     // 알고자 하는 달을 입력했을 경우에는 -1
     cal.set(Calendar.MONTH, mm);
cal.set(Calendar.DATE, 1);
//1~7까지 일~토
     start_day=cal.get(Calendar.DAY_OF_WEEK);
end_day=cal.getActualMaximum(Calendar.DATE);
System.out.println();
System.out.println("일\t월\t화\t수\t목\t금\t토");
for(int i=1; i<start_day; i++){
System.out.print("\t");
temp++;
}
for(int i=1; i<=end_day; i++){
temp++;
System.out.print(i+"\t");

if(temp%7==0)
System.out.println();
}
}
}

2011년 12월 8일 목요일

[Miplatform] Bebug시 필요한 HOT KEY

* Hot Key
F9 : Break Point 설정
F6 : Debug mode 실행
F5 : Break Point 다중으로 설정한 후 다음 Break Point까지 점프
F10 : 다음라인 실행
F11 : 함수 안으로 진입
Ctrl+F10 : 커서 위치까지 점프
Shift+F5 : Debug 종료




* TRACE() 함수
OUTPUT에 해당 내용 찍어주기 (자바에 System.out.print()와 같은 기능)

2011년 12월 5일 월요일

[Oracle] 저장 프로시저와 함수

* 프로시저


CREATE [OR REPLACE] PROCEDURE procedure_name
(argument1 [MODE] data type,
 argument2 [MODE] data type..
)


IS
    local_variable declaration;
BEGIN
   statement1;
   statement2...
END








* 함수 - 실행 결과를 되돌려 받을 수 있다


CREATE [OR REPLACE] FUNCTION function_name
(argument1 [MODE] data type,
 argument2 [MODE] data type..
)
RETURN data_type;
IS
    local_variable declaration;
BEGIN
   statement1;
   statement2...
   RETURN variable_name;
END



매개변수 : 프로시저나 함수가 전달 받을 값을 저장할 변수
바인드변수 : EXECUTE 후에 구해진 결과를 SQL*Plus에서 받아오기 위해 사용하는 변수
[MODE] : IN, OUT, INOUT

[Oracle] Cursor

* 커서
PL/SQL의 RECORD + TABLE
프로그램 언어의 구조체




* 커서 사용 방법
① 커서 선언
CURSOR cursor_name


② 커서 오픈
OPEN cursor_name ...
Ex) FETCH C1 INTO VEMPNO, VENAME, VSAL;


③ 커서에 조회한 결과 값 인출 후 저장
FETCH cursor_name 


④ 커서 닫기
CLOSE cursor_name


→ OPEN-FETCH-CLOSE 없이 커서 처리 방법
    FOR   레코드명   IN   커서명   LOOP
    END LOOP;




* 커서의 상태
%NOTFOUND    : 커서 영역의 자료가 모두 FETCH 됐는가?
%FOUND           : 커서 영역에  FETCH가 되지 않은 자료가 있는가?
%ISOPEN          : 커서가 OPEN된 상태인가?
%ROWCOUNT   : FETCH된 RECORD가 몇 개 있는가?

[Oracle] PL/SQL

* 탄생 배경
SQL 비 절차적 언어라 간단히 작성된 문장을 입력함으로서 원하는 결과를 쉽게 얻지만, 절차적 언어만이 가진 기법 사용 불가능(조건에 따라 처리 달리하기, 반복적으로 여러 개 문장 실행 반복하기 등




* PL/SQL 구조
1) 선언부 - 변수나 상수 선언
스칼라(SCALAR) - 선언부에 사용하는 변수
REFERENCES 변수 제공 - %TYPE      
                                                (ex) vdeptno  emp.deptno%TYPE;
                                       %ROWTYPE
                                                (ex) vemp  emp%ROWTYPE;


2) 실행부 - 제어문, 반복문, 함수 정의 등 logic 기술
변수에 값 할당하기 :=
(ex) vdname := 'ACCOUNT'


PROMPT에서 값 입력 받기
(ex) ACCEPT 변수명 PROMPT '입력하고자 하는 메시지'
       ACCEPT PDAN PROMPT → DECLARE
                                                     VDAN NUMBER(2) := &PDAN;


PL/SQL 테이블과 레코드 - 변수 타입을 사용자가 지정
테이블(column)
          TYPE type_name IS TABLE OF
          table_name.column_name%TYPE
          INDEX BY BINARY_INTEGER;


레코드(row)
          TYPE record_name IS RECORD 
          ( filed_name1 field_type
            . . .
            field_nameN field_type);




3) 예외처리 - 예외 발생 시 해결


(SET SERVEROUTPUT ON으로 설정 후 dbms_output으로 실행 결과 보기)

2011년 12월 4일 일요일

[Oracle] 권한

1. 사용자 관리
* 시스템 권한
DBA - CREATE USER
            DROP USER
            DROP ANY TABLE
            QUERY REWRITE
            BACKUP ANY TABLE

일반 사용자 - CREATE SESSION
                          CREATE TABLE
                          CREATE VIEW
                          CREATE SEQUENCE
                          CREATE PROCEDURE

GRANT     system_privilege TO user_name
REVOKE



* 객체 권한 - 객체별로 DML문 사용할 수 있는 권한
GRANT     object_privilege ON object TO user_name
REVOKE



* 사용자에게 부여된 권한 조회
부여한 권한    : user_tab_privs_made
부여받은 권한 : user_tabl_privs_recd



* WITH GRANT OPTION
객체 접근할 권한을 부여받으면서 그 권한을 다른 사용자에게 부여할 수 있는 권한 획득










2. 데이터베이스 롤 권한 제어
* ROLE - 사용자에게 보다 효율적으로 권한을 부여할 수 있도록 여러 개의 권한을 묶음




*사전 정의된 롤
CONNECT ROLE - 데이터베이스에 접속 가능하도록 하기 위한 가장 기본적인 시스템 권한
ALTER SESSION
CREATE CLUSTER
CREATE DATABASE LINK

CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE VIEW


RESOURCE ROLE - 객체를 생성할 수 있도록 하기 위한 시스템 권한
CREATE CLUSTER
CREATE PROCEDURE
CREATE SEQUENCE
CREATE TABLE
CREATE TRIGGER


DBA ROLE - 시스템 관리에 필요한 모든 권한




* ROLE 정의
① 롤 생성
     CREATE ROLE role_name
② 롤에 권한 부여
     GRANT object_priv TO role_name
③ 사용자에 롤 부여
     GRANT role_name TO user_name




* ROLE 관련 DATA DICTIONARY
  user_role_privs : 사용자에게 부여된 롤
  role_tab_privs   : 롤에 부여된 객체 권한
  role_sys_privs  : 롤에 부여된 시스템 권한
    

[Oracle] Drop 명령 후 휴지통 비우기

Oracle은 Drop 명령 후 임시적으로 데이터 저장
Ex) drop 으로 특정 table을 제거 후에 유저테이블을 검색해 보면 BIN으로 시작하는 garbage 존재.

→ purge recyclebin
    drop table deptno1 purge (drop과 동시에 휴지통 비우기)

[Oracle] 무결성 제약 조건

* 무결성 제약 조건
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK


* 제약 조건 확인하기 위한 데이터 딕셔너리 : uesr_constraints


* 제약 조건 명 지정하여 컬럼 레벨 정의 방법 - CONSTRAINT 키워드
Ex) CREATE TABLE dept
                                                           [테이블명]_[컬럼명]_[제약 조건 유형]
      (deptno NUMBER(2) CONSTRAINT dep_deptno_pk PRIMARY KEY);


* NOT NULL
테이블 레벨 정의 불가능, 컬럼 레벨 정의만 가능
테이블 생성 후 NOT NULL 제약 조건을 추가할 때 - ADD 대신 MODIFY
Ex) ALTER TABLE table_name
      MODIFY column_name CONSTRAINT 테이블명_컬럼명_nn NOT NULL


* Foreign Key와 Primary Key
둘 사이의 연관 관계 때문에 Foreign Key의 Reference가 되는 키는 삭제할 수 없다.
삭제를 원할 때는 CASCADE 사용 - Primary key를 삭제하면 자동으로 Foreign Key도 삭제
But, 삭제를 하기 보다 비활성화를 하자. Disable/Enable
       (이것 또한 Primary key를 비활성화 시키기 위해 CASCADE 사용)

[Oracle] View, Index, Sequence

* View
자주 쓰이는 복잡한 Query문 View로 정의해 간단한 접근 가능.
보안에 유리 - 전체 데이터의 일부만 접근 가능하게 제한.


* Index
Query 실행 속도 향상
기본적으로 B* 트리 형식


* Sequence
자동 번호 발생기 - 중복된 값 허용되지 않는 Column에 사용

2011년 12월 1일 목요일

[Oracle] scott/tirger로 접속하기

Oracle 설치 후, scott/tiger로 접속 불가능
->계정이 Unlock 되어있기 때문에

Lock 해제를 위한 방법
1. DBA 권한 가진 사용자로 접속
(기본적으로 SYSTEM/MANAGER or SYS/CHANGE_ON_INSTALL)

2. ALTER USER scott ACCOUNT UNLOCK

3. CONNECT scott/tiger

[Miplatform] Chapter1.

RIA의 핵심요소

1. Server 구조
Web 방식과 동일 (WAS 종류에 상관 없이 사용 가능)

2. 화면의 배포
Web 방식과 동일 (Browsing 방식, 화면은 서버에 존재)
단, Browser는 xml 처리

3. 화면 기능 및 생산성
C/S와 유사
C/S기능에 준하는 component 및 Browser, Tool 제공
단, 화면은 XML

4. Data 처리
C/S와 유사
DATA 분리 처리용 Data Component (Binding 기능제공)
화면 XML과 Data 처리 XML 분리