Oracle proc ÇÁ·Î±×·¡¹Ö ½ÃÀÛÇϱâ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.


proc ÆÄÇìÄ¡±â

1절. ¼Ò°³

proc ÇÁ·Î±×·¡¹ÖÀº °£´ÜÈ÷ ´Ù·ê¼ö ÀÖ´Â ÁÖÁ¦°¡ ¾Æ´Ï´Ù. ±×·°Àú·° ´Ù·ç·Á°í ÇÑ´Ù°í ÇØµµ Ã¥ÇÑ±Ç ºÐ·®Àº ´Ù·ç¾î¾ßÇÒ ÁÖÁ¦ÀÌ´Ù.

±×·¯¹Ç·Î ¸î¹øÀÇ ¹®¼­¿¡ °ÉÃļ­ proc ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ³»¿ëÀ» ´Ù·ê°ÍÀÌ´Ù. ±×·¸´Ù°í ÇØ¼­ ½ÃÁß¿¡ ³ª¿ÍÀÖ´Â proc ·¹ÆÛ·±½º ¼öÁØÀÇ ¹æ´ëÇÏ°í ¼¼¹ÐÇÑ ³»¿ëÀ» ´Ù·ê°ÍÀ» ±â´ëÇÏÁö´Â ¸»±â ¹Ù¶õ´Ù. ÀÌ »çÀÌÆ®ÀÇ ´ëºÎºÐÀÇ ¹®¼­µéÀÌ ±×·¸µíÀÌ Ãʱ⿡ ¹®Á¦¿¡ ½±°Ô Á¢±ÙÇÒ¼ö ÀÖ´Â Áöħ¼­ ¿ªÈ°¼öÁØ¿¡¼­ ÀÛ¼ºµÉ°ÍÀÌ´Ù.

±íÀÌ ÀÖ´Â ³»¿ëÀº ÀÚ½ÅÀÌ Á÷Á¢ - ½ÃÁßÀÇ Ã¥À» ÀÌ¿ëÇÏ´øÁö, ¾Æ´Ï¸é ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇϵçÁö - ÀÍÇô³ª°¡µµ·Ï ÇØ¾ß ÇÒ°ÍÀÌ´Ù.

À̹øÀå¿¡¼­´Â proc ¿¡ ´ëÇÑ °£·«ÇÑ ¼Ò°³¿Í ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ È¯°æ¼³¸í°ú, ȯ°æÁغñ°úÁ¤ ±×¸®°í °£´ÜÇÑ ¼ÀÇÿ¹Á¦¿Í ÀÌ ¼ÀÇÃÀ» Á¦´ë·Î ÄÄÆÄÀÏ Çϱâ À§ÇÑ Makefile Á¦À۵ ´ëÇØ¼­ ¾Ë¾Æº¼ °ÍÀÌ´Ù.

ÀÌ ¹®¼­´Â ¿©·¯ºÐÀÌ Àû¾îµµ ¿À¶óŬÀº ¼³Ä¡ÇÒÁپ˰í, ±âº»ÀûÀÎ ¸î°¡Áö ȯ°æÁ¤º¸µéÀº ¾Ë°í ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ¾º¿©Áö°Ô µÉ°ÍÀÌ´Ù. ¶ÇÇÑ ¿À¶óŬ 817 ¹öÁ¯À» ±âÁØÀ¸·Î ÀÛ¼ºµÉ°ÍÀÌ´Ù. ´Ù¸¥ ¹öÁ¯ÀÇ ¿À¶óŬÀÇ °æ¿ì °æ·Îµî¿¡¼­ ¾à°£ÀÇ Â÷À̰¡ ÀÖÀ»¼ö ÀÖÀ»°ÍÀÌ´Ù.


2절. ¿À¶óŬ ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® È¯°æ¸¸µé±â

proc ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§Çؼ­´Â ¿ì¼±ÀûÀ¸·Î Å×½ºÆ® ȯ°æÀÌ ¸¸µé¾îÁ® ÀÖ¾î¾ß ÇÑ´Ù. ¿À¶óŬ ¼­¹ö´Â ÀÌ¹Ì ¼³Ä¡µÇ¾î¼­ °¡µ¿Áß¿¡ ÀÖ´Ù°í °¡Á¤À» ÇϰڴÙ. ¼³Ä¡ ¹®¼­´Â ¿À¶óŬ817 ¼³Ä¡Çϱ⸦ ÂüÁ¶Çϱ⠹ٶõ´Ù.

¿ì¸®°¡ proc ¸¦ ÀÌ¿ëÇØ¼­ ¸¸µé°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥Àº c/s ¸ðµ¨±â¹ÝÀ¸·Î Ŭ¶óÀÌ¾ðÆ®·Î ÀÛµ¿ÇÏ°Ô µÉ°ÍÀÌ´Ù. ¼­¹ö´Â ¿À¶óŬÀÌ µÉ°ÍÀ̸ç, Ŭ¶óÀÌ¾ðÆ®·Î½á ¿À¶óŬ ¼­¹ö¿¡ Á¢±ÙÇØ¼­ ¿øÇÏ´Â Á¤º¸¸¦ °¡Á®¿À´Â ÇÁ·Î±×·¥À» ¸¸µé°ÍÀÌ´Ù.

¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡ À־ °¡Àå ±âº»ÀûÀÎ °ÍÀº ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ³×Æ®¿÷ ¼³Á¤À» ÇÏ´Â °ÍÀÌ´Ù. ¼­¹öÃø ÇÁ·Î±×·¥Àº ¿¬°áÀ» ¹Þ¾ÆµéÀÏ Å¬¶óÀ̾ðÆ®ÀÇ ÁÖ¼Ò¿µ¿ª°ú Æ÷Æ®¸¦ ÁöÁ¤Çϰí Ŭ¶óÀ̾ðÆ®Ãø¿¡¼­´Â ¿¬°áÀ»ÇÒ ¼­¹öÀÇ ÁÖ¼Ò¿µ¿ª°ú Æ÷Æ®¹øÈ£¸¦ ¿ª½Ã ÁöÁ¤ÇØ¾ß ÇÒ°ÍÀÌ´Ù.

ÀϹÝÀûÀÎ c/s ¸ðµ¨ ÇÁ·Î±×·¥¿¡¼­´Â ÀÌ·¯ÇÑ Á¤º¸¸¦ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥°ú ¼­¹ö ÇÁ·Î±×·¥ÀÌ °¡Áö°í ÀÖÁö¸¸ ¿À¶óŬÀÇ °æ¿ì ÀÌ·¯ÇÑ ³×Æ®¿÷ Á¤º¸¸¦ ÀÚüÀûÀ¸·Î À¯ÁöÇÑ´Ù. ÀÌ°Ô ¹Ù·Î listener ¿Í tnsname À̶ó´Â °ÍÀÌ´Ù.

ÀÌÁ¦ listener ¿Í tnsname ¿¡ ´ëÇØ¼­ ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. Âü.. ¹°·Ð ±×Àü¿¡ ¿À¶óŬ ¼­¹ö¸¦ °¡µ¿ ½ÃÄѳõ¾Æ¾ß ÇÑ´Ù.


2.1절. ¿À¶óŬ ¼­¹ö °¡µ¿

oracle °èÁ¤À¸·Î ½ºÀ§Ä¡ À¯ÀúÇÑ´ÙÀ½¿¡ svrmgrl À» ÀÌ¿ëÇÏ¸é °£´ÜÇÏ°Ô ¿À¶óŬ ¼­¹ö¸¦ °¡µ¿½Ãų¼ö ÀÖ´Ù.

Server Manager complete.
[oracle@localhost admin]$ svrmgrl

Oracle Server Manager Release 3.1.7.0.0 - Production

Copyright (c) 1997, 1999, Oracle Corporation.  All Rights Reserved.

Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production

SVRMGR> connect internal
Connected.
SVRMGR> startup
ORACLE instance started.
Total System Global Area                         93675680 bytes
...
...
Database opened.
SVRMGR> 
			
SVRMGR ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁö°í ³ª¸é connect internal -> startup À¸·Î ¿À¶óŬÀ» °¡µ¿½Ãų¼ö ÀÖ´Ù. ÁßÁö´Â connect internal -> shutdown ÀÌ´Ù.


2.2절. listener (¼­¹öÃø ¼³Á¤)

¾Æ¸¶µµ listener À̶ó´Â ´Ü¾î¿¡¼­ ´ëÃæ ¾î¶² ÀÏÀ» ÇÏ´Â °ÍÀÎÁö À¯ÃßÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù. Áï ³×Æ®¿÷ ¼­¹ö·Î½á ¿ÜºÎÀÇ ¿¬°áÀÌ ÀÖ´ÂÁö ´ë±â Çϰí ÀÖ´Ù°¡ ¿¬°áÀÌ ÀÖÀ¸¸é ¿¬°áÀ» ¹Þ¾ÆµéÀÌ´Â ¿ªÈ°À» ÇÑ´Ù. ¿¬°áÀ» ¹Þ°í ³ª¸é ¸î°¡Áö 󸮸¦ ÇÑÈÄ Å¬¶óÀÌ¾ðÆ®¸¦ À§ÇÑ ¿À¶óŬ ÀνºÅϽº¸¦ ÇÒ´çÇÏ°í ¸¸µé¾îÁø ÀνºÅϽº¸¦ ÀÌ¿ëÇØ¼­ Ŭ¶óÀÌ¾ðÆ®¿Í ´ëÈ­ÇÏ°Ô µÈ´Ù.

