레이블이 ORACLE SGA Tuning인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ORACLE SGA Tuning인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 10일 토요일

[ORACLEJAVA교육, 웹퍼블리싱, HTML5, jQuery실무교육]HTML5 개요

HTML5개요 입니다. 참고하세요~

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


<video width="320height="240" autoplay controls poster="image.jpg">
  <!- mp4 : 사파리, IE9, 아이폰, 아이패드, 안드로이드, 윈도우7 폰버젼 -->
  <source src="video.mp4type="video/mp4">
  <!- WebM : 파이어폭스4, 오페라, 크롬 -->
  <source src="video.webmtype="video/webm">
  <!- ogv : 파이어폭스4 이전버젼 -->
  <source src="video.ogvtype="video/ogv">
</video>
 
5. 다양한 API 지원
 드래그 & 드랍 웹 콘텐츠들을 드래그 할 수 있는 기능 (모든 브라우져에서 지원하지 않음)
 애플리케이션 캐시
 오프라인 상태에서도 애플리케이션을 실행할 수 있도록 지원하는 기능
 웹스토리지
 쿠키처럼 클라이언트 쪽에 데이터를 저장할 수 있는 기능
 Indexed 데이터베이스
 클라이언트에 저장하는 데이터 베이스 기능
 웹 워커
 시간이 오래 걸리는 작업을 백그라운드로 실행하는 기능
 지오로케이션
 PC나 모바일 장치에서 현재 위치를 파악할 수 있게 해주는 기능

 
 
■ HTML5의 문제점

1. HTML5를 지원하지 않는 브라우져의 존재
  - IE6/7/8에서 미지원, IE9에서도 완벽하게 지원하지 않음
  - 2012년 1월 윈도우 XP 점유율은 47%로 앞으로 상당 기간 HTML5가 나아가는데 큰 걸림돌이 될 것으로 보임
    (윈도우 XP는 IE8 버젼까지만 설치가 가능하기 때문에 HTML5를 보기 위해서는 다른 브라우져 설치가 필요함)

2. 저작권 보호 문제 (개발소스, 동영상, 음악)

3. ActiveX의 보안성을 대체할 요소가 없음
  - 은행권, 공공기관에서 사용하는 ActiveX의 보안성을 대체할 요소가 없기 때문에 ActiveX의 사용은 당분간 계속될 것으로 보임
 
■ 브라우저 지원 현황
브라우저VerHTML5 검사 점수[2]
2012년 1월 6일
VerHTML5 검사 점수
2012년 5월 23일[3]
구글 크롬16.0373/47518400
모질라 파이어폭스10.0332/47512345
오페라11.60329/47511.60338
오페라12 알파344/47512.00385
애플 사파리5.1302/4755.1317
인터넷 익스플로러9141/4759138
인터넷 익스플로러10306/47510316
맥스톤--3.3.7437
 
 

2013년 8월 9일 금요일

[oraclejava community, oracle 강좌,oracle교육,구로디지털오라클]oracle date type

----------
Date Type
----------

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



1. 날짜를 가르키는 값을 Tanle에 저장. 세기를 포함하여 년,월,일시,분,초,등을 저장한다.

2. BC 4712년1월1일부터 AD 4712년 12월31일까지의 날자형식을 저장할수 있다.

3. 7 Byte의 고정길이 Column임.

4. Oracle의 기본날자 형식은 dd-mon-yy, NLS_DATE_FORMAT Parameter를 이용하여 기본형식을 변경할수 있다. 또는 Alter Session Command를 이용하여 해당 sssion기간동안 날자형식을 변경할수도 있다.

5. 표준 Oracle날자 형식이 아닌 형식의 입력을 위해서는 to_date 함수를 이용한다. to_date(‘november 13, 1992’,’month dd, yyyy’)

6. Oracle에서 시간은 24시간 형식(HH:MI:SS)으로 저장한다. 기본적으로 날자 Column의 시간을 입력하지 않은 경우 12:00:00 AM(자정)으로 저장된다. 만약 시간만 입력되면 해당월의 1일이 입력된다. Date의 time부분을 입력하려면 반드시 TO_DATE함수와 format mask를 이용해야 한다.

