2009³â 1¿ù 6ÀÏ DB ±¸Ãࡤ¿î¿µ Á¾ÇÕÁ¤º¸ »çÀÌÆ®¿¡ ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù.
Çà»çÀÏÁ¤()
 
 
Home >DB2 ¿î¿µ °¡À̵å
 
 
     

5.1 Embedded SQL

- SQL ±¸¹®À» »ç¿ëÇØ¼­ DB ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¶§, ¾îÇø®ÄÉÀÌ¼Ç ³»¿¡ SQL ±¸¹®ÀÌ Á¤ÀÇ µÇ´Â ¹æ½ÄÀÇ SQL API¸¦ Embedded SQLÀ̶ó Çϸç, Á¤ÀÇ Çü½Ä¿¡ µû¶ó Static Embedded SQL°ú Dynamic Embedded SQL·Î ±¸ºÐÀÌ µÈ´Ù.
(1) Static Embedded SQL
  Á¤ÀÇ: Program³»¿¡ Embed µÈSQL ±¸¹® ¹× SQL ±¸¹®³»ÀÇ DB Object (Ä÷³ À̸§ µî)°¡ ¾îÇø®ÄÉÀÌ
        ¼Ç ½ÇÇàÀüÀÎ °³¹ß½Ã¿¡ ¹Ì¸® Á¤ÀÇµÈ ÇüÅÂÀÇ SQL ±¸¹® Çü½Ä
	
        SQL ±¸¹®¿¡ ÀÇÇØ¼­ ¼öÇàµÇ´Â ÀÛ¾÷ (Á¶È¸ ¹× ¼öÁ¤)½Ã ÇÊ¿äÇÑ data °ª (host variable)
        ¸¸ÀÌ ¾îÇø® ÄÉÀÌ¼Ç °³¹ß½Ã°¡ ¾Æ´Ñ ½ÇÇà½Ã¿¡ ÁöÁ¤µÇ¾î ±× °ª¿¡ µû¶ó SQL ±¸¹®ÀÌ
        ¼öÇàµÈ´Ù.


  Ư¡ 
   1. ¾îÇø®ÄÉÀ̼ÇÀÇ precompile, bind °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. 
      bind °úÁ¤Áß¿¡ DB object¿¡ ´ëÇÑ type, syntax, previlege checkingÀÌ ÀÌ·ç¾îÁö¹Ç·Î, SQL
      ±¸¹®¿¡ Á¤ÀÇµÈ DB Object´Â ¾îÇø®ÄÉÀÌ¼Ç bind½Ã¿¡ ¹Ýµå½Ã DB³»¿¡ Á¸ÀçÇÏ¿©¾ß ÇÑ´Ù.


   2. Package¸¦ ¹Ì¸® »ý¼ºÇϸç, ÀÌ´Â DB2¿¡ ÀÇÇØ¼­ ÀúÀåµÇ°í °ü¸®µÈ´Ù.
      ¾îÇø®ÄÉÀÌ¼Ç bindÈÄ DB³»¿¡ Package°¡ »ý¼ºµÇ¸ç, ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã, ¾Õ¼­ bind °úÁ¤¿¡
      ¼­ »ý¼ºµÈ PackageÀÇ Á¢±Ù °æ·Î (access plan ¶Ç´Â access path)À» ÀÌ¿ëÇÏ¿© ÇØ´ç SQLÀÇ 
      ÃÖÀûÈ­µÈ ¼öÇàÀÌ ÀÌ·ç¾îÁø´Ù.
          
      Dynamic Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÌ ¸Å¹ø ½ÇÇà½Ã¸¶´Ù Package¸¦ ÀÛ¼ºÇؼ­ SQL±¸¹®À» ó
      ¸®ÇÏ´Â °Í¿¡ ºñÇØ ¹Ì¸® bind °úÁ¤¿¡¼­ ÀÛ¼ºµÈ Package¸¦ ¹Ù·Î »ç¿ëÇÔÀ¸·Î½á, Package ÀÛ¼º
      ¿¡ ÇÊ¿äÇÑ overhead¸¦ ´ú¼ö ÀÖ´Ù.
	
   3. Bind °úÁ¤Àº ÃÖÃÊ Çѹø¸¸ ÇÊ¿äÇϳª, »óȲ¿¡ µû¶ó Á¤±âÀûÀ¸·Î rebind¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Ù.
   4. ¹Ýº¹ÀûÀ̰í Á¤ÇüÈ­µÈ ¾÷¹« (¿¹¾à, ÀÜ¾× Á¶È¸µî)¿Í °°Àº »çÀü¿¡ Á¤ÀÇµÈ (pre-defined) Æ®·£
      Àè¼Ç ÇüÅÂÀÇ ¾îÇø®ÄÉÀÌ¼Ç ±¸Çö¿¡ ÀûÇÕÇÏ´Ù.


   ÀåÁ¡
   1. »çÀü¿¡ Package¸¦ ÀÛ¼ºÇؼ­ »ç¿ëÇϹǷÎ, ½ÇÇà ¼Óµµ°¡ ºü¸£´Ù.
   2. ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã°¡ ¾Æ´Ñ, °³¹ß½Ã¿¡ DB object¿¡ ´ëÇÑ »çÀü °Ë»ç°¡ °¡´ÉÇÏ´Ù.


  ´ÜÁ¡
   1. °³¹ß½Ã¿¡ SQL ±¸¹®ÀÌ Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù.
   2. Precompile, bind °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.
