728x90

 

 

 

1. webtob(WS: 정적인 업무 처리) 구동시
 a 1) WSM(웹서버 모니터 프로세스), HTL, HTH 3가지가 구동됨
  2) HTL(리스닝 작업)이 클라이언트로부터 리슨하고,
  3) HTH로 핸들링해서 HTH에서 업무프로세스에 할당하고 처리한 값을 다시 HTL로 보냄
   3-1) HTH 앞단에 큐를 사용하여 과부하를 막음
   3-2) 단위 업무자체가 클 경우 업무프로세스를 확장
   3-3) 사용자가 몰릴경우 HTH(인스턴스)를 4개까지 확장 가능(안에 컨테이너 수는 제한없음)
  4) WSM이 HTL과 HTH를 모니터링하여 문제 발생시 처리

 

 

2. JEUS 구조
  - SERVER > NODE > 제우스 메니저 <동급> 제우스 컨테이너
  1) 제우스 메니저의 역할
     - J2EE 서비스, 리소스 관리(시큐리티, 데이터베이스, 외부소스, jndi 등등)
  2) 제우스 컨테이너
     - 서블릿 엔진, EJB, JMS 등등 업무처리

 

 

3. webtob

  1) 설치 중간에 servlet은 제하고 순수 webtob체크
  2) /bin파일/ wsboot, wscfl(실행파일 설정), wsdown

 

 


4. jeus
  1) 설치 중간에 어드민 패스워드 입력
  2) webserver(내장 webtob ==> 인스턴스 1개만 생성가능, 같은 공간의 제우스하고만 연결) 
  3) /webserver/config/ws_engine.m 을 http.m으로 새로 저장하여 작업
  4) cmd창 /webserver/config> wscfl -i http.m(파일 유효성 검사) --> wsconfig생성
  5) cmd창 /webserver/config> wsboot --> 웹투비 가동
                              wsdown --> 웹투비 다운

 

  6) jeus 환경설정
    --> /config/해당컴터이름/jeusmain.xml 수정
        /config/해당컴터이름/해당컴터이름_servlet_engine1/webmain.xml 수정 
    --> 최초의 연결설정은 jeus에서 webtob로 설정명령
 

  7) cmd창> jeus
 

  8) cmd창> jeusadmin 사용자컴터이름  ==> 어드민 로그인
 

  9) cmd창> boot  ==> 제우스 가동
                  down  ==> 제우스 다운

 

 10) 

기타 환경 변수 추가는 jeus가 설치된 폴더(c:\tmaxsoft)의 bin 폴더의 jeus.properties.cmd       파일을 열어 설정해 줄 수 있다.

         - JEUS_BASEPORT : JEUS 가 사용할 네트워크 포트중 기본 포트 --> 9736

         - JAVA_HOME : Java 2 설치 디렉토리

         등등...

         - JEUS_BASEPORT를 수정할 경우

           : %JEUS%\config\vhost.properties의

             컴퓨터이름 = 컴퓨터이름:9736 의 포트도 같이 수정

 

 11) admin페이지 접속 ==> http://localhost:9744/webadmin/ 

      (포트는 jeus.properties.cmd 의 JEUS_BASEPORT 숫자 + 8한 숫자)

      (로그 보기 및 jdbc 컨넥션 풀, 어플리케이션 배포 등 설정)

       - webadmin 을 실핼 시키기 위해서는 JEUSMain.xml 에 <enable-webadmin> 태그의 값이

          true 로 설정 되어 있어야 한다.

          (경로--> %JEUS_HOME%\config\<nodename>\JEUSMain.xml)

  12) /lib/datasource 안에 관련 jar파일(jdbc 드라이버 등) 저장

  13) admin 명령어 (admin으로 cmd창에서 접속후 cmd창>help 로 확인가능)
     -  st -v
        st -p
        st -r
        q
        conlist
        downcon [컨테이너명] 
        applist
        dsinfo
        ti -a
        dsconinfo -con [컨테이너명] -t [컨넥션풀 이름]
        등등


  14) 설정파일의 xml스키마를 보고싶을땐  /lib/schemas/jeus/ 안에서 참조

 

  15) jeus/bin/ 안에서 .cmd 파일로 만들고 cmd창에서 모아서 어디서든 실행할 수 있다.

       (서버 내리기, 어드민 접속 등등)
      예) jeusadmin [컴퓨터이름] -Uadministrator -Ppassword jeusexit   ==>jdown.cmd로 만듬    
           jeus -Uadministrator -Ppassword   ==> jboot.cmd로 만듬
          jeusadmin [컴퓨터이름] -Uadministrator -Ppassword  ==>jadmin.cmd로 만듬

  

  16) 메뉴얼
     [jeus 6.x]
      http://technet.tmax.co.kr/kr/edocs/jeus/60/index.html

     [webtob 4.x]
     http://technet.tmax.co.kr/kr/edocs/webtob/41/index.htm

  

 

 

 

 