ÀÌ·¯ÇÑ °úÁ¤À» ¿ÏÀüÈ÷ ÀÌÇØÇÒ·Á¸é ´õ ¸¹Àº ³»¿ëÀÌ º¸ÃæµÇ¾î¾ß ÇϰÚÁö¸¸ ÀÌ ¹®¼­´Â DBA ¸¦ À§ÇÑ ¹®¼­´Â ¾Æ´ÔÀ¸·Î ÀÌ·±°Å´Ù ¶ó´Â Á¤µµ·Î ÀÌÇØÇÏ´Â ¼öÁØ¿¡¼­ ³Ñ¾î°¡µµ·Ï ÇϰڴÙ. Á»´õ ±íÀÌ ÀÖ´Â ³»¿ë¿¡ °ü½ÉÀÌ ÀÖ´Ù¸é °ü·Ã Ã¥À» »ç¼­ °øºÎÇØ¾ß ÇÒ°ÍÀÌ´Ù.

°£´ÜÈ÷ ¸»ÇÏÀÚ¸é listener Àº ÀÎÅÍ³Ý ¼­ºñ½º¸¦ À§ÇÑ ¿À¶óŬ ÇÁ·Î¼¼½º ¶ó°í »ý°¢ÇÒ¼ö Àִµ¥, ¸ðµç (Á¦´ë·ÎµÈ) ¼­¹ö ÇÁ·Î±×·¥ÀÌ ±×·¸µíÀÌ ÀÌ listener ¿ª½Ã ¼³Á¤ ÆÄÀÏÀ» °¡Áö°í ÀÖ´Ù.


2.2.1절. listener ¼³Á¤

$ORACLE_HOME/network/admin/listener.ora °¡ ¹Ù·Î listener ¼³Á¤ ÆÄÀÏÀÌ´Ù. ´ÙÀ½Àº ÇÊÀÚÀÇ listener ÀÇ Ãʱ⠼³Á¤Ä¡ ³»¿ëÀÌ´Ù.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /usr/u01/product/8.1.7)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = oracle)
      (ORACLE_HOME = /usr/u01/product/8.1.7)
      (SID_NAME = oracle)
    )
  )
				
±×¸® ÀÌÇØÇÏ±â ¾î·ÆÁö ¾ÊÀ» °ÍÀÌ´Ù. Å©°Ô 2°³ÀÇ ¼½¼ÇÀ¸·Î ÀÌ·ç¾î Á®Àִµ¥ LISTENER ¼½¼ÇÀº ¿¬°áÀ» ¹Þ¾ÆµéÀÏ Å¬¶óÀÌ¾ðÆ®¸¦ À§ÇÑ È£½ºÆ® IP ¿Í PORT ÁöÁ¤À» À§ÇÑ ³»¿ëÀ» SID_LIST_LISTENER Àº ¼­ºñ½ºÇÒ DB ÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù.

Ãʱ⿡´Â ´ÜÁö localhost(127.0.0.1) ¿¡¼­ÀÇ Á¢±Ù°ú ³»ºÎ(IPC) Á¢±Ù ¸¸À» À§ÇÑ ¼³Á¤ÀÌ µÇ¾îÀÖ´Ù. ±âº»ÀûÀ¸·Î ¿À¶óŬÀº Æ÷Æ®¹øÈ£ 1521 À» »ç¿ëÇÑ´Ù. ¾îµå·¹½º°¡ ´õ Ãß°¡µÈ´Ù¸é

      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
      )
				
ÀÌ·± ½ÄÀ¸·Î ¸ñ·ÏÀ» ½á³ª°¡¸é µÈ´Ù.

¼­ºñ½ºÇÏ´Â DB ´Â ÃÖÃÊ¿¡ ¿ì¸®°¡ ¸¸µé¾ú´ø oracle ÀÌ ¼­ºñ½º µÉ°ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î ¼­ºñ½ºÇÒ DB ¸ñ·ÏÀ» °è¼ÓÀûÀ¸·Î Ãß°¡ÇØ ³ª°¥¼ö ÀÖ´Ù.


2.2.2절. listener °¡µ¿

listener.ora ¼³Á¤À» ¸¶ÃÆ´Ù¸é(¿ì¼±Àº Ãʱ⠱⺻ ¼³Á¤³»¿ëÀ» ±×´ë·Î »ç¿ëÇϵµ·Ï ÇϰڴÙ) ÀÌÁ¦ listener À» °¡µ¿½ÃÄÑ¾ß ÇÑ´Ù. oracle °èÁ¤À¸·Î ½ºÀ§Ä¡ À¯ÀúÇÑ´ÙÀ½¿¡ lsnrctl À» »ç¿ëÇÏ¸é ¸®½º³Ê¸¦ °¡µ¿½Ãų¼ö ÀÖ´Ù.

[oracle@localhost admin]$ lsnrctl

LSNRCTL for Linux: Version 8.1.7.0.0 - Production on 30-OCT-2002 00:34:12

(c) Copyright 1998 Oracle Corporation.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start
Starting /usr/u01/product/8.1.7/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 8.1.7.0.0 - Production
System parameter file is /usr/u01/product/8.1.7/network/admin/listener.ora
Log messages written to /usr/u01/product/8.1.7/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
...
...
The command completed successfully
				