(2) Dynamic Embedded SQL
   Á¤ÀÇ: Program³»¿¡ Embed µÈ SQL ±¸¹®ÀÌ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß½Ã°¡ ¾Æ´Ñ, ½ÇÇà½Ã¿¡ Á¤ÀǵǾî
         (¿Ï¼ºµÇ¾î) 󸮵Ǵ SQL ±¸¹® Çü½Ä


   Ư¡
   1. Bind °úÁ¤ÀÌ ÇÊ¿ä¾ø´Ù. 
      Static Embedded SQLÀÇ °æ¿ìó·³ ¹Ì¸® bind °úÁ¤À» °ÅÃÄ ¹Ì¸® Package¸¦ »ý¼ºÇÏ´Â °ÍÀÌ 
      ¾Æ´Ï¶ó, ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã¿¡ SQL ±¸¹®ÀÌ ¿Ï¼ºµÇ¾î DB³»¿¡ Package¸¦ ¸¸µé¾î, ÀÌ 
      Package³»ÀÇ access planÀ» ÀÌ¿ëÇÑ´Ù.
   2. ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ½ÃÁ¡ÀÇ (current) DB2ÀÇ Åë°è Á¤º¸¸¦ ±âÃÊ·ÎÇÑ Package°¡ ÀÛ¼ºµÇ¹Ç·Î, 
      ¸Å¹ø ½ÇÇà½Ã¸¶´Ù ÃÖÀûÈ­µÈ access planÀÌ Á¦°øµÈ´Ù.
	
      Static SQLÀÇ °æ¿ì, bind °úÁ¤¿¡¼­ ¹Ì¸® »ý¼ºµÈ Package´Â bind time½ÃÀÇ DB2 Åë°èÁ¤º¸¸¦
      ±Ù°Å·Î ÀÛ¼ºµÇ¹Ç·Î ½ÇÁ¦ ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ½ÃÁ¡ÀÇ Åë°èÁ¤º¸¿Í Â÷À̰¡ ³¯ ¼ö ÀÖ´Ù.
      µû¶ó¼­, ÀÌ·¯ÇÑ »óȲÀ» ¹æÁöÇϱâ À§ÇØ ÁÖ±âÀûÀ¸·Î DB2 Åë°èÁ¤º¸ °»½ÅÀ» À§ÇÑ RUNSTAT ÀÛ¾÷
      ¹× ¾îÇø®ÄÉÀÌ¼Ç Rebind¸¦ ¼öÇàÇÑ´Ù. (5.3 Application Rebind ÂüÁ¶)

   3. ½ÇÇà½Ã »ý¼ºµÈ Package´Â DB2¿¡ ÀÇÇØ¼­ °ü¸®µÇÁö ¾Ê´Â´Ù. (dummy Package)
   4. Embedded SQLÀ̹ǷΠprecompile °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.


   ÀåÁ¡
   1. ¾îÇø®ÄÉÀÌ¼Ç ³» °¢ SQL ±¸¹®¿¡ ´ëÇØ °¡Àå ÃÖ±Ù ½ÃÁ¡ÀÇ Åë°èÁ¤º¸¸¦ ±Ù°Å·ÎÇÑ access plan
      À» °¡Áú ¼ö ÀÖ´Ù.
   2. SQL ±¸¹®Àº °³¹ß½Ã°¡ ¾Æ´Ñ, ½ÇÇà½Ã¿¡ È®Á¤µÇ¹Ç·Î, º¸´Ù ´Ù¾çÇϰí À¯¿¬ÇÑ ¾îÇø®ÄÉÀÌ¼Ç °³
      ¹ßÀÌ °¡´ÉÇÏ´Ù.


   ´ÜÁ¡
   1. ½ÇÇà½Ã¸¶´Ù Package¸¦ ÀÛ¼ºÇØ¾ß ÇÏ´Â overhead·Î Static¿¡ ºñÇØ ó¸® ¼Óµµ°¡ ´À¸®´Ù.
   2. ½ÇÇàÀü¿¡ SQL ±¸¹®ÀÇ type, syntax, previlege checking ÀÌ ºÒ°¡´ÉÇÏ´Ù.


   Âü°í) DB2ÀÇ Package´Â ÇØ´ç SQLÀ» DB2ÀÇ ÇØ´ç DB³»¿¡¼­ ó¸®Çϱâ À§ÇÑ ÃÖÀûÀÇ ¹æ¹ýÀÎ access
         planÀ» °¡Áø´Ù. ÀÌ access planÀº DB2ÀÇ System catalog Á¤º¸¸¦ ±Ù°Å·ÎÇÑ DB2 Åë°èÁ¤º¸
         ¸¦ ±Ù°Å·Î DB2 Optimzier¿¡ ÀÇÇØ¼­ »ý¼ºµÈ´Ù. Static ¹× Dynamic SQLÀÇ °¡Àå Å« Â÷ÀÌÁ¡
         Àº ÀÌ Package »ý¼º ½ÃÁ¡ ¹× °ü¸® ¿©ºÎÀÇ Â÷À̰¡ µÈ´Ù. 
(3) Embedded SQL ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼º Process
±×¸². Embedded SQL ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼º Process
±×¸². Embedded SQL ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼º Process
   ¼³¸í
    1. Embedded SQL ±¸¹®ÀÌ Æ÷ÇÔµÈ ÇÁ·Î±×·¥ÀÇ Source FileÀ» ÀÛ¼ºÇÑ´Ù.
    2. DB¿¡ connect ÇÏ¿©, °¢ Source FileÀ» precompileÇÑ´Ù.
       precompiler´Â embedded SQL ±¸¹®À» ¿©¶ó ´Ù¾çÇÑ API request·Î ¹Ù²ãÁÖ´Â ¿ªÇÒÀ» Çϸç,
       precompile °úÁ¤À» ÅëÇØ bind fileÀ» »ý¼ºÇϰųª, Á÷Á¢ DB¿¡ Package¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.
    3. º¯°æµÈ Source FileÀ», ÀÛ¼ºÇÑ language compiler¸¦ ÀÌ¿ëÇÏ¿© compileÇÑ´Ù.
    4. Object FileÀ» DB2 ¹× language Library¿¡ linkÇÏ¿© ½ÇÇà ÇÁ·Î±×·¥À» »ý¼ºÇÑ´Ù.
    5. DB¿¡ connectÇÑ ÈÄ, 2ÀÇ °úÁ¤¿¡¼­ »ý¼ºµÈ bindfileÀ» DB¿¡ bind ½ÃŲ´Ù.
       ÀÌ´Â DB¿¡ Package¸¦ »ý¼ºÇϱâ À§Çؼ­À̸ç, 2 °úÁ¤ÀÇ precompile ¿É¼ÇÀ» ÀÌ¿ëÇØ Á÷Á¢
       Package¸¦ »ý¼ºÇÏ¿´À¸¸é ¼öÇàÇÒ Çʿ䰡 ¾ø´Ù. ±×·¯³ª ´Ù¸¥ DB¿¡ °°Àº ³»¿ëÀÇ Package¸¦ 
       »ý¼ºÇϰíÀÚ ÇÒ ¶§, °°Àº bindfileÀ» ÀÌ¿ëÇÑ´Ù.
    6. »ý¼ºµÈ ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇÑ´Ù.
       ÀÌ ¾îÇø®ÄÉÀ̼ÇÀº ¾Õ¼­ »ý¼ºµÈ DBÀÇ Package¸¦ »ç¿ëÇÏ¿© SQL ±¸¹®À» ó¸®ÇÑ´Ù.
(4) DB2 Package
    Á¤ÀÇ: DB2ÀÇ Package´Â ÃÖÀûÈ­µÈ SQL ±¸¹®À» ´ã°í ÀÖ´Â DB objectÀÌ´Ù. ÇϳªÀÇ ÇÁ·Î±×·¥
          source´Â ÇϳªÀÇ Package¿¡ ´ëÀÀµÇ°í, Program Source³»ÀÇ SQL ±¸¹®Àº Package³»ÀÇ
          Section¿¡ ´ëÀÀµÈ´Ù.
  
    Ư¡
    1. ±¸Á¶: Static Embedded SQL ProgramÀº default·Î precompile °úÁ¤À» ÅëÇØ¼­ ¿¬°áµÈ DB³»
             ¿¡ Package¸¦ »ý¼ºÇÑ´Ù. SectionÀº compileµÈ ÇüÅÂÀÇ SQL ±¸¹®À̸ç, Package ³»¿¡
             ´Â °¢ Embedded SQL ±¸¹®¿¡ ´ëÀÀµÇ´Â ¿©·¯ SectionÀ» °¡Áø´Ù. °¢ Section ³»¿¡´Â
             ÇϳªÀÇ SQL ±¸¹®¿¡ ´ëÀÀµÇ¾î, SQL ±¸¹®°ú ÀÌ SQL ±¸¹®¿¡ ´ëÇÑ ÃÖÀûÈ­µÈ access 
             planÀÌ section ³»¿¡ ÀúÀåµÈ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ Package´Â Á÷Á¢ DB¿¡ ÀúÀåµÇ°Å³ª,
             ¶Ç´Â Package »ý¼º ¸ðµâÀÌ bindfile³»¿¡ ÀúÀåµÇ¾î, º°µµÀÇ bind °úÁ¤À» °ÅÃļ­ DB
             ¿¡ Package¸¦ »ý¼ºÇÑ´Ù.