7.기본적으로 일자나 연산이 빈번히 경우 DATE 타입으로 가져가는 것이 효과적일 수 있지만 시간이 정상적으로 입력된 경우 일자를 '=' 연산으로 비교할 수가 없다. 예를 들면 아래와 같다.

INSERT INTO EMP (EMPNO,ENAME,HIREDATE,DEPTNO)
        VALUES (7777,'BJKIM',TO_DATE('94/03/15 03:20:30','YY/MM/DD HH:MI:SS');

  와 같이 정상적으로 날짜를 입력한후

  SELECT * FROM EMP WHERE HIREDATE = '15-MAR-94';

  을 수행 하더라도 원하는 결과를 도출할 수 없다. 뿐만 아니라 LIKE, SUBSTR등의 함수를
이용하여 스트링(string) 비교를 하고자 할때 제한적으로 밖에 사용할 수 없다. 즉 디폴트
날짜 형태를 기준으로만 비교 가능하다.

예 ) 81년에 입사한 인원을 찾고자 할때

      a.SELECT * FROM EMP WHERE HIREDATE LIKE '%81';
      혹은
      b.SELECT * FROM EMP WHERE SUBSTR(HIREDATE,8,2) = '81';
 
  와 같이 SQL문을 날짜 타입의 기본 형태인 'DD-MON-YY'을 기준으로 스트링 함수를 사용하여야 한다.

예 ) 만일 HIREDATE에 인덱스가 생성 되어 있을때 아래 2가지 SQL문을 수행하게 되면 a의 경우는 인덱스를 사용하지만 b의 경우에는 인덱스를 사용 못하는 일반적
인 문자 타입과의 차이점을 보인다.

SELECT * FROM EMP
WHERE HIREDATE1 = '01-MAR-81';

SELECT * FROM EMP
WHERE HIREDATE1 BETWEEN '01-JAN-81' AND '31-DEC-81';

의 경우는 내부적으로 비교되는 값에서 투데이트 함수를 이용하여 처리를 하지만
의 경우 컬럼 부분이 TO_CHAR을 이용하여 변동되기 때문에 인덱스를 사용할 수 없
다.이와 같은 사항을 주의하여 쿼리문을 수행하여야 한다. 결론적으로 자주 조건절
에 사용되거나, 데이트 연산 기록(logging), 타임 스탬프로 사용되는 컬럼을 제
외하고는 효과적인 수행을 위해 문자  타입 적용을 고려하는 것이 효과적이다.


2013년 8월 5일 월요일

[ORACLE SGA Tuning]DBMS_SHARED_POOL, Object KEEP

[ORACLE SGA Tuning]DBMS_SHARED_POOL, Object KEEP

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




DBMS_SHARED_POOL을 이용한 KEEP

 Shared Poll에 크기가 큰 프로그램을 KEEP하기 위해서는 아래에 있는 것처럼 DBMS_SHARED_POOL Package를 이용 할 수 있습니다.

SQL> @C:\oracle\ora92\rdbms\admin\dbmspool.sql

패키지가 생성되었습니다.


권한이 부여되었습니다.


뷰가 생성되었습니다.


패키지 본문이 생성되었습니다.

SQL> @C:\oracle\ora92\rdbms\admin\prvtpool.plb

뷰가 생성되었습니다.


패키지 본문이 생성되었습니다.

SQL> grant execute on dbms_shared_pool to scott;

권한이 부여되었습니다.

Object를 KEEP하는 방법은 다음과 같습니다.

Procedure,Function,Package : exec dbms_shared_pool.keep(‘pname’,’p’)
Trigger : exec dbms_shared_pool.keep(‘tr_emp’,’r’)
Sequence : exec dbms_shared_pool.keep(‘seq_empno,’q’)
SQL문은 아래와 같은 방법으로 KEEP 합니다.

예를들어 select empno, ename, sal from emp where deptno = ‘20’ 라는 SQL문장을 Library Cache안의 Shared Cursor 부분에 KEEP하기 위해서는 아래처럼 하면 됩니다…

SQL> conn scott/tiger
연결되었습니다.

SQL> select empno, ename, sal from emp where deptno = 20;

    EMPNO ENAME            SAL
---------- ---------- ----------
      7369 SMITH            800
      7566 JONES            2975
      7788 SCOTT            3000
      7876 ADAMS            1100
      7902 FORD            3000