LSNRCTL> ÇÁ·ÒÇÁÆ® »ó¿¡¼­ status ¸¦ ÀÌ¿ëÇϸé ÇöÀç ¸®½º³ÊÀÇ »óŸ¦ È®ÀÎÇÒ¼ö ÀÖÀ¸¸ç, stop ¸¦ ÀÌ¿ëÇØ¼­ ¸®½º³Ê¸¦ ÁßÁö ½Ãų¼ö ÀÖ´Ù.


2.3절. tnsnames (Ŭ¶óÀ̾ðÆ®Ãø)

ÀÌÁ¦ Ŭ¶óÀ̾ðÆ®Ãø ¼³Á¤À» ÇØ¾ß ÇÑ´Ù. ´ç¿¬È÷ Ŭ¶óÀ̾ðÆ®Ãø È£½ºÆ®¿¡´Â Oracle Ŭ¶óÀÌ¾ðÆ® Á¦Ç°±ºÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù(¼³Ä¡µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÏ°í ¹®¼­¸¦ ÁøÇà ÇϰڴÙ).

tnsnames ´Â °£´ÜÈ÷ »ý°¢ÇÏÀÚ¸é Ŭ¶óÀÌ¾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀÌ ¿À¶óŬ ¼­¹ö¿¡ Á¢±ÙÇϱâ À§Çؼ­ ¾Ë¾Æ¾ßµÉ ¼­¹öÃø Á¤º¸¸¦ ´ã°í ÀÖ´Â µ¥ÀÌŸº£À̽º¶ó°í ¾Ë°í ÀÖÀ¸¸é µÈ´Ù.


2.3.1절. tnsnames ¼³Á¤

$ORACLE_HOME/network/admin/tnsnames.ora ¶ó´Â ÆÄÀÏÀÌ ¹Ù·Î ¼­¹öÁ¤º¸¸¦ ´ã°í ÀÖ´Â ÆÄÀÏÀÌ´Ù.

INST1_HTTP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = oracle)
      (PRESENTATION = http://admin)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracle)
    )
  )
				
¿ª½Ã ÀÌÇØÇÏ´Â µ¥¿¡´Â º°·Î ¾î·Á¿òÀÌ ¾øÀ»°ÍÀÌ´Ù. ´Ù¸¥°Ç º°·Î ½Å°æ¾µ°Í ¾ø°í ¸¶Áö¸·¿¡ ÀÖ´Â ORACLE Á¤µµ¸¸ ¾Ë°í ÀÖÀ¸¸é µÉ°ÍÀÌ´Ù. ¿©±â¿¡ º¸¸é Á¢±ÙÇÒ ¼­¹öÀÇ Á¤º¸µéÀÌ ³ª¿Í ÀÖ´Ù. listener.ora ¿Í ºñ±³ÇÏ¸é ½±°Ô ÀÌÇØ°¡ °¡´ÉÇÒ °ÍÀÌ´Ù. localhost ·Î Á¢±ÙÇϸç 1521 Æ÷Æ®·Î tcp ¿¬°áÀ» Çϰí oracle DB¸¦ »ç¿ëÇϰڴٴ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¸¸¾à¿¡ ¼­¹öÃø¿¡ zipcode ¶ó´Â DB °¡ ÀÖ°í zipcode ¿¡ ¿¬°áÇϱâ À§ÇÑ ³»¿ëÀ» Ãß°¡ÇÏ°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ Ãß°¡½ÃÄÑÁÖ¸é µÉ°ÍÀÌ´Ù.
ORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zipcode)
    )
  )
				
¹°·Ð listener.ora ¿¡µµ ¿©±â¿¡ ¾Ë¸Â´Â ¼³Á¤ÀÌ µÇ¾îÀÖ¾î¾ß ÇÒ°ÍÀÌ´Ù.


2.3.2절. Å×½ºÆ®

±×·³ °£´ÜÈ÷ Å×½ºÆ®¸¦ ÇØº¸µµ·Ï ÇÏÀÚ. Å×½ºÆ®´Â sqlplus ¶ó´Â ¿À¶óŬ¿¡¼­ Á¦°øÇϴ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ÀÌ¿ëÇÒ°ÍÀÌ´Ù.

 
[oracle@localhost admin]$ sqlplus system/manager@ORACLE

SQL*Plus: Release 8.1.7.0.0 - Production on Wed Oct 30 00:51:35 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production

SQL> 
				
SQL> ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁø´Ù¸é listener °¡ Á¦´ë·Î ÀÛµ¿Çϸç ÇØ´ç tnsnames ¸¦ ÀÌ¿ëÇØ¼­ ¿¬°áÀ» ¼º°øÇßÀ½À» ÀǹÌÇÑ´Ù.


2.4절. µ¥ÀÌŸ º£À̽º ÁغñÇϱâ