±×¸²  . PackageÀÇ ±¸Á¶ ¹× »ý¼º °úÁ¤
±×¸² . PackageÀÇ ±¸Á¶ ¹× »ý¼º °úÁ¤
     2. Dynamic Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÇ Package
        Dynamic Embedded SQL ±¸¹®ÀÇ °æ¿ì, ¸¶Âù°¡Áö·Î precompile - bind °úÁ¤À» °ÅÃļ­
        Package¸¦ »ý¼ºÇϳª, Section³»¿¡ access planÀÌ ¾ø´Â°ÍÀÌ Static°úÀÇ Â÷ÀÌÁ¡ÀÌ´Ù.

     3. Package ½ÇÇà Æ¯±Ç
        »ý¼ºµÈ Package³»ÀÇ SQL ±¸¹®À» ½ÇÇàÇϱâ À§Çؼ­´Â »ç¿ëÀÚ°¡ Package¿¡ ´ëÇØ Execute
        Ư±ÇÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ´Â SQL ±¸¹®³»ÀÇ DB object¿¡ ´ëÇÑ Á÷Á¢ÀûÀÎ ±ÇÇÑ ¾øÀ̵µ Á÷Á¢
        SQL ±¸¹®À» ¼öÇàÇÏ´Â °Í°ú °°Àº µ¿ÀÏÇÑ È¿°ú¸¦ °¡Áø´Ù.
Host Language
(Programming Language)
Precompiler File È®ÀåÀÚ
(input - Source)
File È®ÀåÀÚ
(input - Source)
C prep OR precompile .sqc .c
C++
(AIX - case sensitive)
prep OR precompile .sqC .c
C++
(Windows-case insensitive)
prep OR precompile .sqx .cxx
Java sqlj* .sqlj .java AND .ser
Ç¥. Precompiler¿Í Precompile FileÀÇ È®ÀåÀÚ
Âü°í) 1. sqlj´Â translator·Î bindfile »ý¼ºÀ» ÇÏÁö ¾ÊÀ¸¸ç, bind fileÀº .ser fileÀ» ÀÌ¿ëÇÑ db2profc
           (DB2 Profile Customizer)ÀÇ precompile optionÀ» ÅëÇØ »ý¼ºµÈ´Ù.
        2. °¢ Precompiler´Â DB2 SDK (Software Development Kit)¿¡ Æ÷ÇԵǾî ÀÖ´Ù.
(4) Application Bind
Á¤ÀÇ : BindfileÀº Static Embedded SQL ±¸¹®¿¡ ´ëÇÑ Package »ý¼º Á¤º¸¸¦ ´ãÀº fileÀ̸ç, 
       bindfileÀ» ÀÌ¿ëÇÏ¿© DB¿¡ Package¸¦ »ý¼ºÇÏ´Â °úÁ¤
	
Ư¡ 
1. DB2 Package »ý¼ºÀº precompile °úÁ¤¿¡¼­ Á÷Á¢ DB¿¡ »ý¼ºµÇ°Å³ª (bindfile option), 
   bindfileÀ» ¸¸µé¾î ³ªÁß¿¡ bind °úÁ¤À» °ÅÃļ­ DB¿¡ »ý¼ºÇÒ ¼ö ÀÖ´Ù. À̸¦ "deferred 
   binding"À̶ó ÇÑ´Ù.

2. Static Embedded SQL ¾îÇø®ÄÉÀ̼ǿ¡¸¸ Àû¿ëµÇ´Â °úÁ¤ÀÌ´Ù.
   ¾îÇø®ÄÉÀ̼ÇÀÌ Á¢¼ÓµÇ´Â DB¿¡ Çѹø¸¸ bindÇÏ¸é µÇ¸ç, ÃßÈÄÀÇ bind ÀÛ¾÷Àº "Application
   Rebind" °úÁ¤À» ÅëÇØ ¸¶Âù°¡Áö·Î bind ÇÑ´Ù.

3. Package ¹× Bindfile°ú SQL ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà FileÀº °°Àº ³»¿ëÀÇ Consistency Token 
   (Timestamp Á¤º¸)¸¦ °¡Áø´Ù.

   Bindfile¿¡ ÀÇÇØ¼­ Package »ý¼º½Ã, »ý¼º½ÃÁ¡(timestamp)¿¡ ´ëÇÑ Á¤º¸(consistency token)
   °¡ Package³»¿¡ ÀúÀåµÈ´Ù. ÀÌ¿Í ¶È°°Àº ³»¿ëÀÇ consistenty tokenÀÌ DBÀÇ system catalog ¹×
   ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ¸ðµâ¿¡ ÀúÀåµÇ¾î, SQL ¾îÇø®ÄÉÀ̼ÇÀÌ SQL ±¸¹®À» ¼öÇàÇÒ ¶§, ±×¿¡ ¸Â´Â
   Package³»ÀÇ access planÀ» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

4. Bind½Ã ÇÊ¿äÇÑ ±ÇÇÑ ¹× Ư±Ç
   Bind ÀÛ¾÷À» ¼öÇàÇÏ´Â »ç¿ëÀÚ´Â ÃÖ¼ÒÇÑ "BINDADD" ±ÇÇÑÀÌ ÀÖ¾î¾ß Çϸç, IMPLICIT_SCHEMA,
   CREATEIN" Ư±ÇÀÌ ÀÖ¾î¾ß ÇÑ´Ù. µû¶ó¼­ ÀÌ·¯ÇÑ ±ÇÇÑÀ» °¡Áø GroupÀÇ »ç¿ëÀÚ·Î ¾îÇø®ÄÉÀ̼Ç
   °³¹ßÀÚ ±ÇÇÑÀ» groupingÇÑ´Ù. ¶ÇÇÑ static SQLÀÌ referenceÇÏ´Â ¸ðµç DB object¿¡ ´ëÇÑ ÀûÀý
   ÇÑ Æ¯±ÇÀÌ ÀÖ´Â »ç¿ëÀÚ¿©¾ß ÇϹǷÎ, ÀÌ·¯ÇÑ DB object¿¡ ´ëÇÑ Æ¯±ÇÀº ¸í½ÃÀûÀ¸·Î »ç¿ëÀÚ¿¡°Ô
   grant µÇ°Å³ª PUBLICÀ¸·Î ¼±¾ðµÇ¾î¾ß ÇÑ´Ù. 
   (group¿¡¸¸ grant µÇ¾úÀ» °æ¿ì bind½Ã failÀÌ ³­´Ù.)

5. Blocking Factor
Á¤ÀÇ: Record BlockingÀº ´ë¿ë·®ÀÇ µ¥ÀÌŸ¸¦ ó¸®ÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ³×Æ®¿÷À» ÅëÇÑ µ¥ÀÌŸ Á¢
      ±Ù ¼Óµµ¸¦ Çâ»ó½ÃÄÑÁÖ±â À§ÇÑ µ¥ÀÌŸÀÇ ³×Æ®¿÷ À̵¿¿¡¼­ÀÇ DB2 µ¥ÀÌŸó¸® ¹æ½ÄÀ̸ç, ÀÌ·¯
      ÇÑ Record BlockingÀº ¾îÇø®ÄÉÀÌ¼Ç bind½Ã Blocking Factor (bind option)¿¡ ÀÇÇØ¼­ ÁöÁ¤
      µÈ´Ù.

