반응형

환경 : tomcat


-> log4sql.jar 파일을

tomcat root / common / lib 밑으로 복사

환경 설정 정보를 보고 싶다면... jar파일을 열어서 보면

core/log/log4sql_configuration.properties 파일의 환경을 수정하면 된다...

이클립스 상에 서버 설정의 Server.xml 파일을 열어
초기 설정 값을 -> 변경설정으로 사용 드라이버 변경

 초기 설정
 <Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver"


 변경 설정
 <Resource auth="Container"  driverClassName="core.log.jdbc.driver.OracleDriver"


Server 를 실행하고 console 로그를 열어보면

/**P*/ 와 같이 분석은 되나...

PL/SQL은 안되는것 같다... -_-... 우린 거의다 PL/SQL인디... -_-ㅋ

즉, 1 row를 insert 하였고, 실행시간은 00.000 -> 측정이 그닥... 후후 너무 빨라서 그런건가 -_-ㅋ




<2011-04-21 10:52:09.458><INFO ><INSERT INTO ACCESS_LOG( PRG_CD, LOGIN_ID, ACCESS_TIME, PROCESS, METHOD, RETURN_JSP, ACCESS_IP )
VALUES('mbs,'mb14',sysdate,'/mbs/mbs.InfoX.do','LIST','/mbr/MbrInfo.jsp','127.0.0.1')>
[2011-04-21 10:52:09] [DEBUG]『msb.service.process.sys.AuthManager:execute(174)』 Elapsed Time [0:00:00.000]
INSERT INTO ACCESS_LOG( PRG_CD, LOGIN_ID, ACCESS_TIME, PROCESS, METHOD, RETURN_JSP, ACCESS_IP )
VALUES( 'mbs' /**P*/, 'mb14' /**P*/,sysdate, '/mbs/mbs.InfoX.do' /**P*/, 'LIST' /**P*/, '/mbr/MbrInfo.jsp' /**P*/, '127.0.0.1' /**P*/)
Query Result[INSERT]: 1row

반응형

'Database' 카테고리의 다른 글

무료 DB 접근 툴  (0) 2019.08.19
무료 ERD 툴 ERMASTER  (0) 2019.08.08
damo 암호화 컬럼 복원시 주의사항  (0) 2017.08.20
Sybase IQ Administrator 사용 Script  (0) 2012.10.18
SQL LITE 사용 프로그램  (0) 2010.04.14
반응형

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html



Oracle Database 10g Release 2 JDBC Drivers


You must accept the OTN Development and Distribution License Agreement to download this software.
Accept License Agreement | Decline License Agreement

Oracle Database 10g Release 2 (10.2.0.5) JDBC Drivers

 JavaDoc (4,383,404 bytes)
 README
 
JDBC Thin for All Platforms
 classes12.jar (1,621,582 bytes) - for use with JDK 1.2 and JDK 1.3
 classes12_g.jar (2,070,298 bytes) - same as classes12.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 classes12dms.jar (1,629,454 bytes) - same as classes12.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
 classes12dms_g.jar (2,078,718 bytes) - same as classes12dms.jar except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14.jar (1,569,316 bytes) - classes for use with JDK 1.4 and 1.5
 ojdbc14_g.jar (1,965,422 bytes) - same as ojdbc14.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14dms.jar (1,576,882 bytes) - same as ojdbc14.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
 ojdbc14dms_g.jar (1,973,634 bytes) - same as ojdbc14dms.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 demo.tar (604,160 bytes) - contains sample JDBC programs.
 
Note: For platform specific JDBC-OCI libraries See Instant Client


Oracle Database 10g Release 2 (10.2.0.4) JDBC Drivers

 JavaDoc (4,383,404 bytes)
 README
 
JDBC Thin for All Platforms
 classes12.jar (1,609,607 bytes) - for use with JDK 1.2 and JDK 1.3
 classes12_g.jar (2,055,921 bytes) - same as classes12.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 classes12dms.jar (1,617,382 bytes) - same as classes12.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
 classes12dms_g.jar (2,064,313 bytes) - same as classes12dms.jar except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14.jar (1,555,682 bytes) - classes for use with JDK 1.4 and 1.5
 ojdbc14_g.jar (1,950,033 bytes) - same as ojdbc14.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14dms.jar (1,563,375 bytes) - same as ojdbc14.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
 ojdbc14dms_g.jar (1,958,237 bytes) - same as ojdbc14dms.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 orai18n.jar (1,646,178 bytes) - NLS classes for use with JDK 1.2, 1.3, 1.4, and 1.5. This jar file replaces the old nls_charset jar/zip files.
 demo.tar (604,160 bytes) - contains sample JDBC programs.
 
Note: For platform specific JDBC-OCI libraries See Instant Client


Oracle Database 10g Release 2 (10.2.0.3) JDBC Drivers

 JavaDoc (4,383,404 bytes)
 README
 
JDBC Thin for All Platforms
 classes12.jar (1,600,090 bytes) - for use with JDK 1.2 and JDK 1.3
 classes12_g.jar (2,044,594 bytes) - same as classes12.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 classes12dms.jar (1,607,745 bytes) - same as classes12.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
 classes12dms_g.jar (2,052,968 bytes) - same as classes12dms.jar except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14.jar (1,545,954 bytes) - classes for use with JDK 1.4 and 1.5
 ojdbc14_g.jar (1,938,906 bytes) - same as ojdbc14.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14dms.jar (1,553,561 bytes) - same as ojdbc14.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
 ojdbc14dms_g.jar (1,947,136 bytes) - same as ojdbc14dms.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 orai18n.jar (1,645,114 bytes) - NLS classes for use with JDK 1.2, 1.3, 1.4, and 1.5. This jar file replaces the old nls_charset jar/zip files.
 ons.jar (48,492 bytes) - for use by the pure Java client-side Oracle Notification Services (ONS) deamon.
 demo.tar (604,160 bytes) or demo.zip (529,267 bytes) - contains sample JDBC programs.
 
Note: For platform specific JDBC-OCI libraries See Instant Client


Oracle Database 10g Release 2 (10.2.0.2) JDBC Drivers

 JavaDoc (4,383,404 bytes)
 README
 
JDBC Thin for All Platforms
 classes12.jar (1,594,191 bytes) - for use with JDK 1.2 and JDK 1.3 
 classes12_g.jar (2,038,127 bytes) - same as classes12.jar, except that classes were compiled with "javac -g" and contain some tracing information. 
 classes12dms.jar (1,601,843 bytes) - same as classes12.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service. 
 classes12dms_g.jar (2,046,467 bytes) - same as classes12dms.jar except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14.jar (1,540,457 bytes) - classes for use with JDK 1.4 and 1.5
 ojdbc14_g.jar (1,932,834 bytes) - same as ojdbc14.jar, except that classes were compiled with "javac -g" and contain some tracing information. 
 ojdbc14dms.jar (1,548,006 bytes) - same as ojdbc14.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service. 
 ojdbc14dms_g.jar (1,940,478 bytes) - same as ojdbc14dms.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 orai18n.jar (1,645,109 bytes) - NLS classes for use with JDK 1.2, 1.3, 1.4, and 1.5. This jar file replaces the old nls_charset jar/zip files. 
 ons.jar (48,492 bytes) - for use by the pure Java client-side Oracle Notification Services (ONS) deamon.
 demo.tar (604,160 bytes) or demo.zip (529,267 bytes) - contains sample JDBC programs.
 
Note: For platform specific JDBC-OCI libraries See Instant Client



Oracle Database 10g Release 2 (10.2.0.1.0) JDBC Drivers

 JavaDoc (4,383,404 bytes)
 README
 
JDBC Thin for All Platforms
 classes12.jar (1,590,491 bytes) - for use with JDK 1.2 and JDK 1.3 
 classes12_g.jar (2,033,507 bytes) - same as classes12.jar, except that classes were compiled with "javac -g" and contain some tracing information. 
 classes12dms.jar (1,598,183 bytes) - same as classes12.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service. 
 classes12dms_g.jar (2,041,904 bytes) - same as classes12dms.jar except that classes were compiled with "javac -g" and contain some tracing information.
 ojdbc14.jar (1,536,979 bytes) - classes for use with JDK 1.4 and 1.5
 ojdbc14_g.jar (1,928,714 bytes) - same as ojdbc14.jar, except that classes were compiled with "javac -g" and contain some tracing information. 
 ojdbc14dms.jar (1,544,468 bytes) - same as ojdbc14.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service. 
 ojdbc14dms_g.jar (1,936,765 bytes) - same as ojdbc14dms.jar, except that classes were compiled with "javac -g" and contain some tracing information.
 orai18n.jar (1,551,155 bytes) - NLS classes for use with JDK 1.2, 1.3, 1.4, and 1.5. This jar file replaces the old nls_charset jar/zip files. 
 ons.jar (48,492 bytes) - for use by the pure Java client-side Oracle Notification Services (ONS) deamon.
 demo.tar (604,160 bytes) or demo.zip (529,267 bytes) - contains sample JDBC programs.
 
Note: For platform specific JDBC-OCI libraries See Instant Client

반응형
반응형

흠흠흠...

문자열 변환 함수 translate

뭐 쉽게 얘길하면

TRANSLATE("문자열", "찾을집합","변경집합")으로 변환가능.

중요한 것은 찾을 집합에 없는 값은 무조건 그냥 출력한다는 것이다.

ex) SELECT TRANSLATE('ABC-1234-5678', 'abc1234','def5678') FROM DUAL;