======= java.net.ConnectException: Connection refused: connect

           worker(webtob1-hth0(localhost:9900)-w00:null) : Failed to reconnect
                                                                                                        ===============

1. webtob와 설정이 맞지 않기 때문이다.

2. jeus 설정을 바꿨다면 webtob까지 모두 내렸다가 다시 올려야 한다.

 

 

 

 

 

 

 

================================ log 설정 =======================================

1. JeusMain.xml (<node> 태그 사이에 작성)

<system-logging>
            <name>jeus</name>
            <handler>

                <console-handler>

                      <name>handler0</name>
                      <level>FINE</level>
                 </console-handler>
                <file-handler>
                    <name>handler1</name>
                    <level>FINE</level>
                     <valid-day>1</valid-day>
                     <file-name>D:\Project\workspace\JeusLog\JeusServer.log</file-name>
                </file-handler>
            </handler>
</system-logging>

 

2. ~~-servlet 폴더의 WEBMain.xml(<context-group>안에..)

<logging>
            <access-log>
                <handler>

                   < console-handler>

                      <name>handler0</name>
                    </console-handler>                   

                   <file-handler>
                        <name>handler1</name>
                    </file-handler>
                </handler>
            </access-log>
        </logging>

 

 

==================== OutOfMemoryError:PermGem Space 에러 =================

<JEUSMain.xml>

<engine-container>
            <name>container1</name>
     <command-option>-Xms256m -Xmx512m -XX:PermSize=512m

                                -XX:MaxPermSize=1024m</command-option>
            <sequential-start>true</sequential-start>
            <engine-command>
                <type>ws</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>jms</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>ejb</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>servlet</type>
                <name>engine1</name>
            </engine-command>
        </engine-container>

 

==> 이런식으로 PermSize를 늘려준다.

 

 

 

============================= webtob 사용 안하기 ==============================

<해당 servlet-engine의 WEBMain.xml>

<webserver-connection>
            <http-listener>
                <listener-id>http1</listener-id>
                <port>8088</port>
                <thread-pool>
                    <min>10</min>
                    <max>20</max>
                    <step>1</step>
                </thread-pool>
            </http-listener>
            <!--<webtob-listener>
                <listener-id>webtob1</listener-id>
                <port>9900</port>
                <output-buffer-size>8192</output-buffer-size>
                <thread-pool>
                   <min>1</min>
                   <max>5</max>
                   <step>1</step>
                   <max-idle-time>30000</max-idle-time>
                </thread-pool>
                <webtob-address>localhost</webtob-address>
                <registration-id>MyGroup</registration-id>
            </webtob-listener>
  -->
        </webserver-connection>

==> webtob를 사용하지 않고 jeus만으로 web을 구동할 경우

      <webtob-listener>를 주석처리한다.

 

 

 

======================== <invocation-manager-action> =========================

1. Warning

  : 이 선택사항이 선택되면, 만약 한 자원이 무상태 메소드 호출 동안 사용되었지만 반환할 때 닫지 않게 될 경우 이벤트가
container log에 warning 메세지로 기록된다.

 