Ư¡: Record BlockingÀº Cursor type ¹× Record BlockingÀ» ¼öÇàÇÒ DB2 ServerÀÇ storage ·®¿¡
      µû¶ó °áÁ¤µÈ´Ù.

      multiple Row·Î ±¸¼ºµÈ Result SetÀÇ Ã³¸®´Â Cursor¸¦ ÅëÇØ ÀÌ·ç¾îÁø´Ù. Cursor type¿¡ ´ë
      ÇÑ Blocking Factor´Â UNAMBIG, ALL, NO °¡ ÀÖ´Ù.
			
      UNAMBIG : FOR UPDATE cursor¸¦ Á¦¿ÜÇÑ ¸ðµç cursor´Â blockingµÈ´Ù.
      ALL     : ¸ðµç cursor°¡ blockingµÈ´Ù.
      NO      : ¾î¶°ÇÑ cursorµµ blocking 󸮵ÇÁö ¾Ê´Â´Ù.	

      DBM cfgÀÇ ASLHEAPSZ ÆÄ¶ó¹ÌÅÍ·Î multiple data record¸¦ ¿äûÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ
      DB2 Server¿¡¼­ÀÇ data buffer¿¡ »ç¿ëµÇ´Â memory ÇÒ´ç·®À» ÁöÁ¤ÇÑ´Ù.      
      (DB ServerÀÇ memory ÇÒ´ç) ¶ÇÇÑ, ¿ø°Ý SQL ¾îÇø®ÄÉÀ̼ǿ¡¼­ÀÇ memory ÇÒ´çÀº DBM cfgÀÇ
      RQRIOBLK°ªÀ¸·Î ÁöÁ¤ÇÑ´Ù.
		
 Âü°í) CLI ¾îÇø®ÄÉÀÌ¼Ç ¹× DB2 CLP (Command Line Processor)ÀÇ Blocking FactorÀÇ default 
       °ªÀº UMAMBIGÀ̸ç, À̸¦ º¯°æÇϰíÀÚ ÇÒ °æ¿ì¿¡´Â °¢°¢ÀÇ bindfile (db2cli.bnd,
       db2clp.bnd)¸¦ bind ÇÒ ¶§, bind optionÀ» ÁöÁ¤ÇÏ¿© ¼öÇàÇÏ¸é µÈ´Ù.

5.2 DB2CLI (Call Level Interface) & ODBC

Á¤ÀÇ: DB2CLI´Â C ¹× C++ ¾ð¾î¸¦ ÀÌ¿ëÇÑ DB2 Programming InterfaceÀÇ ÇϳªÀÌ´Ù.

Ư¡
1. DB2CLI´Â MicrosoftÀÇ ODBC ¹× X/Open, ISO Call Level Interface Standard¸¦ ±âÃÊ·Î ±¸¼ºµÇ¾ú
   ´Ù. 
   µû¶ó¼­, DB Vendor¿Í »ó°ü¾øÀÌ ODBC ¹× X/OpenÀÇ CLI¸¦ Áö¿øÇÏ´Â DBMS ¸ðµÎ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â
   portable ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÌ °¡´ÉÇÏ´Ù. 

 
   Âü°í) DB2 ODBC Driver´Â MSÀÇ ODBC 2.0ÀÇ Level 2 ¹× ODBC 3.0ÀÇ Level 1ÀÇ ¸ðµç spec, Level
         2ÀÇ ´ëºÎºÐÀÇ spec¿¡ µû¶ó °³¹ßµÇ¾ú´Ù.
 
         DB2CLI´Â ODBC¸¦ ±âÃÊ·ÎÇϹǷÎ,  »óÈ£ ȣȯÀûÀÎ °ü°è¿¡ ÀÖ´Ù. µû¶ó¼­ C³ª C++ ¾ð¾î 
         (MS Visual C++)¸¦ ÀÌ¿ëÇÑ CLI ¾îÇø®ÄÉÀÌ¼Ç ¶Ç´Â MS Visual Basic ¹× PHP, Python, Perl
         °ú °°Àº script Language¸¦ ÀÌ¿ëÇÑ ODBC ¾îÇø®ÄÉÀÌ¼Ç °³¹ß ¹× ½ÇÇàÀº °¢°¢ DB2 CLI
         ODBC Driver¿¡ ÀÇÇØ¼­ 󸮵Ǹç, °¢ DriverÀÇ ³»¿ë ¹× Driver ¹× DB2 ±â´ÉÀº °ÅÀÇ ºñ½ÁÇÏ
         ´Ù.


2. DB2CLI´Â Dynamic ¾îÇø®ÄÉÀÌ¼Ç °³¹ß ¹æ½ÄÀÌ´Ù. (bind ¹× Package »ý¼º ºÒÇÊ¿ä)
   µû¶ó¼­, Dynamic Embedded Application°ú ¸¶Âù°¡Áö·Î º°µµÀÇ bind °úÁ¤ÀÌ ÇÊ¿ä¾øÀ¸¸ç, Packagae
   »ý¼ºÀº ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã¿¡ ÀÌ·ç¾îÁø´Ù. CLI ¾îÇø®ÄÉÀ̼ÇÀº DB2¿¡ ÀÇÇØ¼­ Á¦°øµÇ´Â °øÅëÀû
   ÀÎ access package¸¦ ÀÌ¿ëÇÏ¿© ½ÇÇàµÇ¹Ç·Î °³º° ¾îÇø®ÄÉÀ̼ÇÀÇ bind °úÁ¤Àº ÇÊ¿ä¾ø´Â ´ë½Å¿¡
   °øÅëÀûÀ¸·Î DB2CLI package¸¦ ÇØ´ç DB¿¡ Çѹø bindÇÏ¿© DB2CLI ¶Ç´Â ODBC ¾îÇø®ÄÉÀ̼ÇÀÌ À̸¦
   »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.


   CLI ¾îÇø®ÄÉÀ̼ÇÀÇ (Embedded) Dynamic SQL ¾îÇø®ÄÉÀ̼ǰúÀÇ Â÷ÀÌÁ¡

   • Precompile °úÁ¤ÀÌ ¾ø´Ù. (µû¶ó¼­ bind ¹× Package »ý¼ºÀÌ ¾ø´Ù)
      ¾îÇø®ÄÉÀÌ¼Ç levelÀÇ Package°¡ ¾ø´Â ´ë½Å, ¸ðµç CLI ¾îÇø®ÄÉÀ̼ÇÀÌ °øÅëÀûÀ¸·Î ÀÌ¿ëÇÏ´Â
      CLI PackageµéÀ» ÇØ´ç DB¿¡ Çѹø¸¸ bindÇÑ´Ù.
   • ¸í½ÃÀûÀÎ cursor Á¤Àǰ¡ ¾ø´Ù.
   • Commit/rollback ±¸¹®´ë½Å SQLEndTran() FuctionÀ» »ç¿ëÇÑ´Ù.
   • SQLCA / SQLDA ¿Í °°Àº DB¿¡¼­ÀÇ Æ¯Á¤ error ó¸® API°¡ ¾ø´Ù.
   • Host variable ´ë½Å¿¡ parameter marker¸¦ »ç¿ëÇÑ´Ù. ¶ÇÇÑ, ´ÙÀ½ÀÇ Á¦¾à »çÇ×À» °¡Áø´Ù.
   • multiple Row 󸮸¦ Çѹø¿¡ ¼öÇàÇÒ ¼ö ¾ø´Ù. (array fetch/ insert)
   • scrollabel cursor°¡ Áö¿øµÇÁö ¾Ê´Â´Ù.
	
3. CLI ¹× ODBCÀÇ Dynamic SQL ±¸¹®Àº Program¿¡ embedded µÇÁö ¾Ê°í, DB2¿¡ ÀÇÇØ¼­ Á¦°øµÇ´Â
   C/C++ API¸¦ ÀÌ¿ëÇÏ¿© function argumentÀÇ Çü½ÄÀ¸·Î DB2¿¡ Àü´ÞµÈ´Ù 
   (direct API call). µû¶ó¼­, Program precompile °úÁ¤ÀÌ ºÒÇÊ¿äÇÏ´Ù.