즉, 'ABC-1234-5678'에서 찾는 집합 'abc1234'에 매핑되는 값만 'def5678'로 변경된다.

위의 문자열중 매핑 안되는 값은 그냥 출력된다.

매핑 안되는 문자열값 : ABC-5678 이 값들은 찾을 집합에 존재하지 않으므로 그냥 skip하여 출력되며

찾는 집합 변경 집합 
 a
 b
 c
 1
 2 6
 3 7
 4 8

위의 표를 기준으로 볼때 a가 발견되면 d로 변경된다.

아래의 값에서 ABC-는 찾는집합과 변경집합이 없으므로 skip 되며

나머지 값들은 모두 해당 변경 집합으로 변경되어 출력된다.

결과
---------------
ABC-5678-5678

TRANSLATE (string1, search_set, replace_set)

Replaces every instance in string1 of a character from search_set with the corresponding character from replace_set. For example:

    TRANSLATE ('abcd', 'ab', '12') --> '12cd'

If the search set contains more characters than the replace set, then the "trailing" search characters that have no match in the replace set are not included in the result. For example:

    TRANSLATE ('abcdefg', 'abcd', 'zyx') --> 'zyxefg'

The letter 'd' is removed, because it appears in search_set without a corresponding entry in result_set.


TRANSLATE(text USING CHAR_CS) and TRANSLATE(text USING NCHAR_CS)