±×·³ Å×½ºÆ®¸¦ À§ÇÑ µ¥ÀÌŸº£À̽º¸¦ ÁغñÇØ º¸µµ·Ï ÇÏÀÚ. ÁغñÇÒ µ¥ÀÌŸ º£À̽º´Â ¿ìÆí¹øÈ£ÀÌ´Ù. ÀÚ·á½Ç¿¡¼­ ´Ù¿î·Îµå ¹ÞÀ»¼ö ÀÖ´Ù.

¾ÐÃàÀ» Ç®¸é 10°³ Á¤µµÀÇ ÆÄÀÏÀÌ »ý¼ºµÉ°ÍÀε¥, ¿À¶óŬ¿¡¼­ °ð¹Ù·Î ÀоîµéÀϼö ÀÖ´Ù. sqlplus ¸¦ ÀÌ¿ëÇØ¼­ oracle db ¿¡ Á¢±ÙÇϵµ·Ï ÇÑ´Ù. ±×´ÙÀ½ "@ÆÄÀÏÀ̸§" ½ÄÀ¸·Î ÀûÀçÇÏ¸é µÈ´Ù.

  
SQL> @postcode.sql
Input truncated to 3 characters

Table created.

SQL> @postcode1.sql 
...
SQL> @postcod2.sql
			
À̷νá Å×½ºÆ®¿ë db »ý¼º±îÁö ¸ðµÎ ¸¶ÃÆ´Ù. ÀûÀçÇϱⰡ ±ÍÂú´Ù¸é ±×³É Å×½ºÆ®¿ëÀ¸·Î ÆÄÀÏ Çϳª ºÐ·® Á¤µµ¸¸ ÀûÀçÇØµµ °ü°è´Â ¾ø´Ù.