4. Embedded SQL ±¸¹®¿¡¼­ SQL ¼öÇà ¼º°ø ¿©ºÎ¸¦ °Ë»çÇϴµ¥ »ç¿ëÇÏ´Â SQLDA ¹× SQLCA¸¦ »ç¿ëÇÏÁö
   ¾ÊÀ¸¹Ç·Î ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼ºÀÌ ½±´Ù.

ÀåÁ¡
1. Precompile, bind °úÁ¤ÀÌ ÇÊ¿ä¾ø´Ù. 
2. ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã¿¡ DB2ÀÇ Åë°èÁ¤º¸¸¦ ±âÃÊ·ÎÇÑ access planÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
3. ´Ù¸¥ DB platform¿¡ ½±°Ô À̽ÄÇÒ ¼ö ÀÖ´Ù.

´ÜÁ¡
Static Embedded SQL°ú ºñ±³ÇÏ¿© ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ¼Óµµ°¡ ´À¸®´Ù.
(Dynamic Embedded SQL°ú °øÅë)

   ODBC¿Í CLIÀÇ ºñ±³
   • Commit CLI ¾îÇø®ÄÉÀ̼ÇÀº ¾ÆÅ°ÅØÃÄ»ó ODBC Driver Manager¾øÀÌ ¾îÇø®ÄÉÀ̼ÇÀÌ Á÷Á¢ CLI
      Driver¿Í Åë½ÅÇÑ´Ù.
   • DB2 ODBC Driver ¹× DB2 Data Source´Â ¹Ýµå½Ã ODBC Driver Manager¿¡ µî·ÏµÇ¾î¾ß Çϳª,
      CLI Driver´Â DB2 Client¸¸ ¼³Ä¡µÇ¸é, º°µµÀÇ µî·Ï °úÁ¤ÀÌ ÇÊ¿ä¾ø´Ù.
   • ODBC´Â Windows ¹× Linux ȯ°æ¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª, CLI´Â UNIX¸¦ Æ÷ÇÔÇÑ º¸´Ù ´Ù¾çÇÑ
      ȯ°æ ¹× C/C++, Java¿Í °°Àº °­·ÂÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Áö¿øÇÑ´Ù.
±×¸². DB2 UDB¿¡¼­ÀÇ ODBC¿Í CLI ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà ȯ°æ
±×¸². DB2 UDB¿¡¼­ÀÇ ODBC¿Í CLI ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà ȯ°æ
DB2 Host : DB2 for OS/390, DB2 for OS/400, DB2 for VM/VSE, ...
• DB2 CLI ȯ°æ ±¸¼º ÀÛ¾÷
1. DB2 SDK¸¦ ¼³Ä¡Çϰí, DB2 CLI Library¸¦ È®ÀÎÇÑ´Ù. 
   Windows ȯ°æ : sqllib \ lib \ db2cli.lib
   UNIX ȯ°æ : sqllib / lib / libdb2.a ¶Ç´Â libdb2.so
2. Á¢¼ÓÇϰíÀÚ ÇÏ´Â DB°¡ ¿ø°ÝÀÏ °æ¿ì, ¾îÇø®ÄÉÀÌ¼Ç client¿¡ Node ¹× DB catalogingÀ» ÇÑ´Ù.
3. DB2 CLI bindfileµéÀ» Á¢¼ÓÇÒ DB¿¡ bindÇÑ´Ù.
   ´ÙÀ½ÀÇ µð·ºÅ丮¿¡¼­ Á¢¼ÓÇϰíÀÚ ÇÏ´Â DB2 ¼­¹öÀÇ Á¾·ù¿¡ µû¶ó ´ÙÀ½ÀÇ fileµéÀ» bindÇÑ´Ù.

sqllib / bnd / db2cli.lst      ( DB2 UDB )
               dd  csmvs.lst   ( DB2 for OS/390 ) 
               ddcs400.lst     ( DB2 for OS/400 )
Âü°í) .lst FileÀº bindfileµéÀ» ¸ð¾Æ³õÀº list fileÀ̸ç list fileÀÇ bind´Â ´ÙÀ½ÀÇ ¿¹¿Í °° ÀÌ file ¾Õ¿¡ "@"¹®ÀÚ¸¦ Ãß°¡ÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù. ¿¹) "db2 bind @db2cli.lst blocking all isolation cs grant public messages db2cli.msg" "db2 bind @ddcsmvs.lst blocking all sqlerror continue grant public" 4. Çʿ信 µû¶ó, db2cli.ini FileÀÇ ³»¿ëÀ» ÆíÁýÇÏ¿© CLI ȯ°æ ±¸¼ºÀ» ¼öÁ¤ÇÑ´Ù. °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â optionÀº ´ÙÀ½°ú °°´Ù.
Ű¿öµå ÀÇ¹Ì ÁöÁ¤°ª
CURSORHOLD Cursor Holdability 0 : Cursor No Hold
(Æ®·£Àè¼ÇÀÌ commit µÇ¸é cursor ¼Ò¸ê)
1 : Cursor Hold (default)
TXNISOLATION Transaction Isolation
level ¼³Á¤*
1 : UR (Uncommitted Read) Æ®·£Àè¼Ç
2 : CS (Cursor Stability) Æ®·£Àè¼Ç (default)
4 : RS (Read Stability) Æ®·£Àè¼Ç
8 : RR (Repeatable Read) Æ®·£Àè¼Ç
32: NO COMMIT (DB2 for OS/400 only)
DEFERREDPREPARE SQL Prepare ¿äû
½ÃÁ¡ ¼³Á¤
0 : Deferred Prepare »ç¿ë ¾ÊÇÔ
1 : Deferred Prepare »ç¿ëÇÔ (default)
DB2DEGREE SQL ±¸¹® ½ÇÇàÀÇ º´·Ä
ó¸® degree ¼³Á¤
0 : (default)
1-32767
• ODBC ȯ°æ ±¸¼º ÀÛ¾÷
   1. DB2 Client¸¦ ¼³Ä¡Çϰí, Á¢¼ÓÇϰíÀÚ ÇÏ´Â DB°¡ ¿ø°ÝÀÏ °æ¿ì, Node ¹× DB cataloging ÀÛ¾÷
      À» ¼öÇàÇÑ´Ù.
   2. ODBC Driver Manager°¡ ¼³Ä¡µÇ¾ú´ÂÁö Á¦¾îÆÇ¿¡¼­ È®ÀÎÇϰí, DB2 Data Source¸¦ System
      DSN ¶Ç´Â »ç¿ëÀÚ DSNÀ¸·Î µî·ÏÇÑ´Ù.

      Âü°í) DB2 ODBC Driver ("IBM DB2 ODBC Driver")´Â DB2 Server ¶Ç´Â client ¼³Ä¡½Ã¿¡ ÀÚµ¿
            À¸·Î ¼³Ä¡ ¹× µî·ÏµÈ´Ù.

   3. ODBC ȯ°æ ¼³Á¤Àº DB2 CLI¿Í ¸¶Âù°¡Áö·Î db2cli.ini FileÀ» ÆíÁýÇÏ¿© ÀûÀýÇÒ È¯°æ ±¸¼ºÀ»
      ¼³Á¤ÇÑ´Ù.

CLI ¹× ODBC¿¡ ´ëÇÑ º¸´Ù ÀÚ¼¼ÇÑ ³»¿ëÀº DB2 ManualÀÎ "DB2 CLI Gude and Reference" ¹× "ODBC 
Guide & Reference"¸¦ ÂüÁ¶ÇÑ´Ù.

5.3 Java Interfaces (JDBC / SQLJ)