Translates character data to either the database character set (CHAR_CS) or the national character set (NCHAR_CS). The output datatype will be either VARCHAR2 or NVARCHAR2, depending on whether you are converting to the database or the national character set, respectively.

TRANSLATE...USING is an ISO standard SQL function. Starting with Oracle9i Database Release 1, you can simply assign a VARCHAR2 to an NVARCHAR2, (and vice versa), and Oracle will handle the conversion implicitly. If you want to make such a conversion explicit, you can use TO_CHAR and TO_NCHAR to convert text to database and national character sets, respectively. Oracle recommends the use of TO_CHAR and TO_NCHAR over TRANSLATE...USING, because those functions support a greater range of input datatypes.


출처 : 영어부분은 Oracle PL/SQL Programming 책에서 발췌...
반응형
반응형
반응형
반응형

출처 : http://cafe.naver.com/prodba

sysdba로 접속하여 알아낸다...

또한 결과는 alert.log로 찍힌다 ~

$> sqlplus '/as sysdba'

sql>


create trigger logon_denied_to_alert
after servererror on database
declare
message varchar2(4000);
begin
    select 'ip='||sys_context('userenv','ip_address')||',host='||sys_context('userenv ','host')||',osuser='||SYS_CONTEXT('USERENV', 'OS_USER')
    into message
    from dual;
IF (ora_is_servererror(1017)) THEN
message := to_char(sysdate,'Dy Mon dd HH24:MI:SS YYYY') || ' logon denied for ' || message;
sys.dbms_system.ksdwrt(2,message);
end if;
end;
/
반응형

'Database > ORACLE' 카테고리의 다른 글

오라클 TRANSLATE  (0) 2011.03.31
오라클 자격증 신청 절차  (0) 2011.03.28
테이블 정의서 추출 생성 스크립트  (0) 2011.01.06
ORACLE SESSION Monitoring SQL  (0) 2011.01.05
오라클 공부 방법  (0) 2010.12.08
반응형


뭐... 엑셀로 바로 출력하자고 하니...

깔아야 하는것들이 너무 많고 -_-...

버젼별로 차이도 존재하니.. 귀찮아... 하앍....

그래서 걍.. 수작업 -_-

별도로 설치할 필요는 없고

아래와 같이 실행하여 spool 된 파일을 excel에서 불러

다시 가공처리...

뭐... 짜는 것도 그리 어렵지 않지만 후후.... -_-...


 spool '/oracle/20110106_table.txt'

SET SERVEROUTPUT ON;
set serveroutput on size unlimited;