3절. Pro *C/*C++ ¼Ò°³

Pro *C(ÀÌÇÏ proc) ´Â ÀÏÁ¾ÀÇ ÇÁ¸®ÄÄÆÄÀÏ·¯´Ù. Áï CÄڵ忡 ¿À¶óŬ°ü¸®¸¦ À§Çؼ­ ÀÏ»óÀûÀ¸·Î »ç¿ëÇÏ´Â SQL, PL/SQL µîÀ» °áÇÕ½ÃÄѼ­ ÄÚµùµÈ ÇÁ·Î±×·¥À» CÄÄÆÄÀÏ·¯(¿©±â¿¡¼­´Â gcc)°¡ ÀνÄÇÒ¼ö ÀÖ´Â C ÄÚµå ÆÄÀÏ·Î º¯°æ½ÃÄÑÁÖ´Â ÀÏÀ» ÇÑ´Ù. ¿À¶óŬ¿¡¼­´Â proc ¶ó´Â ÇÁ¸®ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇϰí ÀÖ´Ù.


3.1절. ¿Ö proc ¸¦ »ç¿ëÇϴ°¡

¾Æ¸¶µµ 1GL ÀÌ´Ï 2GL ÀÌ´Ï ÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î ¼¼´ë¸¦ ³ªÅ¸³»´Â ¸»¿¡ ´ëÇØ¼­ µé¾î º¸¾ÒÀ»°ÍÀÌ´Ù. º¸Åë 1¼¼´ë ¾ð¾î, 2¼¼´ë ¾ð¾î¶ó´Â ½ÄÀ¸·Î ºÒ¸®´Âµ¥, ÀÌ ºÐ·ù¿¡ µû¸£¸é C ¾ð¾î´Â 3¼¼´ë ¾ð¾î(3GL)ÀÌ´Ù. ÀÌ¿¡ ¹ÝÇØ SQL(Structur query language) ¾ð¾î´Â 4¼¼´ë ¾ð¾î·Î½á, 3GL ¾ð¾î°¡ ÀýÂ÷½Ä ¾ð¾îÀε¥ ¹ÝÇØ¼­, 4¼¼´ë ¾ð¾î´Â Á»´õ ÀÚ¿¬¾î¿¡ ±ÙÁ¢ÇÑ ¾ð¾îÀû Ư¼ºÀ» °¡Áø´Ù.

ÀÌ·¯ÇÑ 4GL ¾ð¾î°¡ °¡Áö´Â ÀÚ¿¬¾î¿¡ ±ÙÁ¢ÇÑ Æ¯¼ºÀº ¾ð¾î »ç¿ëÀ» Á÷°üÀûÀÌ°í ½±°Ô ÇÒ¼ö ÀÖµµ·Ï ¸¸µé¾îÁÖÁö¸¸, ÀýÂ÷ÁöÇâ ÀûÀÎ ¾÷¹«¸¦ ó¸®Çϱ⿡´Â ±×¸® ÀûÇÕÇÏÁö°¡ ¾Ê´Ù. ±×·¡¼­ ¸¹Àº °æ¿ì C, C++, JAVA µîÀÇ ¾ð¾îµé°ú °áÇÕÇØ¼­ »ç¿ë ÇÏ°Ô µÈ´Ù.

±×·±µ¥ ´ë°ÔÀÇ °æ¿ì ÀÌ·¯ÇÑ 3GL¾ð¾î¿Í 4GL ¾ð¾îÀÇ °áÇÕ°úÁ¤Àº ²Ï³ª ¼º°¡½Å ÀÛ¾÷À̸ç, ¸¹Àº ½Ã°£À» ÇÊ¿ä·Î ÇÑ´Ù. SQL Àº º°µµ·Î Çϰí, °Å±â¿¡ µ¡ºÙ¿©¼­ ´Ù¾çÇÑ API µéÀ» »õ·Î ÀÍÇô¾ß Çϱ⠶§¹®ÀÌ´Ù. ±×³ª¸¶ mysql, postgresql °ú °°Àº ºñ±³Àû ´Ü¼øÇÑ(¿À¶óŬ¿¡ ºñÇØ¼­) DBÀÇ °æ¿ì ¸î°¡Áö API ¸¸ ÀÍÈûÀ¸·Î½á ±×¸® ¾î·ÆÁö ¾Ê°Ô ÇÁ·Î±×·¡¹Ö ÇÒ¼ö ÀÖÁö¸¸, ¿À¶óŬÀÇ °æ¿ì »ó´çÇÑ ³ë·ÂÀ» ÇÊ¿ä·Î ÇÑ´Ù. ÀÌ·¯ÇÑ Àú¼öÁØ¿¡¼­ Á÷Á¢Á¢±ÙÀ» À§Çؼ­ Á¦°øÇÏ´Â°Ô OCI(Oracle Call Interface) ¶ó´Â API ¸ðÀ½ÀÌ´Ù.

±×·¡¼­ ³ô´õ ³ôÀº ·¹º§¿¡¼­ C ¾ð¾î¿Í SQL ¾ð¾î¸¦ °áÇÕÇØ¼­ ÇÁ·Î±×·¡¹Ö ÇÒ¼ö Àִ ȯ°æÀ» Á¦°øÇϰíÀÚ ÇÏ´Â ¸ñÀû¿¡¼­ ³ª¿Â°Ô ¹Ù·Î proc ÀÌ´Ù. proc ¼Ò¾²¸¦ º¸¸é ¾Ë°ÚÁö¸¸ º¹ÀâÇÑ API µé ´ë½Å¿¡ SQL ÀÇ ¹®ÀåÀ» ±×´ë·Î »ç¿ëÇϰí ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù.

¶ÇÇÑ proc ´Â C ÄÚµå³×¿¡ PL/SQL ºí·°À» Á÷Á¢ ³Ö¾î¼­ ÄÚµùÇÒ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Ù. PL/SQL Àº 4GL ¾ð¾îÀÇ ÀÚ¿¬¾îÀûÀΠƯ¼º¿¡ ÀýÂ÷½Ä ¾ð¾îÀÎ 3GL ¾ð¾îÀÇ Æ¯Â¡À» °áÇÕ½ÃŲ µµ±¸ÀÌ´Ù. PL/SQL ¿¡ ´ëÇÑ ³»¿ëÀº ÀÚ¼¼È÷ ´Ù·çÁö´Â ¾ÊÀ»°ÍÀ̸ç, ÇÊ¿äÇÒ°æ¿ì ¾à°£¾¿ ´Ù·çµµ·Ï ÇϰڴÙ. ¾î¶µç proc ¸¦ ÀÌ¿äÇÑ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ·Á¸é PL/SQL ¿¡ ¾î´ÀÁ¤µµ Àͼ÷ÇØÁú Çʿ䰡 ÀÖ´Ù. PL/SQL Àº 4GL ¾ð¾îÀÇ Æ¯¼ºÀ» °¡Áö¹Ç·Î C, JAVA µî¿¡ ºñÇØ¼­ ¸Å¿ì ½±°Ô ÀÍÈú¼ö ÀÖ´Ù.


3.2절. proc ÄÄÆÄÀÏ °úÁ¤

ÀÏ´Ü ÇÁ·Î±×·¡¸Ó´Â SQL ¹®ÀÌ Æ÷ÇԵǾî ÀÖ´Â Äڵ带 ÀÛ¼ºÇÑ´Ù. º¸ÅëÀÌ·¯ÇÑ ÄÚµå´Â È®ÀåÀÚ°¡ .pc ·Î µÇ¾îÀÖ´Ù. ±×·¯³ª ÀÌ·¯ÇÑ .pc ÄÚµå´Â gcc ÄÄÆÄÀÏ·¯°¡ ÄÄÆÄÀÏ ÇÒ¼ö ¾øÀ½À¸·Î gcc °¡ ÀÌÇØÇÒ¼ö ÀÖ´Â .c ÄÚµå·Î º¯°æ½ÃÄÑÁÖ´Â "¼±ÇàÄÄÆÄÀÏ" °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ ¼±ÇàÄÄÆÄÀÏ·¯°Å .pc ÆÄÀÏÀ» .c ÄÚµå·Î º¯°æÇÑ ÀÌÈÄÀÇ ÄÄÆÄÀÏ °úÁ¤Àº ±âÁ¸ c ÄÄÆÄÀÏ °úÁ¤°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù.

     +--------------+
     | Proc Program | SQL ¹®À» Æ÷ÇÔ
     | .pc          | 
     +--------------+
            ¡é
     +--------------+
     | ¿À¶óŬ       | 
     | ¼±ÇàÄÄÆÄÀÏ·¯ | 
     | proc         |
     +--------------+
            ¡é
     +--------------+
     | ÇØ¼®µÈ       | ±âÁ¸ÀÇ SQL ¹®Àº library ¸¦ 
     | .c ½î¾²ÄÚµå  | Á÷Á¢ È£ÃâÇÏ´Â ¹®À¸·Î º¯°æµÊ 
     +--------------+
            ¡é
     +--------------+
     | C ÄÄÆÄÀÏ·¯   | 
     +--------------+
            ¡é
     +--------------+
     | Object ÆÄÀÏ  | 
     +--------------+
            ¡é
     +--------------+
     | Linker       | ¿À¶óŬ ¶óÀ̺귯¸®°¡ ¸µÅ©µÊ 
     +--------------+
            ¡é
     +--------------+
     | ½ÇÇàÆÄÀÏ     | 
     +--------------+

			


4절. °£´ÜÇÑ proc ÇÁ·Î±×·¥ ¿¹Á¦

´ÙÀ½Àº zipcode Å×ÀÌºí¿¡ ÃѸÀÇ ÀÚ·á°¡ µé¾îÀÖ´ÂÁö ¾Ë¾Æ¿À´Â ¾ÆÁÖ °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ´Ù.

¿¹Á¦ : zipcode.pc

 
#include <stdio.h>
#include <unistd.h>

/* SQLCA ¸¦ ¼±¾ðÇÑ´Ù */
EXEC SQL INCLUDE SQLCA;