Á¤ÀÇ: JDBC ¹× SQLJ ´Â DB2¿¡¼­ Dynamic SQL ¹× Static SQLÀ» ó¸®Çϱâ À§ÇÑ Java Programming
      InterfaceÀÌ´Ù.


Ư¡

1. JDBC ¹× SQLJ´Â vendor-independentÇÑ Java LanguageÀÇ SQL interfaceÀÌ´Ù.
2. JDBC´Â DB2CLIÀÇ °æ¿ìó·³, API Call·Î½á SQL ±¸¹®ÀÌ Ã³¸®Çϸç, Dynamic SQL ó¸® ¹æ½ÄÀÇ Æ¯¼º
   À» °¡Áø´Ù. SQLJ´Â SQL ±¸¹®ÀÌ ÇÁ·Î±×·¥»ó¿¡ EmbeddedµÇ¾î, Static SQLÀÇ ¹æ½ÄÀ» µû¸¥´Ù.

3. JDBC ¿Í SQLJÀÇ ºñ±³
  JDBC SQLJ
SQL ±¸¹® API call·Î SQL ±¸¹® Àü´Þ Program³» Embedded
SQL ÇüÅ Dynamic SQL Static SQL
SQL ±¸¹® ó¸® - Precompile, bind °úÁ¤ ºÒÇÊ¿ä
- ½ÇÇà½Ã Package ÀÛ¼º
- SQLJ translation °úÁ¤ ÇÊ¿ä (precompile)
- Java Profile Customization °úÁ¤ ÇÊ¿ä
   (Package ¹Ì¸® »ý¼º)
• DB2 JDBC Driver
DB2 UDB´Â 2°¡Áö ÇüÅÂÀÇ JDBC Driver¸¦ Á¦°øÇÑ´Ù. (sqllib/java/db2java.zip)
  App Driver: COM.ibm.db2.jdbc.app.DB2Driver - DB2 Client°¡ ¾îÇø®ÄÉÀÌ¼Ç Å¬¶óÀÌ¾ðÆ®¿¡ ¼³Ä¡
              µÇ¾î ÀÖÀ» °æ¿ì »ç¿ëÇÑ´Ù. (Java Application)
  Net Driver: COM.ibm.db2.jdbc.net.DB2Driver - DB2 Client°¡ ¾øÀ» °æ¿ì »ç¿ëÇÑ´Ù.
              (Java Applet)
  Âü°í) Java ServletÀÇ °æ¿ìµµ DB2 Client ¼³Ä¡ ¿©ºÎ¿¡ µû¶ó Driver¸¦ ¼±ÅÃÇÏ¿© »ç¿ëÇÑ´Ù.
±×¸².  App Driver ¹× Net DriverÀÇ ±¸¼º ¾ÆÅ°ÅØÃÄ
±×¸². App Driver ¹× Net DriverÀÇ ±¸¼º ¾ÆÅ°ÅØÃÄ
• JDBC Programming
JDBC API¸¦ ÀÌ¿ëÇÏ¿© ´Ù¸¥ ÀϹÝÀûÀÎ Java Programming°ú ¸¶Âù°¡Áö·Î ÀÛ¼º, ½ÇÇàÇÑ´Ù. JDBC API¿¡ ´ëÇÑ ³»¿ëÀº ¿©±â¼­ ±¸Ã¼ÀûÀ¸·Î ´Ù·çÁö ¾ÊÀ¸¸ç, Sun MicrosystemsÀÇ JDK document ¿¡¼­ JDBC API¿¡ ´ëÇÑ ³»¿ëÀ» ÂüÁ¶ÇÑ´Ù.

Âü°í) JDBC ¾îÇø®ÄÉÀ̼ÇÀº DB2¿¡¼­ÀÇ Dynamic SQL ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ðµç Ư¡À» °®°í ÀÖ´Ù.
• SQLJ Programming
1. SQLJ Application ÀÛ¼º ¹× ½ÇÇà °úÁ¤
±×¸²  SQLJ Application Process
±×¸² SQLJ Application Process
sqlj (SQLJ Translator): precompiler¿Í ¸¶Âù°¡Áö·Î Java Source code¿¡¼­ Static Embedded SQL
±¸¹®À» precompileÇÏ¿© ¼öÁ¤µÈ java file (.java)°ú Serialized profile (.ser) À» »ý¼ºÇÑ´Ù.


javac (Java Compiler): ¼öÁ¤µÈ java source code¸¦ compileÇÏ¿© ½ÇÇà class¿Í ProfileKey class
¸¦ »ý¼ºÇÑ´Ù.


db2profc (DB2 Profile Customizer): SQLJ Translator¿¡ ÀÇÇØ¼­ »ý¼ºµÈ Serialiezed ProfileÀ»
customzationÇÏ¿© DB¿¡ Á÷Á¢ Package¸¦ ¸¸µé°Å³ª ¶Ç´Â bindfileÀ» »ý¼ºÇÑ´Ù.


SJProfileKeys.class File: ½ÇÇà java class¿Í DB2 DB³»ÀÇ Package¸¦ ¿¬µ¿½ÃÄÑÁÖ´Â ¿ªÇÒ 
(consistency token)À» ¼öÇàÇÑ´Ù.


Âü°í) 1. SQLJ ¾îÇø®ÄÉÀ̼ÇÀº DB2ÀÇ ÀϹÝÀûÀÎ Static Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ðµç Ư¡À»
         °¡Áø´Ù.
      2. SQLJ Translator (sqlj.zip)Àº DB2 SDK¿¡ Æ÷ÇԵǸç, SQLJ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß½Ã¿¡¸¸ ÇÊ
         ¿äÇÏ´Ù. ÀÛ¼ºµÈ SQLJ ¾îÇø®ÄÉÀÌ¼Ç (Java Application, Applet, Servlet)ÀÇ ½ÇÇàȯ°æ
         ¿¡¼­´Â ÇÊ¿ä¾øÀ¸¸ç, ´ë½Å db2java.zip (DB2 JDBC Driver File) ¹× runtime.zip (SQLJ
         ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ȯ°æ File)¸¸ÀÌ »ç¿ëÀÚ profileÀÇ classpath¿¡ µî·ÏµÇ¾î ÀÖÀ¸¸é µÈ
         ´Ù.
• Java Program ȯ°æ ±¸¼º ÀÛ¾÷
1. ÀûÀýÇÑ JDK¸¦ ½Ã½ºÅÛ¿¡ ¼³Ä¡Çϰí ÀÌÀÇ °ü·Ã class¸¦ »ç¿ëÀÚÀÇ profile¿¡ µî·ÏÇÑ´Ù.
2. sqllib / java µð·ºÅ丮ÀÇ db2java.zip, sqlj.zip, runtime.zip fileÀ» »ç¿ëÀÚ profileÀÇ classpath¿¡ µî
    ·ÏÇÑ´Ù.
3. ´ÙÀ½ ¿¹Ã³·³ »ç¿ëÀÚÀÇ profile³» ¶Ç´Â db2profile¿¡ sqllib / lib directory¸¦ LD_LIBRARY_PATH·Î µî
    ·ÏÇÑ´Ù. (UNIX ȯ°æ only) ¿¹) LD_LIBRARY_PATH=$HOME/sqllib/lib
4. Java Stored Procedure ¶Ç´Â UDF (User Defined Function)À» »ç¿ëÇÒ ¶§´Â DBM cfgÀÇ JDK11_PAT
    HÀÇ °ªÀ» »ç¿ëÇϰíÀÚÇÏ´Â java class fileÀÌ ÀÖ´Â directory·Î ¼³Á¤ÇÑ´Ù.