DECLARE

    L_TABLE_NAME VARCHAR2(2000);   
    M_NO NUMBER(9) := 1;
    L_NO NUMBER(9);
   
    CURSOR TABLE_DEF_LIST IS
    select A.TABLE_NAME, B.COMMENTS from USER_TABLES A, USER_TAB_COMMENTS B WHERE A.TABLE_NAME=B.TABLE_NAME
    order by A.TABLE_NAME;

    CURSOR TABLE_LIST IS
     SELECT
               B.COLUMN_NAME "컬럼ID",
               B.COMMENTS "컬럼명",
               A.DATA_TYPE || '(' || A.DATA_LENGTH || ')' "타입",
               A.DATA_LENGTH "길이",
               A.NULLABLE    "NULLABLE",              
               CASE WHEN TRIM(C.COLUMN_NAME) IS NOT NULL THEN 'Y' ELSE 'N' END "KEY",
               DATA_DEFAULT  "DF"
         FROM USER_TAB_COLS A, USER_COL_COMMENTS B, DBA_CONS_COLUMNS C
        WHERE A.TABLE_NAME  = B.TABLE_NAME
          AND A.COLUMN_NAME = B.COLUMN_NAME
          AND A.TABLE_NAME = C.TABLE_NAME(+)
          AND A.COLUMN_NAME = C.COLUMN_NAME(+)
          AND A.TABLE_NAME = L_TABLE_NAME;
         
    N_DEFAULT VARCHAR2(2000);   
   
    TABLE_LIST_CNT TABLE_LIST%ROWTYPE;
         
BEGIN

    BEGIN
   
        FOR TABLE_DEF_LIST_GET IN TABLE_DEF_LIST LOOP

            L_TABLE_NAME := TABLE_DEF_LIST_GET.TABLE_NAME;
           
            DBMS_OUTPUT.PUT_LINE('순번        : ' || M_NO);
            DBMS_OUTPUT.PUT_LINE('테이블 ID   : ' || TABLE_DEF_LIST_GET.TABLE_NAME);
            DBMS_OUTPUT.PUT_LINE('테이블 설명 : ' || TABLE_DEF_LIST_GET.COMMENTS);
           
            DBMS_OUTPUT.PUT_LINE('No.' || '***' || '컬럼ID' || '***' || '컬럼명' || '***' || '타입' || '***' || '길이' || '***' || 'NULL' || '***'|| 'KEY' || '***' ||'DEFAULT');
           
            M_NO := M_NO + 1;
            L_NO := 1;
           
            BEGIN
           
                FOR TABLE_LIST_CNT IN TABLE_LIST LOOP
               
                    --FETCH TABLE_LIST INTO TABLE_LIST_CNT; -- 한행 씩 읽기
                    EXIT WHEN TABLE_LIST%NOTFOUND;        -- 데이터가 발견되지 않으면 종료
                   
                    N_DEFAULT := '';
                    N_DEFAULT := TABLE_LIST_CNT.DF ;      -- LONG 데이터를 VARCHAR2로 변환
                   
                    DBMS_OUTPUT.PUT_LINE(L_NO || '***' || TABLE_LIST_CNT.컬럼ID || '***' || TABLE_LIST_CNT.컬럼명 || '***' || TABLE_LIST_CNT.타입 || '***' || TABLE_LIST_CNT.길이 || '***' || TABLE_LIST_CNT.NULLABLE || '***'|| TABLE_LIST_CNT.KEY || '***' ||N_DEFAULT);
                   
                    L_NO := L_NO + 1;
                END LOOP;
               
            EXCEPTION WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE('** 테이블 컬럼  내용 조회 오류 발생 ! ** ');   
            END;

            DBMS_OUTPUT.PUT_LINE(' '); 
            DBMS_OUTPUT.PUT_LINE('===========================================================');
            DBMS_OUTPUT.PUT_LINE(' ');
             
        END LOOP;
       
    EXCEPTION WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('** 테이블 조회 오류 발생 ! ** ');   
    END;
           
END;
/

spool off