2.AutoClose:
이 선택사항이 선택되면, 만약 한 자원이 무상태 메소드 호출 동안 사용되었으나 반환할 때 닫히지 않는다면 자원이
자동적으로 닫힌다.


===JEUSMain.xml===
<jeus-system>
  <node>
...
    <engine-container>
...
      <invocation-manager-action>
          AutoClose
      </invocation-manager-action>
...
    </engine-container>
  </node> 
</jeus-system>

 

 

 

============================ jeus admin 비밀번호 수정 ========================

1. cmd창 열고
2. java -classpath "%JEUS_HOME%\lib\system\jeus.jar" jeus.security.util.Base64Coder <바뀔 암호>
   하면 암호가 반환됨
3. %JEUS_HOME%\config\컴퓨터이름\security\SYSTEM_DOMAIN\accounts.xml을 열어서

<?xml version="1.0"?>
<accounts xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0">
      <users>
        <user>
            <name>administrator</name>
            <password>{base64}이부분 수정</password>
            <group>Administrators</group>
        </user>
    </users>
    <groups>
        <group>
            <description>A group for administrators</description>
            <name>Administrators</name>
        </group>
    </groups>
</accounts>

 

출처 : http://sararing.tistory.com/176

반응형
728x90

MERGE 문의 이해

  • - MERGE문은 조건에 따라서 데이터의 삽입,갱신,삭제 작업을 한번에 할 수 있다.
  • - 해당 행이 존재하는 경우 UPDATE(DELETE포함 할 수 있음)를 수행하고, 새로운 행일경우 INSERT를 수행한다.
  • - 대상 테이블에 대한 UPDATE/INSERT 조건은 ON절에 의해 결정된다.
  • - MERGE문에서 CLOB 사용시 업데이트 할 내용이 2000bytes가 넘을때 ORA-00600 오류가 발생하며, patch set 11.2.0.2 버전으로 해결할 수 있다.

MERGE Syntax
1
2
3
4
5
6
7
8
9
10
11
12
13
MERGE [ hint ]
   INTO [ schema. ] { table | view } [ t_alias ]
   USING { [ schema. ] { table | view }
         | subquery
         } [ t_alias ]
   ON ( condition )
WHEN MATCHED THEN
UPDATE SET column = { expr | DEFAULT }
           [, column = { expr | DEFAULT } ]...
[ DELETE where_clause ]
WHEN NOT MATCHED THEN
INSERT [ (column [, column ]...) ]
VALUES ({ expr [, expr ]... | DEFAULT })
  • INTO : DATA가 UPDATE되거나 INSERT 될 테이블 또는 뷰를 지정.
  • USING : 비교할 SOURCE 테이블 또는 뷰나 서브쿼리를 지정, INTO절의 테이블과 동일하거나 다를 수 있다.
  • ON : UPDATE나 INSERT를 하게 될 조건으로, 해당 조건을 만족하는 DATA가 있으면 WHEN MATCHED 절을 실행하게 되고, 없으면WHEN NOT MATCHED 이하를 실행하게 된다.
  • WHEN MATCHED : ON 조건절이 TRUE인 ROW에 수행 할 내용 (UPDATE, DELETE포함 될 수 있음)
  • WHEN NOT MATCHED : ON 조건절에 맞는 ROW가 없을 때 수행할 내용 (INSERT)

MERGE 예제1