Java Program °³¹ß¿¡ °üÇÑ º¸´Ù ÀÚ¼¼ÇÑ ³»¿ëÀº DB2 ManualÀÎ "ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ß ¾È³»¼­" ¹×
www.software.ibm.com/data/db/java ¹× www.kr.ibm.com/software/data/db2/techinfo/index.html ±â¼ú Á¤º¸ÀÇ DB2 UDB SQLJ Programming GuideÀÇ ³»¿ëÀ» ÂüÁ¶ÇÑ´Ù.

5.4 MS Data Objects (DAO, RDO, ADO, OLE-DB)

MicroSoftÀÇ Visual BasicÀ̳ª Visual C++À» ÀÌ¿ëÇÑ DAO (Data Access Object), RDO (Remote Data Object)ÀÇ specÀ» µû¸£´Â DB2 ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¾îÇø®ÄÉÀ̼ÇÀº DB2ÀÇ ODBC(CLI) Driver InterfaceÀÇ spec¿¡ µû¶ó ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¸ç, ADO (ActiveX Data Object) ¾îÇø®ÄÉÀÌ¼Ç ¿ª½Ã DB2ÀÇ OLE DB Driver ¶Ç´Â OLE:ODBC Bridge Driver¸¦ ÀÌ¿ëÇÏ¿© ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

ADO (ActiveX Data Object): ADO¸¦ »ç¿ëÇÏ¿© OLE DB ProviderÀÇ data¿¡ Á¢±ÙÇϰųª À̸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù. OLE DB API´Â MS¿¡ ÀÇÇØ µðÀÚÀεǾî ODBC¸¦ ÀÌ¿ëÇÏ¿© accessÇÒ ¼ö ÀÖ´Â Data Sourceº¸´Ù ´õ¿í ´Ù¾çÇÑ DataÀÇ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. ¶ÇÇÑ ADOÀÇ ÀåÁ¡À¸·Î ºü¸¥ Data access ¹× ó¸® ¼Óµµ, ³·Àº ¸Þ¸ð¸® ¹× diskÀÇ overhead, »ç¿ëÀÇ ÆíÀǼºÀ» µé ¼ö ÀÖ´Ù.

RDO (Remote Data Object): RDO´Â ODBC Driver¸¦ ÀÌ¿ëÇÑ remote Data SourceÀÇ Á¢±Ù¿¡ ´ëÇÑ ¸ðµ¨ÀÌ´Ù. remoteÀÇ ODBC °ü°èÇü Data Source¿¡ Á¢±ÙÇÏ¿© Á¶È¸ ¹× Data ó¸®, Stored Procedure ½ÇÇà, Æ®·£Àè¼Ç commit°ú °°Àº ´Ù¾çÇÑ ±â´ÉÀ» º¹ÀâÇÑ ¾îÇø®ÄÉÀÌ¼Ç ÄÚµå ¾øÀÌ ODBC functionÀ» ÀÌ¿ëÇÏ¿© local DB¿¡¼­¿Í ¸¶Âù°¡Áö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÀåÁ¡ : Data Source¿Í´Â ¹«°üÇÏ°Ô Ç¥ÁØÈ­µÈ ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» Á¦°øÇÑ´Ù.
´ÜÁ¡ : Àû¿ëÇÒ ¼ö Àִ ȯ°æÀº MicrosoftÀÇ Windows ȯ°æÀ¸·Î Á¦ÇѵȴÙ.

5.5 Data Locking Strategy

(1) Isoations Levels (¾îÇø®ÄÉÀÌ¼Ç Level¿¡¼­ÀÇ Data Locking Strategy)
- lsolation LevelÀº ¾îÇø®ÄÉÀ̼ÇÀÌ DB³»ÀÇ Æ¯Á¤ TableÀ» AccessÇÏ´Â µ¿¾È ´Ù°°Àº TableÀ»
  accessÇÏ´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ ÂüÁ¶µÇ´Â µ¿ÀÏÇÑ data¸¦ ¾î¶»°Ô LockingÇÒ °ÍÀΰ¡¸¦
  °áÁ¤ÇÑ´Ù.

- Application¿¡ ´ëÇÑ lsolation LevelÀº Precompile ¶Ç´Â Bind½Ã ÇØ´ç optionÀ¸·Î ÁöÁ¤µÈ´Ù.
- Isolation LevelÀº Data Á¶È¸ Æ®·£Àè¼Ç (Select SQL)¿¡¸¸ Àû¿ëµÈ´Ù. Áï, ÇÑ ¾îÇø®ÄÉÀ̼ǿ¡¼­ ÇØ´ç
  dataÀÇ Á¶È¸ ¹× º¯°æ Æ®·£Àè¼Ç (update, insert, delete SQL)ÀÌ ¹ß»ýÇÒ ¶§, ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­
  ¾î¶°ÇÑ ¹æ½ÄÀ¸·Î µ¿ÀÏÇÑ data¸¦ Á¶È¸ÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÑ´Ù.
°¡. Cursor Stability(CS)
(°¡) Cursor°¡ PositionedµÇ°í ÀÖ´Â Row¿¡¸¸ Lock»óÅÂ(S Lock - Share Lock)¸¦ À¯ÁöÇϸç, Row
       °¡ updateµÇÁö ¾Ê°í fetch µÇ¸é¼­ cursor°¡ ´ÙÀ½ row·Î moveµÉ ¶§ lock »óŸ¦ ÇØÁ¦ÇÑ´Ù.
       
Âü°í) Row°¡ updateµÉ °æ¿ì¿¡´Â transaction commit ¶Ç´Â rollback, connect½Ã openµÈ cursor°¡
         closeÇϸ鼭LockÀ» ÇØÁ¦ÇÑ´Ù.

(³ª) CS·Î bindingÇÑ ¾îÇø®ÄÉÀ̼ÇÀº ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇÑ uncommited changes´Â ÂüÁ¶ÇÒ
       ¼ö ¾ø´Ù.
³ª. Repeatable Stability (RS)
(°¡) ÇÑ UOW ³»¿¡¼­ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ retriveµÇ´Â Row¿¡ ´ëÇØ Lock»óŸ¦ À¯ÁöÇÑ´Ù. Áï, Á¶
      È¸ Á¶°Ç¿¡ ÇØ´çµÇ´Â row¿¡ ´ëÇØ¼­¸¸ S LockÀÌ °É¸°´Ù.

(³ª) ÇÑ UOW ³»¿¡¼­ µ¿ÀÏ Á¶È¸ Á¶°Ç¿¡ ¸Â´Â data°¡ insertµÈ ÈÄ, °°Àº Á¶È¸°¡ ¹Ýº¹µÇ¸é Phantom
       Row°¡ »ý±æ ¼ö ÀÖ´Ù (¾ÆÁ÷ commitµÇÁö ¾Ê¾ÒÀ¸¹Ç·Î). µû¶ó¼­ ÀÌÀü Á¶È¸ÀÇ °á°úº¸´Ù ¸¹Àº Á¶È¸
       °á°ú°¡ ³ªÅ¸³¯ ¼ö ÀÖ´Ù. ÀÌ Æ®·£Àè¼ÇÀÌ commit µÇ°Å³ª rollback µÇ¸é phantom Row´Â »ç¶ó
       Áö°Ô µÈ´Ù.

(´Ù) Á¶È¸ Á¶°Ç¿¡ ´ëÇÑ °á°ú Rows·ÎºÎÅÍ Çϳª¾¿ fetchÇØ¿À¸é¼­ LockÀ» Çϳª¾¿ ÇØÁ¦ÇÑ´Ù.
´Ù. Repeatable Read (RR)
(°¡) ÇÑ UOW ³»¿¡¼­ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ ÂüÁ¶µÇ´Â ¸ðµç Row¿¡ ´ëÇØ Lock »óŸ¦ À¯Áö ÇÑ´Ù.