반응형
반응형

  SELECT   ROUND (BITAND (s.ownerid, 65535)) parent_session_sid,
           ROUND (BITAND (s.ownerid, 16711680) / 65536) parent_session_instid,
           s.INST_ID,
           s.SADDR,
           s.SID,
           s.SERIAL#,
           s.AUDSID,
           s.PADDR,
           s.USER#,
           s.USERNAME,
           s.COMMAND,
           s.OWNERID,
           s.TADDR,
           s.LOCKWAIT,
           s.STATUS,
           s.SERVER,
           s.SCHEMA#,
           s.SCHEMANAME,
           s.OSUSER,
           s.PROCESS,
           s.MACHINE,
           s.PORT,
           s.TERMINAL,
           UPPER (s.PROGRAM) PROGRAM,
           s.TYPE,
           s.SQL_ADDRESS,
           s.SQL_HASH_VALUE,
           s.SQL_ID,
           s.SQL_CHILD_NUMBER,
           s.PREV_SQL_ADDR,
           s.PREV_HASH_VALUE,
           s.PREV_SQL_ID,
           s.PREV_CHILD_NUMBER,
           s.PLSQL_ENTRY_OBJECT_ID,
           s.PLSQL_ENTRY_SUBPROGRAM_ID,
           s.PLSQL_OBJECT_ID,
           s.PLSQL_SUBPROGRAM_ID,
           s.MODULE,
           s.MODULE_HASH,
           s.ACTION,
           s.ACTION_HASH,
           s.CLIENT_INFO,
           s.FIXED_TABLE_SEQUENCE,
           s.ROW_WAIT_OBJ#,
           s.ROW_WAIT_FILE#,
           s.ROW_WAIT_BLOCK#,
           s.ROW_WAIT_ROW#,
           s.LOGON_TIME,
           s.LAST_CALL_ET,
           s.PDML_ENABLED,
           s.FAILOVER_TYPE,
           s.FAILOVER_METHOD,
           s.FAILED_OVER,
           s.RESOURCE_CONSUMER_GROUP,
           s.PDML_STATUS,
           s.PDDL_STATUS,
           s.PQ_STATUS,
           s.CURRENT_QUEUE_DURATION,
           s.CLIENT_IDENTIFIER,
           s.BLOCKING_SESSION_STATUS,
           s.BLOCKING_INSTANCE,
           s.BLOCKING_SESSION,
           s.SEQ#,
           s.EVENT#,
           s.EVENT,
           s.P1TEXT,
           s.P1,
           s.P1RAW,
           s.P2TEXT,
           s.P2,
           s.P2RAW,
           s.P3TEXT,
           s.P3,
           s.P3RAW,
           s.WAIT_CLASS_ID,
           s.WAIT_CLASS#,
           s.WAIT_CLASS,
           s.WAIT_TIME,
           s.SECONDS_IN_WAIT,
           s.STATE,
           s.SERVICE_NAME,
           s.SQL_TRACE,
           s.SQL_TRACE_WAITS,
           s.SQL_TRACE_BINDS,
           s.ECID,
           stat.cpu - stat.CPU_this_call_start cpu_this_call,
           stat.CPU,
           stat.UGA_memory,
           stat.PGA_memory,
           stat.Commits,
           stat.Rollbacks
    FROM   GV$SESSION S,
           (  SELECT   ss.inst_id stat_inst_id,
                       ss.sid stat_sid,
                       SUM(DECODE (sn.name,
                                   'CPU used when call started', ss.VALUE,
                                   0))
                          CPU_this_call_start,
                       SUM(DECODE (sn.name,
                                   'CPU used by this session', ss.VALUE,
                                   0))
                          CPU,
                       SUM (DECODE (sn.name, 'session uga memory', ss.VALUE, 0))
                          uga_memory,
                       SUM (DECODE (sn.name, 'session pga memory', ss.VALUE, 0))
                          pga_memory,
                       SUM (DECODE (sn.name, 'user commits', ss.VALUE, 0))
                          commits,
                       SUM (DECODE (sn.name, 'user rollbacks', ss.VALUE, 0))
                          rollbacks
                FROM   GV$sesstat ss, GV$statname sn
               WHERE   ss.STATISTIC# = sn.STATISTIC# AND ss.inst_id = sn.inst_id
                       AND (   sn.name = 'CPU used when call started'
                            OR sn.name = 'CPU used by this session'
                            OR sn.name = 'session uga memory'
                            OR sn.name = 'session pga memory'
                            OR sn.name = 'user commits'
                            OR sn.name = 'user rollbacks')
            GROUP BY   ss.inst_id, ss.sid) stat
   WHERE   (    (s.USERNAME IS NOT NULL)
            AND (NVL (s.osuser, 'x') <> 'SYSTEM')
            AND (s.TYPE <> 'BACKGROUND'))
           AND ( (stat.stat_inst_id = s.inst_id) AND (stat.stat_sid = s.sid))
ORDER BY   "PROGRAM", OWNERID
반응형
반응형

기본은 오라클 교재입니다.

글을 보니 오라클을 M/A 하는 회사에 들어가신것 같은데요.

버젼은 9i를 기본으로 10gNF, 11gNF 순으로 공부하시기 바랍니다.