아래 예제는 부서번호 20,30의 사원이 존재하면 급여를 10% 인상하고, 존재하지 않으면 급여가 1000보다 큰 사원정보를 등록하는 예이다. (INSERT, UPDATE 예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
-- 부서번호 10, 20의 사원정보를 가지는 테스트 테이블을 생성하자
CREATE TABLE emp_merge_test
AS SELECT empno, deptno, sal FROM emp WHERE deptno IN (10, 20);
 
 
-- 데이터를 확인해 보자
SELECT * FROM emp_merge_test;
 
 
-- 사원이 존재하면 급여를 10% 인상하고, 없으면 INSERT 한다.
MERGE INTO emp_merge_test m
USING ( SELECT empno, deptno, sal    -- USING절에 뷰가 올수 있다.
        FROM emp
        WHERE deptno IN (20,30)) e
ON ( m.empno = e.empno)
WHEN MATCHED THEN
  UPDATE SET m.sal = ROUND(m.sal*1.1)
WHEN NOT MATCHED THEN
INSERT (m.empno, m.deptno, m.sal)
VALUES (e.empno, e.deptno, e.sal)
WHERE e.sal > 1000                 -- INSERT 절의 조건절도 지정이 가능하다
COMMIT;
 
 
-- 20부서의 급여가 10%증가했고, 30부서는 등록되었는지 확인해 보자
SELECT * FROM emp_merge_test;
 
 
-- 다음 테스트를 위해서 emp_merge_test 테이블에 30부서 데이터를 삭제하자
-- 부서번호 10과 20의 사원정보만 남을 것이다.
DELETE FROM emp_merge_test WHERE deptno = 30;
COMMIT;

MERGE 예제2

아래는 부서번호 10의 사원 급여를 10% 인상하고, 부서번호 20의 사원정보는 삭제하며, 부서번호 30의 사원 급여를 20% 인상하는 예이다. (INSERT, UPDATE, DELETE 예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- 30 부서가 삭제되었는지 확인한다.
SELECT * FROM emp_merge_test;
 
 
-- MERGE 문 작성
MERGE INTO emp_merge_test m
USING emp e
ON (m.empno = e.empno)
WHEN MATCHED THEN
  UPDATE SET m.sal = ROUND(m.sal*1.1)
  DELETE WHERE (m.deptno = 20)   -- 부서번호 20의 사원정보는 삭제.
WHEN NOT MATCHED THEN
INSERT (m.empno, m.deptno, m.sal)
VALUES (e.empno, e.deptno, ROUND(e.sal*1.2));
COMMIT;
 
 
-- 정상적으로 변경되었는지 확인해 보자
SELECT * FROM emp_merge_test;
 
 
-- 테스트 테이블은 삭제하자
DROP TABLE emp_merge_test;

원본 위치 <http://www.oracleclub.com/lecture/2225>


반응형

'DataBase > Oracle' 카테고리의 다른 글

Pragma Autonomous_Transaction 사용방법  (0) 2016.08.03
오라클 사용자 생성 및 권한주기  (0) 2015.10.30
컬럼에 '(single quote) 데이터 조회하기  (0) 2015.10.05
DBA 접속방법  (0) 2015.10.05
SQL Code (ORA-?????)  (0) 2015.10.05
728x90

쿼리문에서 '(single quote)를 조회한답시고

SELECT a.*

  FROM (SELECT '''' || 'Hello Jadoo' AS title FROM dual) a

 WHERE a.title like ''%';

이렇게 하면... 쿼리에서 '(single quote)가 빠졌을 때 발생하는 에러인,

ORA-01756: quoted string not properly terminated (단일인용부호를 지정해 주십시요.) 가 발생을 합니다.

올바른 조회 쿼리는 ~

SELECT a.*

  FROM (SELECT '''' || 'Hello Jadoo' AS title FROM dual) a

 WHERE a.title like '''%';

 

 

'(single quote)가 있는 데이터 만들기 

SELECT '''' || 'Hello Jadoo' AS title FROM dual;  -- 출력값 : 'Hello Jadoo

 

 

'(single quote)를 치환해서 조회하기

SELECT REPLACE(title, '''', '')

   FROM (SELECT '''' || 'Hello Jadoo' AS title FROM dual); -- 출력값 : Hello Jadoo


반응형

'DataBase > Oracle' 카테고리의 다른 글

오라클 사용자 생성 및 권한주기  (0) 2015.10.30
Merge 기본/활용  (0) 2015.10.05
DBA 접속방법  (0) 2015.10.05
SQL Code (ORA-?????)  (0) 2015.10.05
PL/SQL Exception 종류  (0) 2015.10.05

+ Recent posts