www.1q.co.kr(park1q.com)

ID :  Password : Auto  

   ȸ¿ø:0¸í / ¼Õ´Ô:1¸í
 

 

Technote

ÀÚ·á ¹× °ü¸®ÆÁ

  • DBA Notes
  • Q & A

    ºÏ¸¶Å©
  • Asktom
       (Oracle ÀÇ ´ëÇ¥ Forum)
  • Technical Bulltin(KR)
       (±â¼úÁö¿ø°Ô½ÃÆÇ)
  • Dbazine

  •  

     


     Oracle Stored java procedure ¸¦ ÀÌ¿ëÇÑ OS ÇÁ·Î±×·¥ ½ÇÇà
    park1q  2013-05-16 16:39:38, Á¶È¸ : 5,875, Ãßõ : 1629

    1. ¸ñÀû

     

    - Java ÀÇ Stored ÇÁ·Î½ÃÁ®¸¦ ÀÌ¿ëÇØ¼­ OS ÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æ º»´Ù. ¹°·Ð º¸¾È ¹®Á¦ ¶§¹®¿¡ ÀûÁö¾ÊÀº ¹®Á¦°¡ ¹ß»ýµÉ¼ö´Â ÀÖÀ¸³ª, ´ë¿ë·®À¸·Î µ¥ÀÌŸ¸¦ ·ÎµùÇØ¾ß ÇÏ´Â »óȲÀ̰ųª µ¥ÀÌŸ¸¦ À¥¿¡¼­ ¹é¾÷ÇÏ´Â ±â´ÉÀ» Ãß°¡ÇѴٰųª ÇÏ´Â ¿ä±¸ »çÇ× ¹ß»ý½Ã À¯¿ëÇÏ°Ô »ç¿ëµÉ °ÍÀ¸·Î ÆÇ´ÜµÈ´Ù.

     

    2. Ȱ¿ë ¹üÀ§

    ¡¡

    - °èÃø ½Ã½ºÅÛ

    - À̵¿ Åë½Å ÅëÈ­ ±â·Ï

    - POS (±¸¸Å½ÃÁ¡ °ü¸® ½Ã½ºÅÛ)

    ¡¡

    3. »çÀü Áغñ »çÇ× 

    ¡¡

    - À¯´Ð½º ¶Ç´Â ¸®´ª½º´Â À©µµ¿ìÁ´Ù ÈξÀ ¸¹Àº COMMAND LINE INTERFACE ¸¦ °¡Áö´Â À¯Æ¿¸®Æ¼¸¦ Á¦°øÇÑ´Ù. ¿©±â¼­´Â ls , ps , grep , awk µîÀÌ »ç¿ëµÇ´Âµ¥, »çÀü¿¡ c:oracledbabin °ú °°Àº µð·ºÅ丮¸¦ ÁöÁ¤Çϰí path ¸¦ Àâ¾Æ ÁÖ´Â ÀÏÀÌ ÇÊ¿äÇÏ´Ù.

    ¡¡

    4. ÇÁ·Î½ÃÁ® »ý¼º

    ¡¡

    -

    create or replace and compile java source named util as
    import java.io.*;
    import java.lang.*;

    public class Util extends Object
    {
      public static int RunThis(String args)
      {
      Runtime rt = Runtime.getRuntime();
      int        rc = -1;

      try
      {
         Process p = rt.exec(args);

         int bufSize = 4096;
         BufferedInputStream bis =
          new BufferedInputStream(p.getInputStream(), bufSize);
         int len;
         byte buffer[] = new byte[bufSize];

         // Echo back what the program spit out
         while ((len = bis.read(buffer, 0, bufSize)) != -1)
            System.out.write(buffer, 0, len);

         rc = p.waitFor();
      }
      catch (Exception e)
      {
         e.printStackTrace();
         rc = -1;
      }
      finally
      {
         return rc;
      }
      }
    }

    /

    create or replace function RUN_CMD(p_cmd in varchar2) return number
    as
    language java
    name 'Util.RunThis(java.lang.String) return integer';

    create or replace procedure RC(p_cmd in varchar2)
    as
      x number;
    begin
      x := run_cmd(p_cmd);
    end;
    /
    EXEC    dbms_java.grant_permission('TEST','java.io.FilePermission','D:oracleora92binimp.exe','execute');
    EXEC    dbms_java.grant_permission('TEST','java.io.FilePermission','D:oracleora92binexp.exe','execute');
    EXEC    dbms_java.grant_permission('TEST','java.io.FilePermission','D:oracleora92binsqlldr.exe','execute');
    EXEC    dbms_java.grant_permission('TEST','java.io.FilePermission','D:oracleDBABIN*','execute');
    EXEC    dbms_java.grant_permission('TEST','java.io.FilePermission','D:oracleDBABATCHBIN*','execute,read,write');
    EXEC    dbms_java.grant_permission('TEST','java.io.FilePermission','D:oracleDBABATCHSDAT*','read,write');
    EXEC    dbms_java.grant_permission('TEST','java.lang.RuntimePermission','*','writeFileDescripter') ;

    /

    ¡¡

    5. »ç¿ë¿¹

    ¡¡

    - Win32 Shell

    : _S_GET_TO_DO_LIST.bat

    @echo off
    c:windowssystem32cmd.exe /c "D:oracleDBABINfind2 D:oracleDBABATCHSDAT -name DS*.txt > d:oracleDBABATCHBINS_to_do.dat"

    :  _S_MAKE_CONTROL_FILE.bat

    @echo off
    c:windowssystem32cmd.exe /c "echo LOAD DATA > d:oracleDBABATCHBINub_rawdata_s_p.ctl"
    c:windowssystem32cmd.exe /c "cat d:oracleDBABATCHBINS_to_do.dat|gawk "{print "INFILE '" $1"'"}" >> d:oracleDBABATCHBINub_rawdata_s_p.ctl"
    c:windowssystem32cmd.exe /c "echo APPEND INTO TABLE UB_RAWDATA_S_P >> d:oracleDBABATCHBINub_rawdata_s_p.ctl"
    c:windowssystem32cmd.exe /c "echo FIELDS TERMINATED BY ',' >> d:oracleDBABATCHBINub_rawdata_s_p.ctl"
    c:windowssystem32cmd.exe /c "echo (MEASURE_DATE, SENSOR_CODE, MEASURE_TIME, MEASURE_VALUE) >> d:oracleDBABATCHBINub_rawdata_s_p.ctl"

     

    :_S_LOADER_TO_RAW_S_P.bat

    c:windowssystem32cmd.exe /c "d:oracleora92binsqlldr.exe ubiware/ubiware control=D:oracleDBABATCHBINub_rawdata_s_p.ctl log=D:oracleDBABATCHBINub_rawdata_s_p.log direct=true readsize=10245670"

     

    : _S_DEL_COMPLETED_FILE.bat

    c:windowssystem32cmd.exe /c "for /f %%Y in (D:oracleDBABATCHBINS_to_do.dat) do call d:oracleDBABINrm.exe -rf "%%Y""

     

    - Procedure

     

    CREATE OR REPLACE PROCEDURE PRC_LOAD_RAW_S
    IS
    n_todo_file_cnt NUMBER(5) ;
    n_result1       NUMBER(1) ;
    n_result2       NUMBER(1) ;
    BEGIN

      BEGIN
      GET_DIR_LIST('D:oracleDBABATCHSDAT') ;
      END ;
      SELECT COUNT(*)
        INTO n_todo_file_cnt
        FROM DIR_LIST
       WHERE FILENAME NOT LIKE 'LAST%' ;
    -- D:oracleDBABATCHDAT ¿¡ ÀÛ¾÷ÇÒ µ¥ÀÌŸȭÀÏÀÌ ÀÖ´ÂÁö¸¦ °Ë»ç
      IF n_todo_file_cnt > 0 THEN
         SELECT RUN_CMD('D:oracleDBABATCHBIN_S_GET_TO_DO_LIST.bat')
           INTO n_result1
           FROM DUAL ;
         IF n_result1 > 0 THEN
           RETURN ;
         END IF ;
    -- CONTROLFILE »ý¼º          
         BEGIN
           RC('D:oracleDBABATCHBIN_S_MAKE_CONTROL_FILE.bat') ;
         END ;
    -- Á¤Àû Å×ÀÌºí¿¡ LOADING    
         SELECT RUN_CMD('D:oracleDBABATCHBIN_S_LOADER_TO_RAW_S_P.bat')
           INTO n_result2
           FROM DUAL ;
         IF n_result2 > 0 THEN
           RETURN ;
         END IF ;
    -- ÀÛ¾÷ ¿Ï·áµÈ È­ÀÏ »èÁ¦    
         BEGIN
           RC('D:oracleDBABATCHBIN_S_DEL_COMPLETED_FILE.bat') ;
         END ;
       END IF ;
       COMMIT ;
       RETURN ;
    END ;

     

    - 1ºÐ¿¡ Çѹø¾¿ ½ÇÇàÇÏ´Â Job »ý¼º

    begin
      sys.dbms_job.submit(job => :job,
                          what => 'PRC_LOAD_RAW_S ;',
                          next_date => to_date('06-04-2005 16:14:08', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'sysdate+1/1440');
      commit;
    end;
    /
    ¡¡

    6. °á°ú

    ¡¡

    - 2°³ÀÇ µ¿ÀÏÇÑ JOB ÀÌ µ¿½Ã¿¡ ¼öÇàÇϵµ·Ï Å×½ºÆ®µµ ÇØ º¸¾ÒÀ¸³ª ¼öÇà °á°ú ¼±ÀÛ¾÷ÀÌ ³¡³ªÁö ¾Ê°í¼­´Â µÎ¹øÂ° ÀÛ¾÷ÀÌ ¼öÇàµÇÁö ¾ÊÀ½ÀÌ È®ÀÎ µÇ¾ú´Ù.

    - OS ÀÇ ¹èÄ¡ ½ºÄÉÁì·¯¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì¸¦ Oracle ·Î ÀÏ¿øÈ­ ÇÔÀ¸·Î½á ÀϰüµÈ °ü¸®¹× ¼º´É Çâ»óÀ» °¡Á® ¿Ã¼ö ÀÖÀ»°ÍÀÌ´Ù.

     

    ¡¡



      ÃßõÇϱâ ÇÁ¸°Æ®   ¸ñ·Ïº¸±â

    Copyright 1999-2026 Zeroboard

     

     
     
    [Today:4 / Total:174371]    Design by p@rk1q