아직 현업에서 8이나 8i 버젼을 사용하는 곳도 꽤 있어서

9i부터 시작해야 전체적으로 볼 수 있을것 같습니다.

그리고 메타링크는 자료가 광범위 하지만

우선 install, upgrade, patch 순으로 공부를 시작해서

case by case study로 TPS를 공부하시구요.

ADTSP까지 공부하시면 일단 M/A에 기본적인 부분은 된거죠.

여기서부터 회사내 밥벌이 하면서 자신이 하고 싶은 분야를 찾아서 해야합니다.

RAC 전문가, 복구전문가를 하거나 SQL 전문가, 모델링 전문가 등으로 나가도 되구요.

일단 기본을 만든 후에 주위에 업계 선배들이 어떤 일을 하는지.

자신에게 맞는 일이 무엇인지 곰곰히 생각하고 결정하시기 바랍니다.

(뭐 한국 DBA의 현실은 만능을 원하지만요^^;; 그래도 주종목은 있어야겠죠?)

반응형
반응형

1. 해당프로세스의 PID확인 후 수행
select s.sid, p.sid from v$session s, v$process p
where s.paddr=p.addr and p.spid="OSPID";

2. OSPID로 조회된 s.sid number을 이용하여 수행중인 SQL query를 확인
set long 10000
select a.sql_text from v$sqltext a,v$session b
where a.address=b.sql_address and
a.hash_valur=b.sql_hash_value and
b.sid=SID NUMBER order by a.piece;

 

OSPID에 processes ID넣으시면 되구요..

 

kill은 ALTER SYSTEM KILL SESSION '세션ID,시리얼번호';

v$session에서 조회하면sid,serial# 항목에 나오죠..

 

반응형

'Database > ORACLE' 카테고리의 다른 글

ORACLE SESSION Monitoring SQL  (0) 2011.01.05
오라클 공부 방법  (0) 2010.12.08
오라클 일일 모니터링  (1) 2010.11.05
오라클 이기종간의 DB 복제  (0) 2010.10.15
ORACLE PATCHSET Upgrade  (0) 2010.09.14
반응형

시스템 유지보수(SM)에는

디스크의 증가량을 주별 또는 월별로 모니터링하여 미리 할당할 수도 있고

보고용으로도 사용할 수 있도록 DB에 관리용 테이블을 만들어

자동으로 저장할 수 있도록 해 놓으면 시간이 많이 지난 다음에도

추이를 알 수 있어 유용합니다.

 

테이블스페이스 사용율(exec_tbs_usage.sh)을

매일 야간에 Crontab에서 실행할 수 있도록 등록하여 사용하는 샘플입니다.

 

% vi exec_tbs_usage.sh
#---------------------------------------------------------
# ORACLE 환경변수
#---------------------------------------------------------
export ORACLE_SID=TESTDB

export ORACLE_BASE=/oracle/app

export ORACLE_HOME=$ORACLE_BASE/product/10.2

      :

#-------------------------------------------------
# 실행할 쉘이 존재하는 절대경로
#-------------------------------------------------
cd /oracle/app/product/10.2/DBA


echo "DB Tablespace Usage"        > ./log/exec_tbs_usage.log
date                             >> ./log/exec_tbs_usage.log
TABLESPACE_USAGE.sh              >> ./log/exec_tbs_usage.log

 

% vi TABLESPACE_USAGE.sh

#!/usr/bin/ksh

###############################################################################
#
# 일별 테이블스페이스(TABLESPACE) 사용량 저장
#
# *---------------------------------------------------------------------------
# *                 일별  테이블 건수
# *---------------------------------------------------------------------------
# *  Program              : TABLESPACE_USAGE.sh
# *  Object Name          : 없음
# *  Object Type          : PL/SQL
# *  OutPut Table         : DBMANAGER.TABLESPACE_USAGE
# *  Create Date          : 2010-06-10
# *-------------------------------------------------------------------------*/
# *
# *  Execution Sample     : exec_tablespace_usage.sh (cron job)
# *                         TABLESPACE_USAGE.sh
# *                         SQL Exec. : sqlplus / as sysdba
# *
# *-------------------------------------------------------------------------*/
#
###############################################################################

#----------------------------------------------
#-- DB수집정보를 저장할 오라클 계정 생성 및 Grant
#----------------------------------------------
#-- DROP USER DBMANAGER CASCADE;
#-- CREATE USER DBMANAGER IDENTIFIED BY DBMANAGER