int main(int argc, char **argv)
{
    /* ¼±¾ðºÎ */
    EXEC SQL BEGIN DECLARE SECTION;
            int count = 0;
            char userid[40]= "system/manager@ORACLE";
    EXEC SQL END DECLARE SECTION;

    /* DB ¿¬°á */
    EXEC SQL CONNECT :userid;

    /* ¿¡·¯ ó¸® */
    if (sqlca.sqlcode < 0)
    {
            printf("%s\n", sqlca.sqlerrm.sqlerrmc);
            EXEC SQL ROLLBACK WORK RELEASE;
            exit(0);
    }

    /* Äõ¸® */ 
    EXEC SQL SELECT count(*) 
            INTO: count  
            FROM zipcode;

    /* Äõ¸® °á°ú¿¡ ´ëÇÑ ¿¡·¯Ã³¸® */
    if (sqlca.sqlcode != 0) 
    {
            EXEC SQL COMMIT WORK RELEASE;
            return 0;
    }

    printf("¿ìÆíÁÖ¼Ò µ¥ÀÌŸ : %d °³\n", count);

    /* DB ¿¬°á Á¾·á */
    EXEC SQL COMMIT WORK RELEASE;
}
		
Äڵ带 º¸¸é ¾Ë°ÚÁö¸¸ ¹¹ º¹ÀâÇÏ°Ô ÀÌ°Í Àú°Í ÀÎŬ·çµå ½ÃÄÑÁÙ Çʿ䵵 ¾ø°í, SQL ¹®ÀÌ °ÅÀÇ ±×´ë·Î ¾²¿©¼­ ÀÌÇØÇϱ⵵ ¸Å¿ì ½±´Ù´Â °ÍÀ» ¾Ë¼ö ÀÖÀ» °ÍÀÌ´Ù. Âü°í·Î ¿À¶óŬ proc ½î¾²ÆÄÀÏ¿¡¼­ÀÇ ÁÖ¼®Àº /* */ ¸¸ »ç¿ë°¡´ÉÇÏ´Ù. // À» ½è´Ù°¡´Â ¿À·ù°¡ ¹ß»ýÇÑ´Ù.

À̹ø ¹®¼­´Â ´ÜÁö ÀÌ·±½ÄÀ¸·Î ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏ´Ù¶ó´Â Á¤µµ¸¸ º¸¿©ÁÙ °ÍÀÓÀ¸·Î À§ÀÇ ÄÚµåÀÇ ¼³¸íÀº »ý·«Çϵµ·Ï ÇϰڴÙ. ³ªÁß¿¡ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇϰڴÙ.


4.1절. ÄÄÆÄÀÏ Çϱâ