SQL> conn / as sysdba
연결되었습니다.

SQL> select address, hash_value from v$sqlarea
  2  where sql_text = 'select empno, ename, sal from emp where deptno = 20';

ADDRESS  HASH_VALUE
-------- ----------
7856AC4C 1137127237  <- 원하는 SQL문장에 대한 주소와 해시 값

아래 명령으로  KEEP 합니다.

SQL> exec dbms_shared_pool.keep('7856AC4C, 1137127237','c');

PL/SQL 처리가 정상적으로 완료되었습니다.

Object의 KEEP 상태는 다음으로 체크 가능 합니다.

SQL> select distinct name, sharable_mem, loads
  2  from v$db_object_cache
  3  where name like '%emp%'
  4  and kept = 'YES';

NAME                                      SHARABLE_MEM      LOADS
------------ ----------------------------------------------
select empno, ename, sal from emp where deptno = 20  1469          1

또는 exec dbms_shared_pool.sizes(0)로 확인 가능 합니다. 이 sizes라는 procedure는 제한된 사이크 이상의 keep된 Object를 나타내 줍니다.

SQL> set serveroutput on size 2000
SQL> exec dbms_shared_pool.sizes(0)  -> buffer overflow가 나더라도 pin시킬(KEEP할) SQL문장을 찾을 수는 있습니다.

각 Object를 Shared Pool에 유지하던 것을 해제 할 때는 아래의 unkeep 프로시저를 이용 합니다.

SQL> exec dbms_shared_pool.unkeep('7856AC4C, 1137127237','c');

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> select distinct name, sharable_mem, loads
  2  from v$db_object_cache
  3  where name like '%emp%'
4  and kept = 'YES';

결과가 없겠죠…


아래는 DBMS_SHARED_POOL.keep procedure 명셉니다… 메타링크 자료니 참고 하세요…

PROCEDURE:DBMS_SHARED_POOL.KEEP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Version/s:  7.1+, 8.0, 8.1
See Also:  [NOTE:67537.1] The Purpose of DB Package Reference Articles
            [NOTE:67569.1] DBMS_SHARED_POOL Package Description
 
Specification:
  procedure keep(name varchar2, flag char DEFAULT 'P');
 
Description:
  Keep an object in the shared pool.  Once an object has been keeped in
    the shared pool, it is not subject to aging out of the pool.  This
    may be useful for certain semi-frequently used large objects since
    when large objects are brought into the shared pool, a larger
    number of other objects (much more than the size of the object 
    being brought in, may need to be aged out in order to create a
    contiguous area large enough.
    WARNING:  This procedure may not be supported in the future when
    and if automatic mechanisms are implemented to make this 
    unnecessary.
 
  Input arguments:
    name
      The name of the object to keep.  There are two kinds of objects:
      PL/SQL objects, triggers, sequences which are specified by name,
          and SQL cursor objects which are specified by a two-part number
      (indicating a location in the shared pool).  For example:
        dbms_shared_pool.keep('scott.hispackage')
      will keep package HISPACKAGE, owned by SCOTT.  The names for
      PL/SQL objects follows SQL rules for naming objects (i.e., 
      delimited identifiers, multi-byte names, etc. are allowed).
      A cursor can be keeped by
        dbms_shared_pool.keep('0034CDFF, 20348871')
      The complete hexadecimal address must be in the first 8 characters.
      The value for this identifier is the concatonation of the
      'address' and 'hash_value' columns from the v$sqlarea view.  This
      is displayed by the 'sizes' call above.
      Currently 'TABLE' and 'VIEW' objects may not be keeped.
    flag
      This is an optional parameter.  If the parameter is not specified,
        the package assumes that the first parameter is the name of a
        package/procedure/function and will resolve the name.  It can also
        be set to 'P' or 'p' to fully specify that the input is the name
        of a package/procedure/function.
       
        Other FLAG options are:
          'T' or 't'        to specify that the input is the name of a type.
          'R' or 'r'        to specify that the input is the name of a trigger 
          'Q' or 'q'        to specify that the input is the name of a sequence.
          other        In case the first argument is a cursor address and 
                        hash-value, the parameter should be set to any 
                        character except 'P','p','Q','q','R','r','T' or 't'.
 
  Exceptions:
    An exception will raised if the named object cannot be found.