#--              DEFAULT TABLESPACE TOOLS TEMPORARY TABLESPACE TEMP;
#--
#-- GRANT SELECT_CATALOG_ROLE, SELECT ANY TABLE, SELECT ANY DICTIONARY TO DBMANAGER;
#-- GRANT UNLIMITED TABLESPACE   TO DBMANAGER;
#-- GRANT BECOME USER            TO DBMANAGER;
#-- GRANT CREATE VIEW            TO DBMANAGER;
#-- GRANT CREATE TABLE           TO DBMANAGER;
#-- GRANT ALTER  SESSION         TO DBMANAGER;
#-- GRANT CREATE SESSION         TO DBMANAGER;
#-- GRANT CREATE SYNONYM         TO DBMANAGER;
#-- GRANT SELECT ANY TABLE       TO DBMANAGER;
#-- GRANT SELECT ANY SEQUENCE    TO DBMANAGER;
#-- GRANT SELECT ANY DICTIONARY  TO DBMANAGER;
#--
#--
#----------------------------------------------
#-- DB수집정보를 저장할TABLE 생성 및 Grant
#----------------------------------------------
#--
#-- DROP TABLE DBMANAGER.TABLESPACE_USAGE PURGE;
#-- CREATE TABLE DBMANAGER.TABLESPACE_USAGE
#--      ( GATHER_DATE     CHAR(8)      DEFAULT TO_CHAR(SYSDATE,'YYYYMMDD') NOT NULL,
#--        TABLESPACE_NAME VARCHAR2(30)           NOT NULL,
#--        ALLOC_KBYTES    NUMBER       DEFAULT 0 NOT NULL,
#--        USED_KBYTES     NUMBER       DEFAULT 0 NOT NULL,
#--        EXEC_DATETIME   DATE         DEFAULT SYSDATE NOT NULL
#--      ) TABLESPACE TOOLS;
#--
#-- CREATE UNIQUE INDEX
#--        DBMANAGER.UK_TABLESPACE_USAGE_01 ON DBMANAGER.TABLESPACE_USAGE(GATHER_DATE, TABLESPACE_NAME)
#--        TABLESPACE TOOLS;

#-- COMMENT ON TABLE DBMANAGER.TABLESPACE_USAGE IS '테이블스페이스 크기 및 사용량';
#--
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.GATHER_DATE     IS '수집 일시';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.TABLESPACE_NAME IS '테이블스페이스 명';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.ALLOC_KBYTES    IS '할당된 크기(KB)';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.USED_KBYTES     IS '사용된 크기(KB)';
#-- COMMENT ON COLUMN DBMANAGER.TABLESPACE_USAGE.EXEC_DATETIME   IS '수행 일시';

#---------------------------------------------------------
# ORACLE 환경변수
#---------------------------------------------------------
export ORACLE_SID=TESTDB

export ORACLE_BASE=/oracle/app

export ORACLE_HOME=$ORACLE_BASE/product/10.2

      :

#-------------------------------------------------
# 실행할 쉘이 존재하는 절대경로
#-------------------------------------------------
cd /sw/oracle/app/product/10.2/DBA