¿ì¼± zipcode.pc ÆÄÀÏÀ» proc ¼±Çà ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ¼­ zipcode.c ÆÄÀÏÀ» ¾ò¾î³½´ÙÀ½ gcc¸¦ ÀÌ¿ëÇØ¼­ object ÆÄÀÏÀ» ¸¸µé°í ¸µÅ©°úÁ¤À» °ÅÃļ­ ½ÇÇàÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ´ÙÀ½Àº ÀÌ·¯ÇÑ ÀÏ·ÃÀÇ °úÁ¤ÀÌ´Ù.

[oracle@localhost proc]$ proc zipcode INCLUDE=include/ \ 
> include=/usr/u01/product/8.1.7/precomp/public/ \
> include=/usr/u01/product/8.1.7/rdbms/demo/ \
> include=/usr/u01/product/8.1.7/rdbms/public/ \
> include=/usr/u01/product/8.1.7/network/public/ \
> PARSE=NONE RELEASE_CURSOR=YES MODE=ANSI

Pro*C/C++: Release 8.1.7.0.0 - Production on Thu Oct 31 00:29:15 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

System default option values taken from: /usr/u01/product/8.1.7/precomp/admin/pcscfg.cfg

[oracle@localhost proc]$ gcc -c -o zipcode.o zipcode.c -I$ORACLE_HOME/precomp/public \ 
> -I$ORACLE_HOME/rdbms/demo -I$ORACLE_HOME/rdbms/public \
> -I$ORACLE_HOME/network/public

[oracle@localhost proc]$ gcc -o zipcode zipcode.o -L$ORACLE_HOME/lib -lclntsh
			
ÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú°ªÀ» º¸¿©ÁÙ °ÍÀÌ´Ù.
[oracle@localhost proc]$ ./zipcode 
¿ìÆíÁÖ¼Ò µ¥ÀÌŸ : 43476 °³
			


4.2절. ÄÄÆÄÀÏ °úÁ¤À» Makefile ·Î °ü¸®Çϱâ

ÇÏÁö¸¸ À§ÀÇ ¹æ¹ý´ë·Î ¼öµ¿À¸·Î Äڵ带 ÄÄÆÄÀÏ ÇÏ´Â°Ç ºñ »ý»êÀûÀÎ ¹æ¹ýÀÌ´Ù. ±×·¯¹Ç·Î Makefile À» ¸¸µé¾î¼­ °ü¸®Çϵµ·Ï ÇÏÀÚ.

Makefile

TARGET          = zipcode

CC              = gcc
PROC            = proc
LIB             = -L$(ORACLE_HOME)/lib -lclntsh
MYINC           = include/
PROCINC         = include=$(ORACLE_HOME)/precomp/public/ include=$(ORACLE_HOME)/rdbms/demo/ \
	include=$(ORACLE_HOME)/rdbms/public/ \
	include=$(ORACLE_HOME)/network/public/ 
CINC            = -I$(ORACLE_HOME)/precomp/public/ -I$(ORACLE_HOME)/rdbms/demo/ \
	-I$(ORACLE_HOME)/rdbms/public/ -I$(ORACLE_HOME)/network/public/ 

ORA_OPT         = PARSE=NONE RELEASE_CURSOR=YES MODE=ANSI
CC_OPT          =

OBJECT          = zipcode.o
ORA_GARBAGE     = *.dcl *.cod *.cud *.lis

######## implicit rules
.SUFFIXES: .pc .c

.pc.c:
	$(PROC) $* INCLUDE=$(MYINC) $(PROCINC) $(ORA_OPT)
.c.o:
	$(CC) -c -o $*.o $*.c -I $(MYINC) $(CINC)

####### build rules

all:            $(TARGET)

$(TARGET):      $(OBJECT)
	$(CC) -o $(TARGET) $(OBJECT) $(LIB)

zipcode.c: zipcode.pc
zipcode.o: zipcode.c

clean:
	rm -f $(TARGET) $(OBJECT) $(ORA_GARBAGE)
			
ÀÌÇØÇϴµ¥ Ưº°È÷ ¾î·Á¿òÀº ¾øÀ»°ÍÀ̶ó°í »ý°¢µÈ´Ù. Makefile ¿¡ ´ëÇÑ ³»¿ëÀº make ¸¦ ÀÌ¿ëÇÑ ÇÁ·ÎÁ§Æ® °ü¸® (1)¸¦ Âü°íÇϵµ·Ï ÇÑ´Ù.


5절. °á·Ð

ÀÌ»ó proc ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ °¡Àå ±âº»ÀûÀΠȯ°æ¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾ÒÀ¸¸ç, ¾ÆÁÖ °£´ÜÇÑ ¿¹¸¦ µé¾î¼­ proc ÇÁ·Î±×·¡¹ÖÀ» ¸Àº¸¾Ò´Ù. ´ÙÀ½¿¡´Â Á»´õ ÀÚ¼¼ÇÑ proc ÇÁ·Î±×·¡¹Ö¿¡ °üÇÑ ³»¿ëÀ» ´Ù·çµµ·Ï ÇϰڴÙ.


Cache Error
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.