(³ª) Áï, Á¶È¸ Á¶°Ç¿¡ ´ëÇÑ °á°ú Row »Ó¸¸ ¾Æ´Ï¶ó (RS), °á°ú Row¸¦ µµÃâÇϱâ À§ÇØ Á¶È¸ Á¶°Ç¿¡
       ÀÇÇØ ÂüÁ¶µÇ´Â ¸ðµç Row¿¡ S LockÀÌ °É¸°´Ù. µû¶ó¼­ RSÀÇ °æ¿ìó·³, µ¿ÀÏ UOW ³»¿¡¼­ Á¶
       È¸ Á¶°Ç¿¡ ¸Â´Â data¿¡ ´ëÇÑ º¯°æ Æ®·£Àè¼Ç (insert, update, delete)Àº ÇØ´ç Row¿¡ S LockÀÌ
       °É·ÁÀÖÀ¸¹Ç·Î ¹ß»ýÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­ Phantom Row ¶ÇÇÑ ¹ß»ýÇÒ ¼ö ¾ø´Ù.

(´Ù) Á¶È¸ Á¶°Ç¿¡ ´ëÇÑ °á°ú Rows·ÎºÎÅÍ Çϳª¾¿ fetchÇØ¿À¸é¼­ °á°ú Row ¹× ÀÌ¿¡ ´ëÇØ ÂüÁ¶µÇ´Â
       RowÀÇ LockÀ» Çϳª¾¿ ÇØÁ¦ÇÑ´Ù.
¶ó. Uncommited Read(UR)
(°¡) ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀÇ º¯°æ Æ®·£Àè¼Ç¿¡ ÀÇÇÑ uncommited changes data¿¡ ´ëÇØ ¾îÇø® ÄÉÀÌ
       ¼ÇÀÌ accessÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù.

(³ª) ÇØ´ç Row¿¡ LockÀ» °ÉÁö ¾Ê´Â °ÍÀ̸ç, À̸¦ `dirty read'¶ó°íµµ ÇÑ´Ù.
±×¸². °¢ Isolation LevelÀÇ Æ¯¼º
±×¸². °¢ Isolation LevelÀÇ Æ¯¼º

5.6 Application Rebind

   DB2 Package¿¡´Â Package »ý¼º½ÃÁ¡ÀÇ DB³»ÀÇ Åë°è Á¤º¸¸¦ ±Ù°Å·Î ±×¿¡ ÃÖÀûÈ­µÈ access planÀ» °¡Áø´Ù. Åë°è Á¤º¸´Â ½ÃÁ¡¿¡ µû¶ó Á¶±Ý¾¿ ¹Ù²î´Â ¾ç»óÀ» °¡Áö¹Ç·Î, Package »ý¼º ½ÃÁ¡À¸·ÎºÎÅÍ ÀÏÁ¤ ±â°£ÀÌ Áö³ª°Å³ª, DB2 ½Ã½ºÅÛ ¹× DB object¿¡ º¯È­°¡ »ý±â¸é ÀÌ¿¡ ´ëÇÑ Åë°è Á¤º¸¸¦ À籸¼ºÇϰí, »õ·Ó°Ô À籸¼ºÇÑ Åë°è Á¤º¸·ÎºÎÅÍ »õ·Î¿î access planÀ» »ý¼ºÇÏ¿©, ¾îÇø®ÄÉÀ̼ÇÀÌ Ç×»ó ÃÖÀûÀÇ access planÀ» ÂüÁ¶Çϵµ·Ï ÇÏ¿© ¾îÇø®ÄÉÀ̼ÇÀÇ ¼º´ÉÀ» ¶ÇÇÑ ÃÖÀûÀÇ »óÅ·ΠÀ¯ÁöÇϵµ·Ï ÇÑ´Ù.
(1) ¿ä °Ç
°¡. Runstats(Åë°è Á¤º¸ À籸¼º ÀÛ¾÷)À» ½ÇÇàÇßÀ» °æ¿ì, ¸ðµç Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÌÀÇ
     Àû¿ëÀ» ¹Þµµ·Ï "db2rbind" ¸í·ÉÀ» ¼öÇàÇÑ´Ù.

³ª. index¸¦ »õ·Ó°Ô »ý¼ºÇϰųª, À籸¼ºÇÏ¿´À» °æ¿ì, À̸¦ ÀÌ¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ¼­ rebind
     ¸¦ ¼öÇàÇÑ´Ù.

´Ù. DataBase Configuration ³»¿ëÁß ´ÙÀ½ÀÇ ³»¿ëÀÌ º¯°æµÇ¾úÀ» °æ¿ì
     (°¡) Buffpage
     (³ª) Sortheap
     (´Ù) Locklist
     (¶ó) Maxlocks
     (¸¶) Avg_appls
     (¹Ù) Seqdetect

´Ù. Bind¸¦ ÇØ¾ßÇÒ °æ¿ì
     (°¡) ÇÁ·Î±×·¥³»ÀÇ SQL¹®ÀÌ ¼öÁ¤µÇ¾úÀ» °æ¿ì
     (³ª) Bind OptionÀ» º¯°æÇϰíÀÚ ÇÒ °æ¿ì
     (´Ù) DB¿¡ Package°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì
(2) ¹æ ¹ý
°¡. db2rbind Command : Rebind all packages in a database
     ¢Ñ db2rbind databse -L logfile -U userid -P password
     ¢Ñ sysadm ¶Ç´Â dbadm±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÔ

³ª. Rebind Command : Bind fileÀÇ ÇÊ¿ä¾øÀÌ DB¾È¿¡ ³»ÀåµÈ package¸¦ ´Ù½Ã ÀÛ¼º
     ¢Ñ rebind package package-name
     ¢Ñ sysadm ¶Ç´Â dbadm±ÇÇÑ ¶Ç´Â package¿¡ ´ëÇÑ Bind ±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÔ.

5.7 DB2 Stored Procedure ÀÛ¼º

DB2 UDB¿¡¼­ÀÇ Stored Procedure ÀÛ¼ºÀº Stored Procedure Builder (V6 ÀÌÈÄ)¸¦ »ç¿ëÇÑ´Ù.
1. Stored Procedure BuilderÀÇ ÀÛ¼º ¾ð¾î
    SQL/PL (Procedural Language) : DB2 UDB V7ÀÌÈĺÎÅÍ °¡´É
    Java : DB2 UDB V6ÀÌÈĺÎÅÍ °¡´É

2. ±×¿Ü ÀÏ¹Ý ÇÁ·Î±×·¡¹Ö ¾ð¾î (C/C++, COBOL)·Î Stored Procedure¸¦ ÀÛ¼ºÇÒ °æ¿ì, Á÷Á¢ ÇÁ·Î±×·¡¹Ö
    À» ÇØ¾ßÇϳª ¹ø°Å·Ó°í º¹ÀâÇϹǷÎ, Stored Procedure Builder »ç¿ëÀ» ±ÇÀåÇÑ´Ù.

3. Stored Procedure Builder¸¦ ÀÌ¿ëÇÑ Stored Procedure ÀÛ¼ºÀº
    www.kr.ibm.com/software/data/db2/techinfo/index.html ±â¼ú Á¤º¸ÀÇ "DB2 UDB Stored
     Procedure Builder Guide" ¶Ç´Â ºÎ·ÏB ¸¦ ÂüÁ¶ÇÑ´Ù.