if [ $# != 0 ]
then

    echo "\n-----------------------------------------"
    echo "\n인수(Argument) 갯수가 틀립니다."
    echo "\n실행 예) : TABLESPACE_USAGE.sh"
    echo "\n-----------------------------------------"
    exit
fi

#---------------------------------------------------------
# 입력 값 없음
#---------------------------------------------------------

##################################
##### [ 오라클 PL/SQL Start] #####
##################################

#--------------------
#-- SQL*PLUS 접속
#--------------------
sqlplus -s /nolog<<EOF

SET SERVEROUTPUT ON
SET PAGESIZE 0 SQLPROMPT "" ECHO OFF HEADING OFF FEEDBACK OFF TIMING OFF VERIFY OFF TERMOUT ON TRIMSPOOL ON

---------------------
-- SYS 계정으로 접속
---------------------
connect / as sysdba

DECLARE

-------------------------------------------------------
-- 커서 변수 선언
-------------------------------------------------------
    cursor_insert    INTEGER;
    cursor_delete    INTEGER;

-------------------------------------------------------
-- 데이터 값을 저장할 변수 선언
-------------------------------------------------------
    v_dummy          NUMBER;
    v_gather_date    VARCHAR2(08) := TO_CHAR(SYSDATE,'YYYYMMDD');

-------------------------------------------------------
-- SQL 문장을 저장할 변수 선언
-------------------------------------------------------
    insertStmt       VARCHAR2(2000);
    deleteStmt       VARCHAR2(2000);

    BEGIN

-------------------------------------------------------
-- CURSOR 열기
-------------------------------------------------------
        cursor_insert := DBMS_SQL.OPEN_CURSOR;
        cursor_delete := DBMS_SQL.OPEN_CURSOR;

-----------------------------------------------------------------
-- 중복 데이터에 의한 오류를 방지하기 위해
-- DBMANAGER.TABLESPACE_USAGE에 있는 해당일자(TODAY)의 정보 삭제
-----------------------------------------------------------------
        deleteStmt := 'DELETE /*+ parallel(A 8) */ FROM DBMANAGER.TABLESPACE_USAGE A WHERE A.GATHER_DATE = :gather_date';

        DBMS_SQL.PARSE( cursor_delete, deleteStmt, DBMS_SQL.NATIVE );

        DBMS_SQL.BIND_VARIABLE( cursor_delete, 'gather_date', v_gather_date );

        v_dummy := DBMS_SQL.EXECUTE( cursor_delete );

-------------------------------------------------------
-- DBMANAGER.TABLESPACE_USAGE에 입력(INSERT)
-------------------------------------------------------
        insertStmt := ' INSERT INTO DBMANAGER.TABLESPACE_USAGE                           '||
                      ' ( GATHER_DATE, TABLESPACE_NAME,  ALLOC_KBYTES, USED_KBYTES )     '||
                      ' SELECT :gather_date, C.TABLESPACE_NAME,                          '||
                      '        NVL(A.TOTAL,0)                   ALLOC_KBYTES,            '||
                      '        NVL(A.TOTAL,0) - NVL(B.FREE,0)   USED_KBYTES              '||
                      '   FROM (SELECT TABLESPACE_NAME,                                  '||
                      '                NVL(ROUND((SUM(BYTES)/1024),2),0) TOTAL           '||
                      '           FROM SYS.DBA_DATA_FILES                                '||
                      '          GROUP BY TABLESPACE_NAME) A,                            '||
                      '        (SELECT TABLESPACE_NAME,                                  '||
                      '                NVL(ROUND((SUM(BYTES)/1024),2),0) FREE            '||
                      '           FROM SYS.DBA_FREE_SPACE                                '||
                      '          GROUP BY TABLESPACE_NAME) B,                            '||
                      '        DBA_TABLESPACES             C                             '||
                      '  WHERE C.TABLESPACE_NAME = A.TABLESPACE_NAME(+)                  '||
                      '    AND C.TABLESPACE_NAME = B.TABLESPACE_NAME(+)                  '||
                      '    AND C.TABLESPACE_NAME NOT LIKE '||'''TEMP%'''                   ;
        DBMS_SQL.PARSE( cursor_insert, insertStmt, DBMS_SQL.NATIVE);

        DBMS_SQL.BIND_VARIABLE( cursor_insert, 'gather_date', v_gather_date );

        v_dummy := DBMS_SQL.EXECUTE( cursor_insert );

-------------------------------------------------------
-- CURSOR 닫기
-------------------------------------------------------
        DBMS_SQL.CLOSE_CURSOR( cursor_insert );
        DBMS_SQL.CLOSE_CURSOR( cursor_delete );
        COMMIT;

         EXCEPTION
--            WHEN DUP_VAL_ON_INDEX THEN
--                 DBMS_OUTPUT.PUT_LINE('DUP_VAL_ON_INDEX 에러-중복되는 데이터가 존재');
--            WHEN TOO_MANY_ROWS    THEN
--                 DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS 에러-리턴해야 하는 SELECT문이 하나 이상의 행을 반환');
--            WHEN NO_DATA_FOUND    THEN
--                 DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND 에러-SELECT문이 아무런 데이터 행을 반환하지 못함');
--            WHEN INVALID_CURSOR   THEN
--                 DBMS_OUTPUT.PUT_LINE('INVALID_CURSOR 에러-잘못된 커서 연산');
              WHEN OTHERS           THEN
                   DBMS_OUTPUT.PUT_LINE('ERR CODE : ' || TO_CHAR(SQLCODE));
                   DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);
 END;
/
exit
EOF

 

환경 : Unix, Aix5L, Oracle10gR2

반응형

'Database > ORACLE' 카테고리의 다른 글

오라클 공부 방법  (0) 2010.12.08
오라클에서 사용량 많은 프로세스 죽이기  (0) 2010.12.03
오라클 이기종간의 DB 복제  (0) 2010.10.15
ORACLE PATCHSET Upgrade  (0) 2010.09.14
오라클 라이브러리 (참고문서)  (0) 2010.09.10

+ Recent posts