412
1 DB DB DB DB2 2 2 2 Express Express Express Express-C !" !" !" !"

DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

1

��������ก� ��������ก� ��������ก� ��������ก�

DBDBDBDB2 2 2 2 ExpressExpressExpressExpress----CCCC

���������������� !"��������������������� !"��������������������� !"��������������������� !"�����

Page 2: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

2 เรมตนกบ DB2 Express-C

#������$%�&�'(� 2 (��*+"� 2551) #������$�(& /��/����0+��� IBM® DB2® Express-C �4��$�� 9.5 �0+���7���ก8$ (Linux)®, ">��ก8$ (UNIX)® B7C4�� !4�$ (Windows)® © 7�I��'J�K ���*'L��(��M� %��$/�����, 2550, 2551. ��4�7�I��'J�K

Page 3: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

3

เนอหา

About this book....................................5 ประกาศและเครองหมายการคา........................5 ผทควรอานหนงสอเลมน ...............................7 โครงสรางของหนงสอเลมน ...........................7 หนงสอเพอชมชน (Community) ........................8 ผแตงและผมสวนรวม .................................9 กตตกรรมประกาศ....................................9 คานยม ............................................10

ส�วนท 1 – คาอธบายโดยสรปและการตดตง ..............19

บทท 1 – ดบท เอกซ�เพรส-ซ (DB2 Express-C) คออะไร21 1.1 ไมเสยคาใชจายในการพฒนา (Develop) นาไปใช (Deploy) และแจกจาย (Distribute)… ไมจากด (No Limits) .....22 1.2 ความชวยเหลอสาหรบผใช (User Assistance) และความชวยเหลอทางเทคนค (Technical Support)....23 1.3 ดบท เซรฟเวอร (DB2 Servers) ..................23 1.4 ดบทไคลเอนต (DB2 Clients) และดบทไดรเวอร ...24 1.5 ความอสระในการพฒนาแอพพลเคชน ...............26 1.6 ระหวางเวอรชนของดบท (DB2 Versions) กบเอดชนของดบท (DB2 Editions) .........................................27 1.7 การอพเกรด ขนไปใช DB2 อกเอดชนหนง ..........28 1.8 การบารงรกษา DB2 Express-C ...................29 1.9 ซอฟตแวรทไมเสยคาใชจายทเกยวของ.............29 1.9.1 ไอบเอม ดาตาสตดโอ (IBM Data Studio) .....30 1.9.2 ดบท เนตเสรชเอกเทนเดอร (DB2 Net Search Extender) 30 1.9.3 ชดเครองมอเรมตนสาหรบการใช DB2 บนเรลส (Starter Toolkit for DB2 on Rails) .......................30 1.9.4 ชดเครองมอเรมตนสาหรบการใช DB2 กบเวบ 2.0 (Web 2.0 Starter Toolkit for DB2) ........................31 1.9.5 เวบสเฟยร แอพพลเคชนเซรฟเวอร (WebSphere Application Server) – ฉบบชมชน (Community Edition)..........31

บทท 2 – คณลกษณะ (Features) และผลตภณฑ� (Products) ทเกยวข�อง 33 2.1 คณลกษณะทมากบ DB2 Express-C Subscription ....39 2.1.1 ชดซอมแซม (Fix Packs).....................39 2.1.2 High Availability Disaster Recovery (HADR) 39 2.1.3 การทาสาเนาขอมล (Data Replication) ......40

2.2 คณลกษณะทไมมใน DB2 Express-C ................41 2.2.1 การแบงสวนฐานขอมล (Database Partitioning)42

Page 4: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

4 เรมตนกบ DB2 Express-C

2.2.2 Connection Concentrator ................... 42 2.2.3 สวนขยายทางภมมาตรศาสตร (Geodetic Extender) 42 2.2.4 การจดการปรมาณงาน (Workload Management - WLM) 42

2.3 ผลตภณฑทมคาธรรมเนยมในการใชทเกยวของกบ DB2 43 2.3.1 DB2 Connect ............................... 43 2.3.2 WebSphere Federation Server ............... 44 2.3.3 WebSphere Replication Server .............. 45

บทท 9 – โปรแกรมอรรถประโยชน�สาหรบเคลอนย�ายข�อมล .. 1 9.1 โปรแกรมอรรถประโยชน EXPORT ................ 184 9.2 โปรแกรมอรรถประโยชน IMPORT ................ 185 9.3 LOAD ......................................... 187 9.4 โปรแกรมอรรถประโยชน db2move ............... 190 9.5 โปรแกรมอรรถประโยชน db2look ............... 190 ปฏบตการท 8 – การดง DDL จากฐานขอมล EXPRESS... 195

Page 5: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

5

�ก(�"4ก��������7O��(&�ก(�"4ก��������7O��(&�ก(�"4ก��������7O��(&�ก(�"4ก��������7O��(&

/�Cก+PB7C�%�������+"ก+�%�+/�Cก+PB7C�%�������+"ก+�%�+/�Cก+PB7C�%�������+"ก+�%�+/�Cก+PB7C�%�������+"ก+�%�+

© 7�I��'J�K ���*'L��(��M� %��$/����� 2550, 2551 ��4�7�I��'J�K L��(��M� B%�+!+ (IBM Canada) 8200 4+�$�!� ��4��4 (8200 Warden Avenue) �+�$กBU� ���B'�( � (Markham, ON) L6G 1C7 B%�+!+ ��+�7�ก�7("���������$8&0+��ก�+�#���(&�����O4���]���O4�^!I����ก�+�#���(& L�O4O+^��>/B��^! _ ���� B/7�/`�a+*+����_ !"L�OL!������b+�c+ก�c�+I��7�I��'J�K'(�ก7O+4I�+���� L��(��M�L�OL!�B�!�ก+���/�Cก�����B�!�4O+�/`�ก+��(&Bc�I���'Mcc���^����&��+^���ก�+��(& B7CI�/d���Jก+���/�Cก�e7��afg$�4�h]�%4+����+C��^�ก+��0+L/^�������4�h�/�C��%$ใด ๆ ไอบเอมไมถอความรบผดชอบในขอผดพลาดใด ๆ ทอาจเกดขนในเอกสารฉบบน เนอหา สาระในเอกสารฉบบนเปลยนแปลงไดโดยทไมตองแจงใหทราบ ไอบเอมขอสงวนสทธ ในการ เปลยนแปลงใด ๆ โดยไมมขอผกพนทจะตองแจงใหผใดทราบถงการเปลยนแปลงดงกลาว ไอบเอมไมถอเปนขอผกมดทจะดแลใหเนอหาสาระในเอกสารนมความทนสมย ���&��+�+�C^���ก�+�#���(&�ก(�"4I���ก�e7��afg$'(�L�OL!��/`�I��L��(��M�L!����+c+กe>�e7��I��e7��afg$��7O+�&� L��(��M�L�OL!�'!���e7��afg$��7O+�&�B7CL�O�+�+�h"��"�%4+�7C��("!h>ก����I��ประสทธภาพ สภาพความเขากนได หรอการกลาวอางใด ๆ ทเกยวกบผลตภณฑทไมใชของไอบเอม คาถามเกยวกบความสามารถของผลตภณฑทไมใชของไอบเอม กรณาสงไปทผผลตของผลตภณฑเหลานน

Page 6: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

6 เรมตนกบ DB2 Express-C

ไอบเอม, ตราสญลกษณของไอบเอม, AIX, DB2, DB2 Connect, DB2 Universal Database, i5/OS, Informix, pureXML, Tivoli, WebSphere, และ z/OS เปนเครองหมายการคา หรอ เครองหมายทะเบยนการคาของ International Business Machines Corporation ประเทศสหรฐอเมรกาและ/หรอ ประเทศอน ๆ �%�������+"ก+�%�+c+4+B7C�%�������+"ก+�%�+'(��(c+4+�/`���&�r+� �/`��%�������+"ก+�%�+ของบรษทซนไมโครซสเตม (Sun Microsystems, Inc.) ประเทศสหรฐอเมรกา และ/หรอ ประเทศอน ๆ L� %�8�t�$B7C4�� !4�$�/`��%�������+"ก+�%�+I�����*'L� %�8�t�$ (Microsoft Corporation) /�C�'P���r�����ก+ B7C/���� /�C�'P���� _ 7���ก8$�/`��%�������+"'C��("�ก+�%�+I�� Linus Torvalds /�C�'P���r�����ก+ B7C/���� /�C�'P���� _ ">��ก8$�/`��%�������+"'C��("�ก+�%�+I�� The Open Group /�C�'P���r�����ก+ B7C/���� /�C�'P���� _ �������*' e7��afg$ �������ก+����� _ �+c�/`��%�������+"ก+�%�+�����%�������+"���ก+�I����%$ก����� ก+���+����h]�e7��afg$�������ก+�I��L��(��M�^������(����$#���(& L�OL!���+"h]�ก+�'(�ไอบเอมตงใจใหมใหใชไดในทกประเทศทมไอบเอมปฎบตการอย

Page 7: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เกยวกบหนงสอเลมน 7

e>�'(�%4��O+��������7O��(&e>�'(�%4��O+��������7O��(&e>�'(�%4��O+��������7O��(&e>�'(�%4��O+��������7O��(&

�������7O��(&�&�^c^���0+���'�ก%�'(�'0+�+������&�^ccC'0+�+��ก(�"4ก� r+�I���>7 �"O+���O� e>�!>B7�C��r+�I���>7 �ก�u�+B�M��7��%�� '(�/�]ก*+ �h+/��ก8�t�$B4�$ e>�c!ก+�e7��afg$ %�>�+c+�"$B7C�กP]ก*+

%�����+�I���������7O��(& %�����+�I���������7O��(& %�����+�I���������7O��(& %�����+�I���������7O��(&

�O4�'(� 1 a+��4�B7Cก+���!�&� �J��+"h]� DB2 Express-C ��!��� B�C�0+e7��afg$B7C%�f7ก*fC^���Cก>7 DB2 �O4"��7��^�ก+���!�&�B7Cก+����+�r+�I���>7 B7C�J��+"h]��%��������'(�^��L!�ก� DB2 �O4�'(� 2 ก+���("��>� DB2: ก+�!>B7�C��r+�I���>7 ��กB���+^��%����%"ก��O4��O+� _ I�� DB2 L!�BกO �a+�B4!7��� �h+/w�"ก��� ก+��������O�L/"�r+�I���>7B���( �� (Remote connectivity) �M���cก�$�O+� _ I��r+�I���>7 ก+��%7����"�+"I���>7 (Data Movement) L!�BกO ก+��0+�I�+ �O���ก B7C �7!I���>7 (Import/Export/Load) %4+�/7�!a" (Security) ก+��กM�สารองขอมล (Backup) และการกคนของขอมล (Recovery) การใชงานพรอมกน (Concurrency) และการใชลอก ((((LockLockLockLock)))) และงานดแลรกษาอนๆทวไป �O4�'(� 3 ก+���("��>� DB2: ก+��u�+B�M��7��%�� %���%7�� Stored Procedure tw�ก$��'(�ผใชกาหนด (User-Defined Function) คาสง Trigger คาสง SQL/XML คาสง XQuery การพฒนาโปรแกรมดวยภาษา Java ™ภาษา PHP และ ภาษา Ruby a+%e�4ก/�Cก��!�4"I���>7'(��(/�C "��$�ก(�"4ก�ก+�Bก�/wb�+�O+� _ B����ก�!��("ก4O+“/d����ก+� ((((QuicklabsQuicklabsQuicklabsQuicklabs))))” �(ก+�c!���("�L4��0+���'�ก�' Lt7$'(�����^���0+���/d����ก+�รวมไวในไฟลชอ expresscexpresscexpresscexpressc____bookbookbookbook____quicklabsquicklabsquicklabsquicklabs____9999....5555....zipzipzipzip ซงมากบหนงสอเลมน หรอสามารถหาไดทเวบไซต IBM® DB2 Express-C : www.ibm.com/db2/express ���&��+^��������7O��(&^��^�4��+8]���/`��O4���]��I�� %��ก+� “DB2 on Campus ” B7C�(%4+�^ก7��%("�ก�ก+��0+����^�4(!�'P�$�0+��� E-Learning

Page 8: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

8 เรมตนกบ DB2 Express-C

'(���L!�'(� www.channelDB2.com/oncampus �������7O��(&�+�+�h^���O4"^�ก+����("��4 ��� DB2 on Campus ก+�����(& h���/`�ก+�"��"�ก+��0+��Mc%4+��>� �(%O+�'("�L!�ก�ก+����� DB2 �/`��47+ 16 ��4 ���+�+�h�O+�I���>7I�� %��ก+��(&L!����������'(��4M�L8�$ DB2 Express-C www.ibm.com/db2/express/students.html ��+"����: P]ก*+�+"7C��("!����������ก(�"4ก� %��ก+� DB2 on Campus �+�+�hP]ก*+L!�c+ก4(!�'P�$�(&: Video:807741=id?show/video/video/com.2channeldb.www//:http:3902

�������0+���������������0+���������������0+���������������0+�������� (Community)(Community)(Community)(Community)

�������7O��(&���+� !"'(� DB2 Express-C B7C�0+��ก�>O����� DB2 Express-C !"L�O%�!%O+^��cO+" ��+��ก�+ก�+"I��������(&c+ก'�4 7ก L!��O4�B/7�������(&��ก�/`��7+"ภาษาหากมขอเสนอแนะ ตองการชวยเพมเตมเนอหาใหม หรอปรบปรงเนอหาเดมใหดขน หรอชวยแปลหนงสอนเปนภาษาอน สงอเมลพรอมความชวยเหลอทตองการจะเสนอไปท [email protected] ดวยหวเรอง “DB2 Express-C book changes.”

Page 9: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เกยวกบหนงสอเลมน 9

e>��I("�B7Ce>��O4"��7��e>��I("�B7Ce>��O4"��7��e>��I("�B7Ce>��O4"��7��e>��I("�B7Ce>��O4"��7��

��%%7!��O�L/�(&L!��I("����&��+B7C^��%4+��O4"��7��'(��0+%b^��>/B������ _ ^��������7O��(& Raul FRaul FRaul FRaul F. . . . ChongChongChongChong --- �4���+�ก�I("� Raul �/`�e>�c!ก+� %��ก+� DB2 �0+�����+4�'"+7"'(� IBM Toronto Lab

Ian HakesIan HakesIan HakesIan Hakes --- บรรณาธการ Ian เปน ผอานวยความสะดวกตาง ๆ แกชมชน DB2 Express-C ท IBM Toronto Lab

Rav SRav SRav SRav S. . . . AhujaAhujaAhujaAhuja --- e>��I("��O4�B7C�0+�4"ก+�c!����$ Rav �/`�e>�c!ก+��+4� �I��e7��afg$ DB2 '(� IBM Toronto Lab

ก����ก���/�Cก+Pก����ก���/�Cก+Pก����ก���/�Cก+Pก����ก���/�Cก+P

����I�I��%�f��%%7�O+� _ !��O�L/�(&�0+���%4+��O4"��7��B7Cก+��u�+���&��+'(���+����^��������7O��(&

• Ted Wasserman, Clara Liu และ Paul Yip จาก IBM Toronto Lab

ผพฒนาเนอหาซงใชเปนโครงรางสาหรบหนงสอเลมน • Don Chamberlin และ Cindy Saracco สาหรบบทความ IBM

developerWorks เกยวกบ XQuery และ Matthias Nicola สาหรบการนาเสนอเรอง pureXML™

• Kevin Czap และ Grant Hutchison สาหรบการพฒนาเนอหาทางเทคนคโดยยอของ DB2

• Katherine Boyachok สาหรบการออกแบบปกหนงสอเลมน • Susan Visser

สาหรบความชวยเหลอในการจดพมพหนงสอเลมน

Page 10: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

10 เรมตนกบ DB2 Express-C

%0+��"�%0+��"�%0+��"�%0+��"�

�4�ก��� %�������0+%b��&�r+��0+���ก+�ก�+4�!��L/I�+����+^��'% � 7"( '(�L��(��M� �4�ก������/`��O4���]��I��4�4u�+ก+�I���8��$t�4��$I���>7 (Data Server) I����+ c+กก+��/`�e>���ก���ก�'%��%ก+�c!ก+�I���>7^��O4�'P4��* 1960 B7C 1970 L��(��M�ยงคงไดเสนอเทคนคการจดการขอมลใหม ๆ มาอยางตอเนองซงสะทอนออกมาในรปของสทธบตรดานการจดการขอมลนบพนชนทเขยนโดยนกเทคโนโลยของไอบเอม ผลกคอหลากหลายองคกรยกษใหญในโลกนไดพงพาอาศยผลตภณฑของไอบเอม อยางเชน DB2 สาหรบทางานจดการขอมลทมความตองการสงและมความสาคญยง �"O+�L�กM�+� DB2 �&�L�O^�O��("��0+�����%$ก�^�bO _ �(ก�O�L/ !�4"ก+���ก DB2 Express-C /wcc����(& �'% � 7"( DB2 '(�L!����+�47 ������������%4+�����ก+�I����%$ก�I�+!�7Mกและขนาดกลาง – พรอมทงไมมคาใชจาย แมวาจะมเซรฟเวอรขอมลอนทฟรหรอโอเพนซอรส แต DB2 ใหประโยชนทไมเหมอนใครเหนอทางเลอกอน �(�4�ก���'+��'% � 7"(�+ก�+"'(��(�">O^� DB2 Express-C �+��4�ก�����O�'(�ก+������%4+��+�+�hI&��>��"O+�^��O IfC'(��+��O4�����'(�ก+�7!a+�Cก+�!>B7�C�� �+��O4�'(�ก+������/�C��'J�a+� B7C�+��O4�'(�ก+�7!%O+^��cO+"^� %�����+���&�r+� cCL�Oก7O+4h]��'% � 7"(สวนใหญในทน หวงวาผสนใจจะหาอานไดจากหนงสอ – ในทน จะกลางถงเทคโนโลยหนงโดยยอเทานน DB2 Express-C ���+�c+ก�'% � 7"( Viper 8]��'0+^�� DB2 �/`��8��$t�4��$I���>7B��e���4B�ก'(�c!ก+�'&�I���>7��������J$B7CI���>7 XML ^�B�� ��'(t �(�'0+^�� DB2 �/`���!�%���0+���B�M��7��%��B�� SOA B7C Web 2.0 8]���(ก+�L�7�4("�I��I���>7 XML �+ก�+"ตางจากเซรฟเวอรขอมลจากผจาหนายเชงพาณชยรายอน DB2 Express-C ไมจากดเรองขนาดขอมลทจดเกบไดในฐานขอมล หรอจานวนฐานขอมลทสรางไดในหนงระบบ และแนนอนวา หากตองการความชวยเหลอจากไอบเอม กมความชวยเหลอผานทาง Web Site Web Site Web Site Web Site ของ DB2 ExpressDB2 ExpressDB2 ExpressDB2 Express----CCCC

Page 11: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เกยวกบหนงสอเลมน 11

�������7O��(&'0+���+'(��/`�e>��0+'+��>Oก+���������B7Cก+�^���+� DB2 Express-C �������7O��(&cC�O4"^���I�+^cB�4%�!I�� DB2 B7C'0+^���+�+�h�u�+'ก*Cก+�!>B7 DB2 B7C�u�+B�M��7��%���� DB2 'ก*CB7C%4+��>�'(�L!���c+ก�������7O��(&�ก(�"4���"O+�"���กบเอดชนทสงขนไปของ DB2 สาหรบลนกซ ยนกซ และวนโดวส B��4O+ DB2 Express-C L�O^�Oe7��afg$B�� ����8��$� B�O'(�L��(��M� ��+�����^�ก+��������I�������'(��(ก+��O4"��7����/h�a$ �>��]ก"��!(ก��������7O��(&'(�L!��u�+I]&�c+ก��+��กI������� DB2 Express-C B7C'�ก%�^�������+�+�h�+L!�t�( I�^��ก0+7�^c'�ก%�^�ก+������%O+B7Cปรบปรงหนงสอเลมนดวยความรและชวยแปลหนงสอเลมนเปนภาษาอน เพอใหผอนไดรบประโยชนจากความรน

�+�$4��!$ %���!$�+ (Arvind Krishna) รองประธาน (Vice President, Data Servers) การจดการสารสนเทศ (Information Management) ไอบเอมซอฟตแวร (IBM Software Group)

Page 12: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

12 เรมตนกบ DB2 Express-C

%0+��"�%0+��"�%0+��"�%0+��"�

�������7O��(&%�cCL�O�+�+�h�0+��Mc7�L!��+กL�O�(e>��������� %�� %�f�+�>7 ��� '(��I("����#��I]&�^�a+*+��ก�* c+ก�&�c]�L!��(ก+�B/7�/`�a+*+�O+�/�C�'P�7+"a+*+ �0+���^�a+*+L'"�&� e>�������� %��ก+�B/7�������7O��(&%�� %�f�����+ B7C'(��+�I�����*' L��(��M� /�C�'PL'" !"�����c+กก+�c!����ก+�^���+��C��c!ก+�r+�I���>7!(�('>8]��%�f�+�>7L!��/`��+4�'"+ก����^��BกO�+c+�"$c+ก�7+"�h+��^�/�C�'PL'" c+ก�&�L!��(�+�+��%�'(��/`��กP]ก*+c0+�4� 44444 %�c+ก��+4�'"+7"'(��O4� %��ก+�'&���! 10 �h+���+�O4"ก�B/7c+ก���#���/`�a+*+L'" B7C�(�+c+�"$�(��7(&"� 14 %�c+ก��+4�'"+7"!�ก7O+4�O4"��4c���%4+�h>ก����B7C%4+���!%7���ก�I�����&��+B�O7C�O4� !"กO����������ก+�B/7�&� ��+L!�c!����ก+�^���+��C��r+�I���>7!(�('>^��BกO�กP]ก*+��7O+�(&I]&�'(�%fC�'% � 7"(�+����'P ��+4�'"+7"�'% � 7"(��Cc���ก7�+J����( �����^���กP]ก*+L!��(%4+��I�+^c^��7กก+�'0+�+�I���C��กO�� �������7O��(&%�L�O�+�+�h�0+��Mc7�L!��+ก/�+Pc+ก%4+��O4����I����%%7'(�ก7O+4�+'&���!�(& c]�I�I��%�f'�ก'O+��+ f '(��(& B7C�4�4O+�������7O��(&cC�/`�/�C "��$�O��+c+�"$ �กP]ก*+ B7C�ก%����4����$�+4L'"'�ก'O+� L�O4O+cC�(%4+�����ก+�^���C��r+�I���>7!(�('>����L�OกM�+� ������c+ก�7กก+�'0+�+�I���C��r+�I���>7 !"'�4L/�(7ก*fC%7�+"%7]�ก� ก+���("��>�ก+�^���+�I���C��r+�I���>7��]��"O���(/�C "��$�O�ก+��0+L//�C"�ก�$^��ก��C��r+�I���>7���� _ ��O�ก� �(ก'&��C��r+�I���>7!(�('>"��(7ก*fC�!O�'(��O+��^c�7+"/�Cก+� ���+CBกOก+�^��/�Cก��ก+���("�ก+����^�4��+�C��c!ก+�r+�I���>7B7C4��+���� _ '(��ก(�"4I��� !"�#�+C�"O+�"��� %4+��+�+�h!�+�ก+�c!ก+�I���>7��Mก��M�B�7'(��/`�J����+�� B7C"�h��L!�4O+�C��r+�I���>7!(�('>�/`��C��r+�I���>7'(������a+*+���%�4B�7�+��+��r+��+ก7�+ก'(���!�C����]�� �"O+�L�กM�+��+ก�(I��e�!�7+!/�Cก+�^!c+กก+�B/7B7C��("���("�^�%�&��(& ����I��a"�+ f '(��(&!�4"

�ก�("�Lก� /�Bก�4

Page 13: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เกยวกบหนงสอเลมน 13

f��%$�'J$ 4�+a�f$

��h��+"� 2552

Page 14: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

14 เรมตนกบ DB2 Express-C

%0+��"�%0+��"�%0+��"�%0+��"�

^��+�I��'(�L��(��M� !(�('> ��Mก�$����-8( I�+��c�+�>��]ก"��!(�/`��"O+�"���'(�L!���M�������'(����>�f$B���7O��(&^�#��a+*+L'"

�/`�'(��O+���ก�4O+�������7O��(&L�OL!�h>กB/7 !"��%%7�!("4B�O�/`�ก+��O4����ก�^�ก7�O�������กP]ก*+ �/`�c0+�4� 44444444 %� B7C�+c+�"$ 14141414 %� c+ก 10101010 ��+4�'"+7"�O+�_^�/�C�'PL'" �(�%��%4+���+"I��%4+��"+"+�I�������'(�B'�c��� 8]��e>�'(��ก(�"4I���'�ก%�cC����/�C�+�ก+�'0+�+�B7C�O4����ก������^��������L!�B/7��ก�+c����Mc���>�f$

I�+��c�+I�I��%�f'�ก_%�^�%4+��O4����%�&��0+%b�(&! !�4"c0+�4�ก+�!+4�$ �7!�+กh]� 40,00040,00040,00040,000 %�&��&�B�O/� 2008200820082008 �������7O��(&�/`���]��^�������'(��(%4+���"��>���! '(�cC�O4"^�ก+���������ก�!(�('> !"ก+�P]ก*+B7C^�� !(�('> ��Mก�$����-8(

ก+��(������ ��������ก� !(�('> ��Mก�$����-8( #��a+*+L'" cC�/`�/�C "��$^�ก+��O4"I"+"I���I�%4+��>�L/"� ������กP]ก*+ �+c+�"$ B7C�ก�u�+�/`�c0+�4��+ก �����^���(%4+��>�B7C%4+��I�+^c^�ก+�^�� !(�('> �"O+�B'�c���

I�I��%�f

�+�>7 ���

�4���+'(�e>��I("� ������ ��������ก� !(�('> ��Mก�$����-8(

e>�c!ก+� /�Bก�� L��(��M� !(�('> ��� B%�/w�

L��(��M� B%�+!+ B7/�$

Page 15: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เกยวกบหนงสอเลมน 15

%0+��"�%0+��"�%0+��"�%0+��"�

!�#��>��]ก!(^c�/`��"O+�"���'(�L!���M� ������ ““““��������ก� !(�('> ��Mก�$����-8(”””” 8]���/`�������!(�('>'(�B/7�/`�a+*+L'" ���Mc���>�f$�"O+��O+a+%a>��^c �������7O��(&�/`�e7e7��'(�ก7��ก���c+ก/�C��ก+�f$B7C%4+��O4����I����7O+%f+c+�f$B7C������กP]ก*+ �������7O��(&h>กc!����$I]&�������e"B��O%4+��>� ������ก+�c!ก+�r+�I���>7 !"^�� !(�('> ��Mก�$����-8( '+����*' L��(��M� /�C�'PL'" �(/�C��%$cCBcกcO+"������ ““““ ��������ก� !(�('> ��Mก�$����-8( ” ” ” ” L/"��h+��ก+�P]ก*+'�4/�C�'P B7C�ก�u�+'�4L/'(���^c !"L�O�(%O+^��cO+"^!_

!(�('> ��Mก�$����-8( �/`�8�tB4�$!�+�ก+�c!ก+�I���>7'(��(/�C��'J�a+�c+ก IBMIBMIBMIBM 8]���/�! �ก+�^��ก��ก�u�+B7Ce>�'(���^c'(��(%4+�/�C��%$'(�cC��������^�ก+��u�+ B���7��%��� !"L�O�(%O+^��cO+" !�4"%4+��O4����^�ก+�B/7�/`�a+*+L'" c+ก������กP]ก*+c0+�4� 44 44 44 44 %� B7C�+c+�"$ 14141414 %� c+ก 10 10 10 10 ��+4�'"+7"�&��0+I��/�C�'PL'" B7CL!���ก+� ��4c����"O+����%�� !"e>���(�"4�+b!(�('> c+ก���*' L��(��M� /�C�'PL'" รายชอของชมชนผรวมในการแปลหนงสอ ชมชนอาจารย

���� �+��ก�7 ชอคณะ ชอมหาวทยาลย บททแปล

ผศ.ดร.เกรยงไกร ปอแกว คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9

ดร.ณรงคฤทธ วราภรณ คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9 อาจารยสบทศน ลมสายหว คณะวทยาการและเทคโนโ

ลยสารสนเทศ มหาวทยาลยเทคโนโลยมหานคร บทท 3,4

ผศ.ดร.สรางคณา ธรรมลขต คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5

ดร.คนงนจ กโบลา คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5 ดร.ศรสภา ปาลกะวงศ ณ อยธยา คณะเทคโนโลยสารสนเทศ

และการสอสาร มหาวทยาลยมหดล บทท 6,10

ผศ.ดร.ธนวด สเนตนนท คณะเทคโนโลยสารสนเทศ และการสอสาร

มหาวทยาลยมหดล บทท 6,10

ดร.ชวลต จนอนนต คณะเทคโนโลยการจดการ สถาบนเทคโนโลยนานาชาตสรนธร บทท 7,8 ผศ.ดร.โชตรตน รตนามหทธนะ คณะวศวกรรมศาสตร จฬาลงกรณมหาวทยาลย บทท

11,12 อาจารยสมโชค เรองอทธนนท คณะวทยาศาสตร มหาวทยาลยเกษตรศาสตร บทท 13 อาจารยยทธนา มาลยเวช คณะเทคโนโลยสารสนเทศ มหาวทยาลยรงสต บทท

Page 16: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

16 เรมตนกบ DB2 Express-C

14,15 อาจารยสมนา เกษมสวสด คณะเทคโนโลยสารสนเทศ มหาวทยาลยรงสต บทท

14,15 อาจารยสวรรณา เมธภทรากล คณะวทยาศาสตรและเทคโนโล

ย มหาวทยาลยหวเฉยวเฉลมพระเกยรต บทท

16,17 อาจารยจกร ปาลกะวงศ ณ อยธยา คณะสารสนเทศศาสตร มหาวทยาลยศรปทม ภาคผนวก

ชมชนนสตนกศกษา

ชอ นามสกล ชอคณะ ชอมหาวทยาลย หนา/บททแปล

นางสาวนลทพร ตงคะพภพ คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9 นายภวดล ทรงวฒชโลธร คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9 นางสาวยพา ใบโสภณ คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9 นายธงไชย อรณปญญาวงศ คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9 นางสาวปยะรตน จรงวงศ คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร บทท 1,2,9 นางสาวอรณศร มประวต คณะวทยาการและเทคโนโล

ยสารสนเทศ มหาวทยาลยเทคโนโลยมหานคร บทท 3,4

นายชศกด อนทนมณ คณะวทยาการและเทคโนโลยสารสนเทศ

มหาวทยาลยเทคโนโลยมหานคร บทท 3,4

นายพงศกร พลอยสารกษ คณะวทยาการและเทคโนโลยสารสนเทศ

มหาวทยาลยเทคโนโลยมหานคร บทท 3,4

นายกตตพงค ชวงชล คณะวทยาการและเทคโนโลยสารสนเทศ

มหาวทยาลยเทคโนโลยมหานคร บทท 3,4

นางสาวเวธกา ทองกวาว คณะวทยาการและเทคโนโลยสารสนเทศ

มหาวทยาลยเทคโนโลยมหานคร บทท 3,4

นางสาวธนากร ศรเกต คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5 นายณฐพงษ แสนจนทร คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5 นายพชรภา สนธจรวตร คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5 นายปรญญ ชานาญวนกจ คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5 นายสรทศน กมลเดชเดชา คณะวทยาศาสตร มหาวทยาลยบรพา บทท 5 นางสาวจดาภา ไกรสงข คณะเทคโนโลยสารสนเทศแ

ละการสอสาร มหาวทยาลยมหดล บทท 6

นายกตตธช ธรรมวทยากล คณะเทคโนโลยสารสนเทศและการสอสาร

มหาวทยาลยมหดล บทท 6

นายณฐชาต ธมกตตคณ คณะเทคโนโลยสารสนเทศและการสอสาร

มหาวทยาลยมหดล บทท 6

นายณฐพล วชรศรสข คณะเทคโนโลยสารสนเทศและการสอสาร

มหาวทยาลยมหดล บทท 6

นางสาวชอทพย พงศอารย คณะเทคโนโลยสารสนเทศและการสอสาร

มหาวทยาลยมหดล บทท 6

นายจกรกฤษณ หาญมงคลศลป คณะเทคโนโลยการจดการ สถาบนเทคโนโลยนานาชาตสรนธร บทท 7,8 นางสาวฐตาภทร ฐตสมบรณ คณะเทคโนโลยการจดการ สถาบนเทคโนโลยนานาชาตสรนธร บทท 7,8 นางสาวจฑาทพย ธชหรญ คณะเทคโนโลยการจดการ สถาบนเทคโนโลยนานาชาตสรนธร บทท 7,8 นางสาวสาธอร จนทรนมตร คณะเทคโนโลยการจดการ สถาบนเทคโนโลยนานาชาตสรนธร บทท 7,8 นางสาวสรอยรว สรอยระยา คณะวศวกรรมศาสตร จฬาลงกรณมหาวทยาลย บทท

Page 17: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เกยวกบหนงสอเลมน 17

11,12 นายกฤษฎ เดนอารยะกล คณะวศวกรรมศาสตร จฬาลงกรณมหาวทยาลย บทท

11,12 นายกนษฐ วงศศภสวสด คณะวศวกรรมศาสตร จฬาลงกรณมหาวทยาลย บทท

11,12 นายธนวฒน พชญพฤต คณะวทยาศาสตร มหาวทยาลยเกษตรศาสตร บทท 13 นางสาวฐตมน อมพรวฒนกล คณะวทยาศาสตร มหาวทยาลยเกษตรศาสตร บทท 13 นายณฐนย สวรรณโยธ คณะวทยาศาสตร มหาวทยาลยเกษตรศาสตร บทท 13 นางสาวสรย เมธาชโชค คณะวทยาศาสตร มหาวทยาลยเกษตรศาสตร บทท 13 นายธนต สนทการ คณะเทคโนโลยสารสนเทศ มหาวทยาลยรงสต บทท

14,15 นายลขต นรนาทภร คณะเทคโนโลยสารสนเทศ มหาวทยาลยรงสต บทท

14,15 นายประสพโชค แตประเสรฐ คณะเทคโนโลยสารสนเทศ มหาวทยาลยรงสต บทท

14,15 นายกตตพนธ ทรพยกตต คณะเทคโนโลยสารสนเทศ มหาวทยาลยรงสต บทท

14,15 นายวชระ สวางแกว คณะวทยาศาสตรและเทคโน

โลย มหาวทยาลยหวเฉยวเฉลมพระเกยรต บทท

16,17 นางสาวกนกวรรณ ลมพงศประเสรฐ คณะวทยาศาสตรและเทคโน

โลย มหาวทยาลยหวเฉยวเฉลมพระเกยรต บทท

16,17 นายอดศร เฟองฟกจไพศาล คณะวทยาศาสตรและเทคโน

โลย มหาวทยาลยหวเฉยวเฉลมพระเกยรต บทท

16,17 นางสาวชนดดา ฮวดพทกษ คณะวทยาศาสตรและเทคโน

โลย มหาวทยาลยหวเฉยวเฉลมพระเกยรต บทท

16,17 นางสาวกฤษณ ไชยเสนา คณะวทยาศาสตรและเทคโน

โลย มหาวทยาลยหวเฉยวเฉลมพระเกยรต บทท

16,17 นายนครรฐ ยมรอด คณะสารสนเทศศาสตร มหาวทยาลยศรปทม ภาคผนวก นายจกรพนธ ศรดารงค คณะสารสนเทศศาสตร มหาวทยาลยศรปทม ภาคผนวก นางสาวนฤมล กองสวรรณ คณะสารสนเทศศาสตร มหาวทยาลยศรปทม ภาคผนวก นางสาวศรลกษณ จนด คณะสารสนเทศศาสตร มหาวทยาลยศรปทม ภาคผนวก

ผเชยวชาญดบท ของบรษท ไอบเอม ประเทศไทยทชวยในการตรวจสอบ %�f���" ���&�4u�C�+%� %�f��O�'�4+ ��(�"����C !�#�I�B�!�%4+�"��!(^�%4+��0+��Mc B7CI�I��%�f'�ก_'O+� �+ f '(��(& �c*�+ Lก����I� ���ก���ก+�e>�c!ก+� Be�ก ก7�O�e7��afg$8�t'$B4�$ ���*' L��(��M� /�C�'PL'" c0+ก!

Page 18: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

18 เรมตนกบ DB2 Express-C

Page 19: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

19

ส�วนท 1 – ภาพรวมและการตดตง

Page 20: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 21: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

21

บทท 1 – DB2 Express-C คออะไร

DB2 Express-C เปนสมาชกของ IBM DB2

ซงเปนซอฟแวรดานการจดการขอมลทม ประสทธภาพ สาหรบการจดการกบทงขอมลเชงสมพนธ และขอมล XML นอกจากนน DB2 Express-C ไมมคาใชจายใด ๆ ใชงานไดอยางไรขดจากด และใชงานงาย ตวอกษร C ใน DB2 Express-C นนยอมาจากชมชน (Community) ชมชนของผทใชงาน DB2 Express-C นนรวมกลม กนเพอทจะชวยเหลอซงกนและกน ทงออนไลนและออฟไลน ชมชนของ DB2 Express-C นนประกอบไปดวยคนและหลากหลายบรษท ซงผเปนผออกแบบพฒนา ใชงาน หรอไดรบ ประโยชนจากการใชฐานขอมล สมาชกในชมชนประกอบไปดวย:

• ผพฒนาแอพพลเคชนทตองการซอฟตแวรฐานขอมลทเปนมาตรฐานเปดเพอใชสรางแอพพลเคชนทงแบบ Standalone แบบ Client-Server แบบเวบ และแบบ Enterprise

• ISVs ผจาหนายฮารดแวร ผจาหนายโครงสรางพนฐาน (Infrastructure Vendor) และผใหบรการแกปญหาประเภทอน ๆ (Solution Provider) ทตองการรวมหรอฝงฐานขอมลเขาเปนสวนหนงของโซลชน

• ผใหคาปรกษา ผดแลฐานขอมล สถาปนกดานไอททตองการฐานขอมลททนทาน สาหรบฝกฝน พฒนาทกษะ ทดสอบ และทาตนแบบ

• ผเรมเปดบรษท ทงขนาดเลกและขนาดกลาง ทตองการฐานขอมลทนาเชอถอสาหรบโปรแกรมประยกตและงานปฏบตตาง ๆ

• ผทางานอดเรกดานฐานขอมลและผสนใจเทคโนโลยนาสมย ทตองการฐานขอมลใชงานงายสาหรบสรางแอพพลเคชนในลกษณะเวบ 2.0 และแอพพลเคชนสาหรบยคหนา

• นกเรยน นกศกษา อาจารยผสอน และนกวชาการอน ๆ ทตองการฐานขอมลทมความคลองตวสงสาหรบการสอน คอรสแวร โปรเจกต และงานวจย

DB2 Express-C มฟงกชนหนาทหลกและใชซอรสโปรแกรมหลกรวมกบเอดชนอนทมคาใชจายของ DB2 บน ลนกซ ยนกซ และวนโดวส DB2 Express-C ยงสามารถทางานไดทงบนระบบ 32-bits และ 64-bits

ของระบบปฏบตการลนกซและวนโดวส สามารถทางานบนเครองทมหนวยประมวล

Page 22: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

22 เรมตนกบ DB2 Express-C

ผลกลางและหนวยความจาเทาไรกได และไมตองมหนวยเกบขอมลพเศษ หรอการตดตงพเศษ แตอยางใด DB2 Express-C สามารถใช pureXML โดยปราศจากคาใชจาย pureXML เปนเทคโนโลยทเปนเอกลกษณของ DB2 สาหรบเกบและประมวลผลเอกสาร XML แบบ Native

1.1 L�O��("%O+^��cO+"^�ก+��u�+ L�O��("%O+^��cO+"^�ก+��u�+ L�O��("%O+^��cO+"^�ก+��u�+ L�O��("%O+^��cO+"^�ก+��u�+ (Develop) �0+L/^�� �0+L/^�� �0+L/^�� �0+L/^�� (Deploy) B7CBcกcO+" B7CBcกcO+" B7CBcกcO+" B7CBcกcO+" (Distribute) … L�Oc0+ก!L�Oc0+ก!L�Oc0+ก!L�Oc0+ก!(No limits)

ประโยคนไดสรปอดมคตหลกทอยเบองหลง DB2 Express-C

- อสระในการพฒนา (Free to Develop):

ผพฒนาโปรแกรมทตองการฐานขอมลสาหรบแอพพลเคชน สามารถใชงาน DB2 Express-C ได

- อสระในการใช�งาน (Free to deploy):

หากกาลงทางานอยกบระบบงานจรงและตองการระบบจดการขอมล เพอใชเกบขอมลสาคญ สามารถใชงาน DB2 Express-C ได

- อสระในการนาไปแจกจ�าย (Free to distribute):

หากกาลงพฒนาแอพพลเคชนหรอเครองมอทตองมฐานขอมลฝงตวไปดวย สามารถใช DB2 Express-C ได ถงแมวา DB2 Express-C

จะฝงตวอยในแอพพลเคชนและถกแจกจายไปดวยทกครงทขายแอพพลเคชนนน กไมจาเปนตองเสยคาใชจายสาหรบ DB2 Express-C

เพยงแตตองลงทะเบยนกบไอบเอม เพอการแจกจาย DB2 Express-C ตอ (Redistribute) ซงการลงทะเบยนนน กไมมคาใชจายเชนกน

- ไม�จากด (No limits): ในขณะทคแขงทเปนผจาหนายฐานขอมลรายอน

มขอจากดในขนาดของฐานขอมล จานวนฐานขอมล และจานวนผใช แต DB2 Express-C ไมมขอจากดดงกลาว ฐานขอมลสามารถเตบโตไดเรอย ๆ โดยไมผดตอขอตกลงเรองลขสทธ (License Agreement) ไรขดจากดในจานวนของการเชอมตอ (Number of Connection) หรอจานวนผใชตอเซรฟเวอร (Users per server)

หมายเหต:

รายละเอยดเพมเตมเกยวกบ DB2 Express-C และบทบาทในโลกของความตองการขอมลอยางทนทและเ

Page 23: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 1– DB2 Express-C คออะไร 23

วบ 2.0 สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:3922

1.2 %4+��O4"��7���0+���e>�^�� %4+��O4"��7���0+���e>�^�� %4+��O4"��7���0+���e>�^�� %4+��O4"��7���0+���e>�^�� (User Assistance)

B7C%4+��O4"��7��'+��'%��% B7C%4+��O4"��7��'+��'%��% B7C%4+��O4"��7��'+��'%��% B7C%4+��O4"��7��'+��'%��% (Technical Support)

หากมคาถามทางเทคนคเกยวกบ DB2 Express-C สามารถเขยนคาถามลงในฟอรมของ DB2 Express-C (DB2 Express-C

Forum) ไดโดยไมเสยคาใชจาย โดยจะมทมงานเฉพาะของ DB2 Express-C เปนผดแล อยางไรกตาม

กเปนคนทเขามาใชฟอรมทเปนผตอบคาถามเปนสวนใหญ ตามความสมครใจ ไอบเอมเปดใหผใชสามารถสมครเปนสมาชกรายปในราคาประหยด ทเรยกวา ลขสทธและสมาชก 12 เดอน (12 Months License and Subscription) หรอ ลขสทธจากดระยะเวลาตายตว (Fixed Term License หรอ FTL) การสมครสมาชก DB2 Express-C ดงกลาว จะไดรบความชวยเหลอ ทางเทคนคตลอด 24 ชวโมงตอวน 7 วนตอสปดาห (24 x 7 Technical Support) และการอพเดต ซอฟตแวรจากไอบเอม นอกจากความชวยเหลอและการบารงรกษาซอฟตแวรแลว การเปน สมาชกรายปราคาประหยดน ยงไดรบคณลกษณะ (Feature) สาคญเพมเตมสองประการ ไดแก HADR สาหรบการทาคลสเตอร (Clustering) เพอ สภาพพรอมใชงานสง (High Availability) และการกคนจากภยพบต (Disaster Recovery) และ SQL replication สาหรบการทาสาเนาขอมล (Data Replication) กบ ดบท เซรฟเวอรอน ขอมลเพมเตมการสมครเปนสมาชก DB2 Express-C สามารถหาไดท www.ibm.com/db2/express/support.html

1.3 !(�('>!(�('>!(�('>!(�('> �8��$t�4��$�8��$t�4��$�8��$t�4��$�8��$t�4��$ (DB2 Servers) ดบท เซรฟเวอรทก เอดชน ประกอบดวย สวนประกอบหลกทเหมอนกน โดยผใชสามารถ เลอกแพคเกจ ทมฟงกชนการทางานตามทตองการไดในราคาทเหมาะสม รปท 1.1 แสดงเอดชนตาง ๆ ของ DB2

Page 24: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

24 เรมตนกบ DB2 Express-C

DB2 Enterprise Edition

DB2 Express-CExtrafunctionality

Extrafunctionality

DB2 Express Edition

DB2 Workgroup Edition

Extrafunctionality+ + +

รปท 1.1 –ดบท เซร�ฟเวอร� ดงรปท 1.1 DB2 Express-C นนเหมอนกนกบ DB2 Express แตจะไมมคณสมบตบางอยาง DB2 Express-C ไมมคาใชจายสาหรบชมชน จากการทไดกลาวมากอนหนาน ความชวยเหลอ ทางเทคนค (Technical Assistance) นน ทาโดยผานทางฟอรมออนไลน โดยไมเสยคาใชจาย หรอสามารถ รบความชวยเหลอทางเทคนค (Technical Support) ของ DB2 อยางเปนทางการจากไอบเอมแบบ 24 x 7 ถาจายคาสมาชกแบบ 12 เดอน รปท 1.1 ยงอธบายใหเหนวาทาไมจงงายทจะอพเกรดจาก DB2 Express-C ถาตองการจะอพเกรด ไปเปน ดบท เซรฟเวอรในเอดชนอนในอนาคต ดบท เซรฟเวอรทกเอดชนมสวนประกอบหลก เหมอนกน หมายรวมถงวาแอพพลเคชนใดทพฒนาขนสาหรบเอดชนหนงสามารถทางานไดกบ เอดชนอน โดยไมตองแกไข ทกษะใด ๆ ทเรยนรจากเอดชนหนงกสามารถใชไดกบเอดชนอน

1.4 !(�('>!(�('>!(�('>!(�('> L%7����$ L%7����$ L%7����$ L%7����$ (DB2 Clients) B7C!(�('>B7C!(�('>B7C!(�('>B7C!(�('> L!��4��$L!��4��$L!��4��$L!��4��$

DB2 Client ไดรวมฟงกชนหนาททจาเปนตอการเชอมตอไปยง DB2 Server ไวแลว อยางไรกตาม DB2 Client นนไมจาเปนตองตดตงเสมอไป ตวอยางเชน แอพพลเคชนทใช JDBC Type 4

Page 25: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 1– DB2 Express-C คออะไร 25

สามารถเชอมตอโดยตรงไปยงดบทเซรฟเวอร ดบทไคลเอนตและไดรเวอรมาในหลายรปแบบ ดงน

- IBM Data Server Client: เปนชดเตมของดบทไคลเอนต ประกอบไปดวยเครองมอ ทเปน GUI และไดรเวอร

- IBM Data Server Runtime Client: ไคลเอนตขนาดเลกทมเพยงฟงกชนพนฐาน และ ไดรเวอร

- DB2 Runtime Client Merge Modules for Windows: สวนใหญใชฝง DB2 runtime client ไปเปนสวนหนงของการตดตงแอพพลเคชนบนวนโดวส

- IBM Data Server Driver for JDBC and SQLJ: ทาใหแอพพลเคชนภาษาจาวาสามารถเชอมตอไปยงดบทเซรฟเวอร โดยไมตองตดตงไคลเอนตเตม

- IBM Data Server Driver for ODBC and CLI: ทาใหแอพพลเคชน ODBC และ CLI

สามารถเชอมตอไปยงดบทเซรฟเวอรโดยไมตองตดตงไคลเอนต - IBM Data Server Driver for ODBC, CLI and .NET:

เปนไดรเวอรเฉพาะสาหรบวนโดวสซงรองรบ .NET เพมเตมจาก ODBC และ CLI

รปท 1.2 แสดงดบทไคลเอนตและไดรเวอรตาง ๆ

Page 26: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

26 เรมตนกบ DB2 Express-C

รปท 1.2 –ดบท ไคลเอนต�และไดรเวอร� ดานซายมอของรปท 1.2 แสดงดบทไคลเอนตและไดรเวอรไวทงหมด ถงแมวาทกดบทไคลเอนตไดรวมไดรเวอรทจาเปนตองใชไวแลว DB2 9 ไดม การแยกไดรเวอรแตละตวออกจาก ดบทไคลเอนตไวใหดวย ดบทไคลเอนตและไดรเวอรนนไมมคาใชจายและสามารถ ดาวนโหลดไดจากเวบไซตของ DB2 Express-C ดบทไคลเอนตและไดรเวอร สามารถใชเชอมตอไปยง DB2 Server บนลนกซ ยนกซ หรอวนโดวสได การเชอมตอไปยง DB2 บน z/OS® หรอ DB2 บน i5/OS® Server จะตองผาน DB2 Connect™ server (แสดงทตอนชวงกลางของรปท 1.2)

จะพดถงรายละเอยดของ DB2 Connect Software ในบทท 2

1.5 %4+�����C^�ก+��u�+B�M��7��%4+�����C^�ก+��u�+B�M��7��%4+�����C^�ก+��u�+B�M��7��%4+�����C^�ก+��u�+B�M��7��%��%��%��%��

DB2 ไดใหสภาพแวดลอมในการพฒนาโปรแกรม ทเปน มาตรฐานเดยวกน และไรความ แตกตางในทกผลตภณฑของ DB2 มาตรฐานภาษา SQL ทใชในทกผลตภณฑของ DB2 ม API ชดเดยวกนในการเขาถงฐานขอมล ยงไปกวานน แตละผลตภณฑของ DB2 ยงไดม SQL pre-compilers ททาใหผพฒนาสามารถฝง SQL แบบสแตตกและไดนามกไวในแอพพลเคชน

Page 27: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 1– DB2 Express-C คออะไร 27

ดบทยงม Native .NET Managed Provider และรวมเขา กบเครองมอของ Microsoft® Visual Studio อกดวย ภาษาและมาตรฐานทสามารถใชไดกบดบทมดงน:

� SQL, XQuery, XPath � C/C++ (CLI, ODBC and embedded SQL) � Java (JDBC and SQLJ) � COBOL � PHP � Perl � Python � Ruby on Rails � .NET languages � OLE-DB � ADO � MS Office: Excel, Access, Word � Web services

1.6 �C�4O+��4��$��I��!(�('> �C�4O+��4��$��I��!(�('> �C�4O+��4��$��I��!(�('> �C�4O+��4��$��I��!(�('> (DB2 Versions) ก� ��!���I��!(�('> ก� ��!���I��!(�('> ก� ��!���I��!(�('> ก� ��!���I��!(�('> (DB2 Editions)

ถาคณยงใหมตอ DB2 อาจสบสนในความแตกตางระหวางดบทเวอรชนและดบทเอดชน ในทก 2-3 ป ไอบเอมจะออก DB2 เวอรชนใหม เวอรชนหนงจะมคณลกษณะ (Features) ใหม ๆ และมการปรบปรงทสาคญ ปจจบน DB2 เวอรชน 8 และ 9 เปนเวอรชนทไอบเอมใหความชวยเหลอทางเทคนค (Support) อยางเปนทางการ เวอรชนหนงอาจมหลายรลส (Release) ซงมฟงกชนใหมแตฟงกชนดงกลาว ไมไดเปนฟงกชนหลก หรอ ไมสาคญพอ ทจะเปนออกเปนเวอรชนใหม ตวอยางเชน 8.1 และ 8.2 เปนรลสทออกมาใน DB2 เวอรชน 8 จากอดตทผานมา ไอบเอมไดออกรลสใหม ของ DB2

เกอบทกป อยางไรกตามเวอรชนใหม มกจะเวนชวงหางไปสองถงสามป รลสลาสด คอ V9.5 (ชอเดมคอ DB2 Viper 2) เรมเผยแพรทวไป (Generally Available - GA) เมอ ตลาคม ค.ศ. 2007 ในแตละรลสอาจจะ

Page 28: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

28 เรมตนกบ DB2 Express-C

มการแกไขหลายระดบ (Modification) ซงโดยทวไปจะเปนการแกไขขอผดพลาด และมกจะ ไมมฟงกชนใหม ณ เวลาทเขยนน Version, Release, Modification (V,R,M)

ลาสดของ DB2 Express-C คอ 9.5.0 ซงสอดคลองกบระดบซอรส โปรแกรม 9.5 ดวยชดซอม (Fix Pack) ท 0 ซงหมายความวาอยในระดบ GA ในอกทางหนง เอดชนเปนการเลอกและรวมแพคเกจภายในแตละเวอรชนเขาดวยกน เอดชนกคอการรวมฟงกชนตาง ๆ เปนแพคเกจสาหรบการคดราคาเเละลขสทธ DB2 เวอรชน 9.5 มหลายเอดชน ตวอยางเชน DB2 Express-C 9.5, DB2 Express 9.5, DB2 Workgroup 9.5 และ DB2 Enterprise 9.5 (ดไดท รปท 1.1)

1.7 การอพเกรดขนไปใช� DB2 อกเอดชนหนง

เนองจากวาฐานขอมลตองมขอมลเพมขนเรอย ๆ จงอาจจาเปนตองอพเกรดเปนเอดชนอนของ DB2

ทสามารถรองรบฮารดแวรทมขนาดใหญกวาได ถาเกดสถานการณเชนน ขนกสามารถอพเกรดเอดชนของ DB2 ไดโดยงาย

- ถาเปนการอพเกรดเอดชนใหมของ DB2 บนคอมพวเตอรตวเดม ใหตดตง (Install) เอดชนใหมของ DB2ทบ DB2 Express-C พรอมลขสทธใหม ฐานขอมลทมอยจะไมถกลบ แตขอแนะนาใหทาการสารองขอมลไวเสมอ

- ถาเปนการอพเกรด DB2

โดยจะตดตงเอดชนใหมบนเครองคอมพวเตอรทใหญขน กวาเดมโดยใชระบบปฏบตการเหมอนเครองเดม ใหตดตงเอดชนใหมนนบนเครองใหม และทาการเกบสารองขอมล (Backup) ทงฐานขอมลบนเครองเกา แลวนามาวางท เครองใหม และทาการกคนขอมล (Restore) ใน DB2 ทเปนเอดชนใหมทเครองใหมน อาจจาเปนตองเกบบนทกการตงคาตาง ๆ ใน Instance (Instance Configuration Settings - dbm cfg) ทเครองคอมพวเตอรเดม แลวนาไปใชกบ DB2 ทเครองใหม จะกลาวถง คาสงการเกบสารองขอมล (Backup) และกคนขอมล (Restore) ในรายละเอยด ในบทท 11 เรองการเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) จะกลาวถงพารามเตอร dbm cfg ในรายละเอยดในบทท 5 เรองสภาพแวดลอม DB2 (DB2 Environment)

- ไมวาในกรณใดทกลาวมาขางตนไมตองมการแกไขแอพพลเคชน

Page 29: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 1– DB2 Express-C คออะไร 29

1.8 ก+��0+����ก*+ ก+��0+����ก*+ ก+��0+����ก*+ ก+��0+����ก*+ DB2 Express-C

ดงทไดกลาวมาขางตน มสองทางเลอกสาหรบความชวยเหลอสาหรบ DB2 Express-C

1. จายคาสมครเปนสมาชกลขสทธ 12 เดอน ซงจะไดรบการดแลตลอดเวลาจาก IBM DB2 Technical Support และชวยใหสามารถตดตง DB2 software updates หรอทเรยกวา Fix Packs

2. ใชฟอรมออนไลนของชมชน DB2 Express-C

ซงใชไดฟรแตไมมความชวยเหลออยางเปนทางการจากไอบเอม และภายใตทางเลอกน ไอบเอมไมรบรองการครอบคลมถงการจดหาคณลกษณะใหม (New Features) และการ แกไขขอบกพรอง (Bug Fixes) ใหตามระยะเวลาทกาหนด แนวคดของ Fix Pack ซงไดอธบายไวในบทท 2 กไมสามารถใชไดในกรณน แตไอบเอมจะออก DB2 Express-C ตวใหมทงตวเปนระยะๆ แทน เมอมรลสใหมออกมา กจะม DB2 Express-C ตวใหมออกมาแทนตวเกาเชนกน

1.9 8�t�$B4�$'(�L�O��("%O8�t�$B4�$'(�L�O��("%O8�t�$B4�$'(�L�O��("%O8�t�$B4�$'(�L�O��("%O+^��cO+"'(��ก(�"4I���+^��cO+"'(��ก(�"4I���+^��cO+"'(��ก(�"4I���+^��cO+"'(��ก(�"4I���

ซอฟตแวรทงหมดทสามารถดาวนโหลดไดจากหนาเวบดาวนโหลดของ DB2 Express-C (www.ibm.com/db2/express/download.html) ไมมคาธรรมเนยมในการใช นอกจาก DB2 Express-C (สาหรบลนกซและวนโดวส ทงแบบ 32 บตและ 64 บต) แลว ยงมซอฟตแวรทมประโยชนอน ๆ อกทสามารถดาวนโหลดและใชไดฟร ไดแก

• IBM Data Studio • DB2 Net Search Extender • DB2 Spatial Extender

ยงมชดเครองมอเรมตน (Starter Toolkits) อนสาหรบใชงานรวมกบ DB2 Express-C ใหดาวนโหลดไดทเวบไซตของ IBM Alphaworks (www.alphaworks.ibm.com/datamgmt) ซงอาจมประโยชน ไดแก

• ชดเครองมอเรมตนสาหรบการใช DB2 บนเรลส (Starter Toolkit for DB2 on Rails) ท www.alphaworks.ibm.com/tech/db2onrails/

Page 30: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

30 เรมตนกบ DB2 Express-C

• ชดเครองมอเรมตนสาหรบการใช DB2 กบเวบ 2.0 (Web 2.0 Starter Toolkit for DB2) ท www.alphaworks.ibm.com/tech/web2db2

ถากาลงมองหาแอพพลเคชนเซรฟเวอรขนาดเลกทฟร ไอบเอมขอเสนอ • WebSphere® Application Server –- Community Edi-

tion (WAS CE)

1.9.1 ไอบเอมดาต�าสตดโอ (IBM Data Studio)

IBM Data Studio คอ เครองมอทมพนฐานมาจาก Eclipse ททาใหสามารถออกแบบ พฒนา และนาไปตดตงใชงาน และจดการขอมล ฐานขอมล และแอพพลเคชนทใชฐานขอมล ตลอดจนวฎจกรของการจดการขอมลทงหมด IBM Data Studio ไดมาแทนท DB2 Developer Workbench 9.1 IBM Data Studio ชวยในการพฒนาฟงกชนทผใชกาหนด, Stored procedures, คาสง XQuery คาสง SQL รวมไปถงดบกเกอรในตว นอกจากนน Data Studio ยงสามารถทางานกบ Physical Data Modeling diagrams เพอใหเขาใจถงความสมพนธ ระหวางตารางอกทงยงสามารถชวย พฒนาและนาเสนอขอมลเปนเวบเซอรวส (Web Service) โดยไมตองเขยนโปรแกรม จะกลาวถงData Studio ในบทท 14 SQL PL Stored Procedures

1.9.2 ดบทเนตเสร�ชเอกซ�เทนเดอร� (DB2 Net Search Extender) DB2 Net Search Extender สามารถชวยคนหาขอความแบบ Full-Text ในเอกสารไดอยางรวดเรว รวมถงเอกสาร XML ทจดเกบใน DB2 ดวย

1.9.3 ชดเครองมอเรมต�นสาหรบการใช� DB2 บนเรลส� (Starter Toolkit for DB2 on Rails) Starter Toolkit for DB2 on Rails เปนชดของผลตภณฑและเทคโนโลยทไดจดรวมไวเปนแพคเกจเพอความสะดวกซงชวยสรางสภาพแวดลอมสาหรบ การพฒนาแอพพลเคชนระบบเวบทใช DB2 ดวยเทคโนโลย Ruby on Rails ซอฟตแวรทตองใชทงหมดถกรวบรวมไวในชดน ไดแก DB2 Express-C,

Page 31: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 1– DB2 Express-C คออะไร 31

DB2 driver for Ruby, DB2 adapter for Rails พรอมทงโปรแกรมการสอน (Tutorials) ตวอยาง และสอการเรยนรอน ๆ จะกลาวถง Ruby on Rails ตอไปในบทท 17 เรองการพฒนาโปรแกรมดวยภาษา Java ภาษา PHP และภาษา Ruby

1.9.4 ชดเครองมอเรมต�นสาหรบการใช� DB2 กบเวบ 2.0 (Web 2.0 Starter Toolkit for DB2) ชดเครองมอเรมตนสาหรบการใช DB2 กบเวบ 2.0 (Web 2.0 Starter Toolkit for DB2) เปนวธงาย ๆ ทจะเรมตนการใชงานกบ DB2 ภาษา PHP และDojo ซงจะชวยในการนาซอฟตแวรทจาเปน มาตดตงใชงาน และมการเชอมโยงไปยงโปรแกรมชวยสอน รวมทงแอพพลเคชนสาธตดวย แอพพลเคชนสาธตสองโปรแกรม คอ Atom Feed Control Panel ซงผลต Atom Feeds มาจากตารางของ DB2 และ Web Services Control Panel ซงสรางเวบเซอรวสแบบ REST ครอบตารางของ DB2 ทงสองตวอยางนอาศย Dojo ในความสามารถทสาคญเกยวกบการใชงาน Ajax และ Widget

1.9.5 เวบสเฟ�ยร� แอพพลเคชน เซร�ฟเวอร� (WebSphere Application Server) – ฉบบชมชน (Community Edition) - WAS CE

IBM WebSphere Application Server Community Edition เปน Java EE 5 แอพพลเคชนเซรฟเวอรขนาดเลกทใชไดฟร ซงสรางขนบนเทคโนโลย Apache Geronimo โดยใชประโยชนจากนวตกรรมลาสดจากชมชนโอเพนซอรส (Open-Source Community) เพอสรางฐานทครบครน พรอมใชงาน และมความยดหยน สาหรบพฒนาแอพพลเคชนภาษาจาวา และนาไปตดตงใชงาน สามารถเลอกใชความชวยเหลอทางเทคนค (Technical Support) สาหรบ WAS CE ไดโดยการสมคร เปนสมาชกรายป

Page 32: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

32 เรมตนกบ DB2 Express-C

Page 33: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

33

บทท 2 – คณลกษณะ (Features) และผลตภณฑ� (Products) ทเกยวข�อง

ในบทนจะกลาวถงคณลกษณะของ DB2 ซงรวมถงการจายคาลขสทธสมาชก 12 เดอนของ DB2 Express-C ดวย นอกจากนยงกลาวถงคณลกษณะทมในเอดชนอน ๆของ DB2 และการคดคาธรรมเนยมเพมเตม สาหรบบางคณลกษณะ ความสามารถทรวมอยในเอดชนทไมมคาใชจายของ DB2 Express-C ประกอบดวย

• ฟงกชนหนาทหลกของ DB2

• Control Center, Data Studio

และเครองมอทใชในการบรหารจดการอน ๆ

• pureXML

• การใชทรพยากรไดมากถง 2 GB และ 2 Processor Cores

• ใชไดทงบนลนกซ วนโดวส และ Solaris (x86)

คณลกษณะทไมมในเอดชนทไมมคาใชจายของ DB2 Express-C แตมใน DB2 Express-C แบบมลขสทธสมาชก 12 เดอนดวย

• ชดซอมแซม (Fix Packs)

• สภาพพรอมใชงานสง (High Availability)

• การทาสาเนาขอมล (Data Replication - Homogenous SQL)

• การใชทรพยากรไดมากถง 4GB และ 4 Processor Cores (บน 2

Sockets)

ตารางตอไปนแสดงรายการคณลกษณะทมในแตละ เอดชนของ DB2 คณลกษณะทสามารถแยกซอได ไดแสดงโดยชอ ทเกยวของกบแตละเอดชนของ DB2

Page 34: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

34 เรมตนกบ DB2 Express-C

ฟ�งก�ชนหน�าท

Express-C แบบ Fixe

d term

license

DB2 Express Edition

DB2 Workgroup Server Edition

DB2 Enterprise Server Edition

Homogenous SQL Replication

ม ม ม ม

Net Search Extender

ม ม ม ม

Spatial Extender

ม ม ม ม

เทคโนโลย pureXML™

ม คณลกษณะ pureXML

คณลกษณะ pureXML

คณลกษณะ pureXML

High Avail-abilty Disaster Recovery

ม คณลกษณะ High Avail-ability

ม ม

Tivoli® System Automation

ม คณลกษณะ High Avail-ability

ม ม

Advanced Copy Ser-

ไมม คณลกษณะ High Avail-

ม ม

Page 35: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 2 – คณลกษณะ (Features) และผลตภณฑ (Products) ทเกยวของ 35

ฟ�งก�ชนหน�าท

Express-C แบบ Fixe

d term

license

DB2 Express Edition

DB2 Workgroup Server Edition

DB2 Enterprise Server Edition

vices

ability

Online Re-organiza-tion

ไมม คณลกษณะ High Avail-ability

ม ม

Homogenous Federation

ไมม คณลกษณะ Homogeneous Federation

คณลกษณะ Homogeneous Federation

คณลกษณะ Homogeneous Federation

MQT ไมม ไมม คณลกษณะ Query Optimization

MDC ไมม ไมม คณลกษณะ Query Optimization

Query parallelism

ไมม ไมม คณลกษณะ Query Optimization

Connection Concentra-tor

ไมม ไมม ไมม ม

Table Par-titioning

ไมม ไมม ไมม ม

Page 36: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

36 เรมตนกบ DB2 Express-C

ฟ�งก�ชนหน�าท

Express-C แบบ Fixe

d term

license

DB2 Express Edition

DB2 Workgroup Server Edition

DB2 Enterprise Server Edition

DB2 Governor

ไมม ไมม ไมม ม

Compres-sion: Row level

ไมม ไมม ไมม คณลกษณะ Storage Optimization

Compres-sion: Backup

ไมม ไมม ไมม คณลกษณะ Storage Optimization

Label-based access control (LBAC)

ไมม ไมม ไมม คณลกษณะ Advanced Access Control

Geodetic Extender

ไมม ไมม ไมม คณลกษณะ Geodetic Data Management

Query Patroller

ไมม ไมม ไมม คณลกษณะ Performance Optimization

DB2 workload management

ไมม ไมม ไมม คณลกษณะ Performance Optimization

Page 37: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 2 – คณลกษณะ (Features) และผลตภณฑ (Products) ทเกยวของ 37

ฟ�งก�ชนหน�าท

Express-C แบบ Fixe

d term

license

DB2 Express Edition

DB2 Workgroup Server Edition

DB2 Enterprise Server Edition

Performance Expert

ไมม ไมม ไมม คณลกษณะ Performance Optimization

Homogenous Q Replication

ไมม ไมม ไมม คณลกษณะ Homogeneous Replication

Database Partition-ing

ไมม ไมม ไมม ไมม

ตารางท 2.1: เอดชนของ DB2 เวอร�ชน 9.5 : คณลกษณะและฟ�งก�ชนทม

คณลกษณะทมในเอดชนอนของ DB2 มดงน: คณลกษณะของ DB2 Express Edition ทมคาใชจายเพม:

• pureXML • คณลกษณะ High Availability • คณลกษณะ Homogenous Federation

คณลกษณะทรวมอยใน DB2 Workgroup Edition โดยไมมคาใชจายเพม:

Page 38: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

38 เรมตนกบ DB2 Express-C

• คณลกษณะ High Availability • สามารถทางานบน AIX®, Solaris และ HP-UX

เพมเตมจากลนกซและวนโดวส

คณลกษณะของ DB2 Workgroup Edition ทมคาใชจายเพม:

• pureXML • คณลกษณะ Query Optimization (MQT, MDC, Query Parallelism) • คณลกษณะ Homogenous Federation

คณลกษณะทรวมอยใน DB2 Enterprise Edition โดยไมมคาใชจายเพม:

• Table (Range) Partitioning • Materialized Query Tables (MQT) • Multi-dimensional Clustering (MDC) • High Availability และ Disaster Recovery (HADR), Tivoli® System

Automation • Connection Concentrator

คณลกษณะของ DB2 Enterprise Edition ทมคาใชจายเพม: • pureXML • คณลกษณะ Storage Optimization (รวมถง Compression) • คณลกษณะ Advanced Access Control • Performance Optimization (Workload Management, Per-

formance Expert, Query Patroller) • Geodetic Data Management (การวเคราะหตาแหนงทางภมศาสตร) • คณลกษณะ Homogenous Federation (เขาถง DB2 และ Informix

ทอยแบบรโมท® เหมอนเปนตารางแบบโลคล) ผลตภณฑทมคาธรรมเนยมทเกยวของกบ DB2:

• DB2 Connect • InfoSphere Warehouse • InfoSphere Federation Server • InfoSphere Replication Server

Page 39: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 2 – คณลกษณะ (Features) และผลตภณฑ (Products) ทเกยวของ 39

2.1 %�f7ก*fC'(��+ก�ก+���%���+��ก %�f7ก*fC'(��+ก�ก+���%���+��ก %�f7ก*fC'(��+ก�ก+���%���+��ก %�f7ก*fC'(��+ก�ก+���%���+��ก DB2 Express-C (Subscription)

หวขอนอธบายเรอง Fix packs, HADR และ SQL Replication

2.1.1 ชดซ�อมแซม (Fix Packs)

DB2 Fix Pack คอชดโปรแกรมแกไขทนามาใชกบผลตภณฑ DB2 ทตดตงไว เพอแกไขปญหาตางๆ ของผลตภณฑหลงจากออกเผยแพรแลว ผมลขสทธแบบเปนสมาชกตดตง (Installed Subscription License) สามารถดาวนโหลดและตดตง Fix Packs ไดฟร ซงจะมการออก Fix Pack ทกสามเดอน หากตองการดาวนโหลด Fix Pack ลาสด ใหศกษาจากเวบไซต DB2 Technical Support ท http://www.ibm.com/software/data/db2/support/db2_9/

2.1.2 High Availability Disaster Recovery (HADR)

High Availability Disaster Recovery เปนคณลกษณะดานความนาเชอถอ (Reliability) ของฐานขอมลซงมแนวทางในการแกปญหาดวยสภาพความพรอมใชงานสง และสามารถกระบบคนจากภยพบตได ทงในกรณเกดความลมเหลวแบบสมบรณ (Complete Site Failure) และแบบบางสวน (Partial Site Failure)

สภาพแวดลอมของ HADR โดยทวไป ประกอบดวยเซรฟเวอรขอมล 2 ตว คอ ตวหลก (Primary) และตวสารอง (Secondary) ซงสามารถตงอยในตาแหนงหางกนทางภมศาสตร เซรฟเวอรตวหลกเปนทเกบฐานขอมล ตนฉบบซงแอพพลเคชนไคลเอนตเขาถง ขณะทธรกรรมตาง ๆ ไดรบการประมวลผลทเซรฟเวอร ตวหลกนน Log record ของฐานขอมลจะถกสงไปยงเซรฟเวอรตวสารองผานทางเครอขาย เซรฟเวอรตวสารอง มขอมลเหมอนเซรฟเวอรตวหลก ซงเกดจากการทาการเกบสารองขอมล (Backup) ทเซรฟเวอรตวหลก แลวนามากคนขอมล (Restore) ทเซรฟเวอรตวสารอง เมอเกด Log record ของฐานขอมลท เซรฟเวอรตวหลกขน Log record นจะถกสงไปทาซาบนฐานขอมลทเซรฟเวอรตวสารอง ดวยการทาเชนน ไปเรอย ๆ จะทาใหเซรฟเวอรตวสารองมขอมลเหมอนกบเซรฟเวอรตวหลกซงสามารถใชแทน เซรฟเวอรตวหลกไดเมอเซรฟเวอรตวหลกลมเหลว แนวทางการแกปญหาโดยใช HADR ของ DB2 ทาให

- สามารถทางานแทนเมอเกดความลมเหลวไดอยางรวดเรวโดยลกคาและไคลเอนต แอพพลเคชนไมรสกถงการเปลยนแปลง

Page 40: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

40 เรมตนกบ DB2 Express-C

- Atomicity ของธรกรรมชวยปองกนไมใหสญเสยขอมล - สามารถอพเกรดระบบหรอแอพพลเคชนโดยไมกอใหเกดการตดขดทสง

เกตเหนได - การทางานแทนทจากระบบทอยหางออกไปทาใหมการกคนระบบอยางส

มบรณจาก ความลมเหลวทเกดขนศนยขอมลตนทาง (Site failure) - การจดการทงายดวยเครองมอทเปนกราฟก - ทงหมดนมผลกระทบตอประสทธภาพโดยรวมของระบบเพยงเลกนอยเท

านน หมายเหต: สามารถดการสาธตการทางานของ HADR ไดจากเวบไซตน http://www-306.ibm.com/software/data/db2/express/demo.html

2.1.3 การทาสาเนาข�อมล (Data Replication)

คณลกษณะน ทาใหสามารถทาสาเนาขอมล (Replication) ระหวางเซรฟเวอรตนทางทมการบนทกการเปลยนแปลงและเซรฟเวอรเปาหมายทมการนา การเปลยนแปลงนนไปทาซา รปท 2.1 แสดงภาพรวมการทางานของการทาสาเนาขอมล

Page 41: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 2 – คณลกษณะ (Features) และผลตภณฑ (Products) ทเกยวของ 41

รปท 2.1 –การทาสาเนาข�อมลด�วย SQL (SQL Replication) ในรปท 2.1 ม2 เซรฟเวอรคอ เซรฟเวอรตนทางและเซรฟเวอรเปาหมาย บนเซรฟเวอรตนทาง โปรแกรมจบการเปลยนแปลง (Capture Program) จะจบการเปลยนแปลงทกระทากบฐานขอมล บนเซรฟเวอรตนทาง ในขณะทบนเซรฟเวอรเปาหมาย โปรแกรมทาซา (Apply Program)

จะนาการเปลยนแปลงทจบไดมาทาซา กบฐานขอมลสาเนา การทาสาเนาขอมลมประโยชน หลากหลายประการ ในกรณทตองการขอมลสาเนา ซงรวมไปถง การระบายความจ (capacity relief) การปอนขอมลไปยงยงคลงขอมล และการตรวจสอบประวตการเปลยนแปลง (auditing change history) การใชคณลกษณะ SQL Replication นนสามารถทาสาเนา ขอมลระหวาง DB2 Express-C และ DB2 เซรฟเวอรแบบอน ๆ ได รวมไปถงตวทอยบนระบบ ลนกซ ยนกซ z/OS และ i5/OS

2.2 %�f7ก*fC'(�L�O�( � %�f7ก*fC'(�L�O�( � %�f7ก*fC'(�L�O�( � %�f7ก*fC'(�L�O�( � DB2 Express-C

ในหวขอนจะเปนการอธบายคณลกษณะบางสวนทสามารถใชงานไดในเอดชนอน ๆ ของ DB2 แตไมสามารถใชงานไดกบ DB2 Express-C

Page 42: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

42 เรมตนกบ DB2 Express-C

2.2.1 การแบ�งส�วนฐานข�อมล (Database Partitioning)

คณลกษณะ Database Partitioning (DPF) มใหใชงานเฉพาะใน InfoSphere Warehouse เทานนซงอนญาตใหฐานขอมลกระจายขามพารทชนได และสามารถทางานอยบนคอมพวเตอร หลาย เครอง DPF อยบนพนฐานสถาปตยกรรมแบบไมใชสงใดรวมกน (Shared-Nothing Architecture) คอมพวเตอรแตละเครองในกลมมหนวยหนวยประมวลผลและหนวยความจาของตวเอง DPF นนมประโยชนโดยเฉพาะในสภาพแวดลอมทมขอมลจานวนมากอยาง เชน คลงขอมล ซงมการ ประมวลผลการสอบถามของระบบสนบสนนการตดสนใจ (Decision Support System)

2.2.2 Connection Concentrator

Connection Concentrator เปนคณลกษณะททาใหสามารถรองรบจานวนการเชอมตอเขามาในเวลาเดยวกนมาก ๆ ไดโดยกอนหนาน ทกการเชอมตอตองการหนงเอเจนต Connec-tion Concentrator ไดนาแนวคด “เอเจนตเชงตรรกะ” ททาใหหนงเอเจนต สามารถรองรบหลาย ๆ การเชอมตอได มาใช จะกลาวถงรายละเอยดของ เอเจนตในบทท 6 เรอง สถาปตยกรรมของ DB2

2.2.3 ส�วนขยายทางภมมาตรศาสตร� (Geodetic Extender)

DB2 Geodetic Extender เปนทางเลอกทตองเสยคาใชจายเพม ซงใชไดใน DB2 Enterprise Edition Extender น ทาใหการพฒนาแอพพลเคชนสาหรบ Business Intelligence และ E-Government ทตองการการวเคราะหตาแหนงทางภมศาสตรงายขน DB2 Geodetic Extender สามารถสรางโลกจาลองทระดบความละเอยด (Scale) ใด ๆ กได โดยขอมลตาแหนงสวนมาก จะรวบรวมโดยใชระบบสากล เชน ระบบระบตาแหนงโดยใชดาวเทยม (GPS) และ สามารถ แสดงพกดละตจด/ลองจจด (Geocode) ได ขอมลทางธรกจ เชน ทอย สามารถเปลยนเปน Geocode ไดดวย DB2 Geodetic Extender และแอพพลเคชนขององคกรจะทางานไดดกวา เมอเกบขอมลในรปแบบดงกลาว

2.2.4 การจดการปรมาณงาน (Workload Management - WLM)

เปนวธจดการปรมาณงานทสามารถ ทางาน ไดบนฐานขอมล โดยขนกบ ลาดบความสาคญของผใช และ แอพพลเคชน

Page 43: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 2 – คณลกษณะ (Features) และผลตภณฑ (Products) ทเกยวของ 43

รวมทงทรพยากรของระบบทสามารถใชได ซงทาให สามารถควบคมปรมาณงานและการสอบถามทเขามาทางาน เพอใหการสอบถามทมความสาคญสง สามารถประมวลผลได อยางรวดเรวและปองกนการสอบถามทผดปกต ในการผกขาดทรพยากรของระบบ ทาใหมนใจไดวา ระบบ ฐานขอมล ทางานไดอยางมประสทธภาพ WLM เปนคณลกษณะใหมใน DB2 9.5 และม ความสามารถเหนอกวาเครองมอ Query Patroller และ DB2 Governor ทมใชงานใน DB2 เวอรชนกอนหนา

2.3 e7��afg$'(��(%O+J�����("�^�ก+�^��'(��ก(�"4I���ก�e7��afg$'(��(%O+J�����("�^�ก+�^��'(��ก(�"4I���ก�e7��afg$'(��(%O+J�����("�^�ก+�^��'(��ก(�"4I���ก�e7��afg$'(��(%O+J�����("�^�ก+�^��'(��ก(�"4I���ก� DB2

2.3.1 DB2 Connect

DB2 Connect เปนซอฟตแวรทตองชาระคาธรรมเนยมกอนใชงาน ซงทาให DB2 สาหรบระบบ ปฏบตการลนกซ ยนกซ หรอวนโดวสสามารถเชอมตอไปยง DB2 สาหรบ z/OS หรอ DB2 สาหรบ i5/OS ดงแสดงในรปท 2.2 DB2 Connect ไมมความจาเปนตองใชในทางกลบกน คอกรณทตองการเชอมตอจาก DB2 สาหรบ z/OS หรอ DB2 สาหรบ i5/OS ไปยง DB2 สาหรบลนกซ ยนกซ หรอวนโดวส DB2 Connect จะมาในสองรปแบบหลก ๆ ขนอยกบความตองการในการเชอมตอ ไดแก DB2 Connect Personal Edition และ DB2 Connect Enterprise Edition

Page 44: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

44 เรมตนกบ DB2 Express-C

รปท 2.2 –DB2 Connect

2.3.2 InfoSphere Federation Server เปนทรจกกนกอนหนานในชอวา WebSphere Information Integrator (สาหรบรองรบ Federation) InfoSphere Federation Server ทาใหสามารถรวบรวม (Federate) ฐานขอมลได หมายความวา สามารถประมวลผลขอมลขามฐานขอมลเชงสมพนธ หลาย ๆ ยหอได ตวอยางเชน ถาซอ InfoSphere Federation Server

จะสามารถประมวลผลการสอบถามดานลางนได SELECT * FROM Oracle.Table1 A DB2.Table2 B SQLServer.Table3 C WHERE A.col1 < 100 and B.col5 = 1000 and C.col2 = 'Test' รปท 2.3 แสดงตวอยางการใชงาน WebSphere Federation Server

Page 45: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 2 – คณลกษณะ (Features) และผลตภณฑ (Products) ทเกยวของ 45

รปท 2.3 – InfoSphere Federation Server สาหรบระบบจดการฐานขอมลเชงสมพนธซงเปนสวนหนงของตระกลไอบเอม การรองรบ Federation ไดรวมไวใน DB2 Express-C อยแลว ซงหมายความวา ไมมความจาเปนตองใช ผลตภณฑ InfoSphere Federation Server ในกรณเชน ตองการสอบถามขอมลระหวาง ฐานขอมล DB2 สองฐานขอมล หรอ ระหวางฐานขอมล DB2 และฐานขอมล Informix (Informix เปนสวนหนงของตระกลไอบเอม)

2.3.3 InfoSphere Replication Server

เปนทรจกกนกอนหนานในชอวา WebSphere Information Integrator (สาหรบการทาสาเนาขอมล) InfoSphere Replication Server ชวยใหสามารถทาสาเนาขอมลดวยคาสง SQL ระหวาง DB2 กบฐานขอมลทไมใชของไอบเอม ซงรวมไปถงคณลกษณะซงรจกกนในชอ Q-Replication สาหรบทาสาเนาขอมลโดยใช Message Queue

Page 46: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

46

Page 47: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

47

Page 48: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

48

Page 49: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

49

บทท 3 – การตดตง DB2

การตดตง DB2 Express-C ทงใน ลนกซ หรอ วนโดวส

cCตองแนใจวาระบบของคณมสงทจาเปนในการตดตง!��(&

3.1 สงทจาเป�นในการตดตง

จะขนอยกบ เวอรชนของระบบปฏบตการ และระดบความตองการ (level re-quirements) DB2 Express-C มใหใช��ลนกซ, โซลารส (X64) และ วนโดวส เอกซพ , 2000, 2003 และ วสตา สถาปตยกรรมโพรเซสเซอร ทใชไดคอ 32-bit, 64-bit และ PowerPC (ลนกซ) ถาคณตองการทจะตดตง DB2 บน ระบบปฎบตการอนๆ เชน ยนกซ คณควรท ^����!���ทเปน เซรฟเวอรขอมล 8]��L!�อธบายในตอนตนI��หนงสอเลมน ความตองการของระบบปฏบตการสาหรบ DB2 ทกรนสามารถตรวจสอบไดท เวบไซต ตอไปน http://www.ibm.com/software/data/db2/udb/sysreqs.html ใน����ทรพยากรI��ฮารดแวร DB2 Express-C สามารถตดตงบนระบบทมจานวน core ของโปรเซสเซอร และ หนวยความจา เทาไรกได เพยงแตมนจะสามารถใชประโยชนในสวนของฐานขอมลไดเพยง 2 cores และ ใชหนวยความจา ไดเพยง 2 GB สาหรบเวอรชนทไม�(ก+�รบประกน (free unwarranted license) สวนเวอรชนทมการจายเงน สาหรบความชวยเหลอทางเทคนค (paid subscription) จะใชได 4 cores และหนวยความจา 4 GB โดยระบบฮารดแวรทใช เปนไดทง ระบบทเปนเครองคอมพวเตอรหนงเครอง หรอระบบทเครองหนงเครอง ถกแบงเปนหลาย ๆ partition หรอใชงานบนซอฟตแวรเครองเสมอน (virtual machine) คณสามารถใชงาน DB2 Express-C บนระบบขนาดเลกไดถาคณตองการ ยกตวอยาง เชน ระบบทม 1 โปรเซสเซอร และมขนาดของหนวยความจา 1 GB ขอมลลาสดของ DB2 Express-C ในสวนความตองการของฮารคแวร สามารถตรวจสอบไดท เวบไซต ตอไปน http://www-306.ibm.com/software/data/db2/express/getstarted.html

Page 50: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

50 เรมตนกบ DB2 Express-C

3.2 สทธในระดบระบบปฏบตการทจาเปนตองมสาหรบการตดตง DB2 Express-C การตดตง DB2 Express-C บน ลนกซ หรอ วนโดวส คณจาเปนตองใช ผใช (user) ของระบบปฏบตการทมสทธในการทางานทเพยงพอ สาหรบ ลนกซ คณจะตองใช root (superuser) เพอทจะตดตง DB2 Express-C คณสามารถตดตง DB2 Express-C ดวย ผใชทไมไดเปน root ไดดวย แต

คณจะถกจากดในความสามารถบางอยาง ยกตวอยางเชน ภายใตการตดตงโดยผใชทไมใช root คณจะไมสามารถ สราง instances ไดเพมเตม จาก instance ซงถกสรางตอนตดตง สาหรบ วนโดวส ชอผใช (user account) ตองเปนสมาชกของกลม Administrators บนเครองทจะทาการตดตง สาหรบทางเลอกอน อาจจะใชชอผใชทเปน non-Administrator โดยการให����e>�^��!�ก7O+4�/�สมาชกของกลม Administrators

และทาการยกระดบสทธการใช วนโดวส (Windows elevation privileges settings) เพอทจะยอมใหชอผใชทเปน non-Administrator ทาการตดตงได สาหรบ Windows domain accounts ในการ ตรวจสอบชอผใช บนดบทเซรฟเวอร ชอผใชทใชในการตดตง ตองเปนสมาชกของกลม Domain Administrators บน domain ทซง����e>�^��!�ก7O+4ถกสรางขน คณอาจจะใช

����e>�^��'(��+ก� วนโดวส คอ “Local System” เพอทาการตดตง สาหรบทกๆ ผลตภณฑ ชอผใชดงกลาวจะตองมสทธทเปน "จะเขาถงคอมพวเตอรนจากเนตเวรค" ("Access this computer from the network") หมายเหต:

รายละเอยดเพมเตมเกยวกบการตดตง DB2 Express-C สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4442

3.3 �4�O4"ก+���!�&��4�O4"ก+���!�&��4�O4"ก+���!�&��4�O4"ก+���!�&�

ถงแมวาจะมหลายวธทจะตดตง DB2 Express-C แตวธทงายทสด คอการใชตวชวยการตดตงของ DB2 ทเปน GUI-based หลงจากดาวนโหลด

Page 51: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

Chapter 3 – การตดตง DB2 51

และทาการแตกไฟล (unzip) DB2 Express-C image แลว คณสามารถเรยกใชตวชวยเพอทจะตดตงไดดงน :

• วนโดวส: ให Double Click ไฟล setup.exe ทอยในโฟลเดอร EXP/image

• ลนกซ: ใหรนคาสง db2setup ในไดเรคทอร exp/disk1 DB2 Express-C งายตอการตดตง

โดยใหทาตามคาสงของตวชวยการตดตงของ DB2 ซงโดยสวนมากการเลอกคา default settings กเปนการเพยงพอแลว ดงนน สงทคณตองทา คอ ยอมรบในลขสทธ(license) กดปม Next ไปหลาย ๆ ครง และกดปม Finish หลงจากนน 2-3 นาทการตดตงของคณกจะสมบรณ และ DB2 จะอยในสถานะทพรอมใชงาน รปท 3.1 แสดงการตดตงผาน DB2 Launchpad คลก ตดตงผลตภณฑ และ เลอก ตดตงใหม เพอทจะตดตง copy ใหมของ DB2 Express-C ในระบบของคณ

รปท 3.1 – การตดตงผาน DB2 Launchpad หลงจากยอมรบในลขสทธ เปนการเพยงพอทจะเลอกการตดตงแบบ Typical (ซงเปนคา default) ดงแสดงใน รปท 3.2

Page 52: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

52 เรมตนกบ DB2 Express-C

รปท 3.2 – ประเภทการตดตง

Page 53: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

Chapter 3 – การตดตง DB2 53

ในรปท 3.3 คณมทางเลอกทจะตดตงผลตภณฑ ใหสราง response file หรอใหทา ทงสองอยาง Response files จะถกอธบายเพมเตม ในหวขอ 3.4 การตดตงแบบ Silent การเลอกคา default เปนการเพยงพอแลว (ตดตง IBM DB2 Express Edition บนคอมพวเตอรเครองนและ บนทกการตงคาของตวเองใน response file)

รปท 3.3 – เลอกการตดตง

Page 54: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

54 เรมตนกบ DB2 Express-C

ใหเลอกคา default สาหรบ หนาจอถดไป จนมาถงหนาจอทปรากฏใน รปท 3.4 คณสามารถระบ����ผใชทมอยแลว ใหเปนผใชททางานกบ instance และบรการอนๆ ชอผใชน จะตอง เปน สวนหนงของกลม Local Administrator

ใน วนโดวส ถาชอผใช ทคณระบเปน ����ผใชทไมมอย ชอผใชดงกลาว จะถกสรางขน โดยเปน Local Administrator คณอาจจะปลอย ชอง domain field ใหวาง ถา ชอผใชดงกลาวไมไดเปนสมาชกของ domain คา default ของ ชอผใช ทสรางใน วนโดวส คอ db2admin ในกรณของ ลนกซ คา de-fault ของ ชอผใชทสราง คอ db2inst1

รปท 3.4 – ระบข�อมลผ�ใช�สาหรบ default DB2 instance

Page 55: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

Chapter 3 – การตดตง DB2 55

สดทายในรปท 3.5 ตวชวยการตดตง จะแสดงสรปสงทจะถกตดตงและขอมลการตงคาอน ๆ ซงไดมการเลอกไวในขนตอนกอนหนา เมอคลก “Finish” การตดตงจะเรมขน และไฟลโปรแกรม จะถกตดตงลงในระบบของคณ

รปท 3.5 – สรปสงทจะถกตดตง

3.4 ก+���!�&�B�� ก+���!�&�B�� ก+���!�&�B�� ก+���!�&�B�� Silent

อาจมสถานการณทคณจาเปนทจะตดตง DB2 client บนเครองคอมพวเตอรหลาย ๆ เครอง หรอ คณตองการทจะฝงระบบจดการฐานขอมล DB2 ใหเปนสวนหนงของแอพพลเคชนของคณ และทาการตดตงมน โดยผานกระบวนการตดตงแอพพลเคชน ในสถานการณดงกลาว การตดตงแบบ Silent เปนหนทางทดทจะใชตดตง DB2

Page 56: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

56 เรมตนกบ DB2 Express-C

DB2 ทาการตดตงแบบ Silents โดยการใช response files ซงเกบรายละเอยดเกยวกบขอมลการตดตง ตวอยางถดไป แสดงถงรายละเอยดบางสวนของ response file ตวอยางบางสวนของ response file : PROD=UDB_EXPRESS_EDITION LIC_AGREEMENT=ACCEPT FILE=C:\Program Files\IBM\SQLLIB\ INSTALL_TYPE=TYPICAL LANG=EN INSTANCE=DB2 DB2.NAME=DB2 DEFAULT_INSTANCE=DB2 DB2.SVCENAME=db2c_DB2 DB2.DB2COMM=TCPIP ... มหลายแนวทางทจะใชในการสราง response file:

� ตดตง DB2 Express-C ครงแรกบนเครองคอมพวเตอรโดยใชตวชวยการตดตงของ DB2 ในหนาจอทใหเลอกการตดตง (รปท 3.3) ใหคณคลก checkbox เพอทจะบนทกรายละเอยดทคณเลอกในการตดตง ไปยง response file ในตอนทายของการตดตง response file จะถกสรางในไดเรคทอร และตามชอไฟล ทคณระบ response file คอ ไฟล text

ดงนนคณสามารถแกไขมนไดในภายหลง

� แกไขตวอยาง response file ทมากบแพคเกจของ DB2 ไฟลตวอยางดงกลาว (ลงทายดวย .rsp) จะอยในไดเรคทอร db2/platform/samples/

� สาหรบ วนโดวส คณสามารถใชคาสงขางลางในการสราง response

file ได db2rspgn –d <output directory>

การตดตง DB2 โดยใช response file สาหรบ วนโดวส ใหคณพมพ คาสง: setup -u <response filename>

Page 57: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

Chapter 3 – การตดตง DB2 57

สาหรบ ลนกซ ใหคณพมพคาสง: db2setup -r <response filename>

Page 58: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

58 เรมตนกบ DB2 Express-C

ปฏบตการท 1 – ��!�&� C-Express 2DBB7Cก+����+�r+�I���>7

SAMPLE

วตถประสงค กอนทคณจะเรมศกษาถงคณลกษณะทงหมดและเครองมอตาง ๆ ซงมาพรอมกบ DB2 Express-C คณจะตองเรยนรวธตดตงมนบนระบบคอมพวเตอรของคณกอน ในปฏบตการนคณจะศกษาถงการตดตงแบบพนฐานของ DB2 Express-C บน วนโดวส คณจะพบตวชวยการตดตงทเหมอนกนบน ลนกซ ดงนนขนตอนการตดตงจงไมมความแตกตางกบการตดตง DB2 Express-C บน วนโดวส ขนตอน

1. จดหา DB2 Express-C images โดยดาวนโหลด DB2

Express-C image หรอ สงซอ Discovery Kit DVD พรอมกบ images จาก DB2 Express-C เวบไซต (ibm.com/db2/express)แลวทาการแตกไฟลในไดเรคทอร ทคณตองการ

2. ระบตาแหน�งไฟล ใหไปทไดเรคทอร (หรอ drive)

ทซงคณแตกไฟลของ DB2 Express-C image ในขนตอนท 1 3. เรยก Launchpad ทาการเรยก DB2 Launchpad

โดยการดบเบลคลกท บนไฟล setup.exe ในกรณของ ลนกซ ใหเรยกคาสง db2setup โดยผใชทเปน root ใน Launchpad คลก Install Product บนแถบดานซายของหนาจอ

4. เรยกตวช�วยการตดตงของ DB2 ตวชวยการตดตงของ

DB2 จะตรวจสอบวา เครองของคณมสงทจาเปนในการตดตง DB2 (ในหวขอ 3.1) หรอไม นอกจากนยงตรวจสอบวาเครองดงกลาว เคยทาการตดตง DB2 มากอนหรอไม ใหคลกปม Next

เพอดาเนนการตดตง

Page 59: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

Chapter 3 – การตดตง DB2 59

5. ตรวจสอบสญญาลขสทธ อานและยอมรบขอตกลง (เลอกทปม I Accept …) แลวคลกทปม Next เพอทาขนตอนตอไป

6. เลอกประเภทการตดตง สาหรบตวอยางนเลอกท Typical

option (ซงคอคา default) Compact option จะทาการตดตงขนพนฐาน ในขณะท Custom option ยอมใหคณ customize ลกษณะเฉพาะเจาะจงของคณลกษณะทคณตองการตดตง คลกทปม Next เพอทาขนตอนตอไป

7. เลอกโฟลเดอร ทจะตดตง หนาจอนจะใหคณเลอก drive หรอ

ไดเรคทอร ทซงโปรแกรม DB2 จะถกตดตงบนระบบของคณ ตองแนใจวามพนทวางเพยงพอสาหรบการตดตง ใหใช default drive

และ ไดเรคทอรทแสดงขางลาง

Drive: C: Directory: C:\Program Files\IBM\SQLLIB

คลกทปม Next เพอทาขนตอนตอไป

8. การตงค�าข�อมลผใช ทนทท DB2 Express-C ถกตดตง

บางกระบวนการของ DB2 ถกทางาน ในฐานะทเปน system services

บรการเหลานตองการผใชในระดบปฏบตการในการทางาน สาหรบ วนโดวส แนะนาใหใชชอผใชทเปน default คอ db2admin ถารายชอผใชดงกลาวยงไมมในระบบ DB2 จะ สรางผใชงาน ในระบบปฎบตการใหคณ คณสามารถทจะใชชอผใช ทมอยแลวในระบบแตชอผใช ดงกลาวตองมสทธระดบ administrator

ภายในระบบ ซงเราแนะนาใหใชคา defaults และจะตองแนใจวา คณไดระบ รหสผานใหผใชงาน สาหรบ ลนกซ ใช ชอผใชทเปน default คอ db2inst1 ซงเปนเจาของ instance จะตองมชอผใช db2fenc1 สาหรบ fenced user (เปนชอผใชท DB2 จะใชในการทางานของ DB2 เอง) และชอผใช dasusr1 ซงเปนผใชทควบคมการทางานของ DB2 Administration Server (ใชในการบรหารจดการฐานขอมล) ใหคลกทปม Next เพอทาขนตอนตอไป

9. ปรบแต�ง instance ของ DB2 instance ของ DB2

ทางานคลายกบผจดการ และ จดเกบฐานขอมล จะตองม instance กอนจงจะสามารถสราง ฐานขอมลใหทางานภายใต instance

Page 60: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

60 เรมตนกบ DB2 Express-C

ระหวางการตดตงบน วนโดวส instance ทสรางจะถกกาหนดชอเปน DB2 โดยอตโนมต สาหรบ ลนกซ instance ทเปนคา default คอ db2inst1 เราจะศกษาเพมเตมเกยวกบ พบ instances ในบทตอไป ในหนงสอเลมน

โดยคา default แลว instance ของ DB2 จะใช service port 50000 สาหรบการเชอมตอผาน TCP/IP ทงคาโปรโตคอลทเปนคา default และคา service port สามารถเปลยนแปลงได โดยการกดปม Protocols และปม Startup ตามลาดบ เราแนะนาใหใชคา default ดงในตวอยางน คลกปม Next เพอทาตามขนตอนตอไป

10. เรมการตดตง ตรวจสอบคาทไดเลอกไวระหวางขนตอนการตดตง คลกปม ตดตง เพอเรมทาการคดลอกไฟล ไปไวในตาแหนงทไดเลอกไวสาหรบทา การตดตง และ DB2 จะเรมกระบวนการในการกาหนดคาคอนฟกเรชน

11. First Steps หลงจากทาการตดตง DB2 เรยบรอยแลว

จะมการเรยกเครองมอ ทชอวา First Steps ซงเปนเครองมอทชวยในการสรางฐานขอมลทดสอบ โดยทเราสามารถเรยก First Steps ในภายหลงไดโดยใชคาสง db2fs

12. ฐานขอมล SAMPLE เปน ฐานขอมลทใชสาหรบการทดสอบ

จะถกสรางอยางอตโนมตหลงจากการตดตง DB2 เราสามารถตรวจสอบวาในระบบม ฐานขอมลอะไรบาง โดยใชเครองมอ DB2 Control Center ซงสามารถเรยกเครองมอดงกลาวโดยเรยก Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) -> General Administration Tools -> Control Center หรอ คณสามารถเรยก Control Center โดยใชคาสง db2cc

13. ถาฐานขอมล SAMPLE ถกแสดงใน Control Center

คณสามารถขามไปยงขนตอนท 16 แตถา ฐานขอมล SAMPLE ไมถกแสดงใหเลอก Refresh จากเมน View ของ Control Center

เพอทจะมนใจวาคณมองเหน ขอมลทอพเดทลาสด ถาฐานขอมล SAMPLE ยงไมแสดง มนอาจจะยงไมไดถกสราง คณสามารถทาการสรางฐานขอมลเอง จาก First Steps โดยการเลอก tab ทชอวา “การสรางฐานขอมล” และทาตามตวชวยเพอทจะสราง ฐานขอมล SAMPLE ให เลอก XML และ SQL objects และขอมล แลวคลก OK ซงการเลอกดงกลาว

Page 61: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

Chapter 3 – การตดตง DB2 61

จะทาให DB2 สรางฐานขอมลทเปน UNICODE สาหรบเวอรชน 9.1 เพอทจะสนบสนน pureXML แตฐานขอมลทสรางใน DB2 9.5 ไมมความจาเปนทจะตองเปน UNICODE

14. หนาจอแสดงความคบหนาขางลางน แสดงฐานขอมล

ขณะทกาลงสราง (กระบวนการนอาจใชเวลาหลายนาท) เมอการสรางฐานขอมลเสรจสนใหคลกปม OK และปด First Steps

15. กลบไปท Control Center และตรวจสอบวา ฐานขอมล ทชอวา

SAMPLE ปรากฏขนมาหรอไม คณอาจะตองทาการ refresh โดยใชเมน View ของ Control Center เพอทจะเหนขอมลทอพเดทลาสด

16. Restart คอมพวเตอร ถงแมวา ขนตอนนไมถกอางองใน

คมอตดตงอยางเปนทางการของ DB2 เราแนะนาใหทาการ reboot ระบบ (ถาเปนไปไดใน วนโดวส) เพอมนใจวาโปรเซสตางๆ ของ DB2 ทาการ start ไดสาเรจ อยางไรกตามขนตอนนเปนแคเพยงทางเลอก เทานน

Page 62: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 63: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

63

บทท 4 – สภาพแวดล�อมของ DB2

ในบทนเราจะอธบายถงสภาพแวดลอมของ DB2 รปท 4.1 แสดงสรปเกยวกบสภาพแวดลอมของ DB2 และในวงรสแดง คอ สวนสาคญทจะนาเสนอในบทน ดานซายของรปภาพแสดงคาสง DB2, SQL, SQL/XML และ XQuery ทสามารถใชในการตดตอกบเซรฟเวอรขอมลของ DB2 สวนกลางของรปภาพแสดงชอของเครองมอตางๆ ทสามารถใชทางานรวมกบ เซรฟเวอรขอมลของ DB2 ดานขวาของรปภาพแสดง สภาพแวดลอม (environment) พนฐานภายใน DB2 เชน instance, ฐานขอมล และไฟลการตงคาทเกยวของ

รปท 4.1 – ภาพใหญ�ของ DB2 : สภาพแวดล�อมของ DB2 หมายเหต:

รายละเอยดเพมเตมเกยวกบสภาพแวดลอมของ DB2 สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4029

Page 64: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

64 เรมตนกบ DB2 Express-C

http://www.channeldb2.com/video/video/show?id=807741:Video:4042 การอธบายสภาพแวดลอมของ DB2 เราจะเรมอธบาย แตละสวนประกอบยอย ตามลาดบดงน รปท 4.2 แสดงเซรฟเวอรขอมลของ DB2 หลงจากการตดตง DB2 Express-C 9.5

รปท 4.2 – แสดงเซรฟเวอรขอมลของ DB2 หลงการตดตง DB2 Express-C 9.5 ในฐานะทเปนสวนหนงของการตดตงบน วนโดวส instance ทเปน default ทเรยกวา “DB2” (“db2inst1” บน ลนกซ) จะถกสรางขนมา สงนแสดงใหเหนเปนกรอบสเขยวใน รปท 4.3 instance เปนองค�ประกอบทซงแอพพลเคชนสามารถทางาน และฐานขอมลสามารถถกสรางได คณสามารถสราง instance หลาย ๆ in-stances บนเซรฟเวอรขอมล และใชมนไดหลากหลายความตองการ ตวอยางเชน instance หนงสามารถใชงาน เพอทจะเกบฐานขอมลสาหรบใชในการทางานจรง (Production) instance ทสองสามารถใชเพอทาการทดสอบ และ instance ทสามใชสาหรบการพฒนา instance เหลานมอสระตอกน นนคอ กาทางานในกระบวนการบน instance หนง จะไมกระทบตอ instance อน ๆ

Page 65: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 65

รปท 4.3 –การสร�าง default DB2 instance การสราง instance ใหม บน DB2 ใชคาสง db2icrt <instance name>, โดยท <instance name> คอ ชอ instance ทตองการโดยมความยาวของชอไมเกน 8 ตวอกษร ตวอยางเชน การสราง instance ทชอวา myinst สามารถทาไดโดยใชคาสง db2icrt myinst รปท 4.4 แสดง instance ใหมทเรยกวา myinst เปนกลองสเขยวทอยทางขวา

รปท 4.4 – เซร�ฟเวอร� DB2 ทประกอบด�วยสอง instances

Page 66: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

66 เรมตนกบ DB2 Express-C

หมายเหต แตละ instance จะมหมายเลข port ไมซากน สงนชวยแยกแยะความแตกตางระหวาง instance เมอคณตองการทาการเชอมตอกบฐานขอมลใน instance จากไคลเอนต ทเปน remote ถาคณใชโปรแกรมอรรถประโยชน ทชอวา “Command Window” ของ DB2 (Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) -> Command Line Tools -> Command Window) คณสามารถกาหนด instance หลกทตองการเชอมตอ (Active instance) โดยผานคาสง set db2instance=myinst จากการกาหนดขางตน ถาคณสรางฐานขอมล ผาน “Command Window” ของ DB2 ฐานขอมลดงกลาว จะถกสรางใน instance ทชอวา myinst ถาตองการดวาในระบบของเราม instance อะไรบางสามารถทาไดโดยใชคาสง db2ilist บนลนกซ ชอ instance จะตองตรงกนกบชอ user ภายใตระบบปฎบตการ ลนกซ ดงนนการสลบใชงานไปมา ระหวาง instances คณสามารถทาไดงายโดยการเปลยนผใช (ดวยคาสง su) ตารางท 4.1 แสดงคาสง ทเปนประโยชนทเกยวกบ instance คาสง คาอธบาย

db2start ใชในการ Start การใชงาน instance ปจจบน

db2stop ใชในการ Stop การใชงาน instance ปจจบน

db2icrt ใชในการสราง instance ใหม

db2idrop ใชในการลบ instance

db2ilist แสดง instances ทมบนระบบของคณ db2 get in-stance แสดง instance ปจจบนททางานอย

ตารางท 4.1 – คาสง DB2 ทเป�นประโยชน�ทเกยวกบ instance คาสงบางคาสงขางตนสามารถทาไดผานโปรแกรมอรรถประโยชนทชอวา “Control Center” ใน Control Center ถาคณขยายโฟลเดอร instance (โดยการคลก เครองหมายบวก หนา instance) เลอก instance ทตองการ และคลกขวาทเมาส เลอก Start ซงมคาเทากบการใชคาสง db2start ใน Command Window ของ DB2 หรอ เลอก Stop ซงมคาเทากบการใชคาสง db2stop ดงแสดงใน รปท 4.5

Page 67: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 67

รปท 4.5 – คาสงเกยวกบ Instance ใน Control Center การสรางฐานขอมล ใน active instance ทาไดโดยพมพคาสงตอไปนใน Command Window ของ DB2 db2 create database mydb1 ถาตองการดวาระบบของเรามฐานขอมลอะไรบาง ทาไดโดยใชคาสง db2 list db directory ในแตละ instance คณสามารถสรางฐานขอมล ไดหลายตว ฐานขอมลเปนทรวบรวม ออบเจกต ตาง ๆ ของ ฐานขอมล อยางเชน tables, views, indexes และอนๆ ฐานขอมลมออบเจกตเปนของตวเอง ไมไดใชออบเจกต รวมกนกบ ฐานขอมลอนๆ รปท 4.6 แสดงตวอยางฐานขอมล “MYDB1” ถกสรางไวภายใต instance ทชอวา “DB2”

Page 68: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

68 เรมตนกบ DB2 Express-C

รปท 4.6 – ฐานข�อมล “MYDB1” ถกสร�าง ไว�ภายใต� instance “DB2 ” ตารางท 4.2 แสดงคาสงบางสวนทคณสามารถใชในระดบ ฐานขอมล คาสง/SQL statement คาอธบาย

db2 create database สราง ฐานขอมล ใหม

db2 drop database ลบ ฐานขอมล

db2 connect to <database_name> เชอมตอไปยง ฐานขอมล

db2 create table/create view/create in-dex

SQL statements ในการสราง table, view, และ index ตามลาดบ

ตาราง 4.2 - คาสง/SQL Statements ทระดบ ฐานข�อมล ถาตองการสรางฐานขอมลใหม แตใชชอเดยวกน (MYDB1) ภายใต instance ทชอวา myinst สามารถใชคาสงตอไปน ใน Command Window ของ DB2 db2 list db directory set db2instance=myinst db2 create database mydb1 set db2instance=db2 รปท 4.7 แสดงฐานขอมลตวใหมชอ MYDB1 ถกสราง ภายใน instance myinst

Page 69: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 69

รปท 4.7 – ฐานข�อมล “MYDB1” ถกสร�างไว�ภายใต� instance “myInst ” เมอมการสรางฐานขอมลขนมา ออบเจกต อนจะถกสรางขนมาโดย default เชน Table spaces , tables, buffer pool และไฟล log การสรางออบเจกต เหลานตองใชเวลา และนนคอ เหตผลวาทาไมคาสงสรางฐานขอมล ตองการเวลา 2-3 นาทสาหรบการประมวลผล รปท 4.8 แสดง table spaces ทถกสรางโดย default Table spaces จะถกอธบายในรายละเอยดอกครงในบทท 6 สถาปตยกรรมของ DB2 แตตอนนใหมองวา table spaces เปน logical layer ระหวาง logical tables และ physical resources เชน ดสค และหนวยความจา

Page 70: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

70 เรมตนกบ DB2 Express-C

รปท 4.8 –Table spaces ทถกสร�างโดย default เมอมการสร�างฐานข�อมล Table space ทชอวา SYSCATSPACE เปนทเกบ Catalog table แคทตาลอค เปนทรจกในระบบจดการฐานขอมล อน ๆ วา data dictionary แคทตาลอค ประกอบดวย ขอมลระบบ ซงไมควรจะถก แกไข หรอ ลบ มฉะนนจะทาให ฐานขอมลทางานไมถกตอง Table space ทชอวา TEMPSPACE1 ถกใชโดย DB2 เมอ DB2 ตองการพนทเพมเตม เพอทจะทางานบางอยาง เชน sorts Table space ทชอวา USERSPACE1 ถกใชโดยทวไปเพอทจะจดเกบตารางขอมล (Tables) ของผใช ในกรณทไมระบ table space ทเจาะจงเมอมการสรางตารางขอมล คณสามารถสราง table space ของคณเอง ไดโดยใชคาสง CREATE TABLESPACE รปท 4.9 แสดง table space MYTBLS1 ทถกสรางภายใตฐานขอมล MYDB1 บน instance DB2 เมอคณสราง table space คณจะตองระบดสค ทจะใชและหนวยความจา (buffer pool) ทตองการ ดงนนถาคณมตารางขอมลทเปน “hot table” ซงหมายถงตารางขอมลทถกเรยกใชบอยครงมาก คณสามารถจดสรรดสค ทเรวทสด และ หนวยความจา จานวนมากทสดใหกบ table space ดงกลาว ใน รปท 4.9 เราแสดงออบเจกต 2 ชนด ทสรางขนโดย default คอ buffer pool ทถกเรยกวา IBMDEFAULTBP และไฟล log

Page 71: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 71

buffer pool เปนหนวยความจา (cache)สาหรบให ฐานขอมล เรยกใช คณสามารถสรางหนง buffer pool หรอ มากกวากได แต buffer pool เหลานนควรเปน buffer pool ทประกอบดวย คา page size ทเทากนกบ page

size ของ table spaces ทมอย pages และ page size จะถกอธบายในรายละเอยดอกครงในบทท 6 สถาปตยกรรมของ DB2 ไฟล log จะใชสาหรบการกคนขอมลสสภาพปกต เมอคณทางานบนฐานขอมลไมเพยงแค ขอมลอยางเดยวทถกเกบในดสค ภายในฐานขอมล แตขณะ ทคณกาลงทางานบนฐานขอมล ไฟล log จะบนทกการดาเนนการทกระทากบขอมล ใหมองวา log เปนไฟลชวคราว ททาการบนทกกระบวนการทกระทากบขอมล โดยอตโนมต รายละเอยดของ log จะกลาวถงอกครงในบทท 11 การสารองขอมลและการกขอมลคน (Backup and Recovery)

รปท 4.9 –Buffer pool และ logs ทถกสร�างโดย default จากทกลาวมาขางตน instance เปนองคประกอบซงเปนอสระ ดงนนเราสามารถสรางฐานขอมล ทมชอเหมอนกน ไดในหลาย ๆ instance เชนเดยวกบ instances ฐานขอมลแตละฐานขอมล เปนอสระตอกน เพราะฉะนน ออบเจกต ในแตละฐานขอมลไมมความเกยวของกนกบออบเจกต ในฐานขอมลอน รปท 4.10 แสดง table space “mytbls1” ภายในฐานขอมล MYDB1 และฐานขอมล

Page 72: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

72 เรมตนกบ DB2 Express-C

SAMPLE ทอยภายใต instance DB2 ซงการทเราสามารถสราง Table space ชอเดยวกนได กเพราะฐานขอมล เหลาน เปนอสระตอกน หมายเหต รปท 4.10 ไมไดแสดงออบเจกต ทเปน default อนของฐานขอมล SAMPLE เนองจากมพนทจากดในรป

รปท 4.10 – Table spaces ทมชอเหมอนกนในฐานข�อมลทต�างกน หลงจากทคณสราง table space แลวคณสามารถสรางออบเจกต ตางๆ ภายใน table space ตวอยางเชน tables, views หรอ indexes ดงทแสดงใน รปท 4.11

Page 73: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 73

รปท 4.11 – Tables, views, indexes ทถกสร�างภายใน table space

Page 74: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

74 เรมตนกบ DB2 Express-C

ปฏบตการท 2 – ก+����+�r+�I���>7^��Oก+����+�r+�I���>7^��Oก+����+�r+�I���>7^��Oก+����+�r+�I���>7^��O

วตถประสงค ในปฏบตการนคณจะสามารถสรางฐานขอมลใหมโดยใช Create Database wizard ของ Control Center ขนตอน

1. จาก Control Center Object Tree ทอยทางซาย ใหไปทโฟลเดอรทชอวา All Databases แลวกดเมาสขวา เลอก สรางฐานขอมล และเลอก Automatic Maintenance ซงจะทาการ launches ตวชวย (wizard) ทชวยในการสรางฐานขอมล

2. กาหนดชอฐานขอมลและททจะใชเกบฐานขอมล ใน Name page

ของตวชวย ใหระบคาตอไปน

Database Name: EXPRESS Default Drive (วนโดวส): C: Default Path: (ลนกซ): /home/db2inst1 Alias: ถาปลอยวางไวจะใชคา default เปนชอเดยวกบ database name คอ EXPRESS Comment: สวนนเปนทางเลอกและสามารถปลอยวางได

กดทปม Next เพอดาเนนการในหนาถดไปของตวชวย

3. ในหนา การกาหนดสถานทสาหรบเกบขอมลของคณ ไมตองทาการเปลยนอะไรเลย แลวกด Next

4. ในหนา Select your maintenance strategy ใหเลอกคา default

(Yes, I can specify an offline …) แลวกดปม Next 5. ใหระบ offline maintenance time window ในหนา Timing

ของตวชวย ควรจะระบเวลา 2 ชวโมง หรอ มากกวาตอสปดาห เพอให DB2 สามารถปฎบตงานบารงรกษา ความสมบรณของฐานขอมลของคณ ในปฏบตการนใหตงคา start time เรมตอนเวลา 1 AM เปนชวงเวลา (duration) 6 ชวโมง ของทกวนจนทร จนถงวนพฤหสบด (เลอก only on selected day แลวเลอก วนจนทร ถง วนพฤหส) กดปม Next

Page 75: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 75

6. ใหทาการตงคาในหนา Mail Server ของตวชวย ของ DB2 เพอใหสามารถสง email ใหกบผดแลระบบในกรณทเกดกบระบบจดการฐานขอมล โดยใหระบ SMTP Server สาหรบใหใชงานโดย DB2 เพอการสง email สาหรบปฏบตการนเราไมม SMTP Server ดงนนใหปลอยวาง และกด Next

7. ตรวจสอบคาทไดทาการเลอกในหนา Summary ของตวชวย กดปม

Finish เพอเรมกรรมวธ การสรางฐานขอมล การสรางฐานขอมลโดยทวไปใชเวลาไมกนาท ในระหวางดาเนนการ จะมการแสดงตวชความคบหนา

4.1 การตงคาของ DB2 (DB2 Configuration) คาพารามเตอรของ DB2 สามารถถกปรบแตงโดยใชเครองมอทชอวา Configuration Advisor คณสามารถเรยกใช Configuration Advisor ผาน Control Center ซงทาไดโดยไปทฐานขอมลทตองการ กดเมาสขวา แลวเลอก "Configuration Advisor" Configuration Advisor จะใหคณตอบคาถามเกยวกบทรพยากรระบบทม รวมถง workload ของระบบ หลงจากนน จะแสดงคาพารามเตอรทควรจะถกปรบคา พรอมกบแนะนาคาทควรจะเปนสาหรบแตละพารามเตอร Configuration Ad-visor จะลดความยงยากในการปรบจนคาพารามเตอรตางๆ ของ DB2 เซรฟเวอร DB2 สามารถทาการตงคาทระดบตางๆ ได 4 ระดบ

- ตวแปร Environment - ไฟล database manager configuration (dbm cfg) - ไฟล database configuration (db cfg) - DB2 profile registry

รายละเอยดเกยวกบการตงคาทง 4 ระดบ ถกแสดงใน รปท 4.12 ตวอยางเชน ตวแปร Environment เปนคาทกาหนดทระดบระบบปฏบตการของเซรฟเวอร ในขณะทไฟล database manager configuration เปนคาทกาหนดทระดบ instance สวนไฟล database configuration เปนคาทกาหนดทระดบ ฐานขอมล และ DB2 profile registry เปนคาทกาหนด ทระบบปฏบตการ หรอ ระดบ instance

Page 76: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

76 เรมตนกบ DB2 Express-C

รปท 4.12 – การปรบตงค�าของ DB2 (DB2 Configuration)

4.1.1 ตวแปร Environment

ตวแปร Environment เปนตวแปรทกาหนดทระดบระบบปฏบตการ ตวแปร En-vironment ทสาคญคอ DB2INSTANCE ตวแปรน เปนตวบงบอกถง active instance ทคณกาลงใชงานอย ตวอยางเชน ถาตองการกาหนด myinst ใหเปน active instance ทาไดโดย set db2instance=myinst

4.1.2 ไฟล� database manager configuration (dbm cfg)

ไฟล database manager configuration (dbm cfg) จะเกบ คาพารามเตอรทมผลตอ instance และทกฐานขอมล ทอยภายใต instance นน ไฟล database manager configuration สามารถเรยกดหรอแกไขโดยใชการพมพคาสง หรอผานทาง Control Center ของ DB2

Page 77: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 77

การแกไขไฟล DBM CFG จาก Control Center ทาไดโดย ขยายโฟลเดอร instance แลวเลอก instance ทตองการ กดเมาสขวาใหปรากฎเมนปอปอพ และเลอก ตงคาพารามเตอร ดงแสดงใน รปท 4.13

รปท 4.13 – การตงค�า dbm cfg จาก Control Center. หลงจากไดเลอกตงคาพารามเตอรหนาจอทแสดงในรปท 4.14 จะแสดงรายการ คาพารามเตอร ของ dbm cfg

Page 78: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

78 เรมตนกบ DB2 Express-C

รปท 4.14 –dialog ของ dbm cfg พารามเตอร มากมายทเปน dynamic (คอลมน dynamic มคาเปน Y) นน หมายถงการเปลยนแปลงคาจะสงผลโดยทนท อยางไรกตาม การเปลยนคาพารามเตอรบางตวอาจตองสง stop และสง re-start instance ดวยการพมพ คาสง db2stop และตามดวย db2start กอนทจะ stop instance ทกแอพพลเคชนตองยตการเชอมตอกบฐานขอมล ถาคณ ตองการ stop instance พรอมทงยกเลกการเชอมตอของทกแอพพลเคชน สามารถทาไดโดยใชคาสง db2stop force (ไมควรใชคาสงนโดยไมจาเปน เพราะจะเปนยกเลกกระบวนการทางานตางๆ ของแอพพลเคชน) instance สามารถ stop หรอ start ผานทาง Control Center ไดโดยการเลอก instance ทตองการ กดเมาสขวา และเลอก Stop หรอ Start อยางใดอยางหนง ตาราง 4.3 แสดงคาสงทมประโยชนตอการจดการ dbm cfg โดยใชการพมพคาสง (Command Line)

Page 79: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 79

คาสง คาอธบาย

db2 get dbm cfg เรยกดขอมลเกยวกบ dbm cfg

db2 update dbm cfg using <parameter_name> <value> แกไขคาตวแปร dbm cfg

ตาราง 4.3 - คาสงทใช�จดการ dbm cfg

4.1.3 ไฟล� database configuration (db cfg)

ไฟล database configuration (db cfg) ประกอบดวย พารามเตอรหลายตว ซงสงผลเฉพาะแตละฐานขอมลเทานน ไฟล database configuration สามารถแสดง หรอ แกไข โดยใชการพมพคาสง หรอ ผานทาง Control Center ของ DB2 การแกไขไฟล DB CFG จาก Control Center ทาไดโดยขยายโฟลเดอร database แลวเลอกฐานขอมลทตองการ กดเมาสขวาเพอแสดงเมน popup และ เลอกกาหนดคาพารามเตอร ดงแสดงใน รปท 4.15

รปท 4.15 – การตงค�า db cfg จาก Control Center. หลงการเลอกตงคาพารามเตอร หนาจอทแสดงในรปท 4.16 จะถกแสดง พรอมกบรายการของพารามเตอรของ db cfg

Page 80: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

80 เรมตนกบ DB2 Express-C

รปท 4.16 – พารามเตอร�ของ db cfg ตาราง 4.4 แสดงคาสงทมประโยชนตอการจดการ db cfg โดยใชการพมพคาสง (Command Line) คาสง คาอธบาย

get db cfg for <database_name> เรยกดขอมลเกยวกบ db cfg สาหรบฐานขอมลทเลอก

update db cfg for <database_name> using <parameter_name> <value> แกไขคาตวแปรของ db cfg

ตาราง 4.4 – คาสงทใช�จดการ db cfg

4.1.4 DB2 profile registry

ตวแปร DB2 profile registry คอ พารามเตอรทมความแตกตางตามแตละ platform และสามารถตงคาแบบ Globally (มผลทกๆ instance) หรอทระดบ instance (มผลเฉพาะบาง instance) ตาราง 4.5 แสดงคาสงทมประโยชนตอการจดการ B2 profile registry คาสง คาอธบาย

db2set -all แสดงตวแปร DB2 profile registry เฉพาะตวแปรทกาหนดคาในปจจบน

db2set –lr แสดงตวแปร DB2 profile registry

Page 81: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 81

ทงหมด

db2set <parameter>=<value> กาหนดคาตวแปรตามคา value ทระบ ตาราง 4.5 - คาสงทใช�จดการ DB2 profile registry ตาราง 4.6 แสดงตวแปร DB2 profile registry ทใชทวไป ค�าตวแปร Registry คาอธบาย

DB2COMM ระบ communication managers (เชน TCP/IP) ทจะ start เมอมการ start instance

DB2_EXTSECURITY บนวนโดวส ใชปองกนการเขามาใชงาน DB2โดยผทไมมสทธโดยการลอค DB2 system files

DB2_COPY_NAME

จดเกบชอของ DB2 Copy ทกาลงใชอย ถาตองการสลบไปยง DB2 Copy อนทตดตงอย ทาไดโดยใชคาสง install-path\bin\db2envars.bat

ตาราง 4.6 – ตวแปร DB2 profile registry ทใช�ทวไป ตวอยาง การกาหนดใหสามารถใชการสอสารในรปแบบ TCPIP ทาไดโดยกาหนดตวแปร DB2COMM ดงแสดงดานลาง db2set db2comm=tcpip

4.2 The DB2 Administration Server DB2 Administration Server (DAS) เปนโปรเซส Daemon ททางาน ในเซรฟเวอร DB2 ซงคอยควบคมการใชงานเครองมอทเปนกราฟก ทมาจากไคลเอนตทเปน remote เชน Control Center โดยเครองหนงเครอง สามารถม DAS ไดเพยงหนงโปรเซสเทานน ดงแสดงในรปท 4.16

Page 82: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

82 เรมตนกบ DB2 Express-C

รปท 4.16 –The DB2 Administration Server (DAS)

Page 83: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 4 – DB2 Environment 83

ปฏบตการท 3 – การทางานกบ instances ฐานข�อมล และการตงค�า

(configuration) วตถประสงค ในปฏบตการ นคณจะสราง instance และ databases ใหม และทาการเปลยนแปลงพารามเตอร ของ DB2 บนวนโดวส คณสามารถเลอกใช Control Center หรอ Command Window ของ DB2 แตในปฏบตการน เราใช Command Window ขนตอน

1. จาก Command Window ของ DB2 สราง instance ใหมชอวา newinst db2icrt newinst

2. ภายใต instance ทชอวา newinst สรางฐานขอมล โดยกาหนดชอวา

newdb และใหใชคา default ในการสรางฐานขอมล set db2instance=newinst db2start db2 create database newdb

3. แสดง instances ทมทงหมดในเซรฟเวอรของคณ db2ilist

4. เปลยนไปยง instance ทชอวา DB2

และใหมนใจวาคณไดเปลยนเรยบรอยแลว set db2instance=db2 db2 get instance

5. เปลยนพารามเตอร dbm cfg ทชอ FEDERATED จาก NO เปน YES

และยนยนคาทเปลยนเรยบรอยแลว db2 update dbm cfg using FEDERATED YES db2 force applications all db2 terminate db2stop db2start db2 get dbm cfg

6. เชอมตอไปยง ฐานขอมล SAMPLE ดวยคา userID และ password

ทคณใชเขาระบบปฏบตการ

Page 84: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

84 เรมตนกบ DB2 Express-C

db2 connect to sample user <userID> using <psw>

7. ตรวจสอบจานวนแอพพลเคชนทกาลงทางาน ใน instance

ปจจบนของคณ db2 list applications show detail

8. เปด DB2 Command Window อกหนาจอหนงและเชอมตออกครงไปยง ฐานขอมล SAMPLE โดยไมตองระบ userID และ password ตอจากนน ตรวจสอบจานวนการเชอมตอทคณม

db2 connect to sample db2 list applications

9. ยกเลกการใชงานแอพพลเคชนในหนาจอหนง ของ DB2 Command win-

dow db2 force application (<ใหใสคาทไดจากคอลมน Appl. Handle ทม Application name เปน “db2bp.exe” โดยผลลพธดงกลาวไดมาจากการใชคาสง db2 list application>)

10. Drop instance ทชอวา newinst

db2idrop newinst

11. ลบและสราง DAS ขนมาใหม แลว start DAS db2admin stop db2admin drop db2admin create db2admin start

12. กาหนดคาตวแปร DB2 Registry ทชอวา DB2COMM ใหเปน tcpip

และ npipe สาหรบ instance ของคณ db2set db2comm=tcpip,npipe db2stop db2start

13. การยกเลกการกาหนดคาตวแปร Registry DB2COMM db2set db2comm= db2stop db2start

14. ตรวจสอบคาพารามเตอรปจจบนของ LOGSECOND ของ db cfg และเปลยนคาเปน 5 หลงจากนนใหตรวจสอบคาใหม db2 connect to sample db2 get db cfg db2 update db cfg using LOGSECOND 5 db2 get db cfg

Page 85: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

85

Page 86: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 87: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

87

5 บทท 5 – เครองมอของ DB2

ในบทนจะอธบายถงเครองมอทคณสามารถใชงานกบโปรแกรม DB2 จากรปท 5.1 ในวงรสแดงแสดงถงสวนสาคญทจะเนนในบทน

รปท 5.1 – แสดงภาพรวมของเครองมอของ DB2

Page 88: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

88 เรมตนกบ DB2 Express-C

หมายเหต: รายละเอยดเพมเตมเกยวกบการนาเสนอเครองมอของDB2 และการเขยนสครปต สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4202 http://www.channeldb2.com/video/video/show?id=807741:Video:4182 รปท 5.2 แสดงรายการเครองมอของ DB2 ทสามารถเลอกใชงานไดจากคาสงลด (Shortcuts) ของ IBM DB2 Start Menu เครองมอสวนใหญมการทางานท เหมอนกนทงในระบบปฏบตการลนกซ และวนโดวส

รปท 5.2 – แสดงเครองมอ DB2 จาก IBM DB2 Start menu ตารางท 5.1 แสดงรายการของคาสงลด ซงสามารถใชในการเรยกเครองมอ

ทนยมใชบนระบบปฏบตการลนกซ หรอ วนโดวส ชอของเครองมอ คาสง

Command Editor db2ce

Page 89: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 89

Command Line Processor db2

Command Window (ใชไดกบระบบปฏบตการ Windows เทานน)

db2cmd

Control Center db2cc

Task Center db2tc

Health Center db2hc

Configuration Assistant db2ca

First Steps db2fs ตารางท 5.1 – คาสงลดในการเรยกเครองมอของ DB2

5.1 Control Center

เครองมอหลกของ DB2 สาหรบผดแลระบบฐานขอมลคอ Control Center ซงแสดงในรปท 5.3

รปท 5.3 - DB2 Control Center

Page 90: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

90 เรมตนกบ DB2 Express-C

Control Center คอ เครองมอการบรหารจดการสวนกลาง ซงหมายถงคณสามารถตดตง Control Center บนเครอง 1 เครองแลวใชเครองดงกลาวในการบรหารจดการ ระบบจดการฐานขอมล DB2 ทมทงหมด โดยคณสามารถ

• ดระบบของคณ instances ฐานขอมล

และออบเจกตของฐานขอมล • สราง แกไข และจดการฐานขอมล

และออบเจกตของฐานขอมล • เรยกเครองมอทางกราฟกอนของ DB2

จากรปท 5.3 ชองดานซายของเครองมอ แสดงลาดบชนสาหรบแตละ ออบเจกตของฐานขอมลในระบบของคณ โดยจะประกอบดวย “โฟลเดอร” สาหรบตาราง (Tables) ตารางเสมอน (Views) และอนๆ เมอคณดบเบลคลกทโฟลเดอร (ตวอยางเชนโฟลเดอรตาราง ดงรปท 5.3) ชองดานขวาบนของตาราง จะแสดงรายการของออบเจกต ทเกยวของ ในกรณนจะแสดงตารางทงหมดในฐานขอมล SAMPLE

ถาคณเลอกตารางทปรากฏอยทชองบนขวาของเครองมอ ในชองลางขวา ของเครองมอจะแสดงรายละเอยดเกยวกบตารางทคณเลอก คลกขวาทโฟลเดอร หรอ ออบเจกตในแผนผงออบเจกต (Object tree) จะแสดงเมนทสามารถใชงานไดกบโฟลเดอรนนๆ ตวอยางเชน คลกขวาท instance ทตองการและเลอก “Configure parameters”

จะทาใหคณสามารถดรายละเอยด และแกไขไฟล Database Configuration Manager ในทานองเดยวกน ถาคณคลกขวาทฐานขอมลทตองการและเลอก “Configure parameter” คณสามารถ เรยกดและปรบแตงไฟล database configuration ได สภาพแวดลอมของ DB2 และการปรบแตงพารามเตอร ไดกลาวในรายละเอยดไปแลว ในบทท 4 สภาพแวดลอมของ DB2 เมอคณเปด Control Center ครงแรก ระบบจะถามเพอใหคณเลอกมมมองทคณตองการ แตละทางเลอกของมมมอง จะกาหนด ออบเจกตของฐานขอมลทจะแสดงในเครองมอ รปท 5.4 แสดงมมมองของ Control Center ทสามารถเลอกได

Page 91: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 91

รปท 5.4 - มมมองทสามารถเลอกได�ของ DB2 Control Center มมมองขนพนฐาน (Basic) แสดงฟงกชนการทางานหลกของ DB2 มมมองขนสง (Advanced) แสดงทางเลอก และคณสมบตทมากกวา มมมองแบบกาหนดเอง (Custom) จะใหคณเลอก คณสมบต รวมถงออบเจกตทคณตองการใหแสดงใน Control Center คณสามารถปรบแกมมมองของ Control Center ภายหลงไดโดยการ เลอก “Customize Control Center” จากเมนเครองมอ ดงแสดงในรปท 5.5

Page 92: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

92 เรมตนกบ DB2 Express-C

รปท 5.5 – การปรบแต�งมมมองของ Control Center เรมต�นการใช�งาน Control Center มหลายวธทจะเรยกใชงาน Control Center

� ไปท วนโดวส Start menu � โดยการเรยกใชงาน db2cc บน command windows ของ DB2

� โดยการคลกทไอคอน Control Center ในแถบเครองมอของ DB2 GUI อนๆ

� จากไอคอน DB2 ในถาดเครองมอของวนโดวสดงทแสดงในรปท 5.6 (คลกขวาบนไอคอน DB2 สเขยว และเลอกเมน DB2 Control Center

… )

Page 93: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 93

รปท 5.6 – เรมต�นการใช�งาน DB2 Control Center จากถาดเครองมอของวนโดวส�

5.2 Command Editor

คณสามารถประมวลผลชดคาสง DB2 คาสง SQL และคาสง XQuery

วเคราะหแผนการประมวลผลของคาสง (Execution plan) และเรยกด หรอ ปรบปรง ผลลพธทไดจากการสอบถาม (Query)โดยการใช DB2 Commande

Editor รปท 5.7 แสดง Command Editor และคาอธบายรายละเอยดขององคประกอบตางๆ

รปท 5.7 – DB2 Command Editor ในพนทปอนขอมล (Input area) คณสามารถ ปอนคาสงไดหลายๆ คาสง คาสงแตละคาสง จะสนสดดวยสญลกษณสนสดคาสง (คา default คอ ; )

Page 94: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

94 เรมตนกบ DB2 Express-C

ถาคณกดทปมประมวลผล (Execute Button - ดรปท 5.8) คาสงจะถกประมวลผลทละคาสง ตอเนองกนไป แตถาคณ Highlight คาสงทตองการ แลวกดทปมประมวลผล ระบบจะประมวลผลเฉพาะคาสงทถก Highlight เทานน คณจะตองทาการเชอมตอกบฐานขอมลกอน ท จะประมวลผล คาสง SQL

รปท 5.8 –แถบคาสง Command Editor – การเรมการใช�งาน Command Editor คณสามารถเรมตนใชงาน Command Editor ไดหลายวธ � จากวนโดวส Start menu:

Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) -> Command Line Tools -> Command Editor

� จาก command window ของ DB2 โดยการ พมพคาสง db2ce � จากเมนเครองมอ (Tools)ในControl Center � จากโปรแกรมทรวมอยกบ Control Center ซงทาไดโดย

� คลกขวาทไอคอนฐานขอมล SAMPLEในชองดานซายของเครองมอ Control Center’ s และเลอกเมน Query

� เมอใดทออบเจกตทถกเลอก (ฐานขอมล ตาราง และ อนๆ)คณสามารถเรยกใช Command Editor โดยคลกทลงค Query ในชองดานขวาลางของเครองมอ Control Center

� จาก Control Center คลกทไอคอน Command Editor บนแถบเครองมอ Control Center ดงแสดงในรปท 5.9

รปท 5.9 – ไอคอน Command Editor บนแถบเครองมอของ Control Center การเชอมต�อกบฐานข�อมล

Page 95: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 95

การเชอมตอกบฐานขอมลทาไดโดยการ คลกทปม Add (ดรปท 5.7) จะแสดงรายชอฐานขอมลทมในระบบขนมา ดงรปท 5.10 ใหเลอกฐานขอมลทตองการ ทาการระบผใช และรหสลบ แลวคลก OK

รปท 5.10 – การเชอมต�อกบฐานข�อมล

5.3 SQL Assist Wizard

ถาคณไมคนเคยกบภาษา SQL คณสามารถใชตวชวยการเขยน SQL (SQL Assist Wizard) จาก Command Editor ดงแสดงในรปท 5.11 คณสามารถเรยก SQL Assist Wizard ไดจาก Command Editor โดยคลกไอคอนสดทายทเปนสญลกษณ SQL (ถกเนนในรปดวยวงกลมสแดง)

Page 96: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

96 เรมตนกบ DB2 Express-C

รปท 5.11 – การเรยกใช� SQL Assist Wizard รปท 5.12 แสดงรายละเอยดของตวชวยการเขยน SQL ตวชวยการเขยน SQL ใชงานไดงาย โดยลาดบแรก ใหระบประเภท คาสง SQL ทตองการใหชวยเขยน (SELECT, INSERT, UPDATE, DELETE) ตวเลอกทปรากฏขน จะแตกตางกนออกไป ขนอยกบคาสง SQL ทคณเลอก ทดานลางสดของเครองมอ คณจะเหนชดคาสง SQL ทถกสรางขน ตามตวเลอกทคณไดเลอกไว

Page 97: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 97

รปท 5.12 – แสดงตวช�วยการเขยน SQL (SQL Assist wizard)

5.4 ป�ม Show SQL

เครองมอทเปนกราฟก และตวชวยสวนใหญ ใน DB2 อนญาตใหคณสามารถ ตรวจสอบคาสงในขณะนน หรอ คาสง SQL ทถกสรางขนจากผลของการใชเครองมอนน เพอทจะเรยกดรายละเอยดของคาสง ซงทาไดโดยคลกทปม Show SQL ดงแสดงในรปท 5.13 และรปท 5.14

รปท 5.13 – ป�ม Show SQL

Page 98: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

98 เรมตนกบ DB2 Express-C

รปท 5.14 – ผลลพธ�จากการคลกทป�ม Show SQL ความสามารถในการตรวจสอบคาสง SQL จะชวยไดมากสาหรบ การเรยนรคาสง SQL และสามารถบนทกคาสงดงกลาว ในรปแบบของไฟล เพอการใชงานในครงตอไป คณยงสามารถเขยนโปรแกรมสครปตได โดยนาชดคาสงทถกบนทกไวกลบมาใชงานใหม

ปฏบตการท 4 – การสร�างฐานข�อมลทชอว�า EXPRESS โดยใช�โปรแกรมสครปต� วตถประสงค ในแบบทดสอบน คณจะสราง ฐานขอมล EXPRESS โดยใชโปรแกรมสครปตทใหมาสองโปรแกรม ขนตอนการทางาน

1. ใน ปฏบตการท 2 คณไดสรางฐานขอมล EXPRESS

และในขนตอนนคณจะ สรางตารางและเพมขอมลในตาราง เพออานวยความสะดวก คณสามารถเรยกใชโปรแกรมสครปต สองโปรแกรมทใหมา คอ quicklab4.db2 และ quicklab4.dat โปรแกรมสครปต quicklab4.db2 ประกอบดวย กลมคาสง ทใชในการสรางตาราง ดงนน คณจะตองเรยกใชโปรแกรมนกอนโปรแกรมสครปต quicklab4.dat ประกอบดวย คาสง ในการเพมขอมลในตาราง โปรแกรมสครปตทงสองโปรแกรมอยในไฟล quicklabs.zip ทมากบหนงสอเลมน การจะใชงานโปรแกรมสครปตเหลาน

Page 99: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 99

ทาไดโดยการเปด Command Editor โดยคณตองแนใจวาฐานขอมลใหม ทคณสรางขนมานน ถกเลอกอยใน drop-down list บนแถบเครองมอ ถาฐานขอมลใหมนนยงไมปรากฏ ในลสต คณตองทาการเชอมตอ โดยกดปม Add

2. คลกSelected � เมน Open จากเมนของ Command Editor

และเลอกโฟลเดอรทเกบสครปตนนอย เลอกไฟล quicklab4.db2 และคลกปม OK เนอหาทอยในไฟลจะปรากฏในพนทปอนขอมลของ Command Editor คลกปม Run เพอใชในการรนโปรแกรมสครปต ตรวจสอบดวาไมมขอผดพลาดในขณะทกาลงรนโปรแกรมสครปต

3. ทาซาขนตอนท (2) สาหรบ ไฟล quicklab4.dat

ฐานขอมลใหม ทคณสรางขน คอ ฐานขอมลสาหรบรานหนงสอบนอนเตอรเนต ตารางทชอวา BOOKS ประกอบดวยขอมลทงหมดเกยวกบหนงสอทมอยในราน ตารางทชอวา CUSTOMERS ประกอบดวยขอมลทเกยวกบลกคาของราน และตารางทชอวา SALES ประกอบดวยขอมลการขายสนคา เมอใดกตามทลกคาซอหนงสอ ขอมลจะถกบนทกลงใน ตาราง SALES แผนภาพขางลางนแสดงการออกแบบและความสมพนธระหวางตาราง

ตารางSALES

sales_id

(INTEGER)

prod_id

(INTEGER)

cust_id

(INTEGER)

qty

(INTEGER)

price

DECIMAL(7,2)

purch_date

TIMESTAMP

ตารางCUSTOMERS

cust_id

(INTEGER) Primary Key

firstnme

VARCHAR (100)

lastname

VARCHAR(100)

address

VARCHAR(300)

email

VARCHAR(100)

ตารางBOOKS

book_id

(INTEGER)

title

(INTEGER)

cost

DECIMAL(7,2)

image

BLOB (1MB)

Page 100: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

100 เรมตนกบ DB2 Express-C

5.5 ก+��I("��%��/�$ก+��I("��%��/�$ก+��I("��%��/�$ก+��I("��%��/�$

การสรางสครปตไฟลนน มประโยชนอยางมาก ชวยใหสามารถประมวลผลชดคาสง DB2 หรอ ชดคาสง SQL ได และหากตองการทจะเรยกใชชดคาสงเหลานนซาๆกสามารถทาได ยกตวอยางเชน ผจดการฐานขอมลอาจตองการรนสครปตเพอตรวจนบจานวนแถวของตารางทสาคญๆ ทกๆวน รปแบบของสครปต มอย 2 รปแบบคอ

1. SQL สครปต 2. Operating system สครปต หรอ shell สครปต

5.5.1 SQL สครปต�

SQL สครปต ประกอบดวยประโยคคาสง การสบคน (Query) และคาสงเพอจดการฐานขอมล สครปตเหลาน คอนขางเขาใจงาย และไมขนกบระบบปฏบตการใด อยางไรกตาม สครปตชนดน ไมสนบสนนการใช ตวแปรหรอพารามเตอร ตวอยางเชน ในไฟลทชอวา script.db2 ประกอบไปดวยชดคาสงดงตอไปน CONNECT TO EXPRESS;

CREATE TABLE user1.mytable

( col1 INTEGER NOT NULL,

col2 VARCHAR(40),

col3 DECIMAL(9,2));

SELECT * FROM user1.mytable FETCH FIRST 10 ROWS ONLY;

COMMIT;

ไฟล� script1.db2 ในสครปตขางตน ทกประโยคคาสงเปนคาสง SQL

และแตละประโยคคาสงจะถกแยกโดยสญลกษณสนสดประโยคคาสง ในกรณนเราใชเครองหมายอฒภาค หรอ Semi-colon (;) โดยท ชอไฟลไมจาเปนตองตงนามสกลเปน “db2” สามารถตงนามสกลอะไรกได

Page 101: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 101

การประมวลผล SQL สครปต� SQL สครปตสามารถถกรนไดจาก Command Editor หรอ DB2 Command Window บนระบบปฏบตการวนโดวส หรอ สามารถถกรนผาน shell ของลนกซ กได สาหรบการรนสครปตดงกลาวจาก DB2 Command Window หรอ shell ของลนกซ คณ สามารถ ใชคาสงตอไปน db2 -t -v -f script1.db2 -z script1.log หรอ: db2 –tvf script1.db2 –z script1.log ในคาสงน:

-t เปนการระบวาในการสนสดประโยคคาสง ใหใชเครองหมายในการสนสดคาสงทถกกาหนดเปนคา default ซงในทน กคอเครองหมายอฒภาค (semi-colon หรอ ;) -v เปนการระบวาตองการใชโหมด verbose ซงจะสงผลให db2

ทาการแสดง คาสงทกาลงถกประมวลผลออกทางจอภาพ -f เปนการระบ วา ชอไฟลทระบตามหลงเปนสครปตไฟล -z เปนการระบวาใหเกบรายละเอยดทเกดจากการรนคาสง ใน ชอไฟลทระบตอจากน (ไฟล message) เพอใชสาหรบการวเคราะหในภายหลง (นคอ ทางเลอก ทแนะนาใหใช)

เมอ ทางเลอก -t ถกเรยกใช และไมมการ ระบสญลกษณสนสดประโยค จะถอวาไดเลอกใชเครองหมายอฒภาค เปนสญลกษณในการสนสดคาสง อาจจะมในบางสถานการณ ทตองการสญลกษณสนสดประโยค เปนอยางอน ตวอยาง เชน สครปตทมคาสง SQL PL จาเปนทจะตองใชสญลกษณตวสนสดประโยคอนๆ ทไมใชเครองหมายอฒภาค (semi-colon) เพราะ เครองหมายอฒภาคนน ไดถกใชในสวนของ การนยามออบเจกตใน SQL PL อกตวอยางหนง เชน ในไฟลสครปตขางลางน ทชอวา “functions.db2”

ซงจะมสวนของภาษาทใชในการกาหนดโครงสรางขอมล (Data Definition Language) ท ใชในการสรางฟงกชน ซง เครองหมายอฒภาค จะถกใชเปนตวสนสดโครงสรางของคาสง SELECT

ซงเปนขอกาหนดซงจาเปนในฟงกชน สาหรบสญลกษณตวสนสดประโยคของ CREATE FUNCTION เราจะใชเครองหมายอศเจรย (!) ซง ถาเราใชเครองหมายอฒภาค เปนสญลกษณตวสนสดประโยค อาจะมความขดแยงทเกดขนในชวงของการรน (run time conflict) โดย DB2 จะทาการรายงาน ถงขอผดพลาดดงกลาว CREATE FUNCTION f1()

SELECT … ;

Page 102: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

102 เรมตนกบ DB2 Express-C

END!

ไฟล functions.db2 เพอแจงให DB2 ทราบวาสญลกษณตวสนสดประโยคอน ทตางกนกาลงจะถกใช ใหเลอกใช ทางเลอก -d และตามดวยสญลกษณตวสนสดประโยคทตองการ ซงแสดงใหเหนในตวอยางตอไปน: db2 –td! –v –f functions.db2 –z functions.log คาอธบายของทางเลอก อน ๆ ทสามารถเรยกใชได สามารถเรยกดไดจาก Command Window หรอ shell ของลนกซ คาสง: db2 list command options

5.5.2 Operating system shell scripts

สครปตของระบบปฏบตการ ชวยเพมความยดหยน และความสามารถ เนองจากเราสามารถเพมหลกการ (logic) ของโปรแกรมเขาไปในสครปตได ซงสครปตเหลานจะ จะมความแตกตางระหวางระบบปฏบตการ นอกจากนยงสนบสนนการสงผานคาพารามเตอรและตวแปร ขางลาง คอตวอยาง shell สครปต แบบงายของ ระบบปฏบตการวนโดวส set DBPATH=c:

set DBNAME=PRODEXPR

set MEMORY=25

db2 CREATE DATABASE %DBNAME% ON %DBPATH% AUTOCONFIGURE USING MEM_PERCENT %MEMORY% APPLY DB AND DBM

db2 CONNECT TO %DBNAME% USER %1 USING %2 del schema.log triggers.log app_objects.log

db2 set schema user1

db2 –t –v –f schema.db2 –z schema.log

db2 –td@ -v –f triggers.db2 –z triggers.log

db2 –td@ -v –f functions.db2 –z functions.log

ไฟล create_database.bat

Page 103: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 103

เพอทจะประมวลผล สครปตของระบบปฏบตการน จาก command line คณสามารถใช คาสง create_database.bat db2admin ibmdb2 บนระบบปฏบตการวนโดวส การใชนามสกล “bat” บงบอกให ระบบปฏบตการทราบวา คอ ไฟลทสามารถประมวลผลไดแบบ batch บนระบบปฏบตการลนกซ คณตองเปลยนสทธการเขาถงไฟลใหอยในสถานะประมวลผลไดโดยใชคาสง chmod +x หลงจากนนคณสามารถทาการประมวลผลไฟลตามวธทกลาวไวในขางตน

Page 104: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

104 เรมตนกบ DB2 Express-C

ปฏบตการท 5 – ก+����+��%��/�$�0+�����!�&�ก+����+��%��/�$�0+�����!�&�ก+����+��%��/�$�0+�����!�&�ก+����+��%��/�$�0+�����!�&�ฐานข�อมลทชอว�า

EXPRESS

วตถประสงค สครปต เปนเครองมอททรงพลงในการจดการงานทซาซอน เชน การทาให Catalog ของฐานขอมลมขอมลลาสด การสารองขอมล สครปตบนระบบปฏบตการ สนบสนนการสงคาผาน สครปตได ทาใหการเขยน shell สครปตมความยดหยนมากขน ในแบบทดสอบ น คณจะสราง สครปตระบบปฏบตการ เพอการ deploy ฐานขอมลทชอวา EXPRESS2 Shell สครปตนจะเรยกใช SQL สครปตทถกสรางไวแลวกอนหนาน แบบทดสอบน จะแสดงใหเหนถงสครปต และคาสงสาหรบระบบปฏบตการวนโดวส เทานน ถาคณตองการทจะทางานบนระบบปฏบตการลนกซ ควรทาการแกไขสครปตใหเหมาะสม ขนตอน

1. เปด text editor เชน Notepad หรอ Wordpad แลวพมพขอความตามขางลางน

2. บนทกไฟลสครปตในโฟลเดอร และตงชอวา create_database.bat

ในหนาตาง Save As ใหคณเลอก MS-DOS Format ตรง Save as type (สาหรบ Wordpad) ถาคณบนทกรปแบบไฟลทแตกตางจากน Wordpad อาจจะเพมอกขระบางอยางทเรามองไมเหนเขาไปในไฟล ซงจะเกดปญหาตามมาในขนตอนของการประมวลผลไฟลสครปต ในขณะเดยวกน ใหใสเครองหมายอญประกาศ (Quotes)

Page 105: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 105

ครอบชอไฟลเพอใหแนใจวา ระบบปฏบตการวนโดวส จะไมทาการเพมนามสกล .TXT ตอทายชอไฟลใหอตโนมต ดงแสดงในรปภาพขางลาง

3. เพอทจะใหสครปต ทางานไดกบ DB2 คณจะตองเรยกใชงาน DB2 Com-

mand Window โดยไปท Start > Program Files > IBM DB2 > DB2COPY1 (default) > Command Line Tools > Command Window

อกทางเลอกหนง คณสามารถไปท Start > Run พมพ db2cmd แลวกด enter ดงทแสดงขางลาง

Page 106: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

106 เรมตนกบ DB2 Express-C

4. จากนนทาการรนสครปต โดยพมพคาสง:

cd C:\express create_database.bat db2admin ibmdb2

5. ใชเวลาสกครเพอทาความเขาใจกบไฟลสครปตทคณสรางขน คณเขาใจหรอไมวามสงใดเกดขนบางในแตละบรรทด?

6. ลองตอบคาถามขางลางน

a. การเชอมตอกบฐานขอมลเกดขนทใด b. %1 และ %2 หมายความวาอะไร?

c. คาสงดงตอไปนใชทาอะไร?

SET DBPATH=C:

Page 107: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 107

d. คาสงในบรรทดตอไปนใชทาอะไร? del schema.log, triggers.log, app_objects.log

e. จะเปนอยางไร เมอสครปตถกเรยกใชโดยไมมการสงผานพารามเตอรใดๆ

f. ทาไม SQL สครปตทถกเรยกใชไมมประโยคคาสง CONNECT

TO สครปตสามารถเชอมตอฐานขอมลไดอยางไร

Page 108: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

108 เรมตนกบ DB2 Express-C

5.6 Task Center

เครองมอกราฟกทชอวา Task Center ใชเพอสรางงาน (Task)ไดเชน ชดคาสง DB2 คาสงระบบปฏบตการ หรอสครปต การทาคาสงถดไป สามารถถกดาเนนการได ไมวางาน กอนหนานนจะลมเหลว หรอสาเรจ ตวอยางเชน ถางานทเกยวของกบการสารองขอมลทสาคญในฐานขอมล ณ เวลา 3 นาฬกาทาสาเรจ จดหมายอเลกทรอนกสจะถกสงไปยงผดแลระบบฐานขอมล เพอแสดงขอมลเกยวกบการสารองขอมลน ในทางตรงกนขาม ถาการสารองขอมลลมเหลว Task Center สามารถตดตอผดแลระบบฐานขอมลผานทางเพจเจอร รปท 5.15 แสดง หนาจอ Task Center

รปท 5.15 – หนาจอ Task Center

5.6.1 ฐานข�อมล Tools Catalog

รายละเอยดของงาน และ ตารางเวลา ของงานทงหมด จะถกแยกจดเกบไวในฐานขอมลพเศษของ DB2 ทเรยกวาฐานขอมล Tools Catalog ฐานขอมลนจาเปนทจะตองมในกรณทคณตองการใชคณสมบตการกาหนดตาราง

Page 109: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 109

เวลา(Scheduling) ของ DB2 คณสามารถสรางฐานขอมล Tools Catalog ไดดวยคาสงตอไปน CREATE TOOLS CATALOG systools CREATE NEW DATABASE toolsdb จากตวอยางดงกลาว systools คอ ชอของ Schema ในฐานขอมล และ ชอของฐานขอมลคอ toolsdb เราจะกลางถงรายละเอยดของ schema เพมเตมในบทท 8 (การใช ออบเจกตของฐานขอมล) การเรยกใช� Task Center คณสามารถเรยกใช Task Center จาก Control Center โดยการคลกท Tools > Task Center ดงแสดงในรปท 5.16 หรอ คณสามารถเรยกใช Task Center ไดอกวธ โดยการคลกทวนโดวส Start menu : Start > Programs > IBM DB2 > DB2COPY1 > General Administration Tools > Task Center

รปท 5.16 – การเรยกใช� Task Center

Page 110: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

110 เรมตนกบ DB2 Express-C

การกาหนดตารางเวลาของงาน ด�วย Task Center สครปตทกประเภทสามารถกาหนดตารางเวลา ผาน Task Center (ไมวาสครปตนนจะถกสรางผานทางเครองมอกราฟกของ DB2 หรอไมกตาม)

งานตางๆ จะถก ทาตามเวลาทไดกาหนดไวจากระบบทคณ ไดสรางฐานขอมล Tools Catalog เราสนบสนนใหคณศกษา Task Center ดวยตวเอง

5.7 Journal

ผดแลระบบฐานขอมล สามารถเรยกดรายละเอยดของการทางานตางๆ (Journal) ผานทาง เครองมอกราฟก DB2 Journal โดย Journal จะทาการบนทกกจกรรมในรปแบบออนไลน รปท 5.17 แสดง Journal และตาราง 5.2 แสดงขอมลทไดจาก Journal

Page 111: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 111

รปท 5.17 –The Journal ชนดของข�อมล คาอธบาย

Task History ขอมลทเกยวกบงาน ทตงเวลาไว และสถานะของความสาเรจของงาน

Database History ขอมลประวตของ ฐานขอมล กจกรรมตางๆทเกดขน (การสารองขอมล การกคนขอมล และอนๆ)

Message รายละเอยดของขอความทถกสงจากเครองมอตางๆ ของ DB2 ซงจะมประโยชนในกรณทตองการเรยกดรายละเอยดขอผดพลาด (Error) ตางๆ หลงจากทปดรายละเอยดพวกนไปแลว

Notification Log ประกอบดวยรายละเอยดขอความในระดบ System ขอผดพลาดขนวกฤตตางๆ จะถกบนทกไวในสวนน

ตารางท 5.2 - ข�อมลทแสดงใน Journal การเรยกใช� Journal คณสามารถเรยกใช Journal จาก Control Center โดยการคลกท Tools > Journal ดงแสดงในรปท 5.18 หรอคณสามารถเรยกใชเครองมอนไดอกวธหนงโดยการคลกทวนโดวส Start menu: Start > Programs > IBM DB2 > DB2COPY1 > General Administration Tools > Journal

Page 112: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

112 เรมตนกบ DB2 Express-C

รปท 5.18 – การเรยกใช� Journal

5.8 Health Monitor

Health Monitor คอโปรเซส ซงทางาน อยภายใน DB2 โดยมหนาทตรวจสอบ ตดตามสถานะของฐานขอมล (หนวยความจา การจดการเนอททใชเกบขอมล กจกรรมอตโนมต ดงทกลาวไวแลว และอนๆ) เมอ DB2 ตรวจพบวามการทางานใด ถงเกณฑทมการกาหนดเอาไว DB2 จะทาการแจงเตอนการทางานดงกลาวให ผดแลฐานขอมล ทราบ สถานะในการแจงเตอนม 3 สถานะ ไดแก

� Attention: สถานะแจงใหทราบ เชน ตองมการปรบจนพารามเตอรของฐานขอมล หรอ การสารองขอมลไมสาเรจ

� Warning: ไมใชสถานะทรนแรง ทจะตองดาเนนการในทนททนใด แตอาจจะเปนรายละเอยดวา ระบบทางานไดด (Optimal) หรอไม

� Alarm: เปนสถานะวกฤตซงตองการ การแกไขอยางทนททนใด Health Monitor สามารถเปดหรอปดไดโดยการปรบแตงคาพารามเตอร HEALTH_MON ในไฟล Database manager configuration

Page 113: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 113

5.8.1 Health Center

Health Center เปน เปนเครองมอในรปแบบกราฟก ทตดตอกบ Health Monitor โดยท Health Center แบงการแจงเตอนของระบบออกเปนระดบ instance ระดบฐานขอมล และระดบของ table space รปท 5.19 แสดงรายละเอยดของ Health Center

รปท 5.19 – Health Center การเรยกใช� Health Center คณสามารถเรยกใช Health Center จาก Control Center โดยการคลกทเมน Tools และเลอก Health Center ซงแสดงในรปท 5.20 นอกจากนคณสามารถเปดเครองมอนไดโดยการคลกท Start > Programs > IBM DB2 > DB2COPY1 >Monitoring Tools > Health Center

Page 114: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

114 เรมตนกบ DB2 Express-C

รปท 5.20 – การเรยกใช� Health Center การปรบแต�งค�า Health Alert Notification เมอเรมการใชงาน Health Center คณสามารถปรบแตคา Alert notification โดยการคลกทเมน Health Center > Configure > Alert Notification ดงแสดงในรปท 5.21 Alert notification อนญาตใหคณใส ชอ และ Email address หรอ

เบอรเพจเจอร ของบคคลทตองตดตอเมอมการแจงเตอนเกดขน ซงโดยทวไป คอ ผดแลระบบฐานขอมล

Page 115: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 5 – เครองมอ DB2 115

รปท 5.21 – Alert Notification

Page 116: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 117: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

117

ส�วนท 2– เรยนร� DB2: การดแลฐานข�อมล

Page 118: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 119: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

119

บทท 6 – สถาป�ตยกรรมของ DB2

ในบทนจะกลาวถงสถาปตยกรรมของ DB2 โดยยอดงน

- แบบจาลองโปรเซสของ DB2 (Process Model) - แบบจาลองหนวยความจาของ DB2 (Memory Model) - แบบจาลองหนวยเกบขอมลของ DB2 (Storage Model)

หมายเหต: รายละเอยดเพมเตมเกยวกบสถาปตยกรรมของ DB2 สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4482

6.1 B��c0+7�� /��8�I�� B��c0+7�� /��8�I�� B��c0+7�� /��8�I�� B��c0+7�� /��8�I�� DB2 (Process Model)

รปท 6.1 บรรยายเกยวกบแบบจาลองโปรเซสของ DB2 (Process Model) ในรปนสเหลยมผนผา แสดงถงโปรเซส ขณะทวงรแสดงถงเธรด (Thread) โปรเซสหลกของ DB2 เรยกวา db2sysc ภายในโปรเซสน มเธรดอยหลายเธรด และเธรดหลกกเรยกวา db2sysc เชนกน เธรดหลกน เปนตวสรางเธรดอน ๆ ขนมา เมอแอพพลเคชนแบบรโมต พยายามเชอมตอไปยงเซรฟเวอร โดยใชคาสง SQL CONNECT ตวรบการเชอมตอแบบรโมต (Remote Listeners) สาหรบ โพโทคอลสอสาร จะรบคาขอเชอมตอน และตดตอไปยง เอเจนตประสานงาน ของ DB2 (db2agent) เอเจนตของ DB2 เปรยบเสมอนผปฏบตงาน ทดาเนนการตาง ๆ แทน DB2 เมอแอพพลเคชนทางานอยบนเซรฟเวอรเดยวกนกบ DB2 ขนตอนการเชอมตอ กจะคลายคลงกน ยกเวนdb2ipccm จะจดการคาขอเชอมตอแทนเธรด db2tcpcm ในบางกรณ เชน เมอเปดใชงานการประมวลผลแบบขนาน (Enable Parallelism) db2agent อาจสรางเอเจนต อน ๆ ในรปของเธรดทชอวา db2agntp เอเจนตอน ๆ ทแสดงในรป เชน db2pfchr, db2loggr, db2dlock

อาจถกใชเพอจดประสงคทแตกตางกน โปรเซสทวไปไดอธบายไวในตารางท 6.1 และเธรดทวไปไดอธบายไวในตารางท 6.2

Page 120: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

120 เรมตนกบ DB2 Express-C

รปท 6.1 –แบบจาลองโปรเซสของ DB2 ชอโปรเซส คาอธบาย

db2sysc (ลนกซ) db2syscs (วนโดวส)

ตวควบคมระบบหลก (Controller) หรอตวประมวลผลหลก (Engine) ของ DB2 ใน DB2 9.5 มเพยงโปรเซสหลกแบบมลตเธรด (Multi-threaded Process) ตวเดยวเทานนสาหรบทกพารตชน สวน Engine Dispatchable Units (EDUs) เปนเธรดททางานภายใตโปรเซสหลกน ถาไมมโปรเซสน เซรฟเวอรฐานขอมลกไมสามารถทางานได

db2acd

ดมอนประมวลผลอตโนมต (Autonomic Computing Daemon) ดมอนน ใชประมวลผลการทางานตาง ๆ แบบอตโนมตบนไคลเอนต เชน DB2 Health Monitor งานบารงรกษาอตโนมต (Automatic Maintenance Utilities)

Page 121: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 6 – สถาปตยกรรมของ DB2 121

และงานจดตารางเวลาสาหรบการดแลระบบ (Admin Scheduler) โปรเซสนเคยถกเรยกวา db2hmon

db2wdog DB2 Watchdog เปนผดแลโปรเซสหลก db2sysc โปรเซสนจะทาหนาทคนทรพยากรตาง ๆ ถาโปรเซส db2sysc หยดทางานอยางผดปกต

db2vend

โปรเซส Fenced Vendor เรมมใน DB2 9.5 โปรแกรมของผจาหนายรายอน (3rd party vendor ) ทงหมดจะประมวลผลอยภายในโปรเซสน ซงอยภายนอก en-gine ของ DB2 โปรแกรมของผจาหนายรายอน คอ

โปรแกรมทไมไดพฒนาโดยไอบเอม แตสามารถทางานรวมกบ DB2 ได เชน การทา Log Archiving สามารถจดการโดย โปรเซส น โดยการใช User Exit Routine

เรยกไปยงโปรแกรมน

db2fmp

โปรเซส Fenced ซงประมวลผลบนเซรฟเวอร ภายนอกไฟรวอลล (Fire wall) สาหรบทง Stored Procedures และฟงกชนทผใชกาหนด โปรเซสนแทนททงโปรเซส db2udf และโปรเซส db2dari ซงใชใน DB2 เวอรชนกอน

ตารางท 6.1 – โปรเซสทวไปของ DB2 ชอเธรด คาอธบาย

db2sysc เธรดตวควบคมระบบ เธรดนรบผดชอบในการเปด ปด และจดการ Instance ททางานอย

db2tcpcm ตวรบการเชอมตอสาหรบการสอสาร TCP/IP (TCP/IP Communication Listener)

db2agent

เอเจนตประสานงาน ซงดาเนนการ กบฐานขอมล ในนามของแอพพลเคชน โดยจะมอยางนอย 1 เอเจนตตอ 1

การเชอมตอ โดยขนอยกบวาไดเปดใชงานคณสมบต Connection Concentrator หรอไม

db2agntp

เอเจนตยอยซงถกสรางขน (Spawn) ตอเมอพารามเตอร INTRA_PARALLEL ถกตงคาใหเปน YES จะดาเนนการกบฐานขอมลใหแอพพลเคชน โดย db2agent จะเปนตวประสานการทางานระหวางเอเจนตยอย db2agntp เหลาน

db2pfchr ตวนาขอมลแบบลวงหนาจากดสต มายงหนวยความจา (Asynchronous I/O Data Prefetcher) ของ DB2

Page 122: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

122 เรมตนกบ DB2 Express-C

(NUM_IOSERVERS)

db2pclnr ตวบนทกขอมล กลาวคอ อานขอมลจากหนวยความจา แลวเขยนคนไปไวทดสต (Asynchronous I/O Data Writer) ของ DB2 (NUM_IOCLEANERS)

ตารางท 6.2 – เธรดทวไปของ DB2

6.2 B��c0+7����O4"%4+�c0+I�� B��c0+7����O4"%4+�c0+I�� B��c0+7����O4"%4+�c0+I�� B��c0+7����O4"%4+�c0+I�� DB2 (Memory Model)

แบบจาลองหนวยความจาของ DB2 ประกอบดวยพนทตาง ๆ ในหนวยความจาทระดบ Instance ระดบฐานขอมล และระดบแอพพลเคชนและเอเจนต ดงแสดงในรปท 6.2 ในหนงสอเลมน จะไมอธบายในรายละเอยดของแตละพนทในหนวยความจา แตจะอธบายถงภาพรวมโดยยอ รปท 6.2 – แบบจาลองหน�วยความจาของ DB2 เมอ Instance ของระบบฐานขอมลเรมทางาน จะมการจองพนทในหนวยความจาไวเปนหนวย ความจารวมสาหรบ instance

Audit buffer size(audit_buf_sz)

Monitor heap(mon_heap_sz)

Database Manager Shared Memory(including FCM)

(app_ctl_heap_sz)

Application Global Memory

Agent stack(agent_stack_sz)

DRDA heap(drda_heap_sz)

Statistics heap(stat_heap_sz)

UDF memory(udf_mem_sz)

Sort heap(sortheap)

Statement heap(stmtheap)

Applicationheap

(applheapsz)

Query heap(query_heap_sz)

Java heap(java_heap_sz)

Client I/O block(rqrioblk)

Agent Private Memory

(remote)

Application support layer heap(aslheapsz)

Client I/O block(rqrioblk)

Agent/Application Shared Memory

(local)

Database heap(dbheap)

Utility heap(util_heap_sz)

Backup buffer(backbufsz)

Restore buffer(restbufsz)

Package cache(pckcachesz)

Log buffer(logbufsz)

Catalog cache(catalogcache_sz)

Bufferpools(buffpage)

Extended memory cache

Locklist(locklist)

Database Global Memory

Page 123: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 6 – สถาปตยกรรมของ DB2 123

(Database Manager Shared Memory) โดยปกตหนวยความจา นไมใชพนทมากนก เมอมการเชอมตอกบฐานขอมลครงแรก จะมการจองพนทใน หนวยความจาไวเปนหนวยความจาสวนกลางสาหรบฐานขอมล (Database Global Memory) ในสวนน บฟเฟอรพล (Buffer Pool) เปนสวนทมความสาคญทสด สวนหนงโดยเฉพาะอยาง ยงสาหรบการปรบเพมประสทธภาพในการสอบถามขอมล ขนาดของ บฟเฟอรพลจะเปนสงบงชถงขนาด หนวยความจาสวนกลางสาหรบฐานขอมลทงหมด หนวยความจาสวนตวสาหรบเอเจนต (Agent Private Memory) คอหนวยความจาทใช โดยแตละเอเจนต ของ DB2 เมอไมใชคณสมบต Connection Concentrator แตละการเชอมตอ

ตองใชหนงเอเจนตในการทางาน โดยปกตแลวแตละเอเจนตสามารถใชพนท ไดประมาณ 3 ถง 5 เมกะไบต เมอใชคณสมบต Connection Concentrator การเชอมตอหลาย ๆ การเชอมตอ สามารถใชหนงเอเจนตได ซงจะลดความตองการใชหนวยความจาลง

6.3 B��c0+7����O4"�กM�I���>7I�� B��c0+7����O4"�กM�I���>7I�� B��c0+7����O4"�กM�I���>7I�� B��c0+7����O4"�กM�I���>7I�� DB2 (Storage Model)

ในหวขอน จะอธบายถงแนวคดตอไปน

• เพจ (Pages) และเอกซเทนท (Extents) • บฟเฟอรพล (Buffer Pool) • เทเบลสเปซ (Table Space)

6.3.1 เพจ (Pages) และเอกซ�เทนท� (Extents)

เพจ (Pages) คอหนวยเกบขอมลทเลกทสดใน DB2 ขนาดของเพจทใชไดคอ 4K, 8K, 16K และ 32K เอกซเทนท (Extent) คอกลมของเพจ การอานขอมลครงละเพจ จะทาใหการทางานไมมประสทธภาพ ดงนน DB2 จงอานขอมลเปน เอกซเทนท แทน ขนาดของเพจ และขนาดของเอกซเทนท ถกกาหนด เมอมการทางานกบบฟเฟอรพล (Buffer Pool) และเทเบลสเปซ (Table Space) ดงจะไดเหนในหวขอถดไป

6.3.2 บฟเฟอร�พล (Buffer Pools)

บฟเฟอรพล (Buffer Pool) คอ หนวยความจาหลกสาหรบขอมล และขอมลดชน

บฟเฟอรพล ชวยเพมประสทธภาพการทางานโดยการลดการทางานดาน I/O (Direct Sequential I/O) ลง และสงเสรมการทางานแบบ

Page 124: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

124 เรมตนกบ DB2 Express-C

การอานขอมลมาลวงหนา (Pre-fetching) รวมถง การเขยน (Writing)โดย DB2 จะคาดการณวาตองการใชเพจใด และจะอาน เพจนน จากดสกมาไวทบฟเฟอรพลลวงหนา เพอใหขอมลในเพจนนพรอมใชงานไดทนท จะมการจองพนทในหนวยความจาสาหรบบฟเฟอรพล เปนหนวยของเพจ ไดแก เปน หนวยเพจขนาด 4K เพจขนาด 8K เพจขนาด 16K และเพจขนาด 32K ในหนงฐานขอมล ควรมบฟเฟอรพลอยางนอยหนงชด

และมบฟเฟอรพลทมขนาดของเพจทตรงกนกบขนาดของ เพจสาหรบเทเบลสเปซ (Table Space) อยางนอยหนงชด ตอหนงขนาดของเพจสาหรบ เทเบลสเปซทม การสร�างบฟเฟอร�พล (Buffer Pool) ในการสรางบฟเฟอรพล สามารถใชคาสง CREATE BUFFERPOOL หรอ อกวธการหนงคอ การใช Control Center โดยการคลกขวาทโฟลเดอร Buffer Pool ในฐานขอมลทตองการ และเลอก Create ดงแสดงในรปท 6.3

รปท 6.3 – การสร�างบฟเฟอร�พล (Buffer pool) หลงจากคลกท Create จะปรากฏหนาตางโตตอบ (Dialog Box) ชอ Create Buffer Pool ดงทแสดงในรปท 6.4

Page 125: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 6 – สถาปตยกรรมของ DB2 125

รปท 6.4 –หน�าต�างโต�ตอบ Create buffer pool การกรอกขอมลสวนใหญในรปท 6.4 นนมความหมายทชดเจนในตวเอง สวนชองรายการ “Blocked” และ “Non-blocked” หมายถง

จานวนเพจทควรเปนแบบบลอก และแบบนอนบลอก สวนของบฟเฟอรพลในแบบบลอก ทาใหเพจทอยตดกนในดสก ถกนาเขามาวาง ตดกนในพนทแบบบลอกของบฟเฟอรพล สงนจะชวยเพมประสทธภาพการทางานได จานวนเพจ แบบบลอกจะตองไมเกนรอยละ 98 ของจานวนเพจ ของบฟเฟอรพลนน การกาหนดจานวนเพจ แบบบลอกเปน 0 เปนการปดการทางานแบบ Block I/O บฟเฟอรพลทสรางเสรจแลว จะปรากฏใน Control Center ดงแสดงในรปท 6.5

Page 126: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

126 เรมตนกบ DB2 Express-C

รปท 6.5 –Control Center หลงจากการสร�างบฟเฟอร�พล (Buffer Pool) “SAMP16K ”

6.3.3 เทเบลสเปซ (Table Spaces)

เทเบลสเปซ (Table Spaces)

คอตวกลางทเชอมโยงความสมพนธระหวางตารางขอมลท ผใชมองเหน กบหนวยความจาของระบบ ซงกคอบฟเฟอรพล และคอนเทนเนอร (Container) ซงกคอดสกของระบบ สามารถใชคาสง CREATE TABLESPACE เพอสรางเทเบลสเปซ โดยสามารถกาหนด:

• ขนาดของเพจสาหรบเทเบลสเปซ (4KB, 8KB, 16KB, หรอ 32KB)

ขนาดของเพจ สาหรบเทเบลสเปซตองเทากบขนาดของเพจของบฟเฟอรพลททางานรวมกน

• ชอของบฟเฟอรพลททางานรวมกนกบเทเบลสเปซน • ขนาดของเอกซเทนท

Page 127: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 6 – สถาปตยกรรมของ DB2 127

• ขนาดของการอานขอมลมาลวงหนา (Pre-fetch) รปแบบของเทเบลสเปซ (Table Space) เทเบลสเปซม 3 รปแบบ

- เทเบลสเปซแบบปกต (Regular Table Space) รปแบบนใชสาหรบเกบตารางขอมลของผใช ตวอยางเชน เทเบลสเปซ USERSPACE1 ทสรางขนโดย default เปนเทเบลสเปซแบบปกต

- เทเบลสเปซแบบใหญ (Large Table Space) รปแบบนใชสาหรบเปนทางเลอกในการแยกขอมลชนด LOB

ใหเกบในเทเบลสเปซ ของตนเอง รปแบบนยงใชสาหรบการจดเกบขอมล XML สาหรบฐานขอมลทรองรบ pureXML สาหรบฐานขอมลทมโคดเพจเปน UNICODE และจดเกบขอมลชนด XML เทเบลสเปซแบบใหญจะเปนเทเบลสเปซ ทสรางขนโดย default

- เทเบลสเปซแบบชวคราว (Temporary Table Space) เทเบลสเปซแบบชวคราวม 2 รปแบบ

� เทเบลสเปซแบบชวคราวสาหรบระบบ (System Temporary Table Space) รปแบบนใชโดย DB2 สาหรบการดาเนนการภายใน เชน การเรยงลาดบ ขอมลตวอยางเชน เทเบลสเปซ TEMPSPACE1 ทสรางขนโดย default เมอสราง ฐานขอมลขนเปนเทเบลสเปซแบบชวคราวสาหรบระบบ

� เทเบลสเปซแบบชวคราวสาหรบผใช (User Temporary Table

Space) รปแบบนใชเพอสรางตารางชวคราวสวนกลางทผใชกาหนด (User Defined Global Temporary Table) ซงกคอตารางชวคราวในหนวยความจา (Temporary Tables In-memory) รปแบบนบอยครงจะสบสนกบ เทเบลสเปซแบบ ชวคราวสาหรบระบบ

การจดการเทเบลสเปซ เทเบลสเปซสามารถแบงชนดไดตามวธการจดการ ชนดของเทเบลสเปซนสามารถกาหนด ไดในคาสง CREATE TABLESPACE เทเบลสเปซชนดจดการโดยระบบ (Managed By System)

Page 128: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

128 เรมตนกบ DB2 Express-C

เทเบลสเปซชนดน เรยกวา System Managed Storage (SMS) หมายความวา ระบบปฏบตการ ทาหนาทบรหารจดเกบขอมล เปนรปแบบทจดการไดงาย และคอนเทนเนอร (Containers) ซงกคอไดเรกทอร (บนลนกซ) หรอ โฟลเดอร (บนวนโดวส) โดยไมมการจองพนทไวลวงหนา แตไฟลจะโตขนเรอย ๆ แบบพลวต (Dynamic) เทเบลสเปซแบบน มการกาหนดคอนเทนเนอรไวตายตว ณ เวลาทสราง และไมสามารถเพมคอนเทนเนอรไดใน ภายหลง นอกจากใช คณสมบต Redirected Restore เมอใชเทเบลสเปซ แบบ SMS ขอมล ขอมลดชน และขอมลชนด LOB ไมสามารถแยกไปจดเกบใน หลายเทเบลสเปซได เทเบลสเปซชนดจดการโดยฐานข�อมล (Managed By Database) เทเบลสเปซชนดน รจกกนในชอวา Database Managed Storage (DMS) หมายความวา DB2 ทาหนาทบรหารจดเกบขอมล การจดการพนทชนดน ตองการการจดการเพมเตม จากผดแลฐานขอมล (DBA) คอนเทนเนอร (Containers) สามารถระบเปนไฟล ทมการจองพนทไวลวงหนา หรอ เปน Raw Devices กได สาหรบการใช Raw Devices

ขอมลจะถกบนทกโดยไมผานการแคชของระบบปฏบตการ คณสามารถเพม หรอ ลบคอนเทนเนอร หรอเปลยนขนาดของคอนเทนเนอรได เทเบลสเปซแบบ DMS ดทสดในดานประสทธภาพ และขอมล ขอมลดชน และ ขอมลชนด LOB สามารถแยกกน เกบลงในตางเทเบลสเปซได ซงจะชวยใหประสทธภาพในการเขาถงขอมลทาไดดยงขน เทเบลสเปซชนดจดการแบบอตโนมต (Managed By Automatic Storage) เทเบลสเปซชนดนถกจดการโดยอตโนมต และสามารถใชงานไดงายเหมอนเทเบลสเปซแบบ SMS

รวมถงมประสทธภาพการทางานและมความยดหยนดเหมอนเทเบลสเปซแบบ DMS ดงนน ตงแต DB2 9 เปนตนไป เทเบลสเปซชนดนจงเปนคา default ในการสรางเทเบลสเปซ การสรางเทเบลสเปซชนดน ผใชจะตองระบ path ตาง ๆ ทตองการให DB2 ไปสรางคอนเทนเนอรใหโดยอตโนมต โดยคอนเทนเนอรดงกลาวจะกระจายไปตาม path ตาง ๆ ทคณระบ การขยายขนาดของคอนเทนเนอร รวมถงการเพมคอนเทนเนอรใหมจะถกจดการโดย DB2 ในการใชงานเทเบลสเปซชนดจดการแบบอตโนมตนน ในขนแรกตองสรางฐานขอมลซงเปดให ใชงานการจดเกบขอมลแบบอตโนมต (ซงเปนคา default ของการสรางฐานขอมล) และ ทาการระบกลมของ Path ทจะใชในการเกบขอมล ใหกบ ฐานขอมล หลงจากสรางฐานขอมลแลว ถาจาเปน สามารถกาหนด Path ทใชในการเกบ ขอมลใหมโดยการใชคาสง RESTORE จากนน สามารถสรางเทเบลสเปซ เพอใชวธการจดการแบบอตโนมต (ซงเปนคา default)

Page 129: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 6 – สถาปตยกรรมของ DB2 129

ตวอย�างของการจดเกบข�อมลแบบอตโนมต เรมดวยการสรางฐานขอมลซงใชการจดเกบขอมลแบบอตโนมต ดงตวอยางตอไปน

เปดใชงานการจดเกบขอมลแบบอตโนมตโดย default: CREATE DATABASE DB1 เปดใชงานการจดเกบขอมลแบบอตโนมตโดยระบชดเจน: CREATE DATABASE DB1 AUTOMATIC STORAGE YES เปดใชงานการจดเกบขอมลแบบอตโนมตโดย default แตกาหนด Path ทใชเกบขอมล: CREATE DATABASE DB1 ON /data/path1, /data/path2 ปดใชงานการจดเกบขอมลแบบอตโนมตโดยระบชดเจน: CREATE DATABASE DB1 AUTOMATIC STORAGE NO

จากนน สรางเทเบลสเปซชนดจดการแบบอตโนมต ดงตวอยางตอไปน:

เปดใชงานเทเบลสเปซชนดจดการแบบอตโนมตโดย default: CREATE TEMPORARY TABLESPACE TEMPTS เปดใชงานเทเบลสเปซชนดจดการแบบอตโนมตโดยระบชดเจน: CREATE TABLESPACE TS2 MANAGED BY AUTOMATIC STORAGE เปดใชงานการจดเกบขอมลแบบอตโนมตโดยนย (implicit) มการกาหนดขนาดเรมตน รวมถงขนาดทจะเพมขนและขนาดสงสดทสามารถเพมได CREATE TABLESPACE TS1 INITIALSIZE 500 K INCREASESIZE 100 K MAXSIZE 100 M

วธการจดเกบข�อมลในเทเบลสเปซ โดยปกตแลว DB2

จะเขยนขอมลลงดสกเปนเอกซเทนทกระจายตามคอนเทนเนอร ตวอยางเชน ถามเทเบลสเปซแบบ 4K ซงมขนาดของเอกซเทนทเทากบ 8 และใชคอนเทนเนอร 3 ตวบน เทเบลสเปซแบบ DMS หมายความวา ขอมลขนาด 32K (4K * 8 เพจตอ 1 เอกซเทนท) จะเขยน ลงดสกหนง

Page 130: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

130 เรมตนกบ DB2 Express-C

กอนทจะเขยนลงดสกถดไป ดงแสดงในรปท 6.6 หมายเหต แตละตารางจะไมใช เอกซเทนทรวมกน

รปท 6.6 – การเขยนข�อมลลงในเทเบลสเปซ การสร�างเทเบลสเปซโดยใช� Control Center ในการสรางเทเบลสเปซโดยใช Control Center นน ทาไดโดยการคลกขวาทโฟลเดอร Table Spaces ในฐานขอมลทตองการ แลวเลอก Create ดงแสดงในรปท 6.7 “ตวชวยสรางเทเบลสเปซ” จะปรากฏขน ดงแสดงในรปท 6.8

รปท 6.7 – การสร�างเทเบลสเปซโดยใช� Control Center

Page 131: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 6 – สถาปตยกรรมของ DB2 131

รปท 6.8 – ตวช�วยสร�างเทเบลสเปซ

Page 132: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 133: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

133

บทท 7 – การเชอมต�อ DB2 ไคลเอนต�

บทนครอบคลมไปถงการจดการเพอเชอมตอจาก DB2 ไคลเอนต ไปยง DB2 เซรฟเวอรโดยใช TCPIP DB2เซรฟเวอรมาพรอมกบสวนประกอบของไคลเอนต ดงนน DB2 เซรฟเวอรเปรยบเสมอนไคลเอนตทสามารถเชอมตอไปยง DB2 เซรฟเวอรตวอนได มหลายวธในการจดการเพอเชอมตอ DB2 ไคลเอนต อยางไรกตามบทนไดกลาวถงวธทงายทสดนนกคอการใชตวชวย ในการจดการทเรยกวาConfiguration Assistant หมายเหต: รายละเอยดเพมเตมเกยวกบสถาปตยกรรมของ DB2 สามารถศกษาไดจากวดทศนน: http://www.channeldb2..com/video/video/show?id=807741:Video:4222

7.1 DB2 ไดเรกทอร DB2 ไดเรกทอร เปน ไฟล Binary ทเกบขอมลเกยวกบฐานขอมลททานสามารถเชอมตอจากเครองของทานได ไดเรกทอร มทงหมด 4 ประเภท: 1. System database ไดเรกทอร ไดเรกทอรนคลายกบสารบญของหนงสอ ทเกบขอมลเกยวกบฐานขอมลทงหมดททานสามารถเชอมตอได

Page 134: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

134 เรมตนกบ DB2 Express-C

ไมวาฐานขอมลนนจะเปนฐานขอมลทอยบนเครองนน(local) หรอฐานขอมลทอยบนเครองอน(remote)กตาม สาหรบฐานขอมลทอยบนเครองนนจะมตวชไปยง Local databaseไดเรกทอรสาหรบฐานขอมลทอยบนเครองอน จะมตวชไปยง Nodeไดเรกทอร เพอแสดงรายการของไดเรกทอร น ใชคาสง: list db directory 2. Local database ไดเรกทอร ไดเรกทอร นประกอบไปดวยขอมลเกยวกบฐานขอมลททานสามารถเชอมตอไดจากในเครองของทาน เพอแสดงรายการของไดเรกทอรน ใชคาสง: list db directory on <drive/path> 3. Node ไดเรกทอร ไดเรกทอร นประกอบดวยขอมลเกยวกบวธเชอมตอไปยงฐานขอมลทกาหนด ตวอยางเชนถา โพรโทคอล TCP/IP ถกใชอย รายละเอยดทเกยวกบ TCP/IP จะรวมไปถง IP address ของเซรฟเวอรทเกบฐานขอมล DB2 ททานพยายามจะเชอมตอและ Port ของ Instance ทฐานขอมลเกบอย เพอแสดงรายการของ ไดเรกทอร น ใชคาสง: list node directory 4. DCS ไดเรกทอร ไดเรกทอร นจะปรากฏขนถาทานไดตดตงซอฟตแวร DB2 Connect เพอเชอมตอกบ DB2 บน z/OS (ในเครอง

Page 135: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 135

mainframe) หรอ DB2 บน i5/OS เพอแสดงรายการของ ไดเรกทอร น ใชคาสง: list dcs directory ในการตรวจสอบและปรบปรงรายการของ ไดเรกทอร ทงหมดสามารถทาไดโดยใชเครองมอ Configuration Assistant GUI

7.2 Configuration Assistant การใชเครองมอ Configuration Assistant GUI ชวยทานใหสามารถทาการเชอมตอระหวาง DB2 ไคลเอนต และ DB2 เซรฟเวอร ไดอยางงายดาย การเปด Configuration Assistant บนวนโดวสทาไดโดยเลอก: Start > Programs > IBM DB2 > DB2COPY1 > Set-up Tools > Con-figuration Assistant จาก Command line ทานสามารถใชคาสง db2ca รปท 7.1 แสดง Configuration Assistant

Page 136: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

136 เรมตนกบ DB2 Express-C

รปท 7.1 – The Configuration Assistant

7.2.1 การจดการทจาเป�นทเซร�ฟเวอร� ม 2 สงทจาเปนตองจดการทเซรฟเวอร: 1) DB2COMM ตวแปร registry variable นกาหนดวาจะใชโพรโทคอลใดในการสอสารในการรบคารองจากไคลเอนต สวนใหญแลว TCPIP เปนโพรโทคอลการสอสารทนยมใชมากทสด การเปลยนคาตวแปร น จาเปนตองปดและเปด instance ใหม เพอตรวจสอบและเปลยนแปลงคาของ DB2COMM ใน Configuration Assistant เลอก Configure -> DB2 Registry ดงทแสดงในรปท 7.2 และรปท 7.3

Page 137: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 137

รปท 7.2 – การเข�า the DB2 Registry

Page 138: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

138 เรมตนกบ DB2 Express-C

รปท 7.3 –การตรวจสอบค�า DB2COMM DB2 Registry Variable 2) SVCENAME ตวกาหนดคาพารามเตอรน ใน dbm cfg ควรจะเปนชอเซอรวส ทถกกาหนดในไฟล TCPIP Services ซงเปนหมายเลขพอรต ทใชในการเขาสฐานขอมลภายใน instance จาก Configuration Assistant, เลอก Configure > DBM configuration ดงทแสดงในรปท 7.4

Page 139: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 139

รปท 7.4 –ตรวจสอบ dbm cfg จาก Configuration Assistant เมอทานไดเขาสหนาตาง DBM Configuration หาหมวด Communications และมองหาคาวา SVCENAME ทานสามารถเปลยนคาเปนตวอกษรทเปนชอเซอรวสหรอหมายเลข port ไดถาตองการ ดงแสดงในรปท 7.5

Page 140: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

140 เรมตนกบ DB2 Express-C

รปท 7.5 –ตรวจสอบ ค�า SVCENAME dbm cfg parameter

7.2.2 การจดการทจาเป�นท ไคลเอนต� ทไคลเอนต ทานตองทราบขอมลกอนจดการ ดงน

1. ชอของฐานขอมลททานตองการเชอมตอ 2. หมายเลขพอรต ของ DB2 instance ทเซรฟเวอร ซงเปนทเกบฐานขอมล ทานสามารถใช ชอเซอรวส ซงชอนนตองตรงกบในไฟล TCPIP services

3. user ID ผใชในระบบการปฏบตการและรหสผานในการเชอมตอไปยงฐานขอมล user ID ของผใชนตองถกกาหนดไวกอนแลวทเซรฟเวอร

Page 141: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 141

ขอมลขางตนสามารถใสท DB2 Client โดยใช Configuration Assistant ขนแรก, เรมตนดวยตวชวย Add Database โดยการคลก Selected -> Add Database Using Wizard ดงทแสดงตามรปท 7.6

รปท 7.6 – การเข�าส�ตวช�วย Add Database ทานยงสามารถเขาสตวชวย ไดโดยการคลกขวาทพนทสขาวใน Configuration Assistant และเลอก Add Database Using Wizard รปท 7.7 แสดงการใชตวชวย Add Database

Page 142: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

142 เรมตนกบ DB2 Express-C

รปท 7.7 –ตวช�วย Add Database ใน ตวชวย Add Database ม 3 ทางเลอก: ใช�ข�อมลจาก Profile มหลาย ๆ กรณ ทานอาจตองการ หลาย ๆไคลเอนตในการเชอมตอไปยง DB2 เซรฟเวอรเดยวกน ในกรณเหลาน การทางานจะงายขน โดยทาการจดการตงคาตางๆจากไคลเอนตหนง แลวรวบรวมขอมลตงคาลงในไฟล “profile” จากไฟลน ทานสามารถนาขอมลทงหมดสงไปยงไคลเอนตอนๆได ในรปท 7.7, ถาทานเลอก “Use a Profile” ขอมลการตงคาทงหมดจะถกนามาจากขอมลทมอยแลว รายละเอยดจะอธบายเพมเตมภายหลงของบทน เกยวกบวธการสรางขอมลตงคาของไคลเอนต และของเซรฟเวอร

Page 143: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 143

Search the network(ค�นหาจากเครอข�าย) วธนเรยกวา “Discovery”, เปนวธทบอก DB2 ในการหาเครอขายของเซรฟเวอร, instance และฐานขอมล สาหรบวธน DAS ตองกาลงรนในแตละ DB2 เซรฟเวอรทมฐานขอมลทจะคนหา ดวยวธน ม 2 ทางในการคนหา:

- Search(คนหา): คนหาเครอขายทงหมด วธนไมแนะนาถาเครอขายของทานนนมขนาดใหญและประกอบดวยหลาย Hub เพราะจะทาใหใชเวลานานในการดงขอมลจากทกระบบ

- Known(เปนทรจก): หาเครอขายสาหรบเซรฟเวอรทร โดยเลข ip ad-

dress ททานม 2 วธนแสดงในรปท 7.8

Page 144: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

144 เรมตนกบ DB2 Express-C

รปท 7.8 –วธ Search และ Known search (หรอ วธค�นหา Discovery) อาจจะมบางกรณทผดแลระบบไมตองการใหไคลเอนตคนหาเครอขายสาหรบฐานขอมล ทมขอมลทเปนความลบ วธนเปนการปองกนทระดบ DAS,ระดบ Instance, หรอ ระดบฐานขอมล รปท 7.9 แสดงรายละเอยดเกยวกบเรองน

Page 145: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 145

รปท 7.9 – ตวกาหนดค�า Configuring parameterทใช�อนญาตสาหรบการค�นหา รปท 7.9 แสดงระดบตาง ๆ ททานสามารถตงคาใหสามารถคนไดหรอคนไมได ทระดบ DAS ทานสามารถใหคาแกตวกาหนดคา DISCOVER เปนคา SEARCH หรอ KNOWN ทระดบ instance ตวกาหนดคา DISCOVER_INST ใน dbm cfg สามารถตงคาใหเปน DISABLE หรอ ENABLE กได

Page 146: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

146 เรมตนกบ DB2 Express-C

สดทายนทระดบฐานขอมล ตวกาหนดคา DISCOVER_DB สามารถตงคาใหเปน DISABLE หรอ ENABLE กได การตงคาตวกาหนดคาเหลานสงผลตอระดบความละเอยดของการคนหาฐานขอมล การจดการเชอมต�อไปยงฐานข�อมลด�วยตวเอง การใชวธนทานสามารถเพมชอเซรฟเวอร,หมายเลขพอรต และขอมลของฐานขอมล โดยใช Configuration Assistant ซงสามารถจดการสรางคาสง “catalog”ทไปรนการจดการ เพอการเชอมตอฐานขอมล Configuration Assistant จะไมตรวจสอบขอมลการจดการนนวาถกตองหรอไม ทานจะรไดวามขอผดพลาดเกดขนเมอถาไมสามารถเชอมตอไปยงเซรฟเวอร ตรวจสอบใหแนใจวา user IDของผใชและรหสผานทจะเชอมตอไปยงฐานขอมลบนเซรฟเวอรอกเครองหนงนนถกตอง การตรวจสอบสทธโดย ปรกตกระทาท DB2 เซรฟเวอรททานพยายามจะเชอมตอ ดงนนทานตองม user ID และรหสผานบนเซรฟเวอร นนๆ

7.2.3 การสร�าง Profiles ให� ไคลเอนต� และ เซร�ฟเวอร� ถาทานกาลงจดการกบเครองเซรฟเวอร หรอ ไคลเอนต จานวนมาก แทนทจะจดการแตละเครอง ทานสามารถจดการเพยงครงเดยว แลวสงออกคาทกาหนดตาง ๆนนออกมาเปนไฟล Profile (เชนไฟล configuration) แลวนา Profile ไปใชกบ ไคลเอนต อน หรอ เซรฟเวอรอนๆ

Page 147: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 147

ซงเปนการประหยดเวลาอยางมากของผดแลระบบในการจดการ ในการสราง profile ตามความเหมาะสม จาก Con-figuration Assistant, คลกทเมน Configure แลวเลอก Export Profile => Customize ดงทแสดงในรปท 7.10

รปท 7.10 – การส�งออกค�าทกาหนดต�าง ๆออกมาเป�นไฟล� Profile

Page 148: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

148 เรมตนกบ DB2 Express-C

รปท 7.11 แสดงชองของขอมลทตองใสใหเสรจเพอสงออกเปนไฟล profile

รปท 7.11 – การกาหนดค�าทต�องการต�าง ๆ สาหรบ Profile ทจะส�งออก รปท 7.12 แสดงผลหลงจากคลก “Export” ใน Customize Export Profile

Page 149: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 149

รปท 7.12 – แสดงผลของการส�งออก Profile ในการนาเขาไฟล Profile จาก Configuration Assistant คลกทเมน Configure แลวเลอก Import Profile => Customize ดงทแสดงในรปท 7.13

Page 150: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

150 เรมตนกบ DB2 Express-C

รปท 7.13 – การนาเข�าไฟล� Profile รปท 7.14 แสดงชองของขอมลทตองใสใหเสรจเพอนาเขาไฟล profile

Page 151: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 151

รปท 7.14 – การกาหนดค�าต�าง ๆ สาหรบ Profile ทจะนาเข�า

ปฏบตการท 6 – การใช�Configuration Assistant วตถประสงค Configuration Assistant สามารถใชไดรวดเรวและงายดายในการจดการเชอมตอกบฐานขอมลทอยคนละเครอง ในปฏบตการน คณจะไดทาการเชอมตอกบฐานขอมลทอยใน DB2 เซรฟเวอรทอยคนละเครอง (จากเครองของเพอนขางเคยง โดยใชไดทง รปแบบคนหาSearch และ คนพบDiscover) เมอฐานขอมลขอมลไดถกทาการจดการ catalog หรอเพมในเครองคณแลว คณสามารถทจะเขาถงไดเสมอนวาฐานขอมลนนอยบนเคร

Page 152: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

152 เรมตนกบ DB2 Express-C

องของคณเอง DB2 สามารถปฏบตงานการตดตอสอสารทกขนตอน หมายเหต: ปฏบตการนอยภายใตสมมตฐานวาคณกาลงทางานภายในเครอขาย ถาไมใชในกรณน คณสามารถใชคอมพวเตอรของคณเสมอนวาเปนทง ไคลเอนต และ เซรฟเวอร และทาตามคาแนะนาขางลางเพอเชอมตอระบบของคณ ขนตอน

1. ถามเพอนทอยใกลๆหรอผสอนสาหรบขอมลดงตอไปน

ขอมลจากฐานขอมลททอยคนละเครอง (PR) โพรโทคอล __TCPIP____ (IP) IP Address หรอ ชอเครองทจะตดตอ (Hostname) ____________

(PN) หมายเลข port ของ Instance ____________ (DB) ชอฐานขอมล _ SAMPLE __ ขอเสนอแนะ :

• เพอหาชอเครองบนวนโดวส พมพ hostname จากหนาตาง Command window

• เพอหา IP Address บนวนโดวส พมพ ipconfig จากหนาตาง Command window

Page 153: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 153

2. เปดตวชวย Configuration Assistant (ขอเสนอแนะ: สามารถเขาทเมน Start )

3. เปดเมน Selected และเลอก Add Database Using Wizard

4. บนหนา Source ของตวชวย เลอก Manually Configure a Connection to a Database คลกปม Next เพอไปสหนาตอไปของตวชวย

5. บนหนา Protocol ของตวชวย เลอก TCP/IP คลกปม Next เพอไปสหนาตอไปของตวชวย

6. บนหนา TCP/IP ของตวชวย ใส Hostname ชอเครอง หรอ IP Address ทคณหามาไดในขนตอนท 1 ใส หมายเลข port ทคณหามาไดในขนตอนท 1 คลกปม Next เพอไปสหนาตอไปของตวชวย

หมายเหต: ตวเลอกสาหรบ Service Name ชอเซอรวส สามารถถกใชได ถาคณมขอมลใน ไฟล Services ทเครองคณ พรอมกบหมายเลข Port ทระบตรงกบหมายเลข Port ของInstance ของ DB2เซรฟเวอรทอกเคองหนง เมอคณเลอกใชตวเลอกน โปรแกรม DB2 จะเลอกเขาดใน ไฟล Services บน เครองของคณ ไมใชบน เซรฟเวอร คณจงตองเพมขอมลลงในลงในไฟล Services ถาคณตองการใชตวเลอกน

Page 154: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

154 เรมตนกบ DB2 Express-C

7. บนหนา Database ของตวชวย ใสชอฐานขอมลบนเซรฟเวอรท คณเขยนขนในขนตอนท 1 ในชอง Database Name หมายเหต Database Alias ถกบนทกอตโนมตดวยคาเดยวกนกบชอฐานขอมล Database Alias คอชอฐานขอมลทโปรแกรมทอยในเครอง ใชเชอมตอฐานขอมลน เนองจากคณมฐานขอมลทอยบนเครอง ซงชอวา SAMPLE ทสรางใหไวแลว (ฐานขอมลตวอยาง) DB2 จะไมอนญาตใหใชชอซากบฐานขอมลทถก catalog ไวกอน คณตองใชชอฐานขอมลเสรม (Database Alias) ทแตกตางออกไป ตวอยาง เปลยนชอฐานขอมลเสรม เปน SAMPLE1คณสามารถใสคาแนะนาหรอรายละเอยดเพมเตมเกยวกบฐานขอมลนไดถาคณตองการ คลกปมNext เพอไปสหนาตอไปของตวชวย

8. บนหนาData Source ของตวชวย คณสามารถเลอกลงทะเบยนฐานขอมลใหม (Data Source) ทเปนแหลงขอมล ODBC ซงจะถกลงทะเบยนอตโนมตใน Windows ODBC Manager ในตวอยางน, เลอก Register this database for ODBC ออก เนองจาก คณยงไมใช ODBC คลกปม Next เพอไปสหนาตอไปของตวชวย

9. บนหนา Node Options ของตวชวย ระบระบบปฏบตการ (Operating System) ของ เซรฟเวอรทฐานขอมลนนอย เนองจากเครองทงหมดในปฏบตการนใชระบบปฏบตก

Page 155: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 7 – การเชอมตอ DB2 ไคลเอนต 155

ารไมโครซอฟวนโดวส ตรวจสอบใหแนใจวา Windows ไดถกเลอกแลวในตวเลอก ชอ Instance ควรถกกาหนดคาเปน DB2 ถาไมกาหนดคาเปน DB2 คลกปม Next เพอไปสหนาตอไปของตวชวย

10. หนา System Options ของตวชวย ใหโอกาสคณเพอยนยนใหโอกาสคณเพอยนยนระบบและ Hostname วาถกตองและเพอตรวจสอบการเลอก Operating System วาถกตอง คลกปม Next เพอไปสหนาตอไปของตวชวย

11. ในหนา Security Options ของตวชวย อนญาตใหคณระบททคณตองการใหการตรวจสอบสทธเกดขน และวธอะไรทคณตองการใช เลอกตวเลอก Use authentication value in server’s DBM Configurationซงจะใชวธการทระบคา AUTHENTICATION ในไฟลกาหนดคา (Configuration File) ของ Instance ทตดตอไปหา คลกปม Finish เพอทาการ cata-log หรอเพมฐานขอมลและปดตวชวย หนาตางการยนยนควรปรากฏ คลกปม Test Connection เพอยนยนวาคณสามารถเชอมตอฐานขอมลไดสาเรจรวมทงทาใหแนใจวาชอผใชและรหสผานทคณใหสามารถใชไดกบ เซรฟเวอร (เนองจากมความเปนไปไดวา คา AUTHENTICATIONของเซรฟเวอร ถกกาหนดคาเปนคาวา SERVER) ถาการตรวจสอบการเชอมตอสาเรจ แสดงวาคณสามารถทาการ catalog

Page 156: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

156 เรมตนกบ DB2 Express-C

หรอเพมฐานขอมลไดสาเรจ ถาไมสาเรจ ใหกลบไปหนาตวชวยและตรวจสอบวาทกอยางทระบถกตอง คลกปม Change เพอกลบไปตดตงตวชวย

12. เปด Control Center และพยายามดตารางตาง ๆ ของฐานขอมลททาการ catalog หรอเพมเขาไปใหม

13. กลบไปท Configuration Assistant และพยายามทา การ catalog หรอเพมฐานขอมลทตางออกไป ครงนใหใชตวเลอก Search the Networkในตวชวย ใหทาแบบเดยวกบทการตดตงการเชอมตอเอง (Manually) หมายเหต สาหรบเครอขายใหญๆ การคนพบอาจใชเวลานานกวาจะแสดงผล

Page 157: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

157

8 บทท 8 – การทางานกบออบเจกต�ของฐานข�อมล

บทนจะกลาวถงออบเจกตของฐานขอมล เชน schemas, ตาราง (tables), views, ดชน(indexes), sequences, และอนๆ ออบเจกตของโปรแกรมในฐานขอมลบางตว เชน Trigger, User Defined Function, และ Stored Procedure จะกลาวถงในบทท 14, SQL PL stored procedures, และ บทท 15, Inline SQL PL, UDFs, Triggers หมายเหต: รายละเอยดเพมเตมเกยวกบออบเจกตของฐานขอมล สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4242

8.1 Schema Schemas คอ ชอทใชสาหรบรวบรวมออบเจกตตางๆ ของฐานขอมล Schemas ถกใชหลกๆเพอ:

� ใชเปนตวระบความเปนเจาของ ของออบเจกต หรอความสมพนธกบโปรแกรมคอมพวเตอรนนๆ

� รวมออบเจกตตางๆ ทเกยวของไวดวยกน เปนกลม

Page 158: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

158 เรมตนกบ DB2 Express-C

ชอเตม ของออบเจกตของฐานขอมลใน DB2 ประกอบดวย 2 สวน โดยท Schema เปนสวนแรกของชอ: <schema_name>.<object_name> ชอเตมของออบเจกตตองไมซากน เมอตอเชอมกบฐานขอมลและมการสรางหรออางถงออบเจกตโดยปราศจากการระบ Schema DB2จะใช user id ของผใชทเชอมตอกบฐานขอมลเปน Schema ตวอยาง, ถาเชอมตอกบฐานขอมล SAMPLE ดวย user id “arfchong”, และสรางตารางโดยใชคาสง CREATE TABLE ตามน: CREATE TABLE artists … ชอเตมของตารางทสรางนคอ arfchong.artists

8.2 ตาราง (Tables) ตารางคอ การรวบรวมขอมลทเกยวของ ทประกอบขนเปนคอลมน(column)และแถว(row) ประโยคคาสงทแสดงขางลางคอตวอยางวธการสรางตารางโดยใชคาสง CREATE TABLE CREATE TABLE artists (artno SMALLINT not null, name VARCHAR(50) with default 'abc', classification CHAR(1) not null, bio CLOB(100K) logged,

Page 159: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 159

picture BLOB(2M) not logged compact ) IN mytbls1 ในสวนทตามมาน เราจะบรรยายสวนประกอบหลกของคาสง CREATE TABLE น

8.2.1 ประเภทของข�อมล(Data Types) รปภาพ 8.1 แจกแจงประเภทของขอมลทโปรแกรม DB2 รองรบ

Data Types

Numeric

IntegerSMALLINTINTEGERBIGINT

DECIMAL

FloatingPoint

REALDOUBLE

String

CharacterString

Single ByteCHARVARCHARLONG VARCHARCLOB

GRAPHICVARGRAPHICLONG VARGRAPHICDBCLOB

Double Byte

Binary String

BLOB

Datetime

DATETIMETIMESTAMP

XML

DECIMAL

Page 160: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

160 เรมตนกบ DB2 Express-C

รปภาพ 8.1 – ประเภทของข�อมลทมมาใน DB2(built-in) ประเภทของข�อมลทมขนาดใหญ� (Large Object or LOB) ประเภทของขอมลทมขนาดใหญจะถกใชในการเกบขอมลทเปนตวอกษรทมขนาดใหญ และ ขอมลหรอแฟมขอมลทเปนเลขฐานสองทมขนาดใหญ ดงทแสดงในรปภาพ 8.2

Page 161: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 161

รปภาพ 8.2 – ประเภทของข�อมลทมขนาดใหญ� ออบเจกตขนาดใหญเหลานมกจะเรยกยอใหชดเจนขน: ออบเจกตขนาดใหญทเปนตวเลขฐานสองคอ BLOB, ออบเจกตขนาดใหญทเปนตวอกษรคอ CLOB, และออบเจกตขนาดใหญทเปนตวอกษร double byte character เรยกวา DBCLOB ประเภทของข�อมลทผ�ใช�กาหนด (User-defined types)

DB2 อนญาตใหผใชสรางประเภทของขอมลขนเองโดยสรางจากประเภทของขอมลพนฐานทมมาใน DB2(built-in) ซงจะเรยกประเภทของขอมลทสรางขนวา user-defined types (UDTs) UDTs มประโยชนเมอ:

� เมอตองการทจะทาใหคาของขอมลทมหนวยการวดทแตกตางกนใหสามารถนามาเปรยบเทยบกนได

Page 162: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

162 เรมตนกบ DB2 Express-C

� เมอตองการทจะกาหนดประเภทของขอมลชนดใหมทไมมในฐานขอมล

คาสงทเขยนดงตอไปนอธบายตวอยางวธการใชและเมอไรทตองใช UDTs:

CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISONS CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISONS CREATE TABLE person (f_name VARCHAR(30), weight_p POUND NOT NULL, weight_k KILOGRAM NOT NULL )

ในตวอยางน ม 2 UDTs ถกสรางขน คอ POUND และ KILOGRAM UDT ทงสอง ถกสรางขนจากประเภทของขอมล คอ INTEGER สวนอนประโยค WITH COMPARISONS ทาใหเกดการสราง ฟงกชนทใชในการแปลง (casting function) โดยทฟงกชนดงกลาวจะมชอทเหมอนกนกบชอของประเภทของขอมลใหมทสรางขน ตาราง personใช UDTs ใหม 2 ตว อยในคอลมน weight_p และ weight_k, ตามลาดบถาตอนนเราคาสงดงตอไปน:

Page 163: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 163

SELECT F_NAME FROM PERSON WHERE weight_p > weight_k จะไดรบขอความแสดงขอผดพลาดเพราะวามการนาสองคอลมนทมประเภทของขอมลทแตกตางกนมาเปรยบเทยบกน แมวา weight_p และ weight_k ใชประเภทของขอมล POUND และ KILOGRAM ตามลาดบ ซงทงสองยงถกสรางใหขนอยกบประเภทของขอมล INTEGER โดยการสราง UDTs ดงนนการเปรยบเทยบประเภทของขอมลจงเปนไปไมได นคอสงทคณตองการเพราะตามความเปนจรง การเปรยบเทยบปอนดและกโลกรมหมายความวาอยางไร มนไมสอความหมาย ในตวอยางถดไป อยากเปรยบเทยบคอลมน weight_p กบตวเลข อยางไรกตาม ประเภทของขอมลทงสองนนแตกตางกน ดงนนคณจะไดรบการแจงความผดพลาดนอกจากคณจะใช ฟงกชนทใชในการแปลง ดงทเหนจากคาสงทเขยนขางลาง เราใชฟงกชนทใชในการแปลง POUND() เพอวาการเปรยบเทยบประเภทของขอมลจะเปนไปได ดงทระบไวในขางตน ฟงกชนทใชในการแปลง POUND() ถกสรางขนกบ UDT เมอมการใส WITH COMPARISONS ในคาสง CREATE DISTINCT TYPE SELECT F_NAME FROM PERSON WHERE weight_p > POUND(30)

Page 164: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

164 เรมตนกบ DB2 Express-C

Null Values null value แสดงสถานะทไมไดกาหนดคาหรอไมมการใสคา อยางไรกตามคาสง CREATE TABLE สามารถระบคอลมนใดๆโดยใส NOT NULL เพอยนยนวาคอลมนนนมการใสคาของขอมล สามารถระบคาโดยปรยายหรอคาตงตน(default value)สาหรบคอลมนทประกาศวา NOT NULL คาสงทเขยนตอไปแสดงตวอยางของการปฏบตน: CREATE TABLE Staff ( ID SMALLINT NOT NULL, NAME VARCHAR(9), DEPT SMALLINT NOT NULL with de-fault 10, JOB CHAR(5), YEARS SMALLINT, SALARY DECIMAL(7,2), COMM DECIMAL(7,2) with default 15 )

8.2.2 คอลมน� Identity (Identity Columns) คอลมน IdentityคอคอลมนตวเลขทDB2ใหคาตวเลขอตโนมตแบบไมซาสาหรบแตละแถว สามารถมแคหนงคอลมนทเปน คอลมน Identity ในหนงตาราง มสองวธในการใหคาคอลมน Identityขนอยกบวามการระบวาอยางไร

Page 165: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 165

• Generated always: คาจะถกกาหนดใหโดย DB2 เสมอไมอนญาตใหโปรแกรมกาหนดคาเอง

• Generated by default: คาจะถกกาหนดใหโดยโปรแกรม หรอถาไมมกาหนดคาให DB2กจะกาหนดคาให DB2 ไมสามารถรบประกนการไมซาของคา ตวเลอกนเหมาะสาหรบการนาออก และการนาเขาของตาราง

แสดงตวอยางดงตอไปน: CREATE TABLE subscriber(subscriberID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 100 INCREMENT BY 100), firstname VARCHAR(50), lastname VARCHAR(50) ) ในตวอยางน คอลมน subscriberID ประเภทขอมลเปน INTEGER และระบเปน คอลมน Identity คาขอมลทจะกาหนดใหจะเรมจาก 100 และเพมขนทละ 100

Page 166: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

166 เรมตนกบ DB2 Express-C

8.2.3 SEQUENCE objects Sequence ใหตวเลขทไมซาในฐานขอมล ไมเหมอนคอลมน Identityคา Sequence จะไมขนอยกบตาราง คาสงตอไปแสดงตวอยาง: CREATE TABLE t1 (salary int) CREATE SEQUENCE myseq START WITH 10 INCREMENT BY 1 NO CYCLE INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) SELECT * FROM t1 SALARY ----------- 10 11 12 3 record(s) selected.

Page 167: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 167

SELECT prevval for myseq FROM sysibm.sysdummy1 1 ----------- 12 1 record(s) selected PREVVAL ใหคาปจจบนของ Sequence ในขณะท NEXTVAL ใหคาตอถดไปของ Sequence ตวอยางขางตนยงใช SYSIBM.SYSDUMMY1 นคอตารางของ System Catalog ทบรรจ 1 คอลมนและ 1 แถว มนสามารถนาไปใชในสถานการณทตองการคนคนคาผลลพธ แคคาเดยว ตารางตางๆใน System catalog จะกลาวถงในสวนถดไป

8.2.4 System catalog tables ฐานขอมลแตละอนจะม system catalog tables และ views เปนของตวเอง ซงพวกนจะเกบขอมล (metadata) เกยวกบออบเจกตตางๆ ของฐานขอมล เราสามารถเรยกดขอมลตารางพวกนไดเหมอนกบตารางอน ๆ ของฐานขอมล มการใช schema ทใชในการระบวาเปนตาราง system catalog tables ทงหมด 3 schemas:

• SYSIBM: เปนตารางพนฐาน ทใชงานดย DB2 เอง

Page 168: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

168 เรมตนกบ DB2 Express-C

• SYSCAT: เปนviews ทเทยบเคยงกบตารางของ SYSIBM ถกปรบใหเหมาะสมสาหรบการใชงานไดงาย

• SYSSTAT: ตารางทมขอมลสถตของฐานขอมล ตอไปนเปนตวอยางของ Catalog views:

• SYSCAT.TABLES • SYSCAT.INDEXES • SYSCAT.COLUMNS • SYSCAT.FUNCTIONS • SYSCAT.PROCEDURES

8.2.5 Declared temporary tables Declared temporary tables คอ ตารางชวคราว ทสรางอยในหนวยความจาและถกใชโดยโปรแกรมประยกตและจากนนจะถกลบโดยอตโนมตเมอโปรแกรมประยกตนนหยดทางานลง ตารางเหลานสามารถเขาถงไดโดยโปรแกรมประยกตทสรางตารางเหลานขนมาเทานนโดยจะไมปรากฏขอมลอยบนตาราง system catalog ของ DB2 การเขาถงตารางเหลานนนใหประสทธภาพดมาก เพราะวาไมมการแยงชงการเขาถง system catalog ไมมการลอคแถว ไมมลอก logging (logging เปนทางเลอก) และไมมการตรวจสอบสทธในการใชงาน อกทงยงรองรบการสรางดชน(index)สาหรบตารางเหลาน นนกคอ Index มาตรฐานใด ๆ กสามารถถกสรางไดบนตารางชวคราวน ทงยงสามารถดาเนนคาสง RUNSTATS บนตารางเหลาไดอกดวย

Page 169: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 169

Declared temporary tables จะอยในเทเบลสเปซทเรยกวา user temporary ta-ble space ซงจะตองสรางมากอนการสราง declared temporary tables ใดๆ คาสงดงตอไปนเปนการแสดงตวอยางในการสราง 3 ตารางชวคราว CREATE USER TEMPORARY TABLESPACE apptemps MANAGED BY SYSTEM USING ('apptemps'); DECLARE GLOBAL TEMPORARY TABLE temployees LIKE employee NOT LOGGED; DECLARE GLOBAL TEMPORARY TABLE tempdept (deptid CHAR(6), deptname CHAR(20)) ON COMMIT DELETE ROWS NOT LOGGED; DECLARE GLOBAL TEMPORARY TABLE temppro-jects AS ( fullselect ) DEFINITION ONLY ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE IN TABLESPACE apptemps; เมอ declared temporary tables ถกสรางขน Schema ของมนคอ SESSION และตองถกกาหนดขนมาตอนมการใชงานตารางชวคราวน

Page 170: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

170 เรมตนกบ DB2 Express-C

นๆ User id ของผใชงานทถกนามาใชในการสรางตารางชวคราวนนจะมเอกสทธทกอยางในตารางนน ๆ โปรแกรมประยกตในแตละโปรแกรมทสราง ตารางชวคราวนนจะมขอมลเปนของตนเองซงเปนเอกเทศ ดงแสดงอยในรป 8.5

รปท 8.5 ขอบเขตของการสร�างตารางชวคราว

Page 171: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 171

ปฏบตการท 7 – การสร�างตารางใหม� วตถประสงค จนมาถง ณ จดน คณไดใชตารางทมอยกอนแลวในฐานขอมล SAMPLE เพอใชอธบายหลกการตางๆ ณ ขณะน, คณคงตองการสรางตารางในฐานขอมลทเปนของคณเอง ในปฏบตการน, คณจะใชตวชวย ในการสรางตารางใหมสองตารางในฐานขอมล SAMPLE ขนตอน

1. เปดใชตวชวย สรางตารางดงทเหนในการนาเสนอกอนหนาน (Control Center -> All Databases -> SAMPLE -> (คลกขวา) Tables object -> Create … option

2. กาหนดชอตาราง, นยามคอลมน, และกฎตางๆ ตารางนจะถกนามาใชเกบขอมลเกยวกบอปกรณสานกงานโดยถกใชโดยตารางชอ Project ในฐานขอมล SAMPLE ในแตละครงทอปกรณถกซอ แถวหนงแถวจะถกเพมลงไปในตารางน ตารางจะมทงหมด 6 คอลมน:

• product_id: รหสสนคาทถกซอ ซงมคาทไมซา • description: คาอธบายเกยวกบสนคา • quantity: ปรมาณทซอ • cost: ราคาสนคา • image: รปภาพสนคา (ถาม)

Page 172: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

172 เรมตนกบ DB2 Express-C

• project_num: รหส project ทสนคาทถกซอจะนาไปใชกบ project นน ๆ

3. ในหนาแรกของตวชวย สาหรบชอของ Schema ใส ใส user ID ของผใชงานทใชในการ log on ขณะนลงไป และใสชอตารางเปน SUPPLIES สามารถเลอกทจะใสขอความเพมเตม(comment)ลงไปกได กดปม Next เพอดาเนนการไปยงหนาตอไปของตวชวย

4. จากหนาน คณสามารถเพมคอลมนลงไปในตาราง กดปม ADD เพอเพมคอลมน

ใสชอคอลมน “product_id” และเลอกชนดของขอมลเปน INTEGER เอาตวเลอกตรง Nullable ออก และกดปม Apply เพอกาหนดคอลมน

Page 173: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 173

ทากระบวนการนเหมอนเดมสาหรบคอลมนทเหลออยในตารางโดยใชตวเลอกทแสดงอยในตารางทางดานลาง เมอคอลมนทงหมดถกเพมลงไปแลว (apply) กดปมOK และ รายชอคอลมนทคณเพงสรางไปนนจะถกสรปออกมา กดปม Next เพอดาเนนการไปยงหนาตอไปของตวชวย Column Name Attributes product_id (สมบรณ)

INTEGER, NOT NULL

description VARCHAR, length 40, NOT NULL

quantity INTEGER, NOT NULL cost DECIMAL, Precision 7,

Scale 2, NOT NULL image BLOB, 1MB, NULLABLE,

NOT LOGGED project_num CHAR, length 6, NOT

NULL หมายเหต: ตวเลอก NOT LOGGED สามารถถกกาหนดไดเมอประกาศคอลมน LOBคอลมน ซงจาเปนจะตองถกกาหนดถาLOBมขนาดมากกวา 1 GB โดยทวไปนนแนะนาใหสาหรบLOBsทมขนาดมากกวา 10MB เลอกใช NOT LOGGED

Page 174: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

174 เรมตนกบ DB2 Express-C

เพอเมอมการเปลยนแปลงกบคอลมนทมขนาดใหญนสามารถลอกขอมลไดอยางรวดเรวลงไปใน log ไฟล ถงแมวา NOT LOGGED จะถกใช, การเปลยนแปลงเกยวกบไฟล LOBs ระหวางการทางานธรกรรมยงสามารถยอนกลบการทางานธรกรรมได สงเกตดวยวาคอลมน LOBs สามารถกาหนดใหเปนคอลมนแบบ “NULLABLE” ไดอยางเดยว ทาไมคณถงคดวาคอลมนตองถกกาหนดแบบน ?

5. ณ จดน, ขอมลทจาเปนทงหมดสาหรบการสรางตารางนนไดมพรอมหมดแลว โดยการขามหนาอน ๆ ไป ซงเทากบกาลงเลอกคา default สาหรบตวเลอกนน ๆ สามารถเพมคย(keys) และกฎ(constraint)ไดตลอดเวลาหลงจากตารางถกสรางขนมาแลว

6. เพมกฎลงไปในตารางเพอจากดคาคอลมน quan-tity ในหนา Constraint ของตวชวย กดปม ADD ในชอง Check Name ใหใสคา: valid_quantities ในชอง Check Condition ใหใสคา: quantity > 0 กดปม OK จะเหนสรปของกฎ ทคณเพงเพมลงไปในหนา Constraint ของตวชวย กดปม Next เพอดาเนนการไปยงหนาตอไปของตวชวย

7. สามารถดาเนนการตอไปในตวชวย โดยทเปลยนแปลงคาตวเลอกอนของตาราง หรอ,

Page 175: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 175

สามารถขามไปยง หนา Summary หรอเพยงกดปม Finish เพอสรางตาราง

8. จาก Control Center, คลกทโฟลเดอร Tables ทอยในฐานขอมล SAMPLE ใน ออบเจกตทร ตารางทคณเพงสรางขนมานนควรจะปรากฏอยในรายชอ หรออาจจาเปนทจะตองกด Refresh ในหนา Control Center เพอทจะมองเหนการเปลยนแปลงทเกดขน

Page 176: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

176 เรมตนกบ DB2 Express-C

8.3 Views view คอตวแทนแสดงขอมลทอยในตาราง ขอมลสาหรบ view นนไมไดเกบแบบแยกสวน, แตคาขอมลจะถกแสดงเมอ view ถกเรยกถง ในDB2สามารถใช Nested views ซงคอviewทสรางโดยอางองจากviewอน ๆ ขอมลทงหมดเกยวกบviewถกเกบอยใน DB2 catalog view ดงตอไปน: SYSCAT.VIEWS, SYSCAT.VIEWDEP,และ SYSCAT.TABLES นคอตวอยางของการสรางและใชview CONNECT TO MYDB1; CREATE VIEW MYVIEW1 AS SELECT ARTNO, NAME, CLASSIFICATION FROM ARTISTS; SELECT * FROM MYVIEW1; Output: ARTNO NAME CLASSIFICATION ------ ----------------- -------------- 10 HUMAN A 20 MY PLANT C 30 THE STORE E ...

Page 177: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 177

8.4 อนเดกซ� (Indexes) Index คอกลมของคย (keys) ทเรยงเปนลาดบซงในแตละคย นนมตวช ชไปยงแถวใดแถวหนงในตาราง อนเดกซทสรางขนอนญาตใหมความไมซา(unique) และอนเดกซยงชวยใหการทางานในฐานขอมลมประสทธภาพดขนอกดวย คณลกษณะบางตวทสามารถกาหนดไดบน อนเดกซ:

• ลาดบของอนเดกซ สามารถเปนแบบจดเรยงจากมากไปนอยหรอนอยไปมาก

• อนเดกซคยสามารถเปนแบบไมซาหรอแบบซา กได • อนเดกซคยสามารถประกอบดวยคอลมนหลาย ๆ คอลมน (ซงถกเรยกวา compound index)

• ถาอนเดกซ และขอมลทางกายภาพในตารางถกจดลาดบตามลาดบของอนเดกซคย อนเดกซนนเรยกวา cluster index

ตวอยางเชน: CREATE UNIQUE INDEX artno_ix ON artists (artno)

8.4.1 Design Advisor Design Advisor คอ เครองมอทเยยมยอดทจะชวยแนะนาสาหรบการออกแบบฐานขอมลทดสาหรบงาน SQL ทมการทางานในฐานขอมล(SQL Workload) Design

Page 178: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

178 เรมตนกบ DB2 Express-C

Advisor สามารถชวยคณในการออกแบบอนเดกซ Materialized Query Tables (MQTs), Multi-dimension clustering (MDC) และคณสมบตการแบงพารทชนของฐานขอมล (database partitioning) Design Advisor สามารถเรยกใชงานไดจาก Control Center โดยคลกขวาบนชอฐานขอมลแลวเลอก “Design Advisor” ดงทปรากฏในรปท 8.6

รป 8.6 –การเรยก Design Advisor จาก Control Center รปท 8.7 แสดง Design Advisor ดาเนนการตามขนตอนในตวชวยนเพอรบคาแนะนาในการออกแบบจาก DB2

Page 179: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 179

รปท 8.7 –The Design Advisor

8.5 การสร�างความสมพนธ�ระหว�างตารางต�าง ๆ (Referential integrity) Referential integrity อนญาตใหฐานขอมลของคณจดการความสมพนธระหวางตารางได คณสามารถสรางความสมพนธระหวางตารางประเภท parent-child ดงทแสดงในรป 8.8 ในรปน มตารางอย 2 ตาราง DEPARTMENT และ EMPLOYEE สมพนธกนโดยรหสประจาแผนก คอลมน WORKDEPT ในตาราง EMPLOYEE สามารถใสขอมลไดเฉพาะรหสแผนกทตองมอยแลวในตาราง DEPARTMENT ในตวอยางน ตาราง DEPARTMENT คอตาราง parent และตาราง EMPLOYEE คอตาราง child หรอตารางทมขอมลขนอยกบอกตารางหนง รปนยงแสดงขอความทจาเปนนนคอคาสง CREATE

Page 180: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

180 เรมตนกบ DB2 Express-C

TABLE สาหรบตาราง EMPLOYEE จะตองมการกาหนดคอลมนเพอทจะสรางความสมพนธขนมาซงในทนคอคอลมน WORKDEPT

รปท 8.8 –ตวอย�างของการสร�างความสมพนธ�ระหว�างตาราง ในการสรางความสมพนธ แนวคดดงตอไปนมกถกนามาใช

Concept

Description

Parent table

ตารางทม parent keys ปรากฏอย

Dependent table

ตารางทมขอมลขนอยกบอกตาราง parent ซงตารางนจะม foreign key แถวทมอยในตาราง dependent ตองตรงกนกบแถวในตาราง par-

Page 181: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 181

ent โดยคาในคอลมนทเปน foreign คย ตองมคาตรงกนกบคา parent คยนนเอง

Primary Key

กาหนด parent key ของตาราง parent ซงไมสามารถบรรจคาวาง NULL และคาตองไมซา Primary คยประกอบดวยคอลมนภายในตารางหนงคอลมนหรอมากกวานนกได

Foreign Key

คอลมนทมคาอางองถง primary คยของตาราง parent

ขอมลในตารางหนงสามารถเชอมโยงสมพนธถงขอมลทอยในหนงตารางหรอมากกวาได โดย การสรางกฎความสมพนธน ยงสามารถชวยใหการใสคาของขอมลเหลานเปนไปตามคณสมบตบางอยางทกาหนด หรอตามกฎของธรกจ ตวอยางเชน, ถาคอลมนของตารางเกบเพศของบคคลไว, กฎสามารถบงคบใหคาทสามารถรบมาเปนแค “M” สาหรบเพศชาย และ “F” สาหรบเพศหญง

Page 182: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

182 เรมตนกบ DB2 Express-C

บทท 9 – โปรแกรมอรรถประโยชน�สาหรบเคลอนย�ายข�อมล

ในบทนจะอธบายถงการใชเครองมอหรอคาสงตาง ๆในการเคลอนยายขอมลในฐานขอมลเดยวกน หรอ ระหวางฐานขอมลทอยในแพลตฟอรมเดยวกน หรอตางแพลตฟอรมกน ภาพรวมของการเคลอนยายขอมลไดแสดงไว ดงรปท 9.1

รปท 9.1 – โปรแกรมอรรถประโยชน�สาหรบเคลอนย�ายข�อมล จากรปท 9.1 มฐานขอมลอย 2 ฐานขอมล คอ ฐานขอมล A และ B สามารถใช EXPORT เพอสงขอมลออกจากตารางไปอยในรปของไฟล ไฟลนนสามารถมไดหลายรปแบบ ดงน ASC = ASCII DEL = Delimited ASCII WSF = Worksheet format IXF = Integrated Exchange Format

Page 183: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 183

ไฟลรปแบบ ASC และ DEL คอไฟลขอความ (Text Files) ซงสามารถถกเปดและดไดโดย โปรแกรมแกไขขอความ (Text Editor) ใดกได รปแบบ WSF เปนรปแบบทสามารถเคลอนยาย ไปสสเปรดชตได เชน Excel หรอ Lotus® 1-2-3 รปแบบ IXF เปนรปแบบทมทงขอมล (Data) และ คาสงกาหนดโครงสรางขอมล (Data Definition Language: DDL) ของตารางทสนใจ รปแบบนมความสะดวกเมอตองการสรางตารางขนใหม สามารถทาไดโดยตรงจากไฟล IXF ขณะทรปแบบอนไมสามารถทาได เมอสงขอมลออกมาอยในรปไฟลแลว สามารถใชโปรแกรม IMPORT เพอสงขอมลจากไฟล ไปยงตารางอนได หากเปนไฟลรปแบบ ASC, DEL และ WSF ตารางจะตองมไวอยกอนแลว แตถาเปนรปแบบ IXF ไมจาเปนตองมตารางอยแลวกได อกวธในการถายโอนขอมลสตาราง กคอการใชโปรแกรม LOAD โปรแกรม LOAD สามารถทางานไดเรวกวาเพราะเปนการสงไป ยงฐานขอมลโดยตรงโดยไมมปฏสมพนธกบสวนประมวลผลของ DB2(DB2 engine) แตวธนไมมการตรวจสอบ กฎ(Constraints) และไมมการประมวลผล Triggers สามารถใชคาสง SET INTEGRITY ตามหลงเพอรบประกนความสอดคลองและความถกตองของขอมลทถายโอนมาโดยใชโปรแกรม LOAD ได ในหวขอตอไป จะอธบายถงโปรแกรม EXPORT, IMPORT และ LOAD ในรายละเอยด

Page 184: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

184 เรมตนกบ DB2 Express-C

หมายถง: รายละเอยดเพมเตมเกยวกบการเคลอนยายขอมล สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4262

9.1 โปรแกรมอรรถประโยชน� EXPORT โปรแกรม EXPORT ใชเพอสงขอมลจากตารางมาอยในรปของไฟล ตามทไดกลาวมาแลว ในเบองหลงแลว เปนการประมวลผลคาสง SELECT ของ SQL ตวอยางตอไปนจะสงขอมลจานวน 10 แถว จากตาราง employee ออกไปยงไฟล employee.ixf ซงเปนไฟลรปแบบ IXF EXPORT TO employee.ixf OF IXF SELECT * FROM employee FETCH FIRST 10 ROWS ONLY ขอแนะนาใหลองทาตามตวอยางขางตน เนองจากตาราง employee เปนสวนหนงของฐานขอมล SAMPLE ดงนนจงจาเปนตองเชอมตอฐานขอมลนเสยกอน ซงฐานขอมลไดมการสรางไวในบทกอนหนาน หากตองการทางานดวย GUI สามารถเรยกโปรแกรม EXPORT จาก Control Center ดงรปท 9.2

Page 185: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 185

รปท 9.2 – การเรยกใช�หน�าต�างตอบโต�สาหรบ EXPORT จากรป เรมแรกใหเลอกตาราง employee ดวยการคลกหนงครง จากนนคลกขวาทตารางเพอเปดเมน และเลอกทตวเลอก Export เมอเลอกตวเลอกนแลว ตวชวย (wizard) กจะปรากฎขน หลงจากนน กเพยงทาตามขนตอนทตวชวยกาหนดใหจนเสรจสมบรณ

9.2 โปรแกรมอรรถประโยชน� IMPORT โปรแกรม IMPORT ใชเพอถายโอนขอมลจากไฟลมาสตารางดงทกลาวไวกอนหนาน ใน เบองหลงแลว เปนการประมวลผลคาสง INSERT ของ SQL ในขณะทประมวลผลคาสง INSERT

Page 186: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

186 เรมตนกบ DB2 Express-C

นน Trigger จะมการทางาน กฎ(Constraints) ทงหมดจะถกตรวจสอบกบขอมลในทนท และมการใชงานบฟเฟอรพลของฐานขอมล ตวอยางตอไปนจะถายโอนขอมลทงหมดจากไฟล employee.ixf ซงเปนไฟลรปแบบ IXF ไปสตาราง employee_copy. ตวเลอก REPLACE_CREATE เปนหนง ในหลาย ๆ ตวเลอกทมใหของโปรแกรม IMPORT วธนจะทาการแทนทขอมลในตาราง employee_copy หากมตารางนอยกอนทจะใชโปรแกรม IMPORT ในทางกลบกน วธน จะสรางตารางและถายโอนขอมล หากยงไมมตารางนมากอน แนะนาใหลองทาตามตวอยาง ขางลาง แตตองไดใชโปรแกรม EXPORT ดงทกลาวมาแลวกอนหนาน IMPORT FROM employee.ixf OF IXF REPLACE_CREATE INTO employee_copy หากตองการจะทางานจาก Control Center สามารถใชโปรแกรม IMPORT ไดโดยการเลอกตาราง แลวคลกขวา จากนนเลอก Import ดงรปท 9.3

Page 187: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 187

รปท 9.3 – การเรยกใช�หน�าต�างตอบโต�สาหรบ IMPORT

9.3 LOAD โปรแกรม LOAD เปนวธทเรวทสดในการถายโอนขอมลจากไฟลสตาราง ดงทกลาวไวกอนหนาน โปรแกรม LOAD จะไมทางานผานตวประมวลผลของDB2(DB2 engine) เพราะฉะนน จะไมม การประมวลผล Trigger ไมมการใชงานบฟเฟอรพล และสามารถตรวจสอบกฎ(Constraints) ในขนตอนทแยกตางหาก ในอกดานหนง คาสง LOAD ทางานเรวกวาคาสง IMPORT เนองจากคาสง LOAD เปนโปรแกรมททางานกบขอมลระดบลางทเขาถงเพจของขอมลบนดสกโดยตรง LOAD มการทางานเปนสามขนตอนคอ ถายโอนขอมล (LOAD)

Page 188: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

188 เรมตนกบ DB2 Express-C

สรางดชนหรอ Index (BUILD) และลบแถวทมขอมลซา (DELETE) ตวอยางตอไปนจะถายโอนขอมลทงหมดจากไฟลรปแบบ IXF ทมชอวา employee.ixf มาสตาราง employee_copy ตวเลอก REPLACE คอหนงในหลาย ๆ ตวเลอกทมของโปรแกรม LOAD ในกรณน ใชเพอแทนทขอมลทงหมดในตาราง employee_copy LOAD FROM employee.ixf OF IXF REPLACE INTO employee_copy หลงจากประมวลผลคาสงขางตนแลว (ซงสามารถลองทาได) เทเบลสเปซทมตารางนอยจะอยใน สถานะรอการตรวจสอบ (CHECK PENDING) หมายความวาจาเปนตองใชคาสง SET INTEGRITY เพอตรวจสอบความสอดคลองและความถกตองของขอมล ตวอยางตอไปนจะแสดงใหเหนวธทา SET INTEGRITY FOR employee_copy ALL IMMEDIATE UNCHECKED หากตองการทางานจาก Control Center สามารถเรยกใชโปรแกรม LOAD และ SET INTEGRITY ไดดงรปท 9.4 และ 9.5 ตามลาดบ

Page 189: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 189

รปท 9.4 – การเรยกใช�ตวช�วย LOAD

Page 190: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

190 เรมตนกบ DB2 Express-C

รปท 9.5 –การเรยกใช�ตวช�วย SET INTEGRITY

9.4 โปรแกรมอรรถประโยชน� db2move โปรแกรม EXPORT, IMPORT และ LOAD ทางานกบทละตาราง แมวาจะสามารถเขยนสครปตเพอสรางชดคาสงขางตนสาหรบแตละตารางในฐานขอมลได แตมอกโปรแกรมอรรถประโยชนหนง ชอ db2move สามารถทาเชนนใหได โปรแกรม db2move สามารถทางานไดกบเฉพาะไฟลรปแบบ IXF เทานน และ db2move จะสรางชอของไฟล โดยอตโนมต ตวอยางตอไปนจะแสดงใหเหนถงการใชคาสง db2move ในการสงออกขอมล (Export) และนาเขาขอมล (Import) ตามลาดบ โดยใชฐานขอมล SAMPLE db2move sample export db2move sample import ไมสามารถใช db2move จาก Control Center

9.5 โปรแกรมอรรถประโยชน� db2look ในขณะทโปรแกรม EXPORT, IMPORT, LOAD และ db2move ทาใหสามารถเคลอนยายขอมล จากตารางหนงไปสอกตารางหนง ไมวาจะอยในฐานขอมลเดยว หรอขามหลายฐานขอมล โปรแกรม db2look สามารถใชในการดงเอาคาสง DDL สถต(Statistics)ของฐานขอมล และโครงสรางของเทเบลสเปซของฐานขอมลและจดเกบไวในไฟลสครปตซงสามารถใช

Page 191: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 191

ในการประมวลผลบนอกระบบหนงไดในภายหลง ตวอยางเชน ถาตองการคดลอก (Clone) ฐานขอมลจาก DB2 เซรฟเวอรตวหนงททางานบนลนกซ ไปส DB2 เซรฟเวอรอกตวหนงททางานบนวนโดวส เรมแรกใหใชโปรแกรม db2look บน DB2 เซรฟเวอรทอยบนลนกซ เพอดงโครงสรางของฐานขอมล และจดเกบโครงสรางนไวในไฟลสครปต จากนนใหนาไฟลสครปตนไปไวท DB2 เซรฟเวอรทอยบนวนโดวส และสงประมวลผลสครปตนนใหสรางฐานขอมลตามทไดคดลอกมา เมอมาถงขนตอนน โครงสรางของฐานขอมลไดถกคดลอกเรยบรอยแลว ขนตอนตอไป คอการสงประมวลผลโปรแกรม db2move ดวยตวเลอกสงขอมลออก (Export) บน DB2 เซรฟเวอรทอยบนลนกซ และนาไฟลทถกสรางขนทงหมดไปไวท DB2 เซรฟเวอรทอยบนวนโดวส จากนนใหสงประมวลผลโปรแกรม db2move ดวยตวเลอกนาขอมลเขา (Import) หรอถายโอนขอมล (Load) เมอเสรจแลว ฐานขอมลกจะถกคดลอกอยางสมบรณจากเซรฟเวอรหนงไปยงอกเซรฟเวอรหนง ทอยตางแพลตฟอรมกน กรณดงกลาวนอาจจะถกใชเมอตองการทางานกบฐานขอมลบนแพลตฟอรมทแตกตางกน เชน ลนกซกบวนโดวส ถาเซรฟเวอรทงสองอยบนแพลตฟอรมเดยวกน อาจตองการใชคาสง เกบสารอง (Backup) และคนสภาพ (Restore) แทน ซงจะทาไดงายกวาและตรงไปตรงมากวา

Page 192: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

192 เรมตนกบ DB2 Express-C

จะกลาวถงคาสงเกบสารอง (Backup) และคนสภาพ (Restore) ในรายละเอยดในบทตอ ๆ ไปของหนงสอเลมน ตวอยางตอไปน เปนการดงโครงสรางของเทเบลสเปซและ บฟเฟอรพล ควบคไปกบคาสง DDL จากฐานขอมล SAMPLE และจดเกบไวในไฟล sample.ddl ขอแนะนาใหประมวลผลคาสง ตอไปน และสงเกตผลในไฟลขอความชอ “sample.ddl”

คาสง db2look มตวเลอกมากมายเกนกวาจะอธบายไดในหนงสอเลมน อยางไรกตาม สามารถใช –h เพอดคาอธบายโดยยอของตวเลอกทมใหได db2look -h สามารถเรยกใชโปรแกรม db2look ไดจาก Control Center ดงรปท 9.6

Page 193: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 193

รปท 9.6 การดง DDL จาก Control Center รปท 9.6 แสดงการเลอกฐานขอมลตองการจะดง DDL มา คลกขวาทฐานขอมลทเลอก และเลอก “Generate DDL” หนาตาง Generate DDL จะปรากฎขนมาและแสดงตวเลอกตาง ๆ ใหใชงาน ดงรปท 9.7

Page 194: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

194 เรมตนกบ DB2 Express-C

รปท 9.7 การดง DDL จาก Control Center

Page 195: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 195

ปฏบตการท 8 – การดง DDL จากฐานข�อมล EXPRESS วตถประสงค เมอตองการคดลอกฐานขอมล เปาหมายกคอตองการใหการสรางฐานขอมลขนซาใหม แบบตรงไปตรงมาและสามารถทาซาไดเทาทจะเปนไปได สงนสามารถทาไดโดยใชสครปตคาสง SQL ซงสามารถใชประมวลผลไดทนทหลงจากตดตง DB2 ในปฏบตการน จะไดดงโครงสรางหรอ Object Definition ของฐานขอมล EXPRESS (ทสรางไวในปฏบตการท 2) โดยใช Control Center ขนตอน

1. เปด Control Center 2. คลกขวาทฐานขอมล EXPRESS ในทรแสดงรายการและเลอกเมน Generate DDL จะ ทาใหหนาตางโตตอบ Generate DDL ปรากฏขนมา

3. ในหนาตาง Generate DDL ใหกาหนดตวเลอกในการสราง DDL ดงรปขางลาง ถามการ สรางออบเจกตเพมเตมในฐานขอมล เชน เทเบลสเปซ บฟเฟอรพล ฯลฯ ใหเลอกสงเหลานนทหนาตางน เนองจากยงไมไดสรางสงเหลานใหเอาเครองหมายถกออก สถตของฐานขอมล (Database

Page 196: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

196 เรมตนกบ DB2 Express-C

statistics) ยงไมตองเลอกเพราะในสภาพแวดลอมใชงานจรง (Production Environment) มแนวโนมทจะมสถตทแตกตางไปจากในสภาพแวดลอมในการพฒนาระบบ (Development Environment) ในทานองเดยวกน พารามเตอรทกาหนดคาตาง ๆ (Configuration Parameters) มแนวโนมทจะตางออกไปเชนกน ในฐานขอมลขณะนไดกาหนดคาทกสงไวเหมอนทจะนาไปใชงาน ใหเลอกตวเลอกนเพมเตม

4. เลอกทแถบ Object สามารถเลอกไดวาตองการใหสราง DDL สาหรบออบเจกตใด ในกรณน ใหเลอกทชอง user และชอง schema ใหตรงกบทใชในการสรางออบเจกต ทงหมดทผานมา

Page 197: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 197

และใหสราง DDL สาหรบออบเจกตทงหมด กดปม Generate เพอเรม การสราง DDL

5. ตรวจด DDL ทเปนผลลพธ ผลลพธของขนตอนทแลวคอสครปตทรวมคาสง SQL ทงหมดสาหรบสรางออบเจกตทเลอกไว ตอนนจะสามารถจดระเบยบสครปตนเปน กลม ๆ ตามความตองการได

6. สราง Directory ชอ C:\express ในระบบไฟลและบนทกไฟล DDL ทสรางขนไวใน Directory นและตงชอวา schema.ddl(กดปมบนทก - save)

Page 198: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

198 เรมตนกบ DB2 Express-C

7. เปดไฟลทเพงบนทกไว ดวย Command Editor (ขอเสนอแนะ: จาก Command Editor เลอก File => Open)

8. ถงแมวาจะตองการเพยง DDL สาหรบตาราง แตจะสงเกตไดวาม DDL สาหรบออบเจกต อน ๆ กรวมอยในนดวยเชนกน แยกคาสง CREATE TRIGGER ทงหมดมาไวใน ไฟลใหม ชอวา triggers.ddl แมวาจะมเพยง 1 Trigger เทานน แตใหถอเปนแนว ปฏบตทด โดยแยกออบเจกตตาง ๆ ไวตามประเภท

9. มาถงตอนน แนะนาวาควรจะลบคาสงตอไปนออกไปทงหมด:

• คาสง CONNECT TO • คาสง DISCONNECT

ตอนนควรจะมสครปต 2 สครปต DDL สาหรบตาราง view ดชน(indexes) และ กฎ (Constraints) C:\express\schema.ddl

Page 199: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 199

DDL สาหรบ Triggers C:\express\triggers.ddl

10. ทาการตรวจสอบสครปตเพอนาไปใชงาน

• ลบ Comments ทไมจาเปนออก (เชน -- CONNECT TO……)

• แยก Functions และ Procedures ไวในไฟลตางหาก (การทาเชนนมประโยชนเวลาทม Functions และ Procedures มาก ๆ) อาจตองมจดกลมสงเหลานตามลกษณะของฟงกชนหรอแอพพลเคชน (เชน billing.ddl, math.ddl, stringfunc.ddl, ฯลฯ)

11. สงเกตไดวา มการใชตวอกษรพเศษเพอบอกจดสนสดของ Triggers, Functions และ Procedures (@) สงนจาเปนในการบอกขอแตกตางระหวางจดสนสดของคาสง CREATE <object> (Procedures) และจดสนสดของคาสงภายใน Procedures

Page 200: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

200 เรมตนกบ DB2 Express-C

บทท 10 – ความปลอดภยของฐานข�อมล

บทน จะอธบายถงการจดการในดานความปลอดภยใน DB2 รปท 10.1 แสดงภาพรวมพนฐาน

รปท 10.1 – ภาพรวมของความปลอดภยของ DB2 ดงในรปท 10.1 ความปลอดภยของ DB2 แบงออกเปน 2 สวน: การตรวจสอบผ�ใช�งาน(Authentication) การตรวจสอบผใชงาน เปนขนตอนทตรวจสอบวาผใชงานทอางถงเปนบคคลทมอยจรง การตรวจสอบผใชงานนน กระทาโดยระบบความปลอดภยภายนอก DB2 (โดยปกตแลว จะกระทาโดยระบบปฏบตการ วธการตรวจสอบผใชงานทางเนตเวรก หรอโปรแกรมเสรมซงสรางขนมาเฉพาะเพอใชในการตรวจสอบผใชงาน) โดย Default จะใชการตรวจสอบผใชงานโดยระบบปฏบตการ เมอใช การตรวจสอบผใชงานโดยระบบปฏบตการ รหสผใช (Userid) และรหสผาน (Password) จะถกสง ไปยงเซรฟเวอรฐานขอมล (เชน สงเปนสวนหนงของคาสงในการเชอมตอ)

Page 201: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 201

เซรฟเวอรฐานขอมล จะไปเรยกใชการตรวจสอบผใชงานของระบบปฏบตการ เพอใชในการตรวจสอบรหสผใชและ รหสผาน การกาหนดสทธ (Authorization) ในขนตอนน DB2 จะตรวจสอบวาผใชทผานการตรวจสอบผใชงานแลว สามารถดาเนนการตามท รองขอไดหรอไม ขอมลการกาหนดสทธ นนจดเกบไวใน DB2 catalog และ ในไฟล DBM configuration ตวอยางเชน ในรปท 10.1 ผใช “bob” เชอมตอกบฐานขอมล SAMPLE ดวยคาสงดงน: CONNECT TO sample USER bob USING pwd ทง “bob” และ “pwd” ถกสงใหระบบปฏบตการหรอระบบความปลอดภยภายนอก เพอทาการตรวจสอบผใชงานโดยตรวจสอบวาผใชชอ “bob” นนไดถกกาหนดไวแลวและรหสผานทไดรบ มานนสมพนธกบผใชคนนน ซงถากระบวนการนทาสาเรจ ระบบปฏบตการ จะสงตอ การควบคมดานความปลอดภยกลบไปยง DB2 ถดมา เมอผใช “bob” ประมวลผลคาสง เชน: SELECT * FROM mytable

Page 202: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

202 เรมตนกบ DB2 Express-C

ตอนน DB2 จะรบหนาทดแลเรองความปลอดภยทงหมดเพอทจะทาการตรวจสอบการกาหนดสทธ และยนยนวาผใช “bob” นนมเอกสทธ(Privilege)ในการใชคาสง SELECT บนตาราง “mytable” ถาการตรวจสอบเอกสทธลมเหลว DB2 จะสงขอความแสดง Error มฉะนน คาสงนจะไดรบการ ประมวลผลกบตาราง “mytable” หมายเหต: รายละเอยดเพมเตมเกยวกบการใชงานระบบความปลอดภยของ DB2 สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4267

10.1 การตรวจสอบผ�ใช�งาน(Authentication) ถงแมวาการตรวจสอบผใชงานทแทจรงนนจะถกกระทาโดยระบบปฏบตการหรอระบบดานความปลอดภยภายนอกอน ๆ DB2 จะกาหนดวาการตรวจสอบผใชงานนจะเกดขนทระดบใด พารามเตอร DBM CFG ชอวา AUTHENTICATION ซงถกกาหนดคาทเซรฟเวอร DB2 มคาทเปนไปไดหลายอยางตวอยางเชน เมอคาพารามเตอรนถกกาหนดเปน SERVER (ซงเปนคาเรมตน) การตรวจสอบผใชงานจะกระทาโดยระบบปฏบตการหรอร

Page 203: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 203

ะบบดานความปลอดภย ภายนอกทฝงเซรฟเวอร อยางไรกตาม ถาคา AUTHENTICATION ถกกาหนดเปน CLIENT การตรวจสอบผใชงานจะกระทาโดยระบบปฏบตการหรอระบบดานความปลอดภยภายนอกทฝง ไคลเอนต ดงแสดงในรปท 10.2

รปท 10.2 – ทซงเกดการตรวจสอบผ�ใช�งาน พารามเตอร AUTHENTICATION นนสามารถกาหนดคาไดตามคาตาง ๆ ซงไดแสดงในตารางท 10.1 คาสง คาอธบาย

SERVER (คา Default) การตรวจสอบผใชงานทาทฝงเซรฟเวอร

CLIENT การตรวจสอบผใชงานทาท

Page 204: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

204 เรมตนกบ DB2 Express-C

ฝงไคลเอนต

SERVER_ENCRYPT

ทางานคลายกบคาสง SERVER เพยงแตรหสผใชและรหสผานจะถกเขารหสลบดวย (Encrypted)

KERBEROS การตรวจสอบผใชงานทาโดยใชกลไกความปลอดภยแบบ Kerberos

SQL_AUTHENTICATION_DATAENC

การตรวจสอบผใชงานโดยเซรฟเวอร นอกจากมการเขารหสลบรหสผใชและรหสผานแลว ยงมการเขาเขารหสลบขอมลทมการสงผานดวย

SQL_AUTHENTICATION_DATAENC_CMP

ทางานคลาย SQL_AUTHENTICATION_DATAENC ในกรณททางานรวมกบ DB2 เวอรชนตากวา 8.2 จะสามารถทางานรวมกบ SERVER_ENCRYPT ไดดวย

GSSPLUGIN

การตรวจสอบผใชงานใชกลไกความปลอดภยโดยใชโปรแกรมเสรมแบบ GSS-API

ตารางท 10.1 – ค�าพารามเตอร�ของ AUTHENTICATION ทใช�ได�

Page 205: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 205

10.2 การกาหนดสทธ(Authorization) การกาหนดสทธประกอบดวยเอกสทธ (Privilege) และอานาจ (Authority) ซงเกบไวในตาราง ของระบบ (System Table) ของ DB2 และควบคมโดย DB2 เอกสทธ (Privilege) จะอนญาตใหผใชสงประมวลผลคาสงชนดเดยวกบฐานขอมล เชน CREATE, UPDATE, DELETE, INSERT ฯลฯ อานาจ (Authority) เปนบทบาททกาหนดไวใหมหลาย ๆ เอกสทธ รปท 10.3 แสดงถงความ แตกตางของอานาจและเอกสทธใน DB2

Page 206: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

206 เรมตนกบ DB2 Express-C

รปท 10.3 – อานาจและเอกสทธ

Page 207: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 207

ตารางท 10.2 แสดงถงฟงกชนตาง ๆ ทแตละอานาจสามารถกระทาได เหนไดวา SYSADM มอานาจมากทสด สวน SYSMON มอานาจนอยทสด

ฟงกชน SYSADM

SYSCTRL

SYSMAINT

SYSMON

DBADM

LOAD

UPDATE DBM CFG ได� ให�สทธหรอเพกถอนสทธ� DBADM

ได�

กาหนดหรอเปลยน SYSCTRL

ได�

กาหนดหรอเปลยน SYSMAINT

ได�

กาหนดหรอเปลยน SYSMON

ได�

บงคบผ�ใช�ออกจากฐานข�อมล

ได� ได�

สร�างหรอลบฐานข�อมล

ได� ได�

ก�คนข�อมล (Restore) ส�ฐานข�อมลใหม�

ได� ได�

UPDATE DB CFG ได� ได� ได� สารอง (Backup) ฐานข�อมลหรอเทเบลสเปซ

ได� ได� ได�

ก�คนข�อมล (Restore) ส�ฐานข�อมลทมอย�

ได� ได� ได�

Page 208: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

208 เรมตนกบ DB2 Express-C

ก�คนข�อมล (Recovery) แบบ Roll-forward

ได� ได� ได�

เรมหรอหยด Instance

ได� ได� ได�

ก�คน (Restore) เทเบลสเปซ

ได� ได� ได�

Run Trace ได� ได� ได� ได� Monitor Snapshot

ได� ได� ได�

สอบถามสถานะของเทเบลสเปซ

ได� ได� ได�

Prune log history ได� ได� ได� Quiesce เทเบลสเปซ

ได� ได� ได� ได� ได�

LOAD ข�อมลเข�าตาราง

ได� ได� ได�

ตงค�าหรอยกเลก Check Pending State

ได� ได�

สร�างหรอลบ Event Monitor

ได� ได�

ตารางท 10.2 อานาจและเอกสทธของ DB2 การใหสทธ SYSADM, SYSCTRL หรอ SYSMAINT ไปยงกลมผใช (User Group) คาพารามเตอร DBM CFG ไดแก SYSADM_GROUP, SYSCTRL_GROUP และ SYSMAINT_GROUP สามารถกาหนดใหแกกลมผใชของระบบปฏบตการ (OS User Group) ได

Page 209: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 209

ตวอยางเชน หากตองการใหอานาจแบบSYSADM แกกลมผใชของระบบปฏบตการชอ “db2admns” สามารถใชคาสงดงน

update dbm cfg using SYSADM_GROUP db2admns

แตละ Instance ของ DB2 มการกาหนดกลมอานาจของตนเอง ในวนโดวส พารามเตอรเหลานจะไมมคาตงตนกาหนดไว ซงหมายความวากลมผใชทเปนผดแล ระบบวนโดวสของเครองนน จะมอานาจเปน SYSADM ในลนกซ กลมเจาของ Instance (Instance Owner Group) จะมอานาจเปน SYSADM โดยปรยาย

10.3 อานาจ DBADM อานาจ DBADM (DataBase ADMinistrator) คอ ผใชอภสทธ (Super User) สาหรบฐานขอมล ซงไมใชอานาจระดบ Instance ดงนนจงไมกลาวถงในหวขอกอนหนาน การใหอานาจแบบ DBADM ใชคาสง GRANT ดงในตวอยางดานลาง connect to sample grant DBADM on database to user <userid>

Page 210: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

210 เรมตนกบ DB2 Express-C

ในตวอยางขางตน ขนแรก ตองเชอมตอกบฐานขอมลกอน ซงในทนคอฐานขอมล “sample” จากนนจงใหอานาจแบบ DBADM แกผใช ในการใหอานาจแบบ DBADM ผใหอานาจตอง เปนผมอานาจแบบ SYSADM หมายเหต อานาจ DBADM ไมสามารถสรางเทเบลสเปซได ถงแมวาจะเปนออบเจกตภายใน ฐานขอมล เนองจากเทเบลสเปซเกยวของกบคอนเทนเนอร(containers)และบฟเฟอรพล (หนวยความจา) ซงเปนทรพยากรทางกายภาพของระบบ

10.4 กล�มผ�ใช� PUBLIC DB2 กาหนดกลมภายใน เรยกวา PUBLIC ผใชใด ๆ ของระบบปฏบตการถอเปนสมาชกของกลมผใช PUBLIC เมอสรางฐานขอมลขน เอกสทธบางประการจะมอบใหแกกลมผใช PUBLIC โดยอตโนมต ไดแก:

• CONNECT, • CREATETAB, • IMPLICIT SCHEMA, • BINDADD

เพอการเพมความปลอดภย ขอแนะนาใหเพกถอนทกเอกสทธจากกลม PUBLIC ดงทแสดง ขางลาง

Page 211: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 211

REVOKE CONNECT ON DATABASE FROM PUBLIC REVOKE CREATETAB ON DATABASE FROM PUBLIC REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC REVOKE BINDADD ON DATABASE FROM PUBLIC

10.5 คาสงให�สทธ (GRANT) และเพกถอนสทธ (REVOKE) คาสง GRANT และ REVOKE เปนสวนหนงของมาตรฐานของภาษา SQL และใชเพอให หรอเพกถอนเอกสทธแกหรอจากผใชหรอกลมผใช ดานลางคอ ตวอยางของคาสงเหลาน การใหเอกสทธ SELECT บนตาราง T1 แกผใช USER1

GRANT SELECT ON TABLE T1 TO USER user1

การใหทกเอกสทธบนตาราง T1 แกกลมผใช GROUP1

GRANT ALL ON TABLE T1 TO GROUP group1 การเพกถอนทกเอกสทธบนตาราง T1 จากกลมผใช GROUP1

Page 212: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

212 เรมตนกบ DB2 Express-C

REVOKE ALL ON TABLE T1 FROM GROUP group1

การใหเอกสทธ EXECUTE บน Procedure p1 แกผใช USER1

GRANT EXECUTE ON PROCEDURE p1 TO USER user1

การเพกถอนเอกสทธ EXECUTE บน Procedure p1 จากผใช USER1

REVOKE EXECUTE ON PROCEDURE p1 FROM USER user1

10.6 การกาหนดสทธ(Authorization) และการตรวจสอบเอกสทธ (Privilege Checking) วธทงายทสดในการตรวจสอบการใหอานาจและเอกสทธ คอ การตรวจสอบผาน Control Center รปท 10.4 แสดงวธการเปดหนาตางโตตอบ Table Privileges ของตาราง EMPLOYEE จาก Control Center

Page 213: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 213

รปท 10.4 การเป�ดหน�าต�างโต�ตอบ Table Privileges ดงทแสดงในรปท 10.4 ใหเลอกตารางทตองการโดยการคลกขวาทตารางดงกลาว และเลอก Privileges เมอเลอกแลว หนาตางโตตอบ Table Privileges จะปรากฏขน ดงแสดงในรปท 10.5 รปนอธบายความหมายของชองรายการและองคประกอบตาง ๆ ของหนาตางโตตอบ

Page 214: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

214 เรมตนกบ DB2 Express-C

รปท 10.5 – หน�าต�างโต�ตอบ Table Privileges อกวธการหนง สามารถสอบถามจาก DB2 SYSCAT catalog views ซงเกบขอมลการใหอานาจ ตวอยางเชน ถาตองการรวาผใช DB2ADMIN ไดเอกสทธ SELECT บนตาราง T2 หรอไม และ ตองการรวาใครเปนผใหเอกสทธน สามารถประมวลผลสอบถามดงน SELECT grantor, grantee, selectauth FROM syscat.tabauth WHERE tabname = 'T2' GRANTOR GRANTEE SELECTAUTH -------------------------------------------------

Page 215: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 215

ARFCHONG DB2ADMIN Y จากตวอยางดานตน ผใช ARFCHONG เปนผใหเอกสทธ SELECT แกผใช DB2ADMIN

10.7 การพจารณาเอกสทธกล�มผ�ใช� (Group Privilege) เพอใหการจดการ DB2 งายขน ใหจดผใชรวมเปนกลมผใช(group) แลวใหเอกสทธทตองการ แกกลมเหลานน เมอกลมผใชใดไดรบเอกสทธ สมาชกในกลมนนจะไดรบเอกสทธโดยนยถายทอดผาน ทางการเปนสมาชกของกลม เมอผใชใดออกจากกลม ผใชนนจะเสยเอกสทธของกลมโดยนย แตยงคงมเอกสทธอน ๆ ทได รบมากอนหนานโดยตรง เอกสทธทผใชไดรบโดยตรง ตองถกเพกถอนจากผใชนนโดยตรง

Page 216: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

216 เรมตนกบ DB2 Express-C

ปฏบตการท 9 – การให�สทธแก�ผ�ใช� และ การเพกถอนสทธจากผ�ใช� วตถประสงค ถงขณะน ไดใชผดแล Instance (Instance Administrator Account - SYSADM) ในการ สงคาสงตางๆของฐานขอมล ผดแลนสามารถเขาถงไดทกโปรแกรมอรรถประโยชน ทกขอมล และทกออบเจกตของฐานขอมล เพราะฉะนน จงเปน สงสาคญมากในการปกปองผดแลน เพอหลกเลยงการสญเสยขอมล ทงโดยตงใจและไมตงใจ โดยทวไปแลว ควรจะสรางผใช หรอกลมผใชทมอานาจในวงจากด ในปฏบตการนจะสรางผใชงานใหมและกาหนด เอกสทธแกผใชน ขนตอน

1. เปดคอนโซล Windows Computer Management โดยการคลกขวาทไอคอน My Computer บน Desktop และเลอกเมน Manage

2. ขยาย System Toolsในทร(tree)ในชองซายของหนาตางแลวขยาย Local Users and Groupsคลกขวาท User และเลอก New User

Page 217: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 217

3. ใสขอมลตอไปนลงในหนาตางโตตอบ New User: ใส customer ลงในชองรายการ User name และใส Customer1 ลงในชองรายการ Full nameใส A typical bookstore customer ลงในชองรายการ Description ใส ibmdb2 ลงในชองรายการ Password และชองรายการ Confirm password เอาเครองหมายถกออกจากตวเลอก User must change password on next logon และคลกทปม Create เพอสรางผใชใหม

4. ตรวจใหแนใจวาไดใช Advanced View in Control Center ของ DB2 อย สามารถเปลยน ไปใช Advanced View โดยเลอกเมน Customize Control Center จากเมน Control Center Tools เลอกตวเลอก Advanced และคลกทปม OK

Page 218: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

218 เรมตนกบ DB2 Express-C

5. ขยายทรแสดงรายการใน Control Center ในชองหนาตางทางซายใหเปน All Databases > EXPRESS > Tables

6. ใหเอกสทธทตองการแกผใชทสรางขนมาใหมจากรายการตารางในฐานขอมล EXPRESS คลกขวาทตาราง CUSTOMERS และเลอก Privileges เพอแสดงหนาตางโตตอบ Table Privileges

7. คลกทปม Add User และเลอกผใช customer ทเพงสรางขน คลกทปม OK เพอปดหนาตางโตตอบ Add User

8. สงเกตไดวามผใช customer เพมเขาไปในรายการผใช แตยงไมไดรบเอกสทธใดๆ ในการใหเอกสทธ SELECT, INSERT, UPDATE, และ DELETE แกผใช ใหเปลยน แตละชอง Drop Down เปน Yesลกคาทางอนเตอรเนต ควรจะสามารถด/เพม/อพเดต/ลบ (SELECT, INSERT, UPDATE, และ DELETE) ขอมลของตนได เราไมใหสทธอนทไมจาเปนตองใชแกผใชน คลกทปม OK เพอปดหนาตางโตตอบ Table Privileges และรบการเปลยนแปลงทไดทาไป

Page 219: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 10 – ความปลอดภยของฐานขอมล 219

9. ทาซาขนตอนท 7-9 สาหรบตาราง BOOKS และ SALESสาหรบตาราง BOOKS นน ใหสทธการ SELECT เทานน เพราะลกคาไมควรจะสามารถแกไขขอมลใด ๆ ภายในรานได สาหรบตาราง SALES นน ใหสทธการ SELECT และ INSERT เทานน ลกคาไมควรมเอกสทธในการ DELETE หรอ UPDATE เพราะวา เฉพาะพนกงานของรานเทานนทจะมเอกสทธทจะแกไขรายการซอขายได

10. ใหเชอมตอเขากบฐานขอมลโดยใชรหสผใชของลกคาทสรางขนกอนหนาน ลองใชคาสง SELECT กบขอมลในตาราง customers เกดอะไรขน

Page 220: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

220 เรมตนกบ DB2 Express-C

ลองใชคาสง DELETE หรอ UPDATE กบขอมลในตาราง SALES เกดอะไรขน

ปฏบตการนสรางผใชเพยงหนงคน อยางไรกตาม แอพพลเคชนอาจมผใชหลายประเภท ใหทดลองสรางผใชอน ๆ และมอบเอกสทธใหผใชเหลานน สามารถสรางกลมของผใช และมอบเอกสทธใหกลมผใช แทนการมอบเอกสทธใหผใชแตละรายโดยตรงไดอกดวย

Page 221: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

221

บทท 11 – การเกบสารองข�อมล (Backup) และการก�คนข�อมล (Recovery)

บทนจะกลาวถงการบนทกลอก (Logging) ของฐานขอมล DB2 ทงวธการทาสาเนา (Copy) ฐานขอมลทงหมดหรอเพยงบางสวนโดยใชเครองมอ BACKUP และวธกคนขอมลโดยใชเครองมอ RESTORE หมายเหต: รายละเอยดเพมเตมเกยวกบการบนทกลอก การเกบสารองขอมล และการกคนขอมล สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4282

11.1 การบนทกลอกของฐานข�อมล (Database Logging) ระหวางการใชเครองมอแกไขขอความ (Text Editor) ทกครงทตองการเกบบนทกเอกสาร จะกดปม“บนทก (save)” ในโลกของฐานขอมล คาสง COMMIT กจะใหผลเชนเดยวกน ทกๆครงทประมวลผลคาสง COMMIT จะมนใจไดวาการเปลยนแปลงใด ๆ ทเกดขนกบขอมลนนจะไดรบการบนทกไว ณ ทใดทหนง ในทานองเดยวกน เมอทางานกบเอกสารขอความ บางครงจะเหนทมมขวาลางเปนขอความสนๆวา “บนทกอตโนมต (Auto-saving)”

Page 222: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

222 เรมตนกบ DB2 Express-C

ในโลกของฐานขอมล สงนกเกดขนเชนกน เนองจากการดาเนนการใดๆกบขอมล เชน UPDATE, INSERT หรอ DELETE จะไดรบการบนทกไว ณ ทใดทหนงเสมอ ซงคาวา “การบนทกไว ณ ทใดทหนง” กคอลอกของฐานขอมล (Database Log) นนเอง ลอกของฐานขอมลนจะเกบลงดสกและใชในการเกบบนทกของรายการธรกรรม (Transaction) ถาระบบหรอฐานขอมลลมการกคนขอมลทาโดยนาลอกเหลาน มาใชทารายการซา (Redo) สาหรบรายการธรกรรมทไดรบการยนยนไปแลว (Committed Transaction) รปท 11.1 แสดงภาพรวมของสงทเกดขนกบฐานขอมลระหวางการบนทกลอก

รปท 11.1 – การบนทกลอกของฐานข�อมล (Database Logging) ในรปท 11.1 จะเหนเทเบลสเปซ (Table Space) และลอก (Log) ทงสองสวนนจะเกบลงดสก แตมขอแนะนาวาไมควรเกบทงสองสวนนลงดสกเดยวกน

Page 223: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 223

ตวอยางเชน เมอเกดการ UPDATE ขน จะนาเพจ (Page) ทมแถว (Row) ทสนใจเขาสบฟเฟอรพล (หนวยความจา) การเปลยนแปลงคาตาง ๆ จะทาในบฟเฟอรพล โดยทงคาเกาและคาใหมจะถกเกบในไฟลลอก ซงในบางครงจะบนทกลงไฟลทนท และบางครงจะบนทกเมอบฟเฟอรของลอกเตม แตถามการใชคาสง COMMIT หลงจากคาสง UPDATE ทงคาเกาและคาใหมจะเกบในไฟลลอกทนท กระบวนการนเกดขนซา ๆ สาหรบคาสง SQL อน ๆ อกมากมายททากบฐานขอมล ยกเวนในกรณทตรงตามเงอนไขบางประการ เชน เมอถงคา Threshold ของจานวนเพจ (Page) ทมการเปลยนแปลง ตามทกาหนดในพารามเตอร CHNGPGS_THRES เพจในบฟเฟอรพลเหลานนจะถก“สงออก” หรอบนทกลงในดสกของเทเบลสเปซ พารามเตอร CHNGPGS_THRES น เปนตวบงชถงเปอรเซนตของเพจของบฟเฟอรพลท มการเปลยนแปลง (dirty page) ในแงของประสทธภาพแลว เปนการไมสมเหตสมผลหากตองเขยน 2 ครงในแตละคาสง COMMIT ทใช โดยทงเขยนลงลอก และลงบนดสกของเทเบลสเปซ นนกคอเหตผลหลกทเราจะ“สงขอมลออก”ไปยงดสก เฉพาะเมอคาของพารามเตอรอยางเชน “CHNGPGS_THRES” ถงกาหนด

Page 224: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

224 เรมตนกบ DB2 Express-C

11.2 ชนดของลอก (Types of Logs) ลอกแบงไดเปน 2 ชนด ไดแก ลอกปฐมภม (Primary Log) เปนลอกทมการจองพนทกอน จานวนของลอกปฐมภมกาหนดโดยคา LOGPRIMARY ของพารามเตอร db cfg ลอกทตยภม (Secondary Log) มการจดสรรแบบพลวต (Dynamic) เมอ DB2 ตองการ

จานวนสงสดของลอกแบบทตยภมกาหนดโดยคา

LOGSECOND ของพารามเตอร db cfg

การจดสรรพนทสาหรบลอกแบบพลวตนน

จะทาใหเซรฟเวอรมงานเพมในการทจะตองสรางลอก

ดงนนสาหรบการปฏบตการโดยทวไปนนควรพยายามใชทก

อยางภายใตจานวนลอกปฐมภมทมการจองพนทไวแลว

ไฟลลอกทตยภมจะถกลบทง

เมอการเชอมตอทงหมดกบฐานขอมลสนสด

การลงบนทกลอกแบบไมจากด (Infinite Logging) สามารถทาไดโดยตงคา LOGSECOND

Page 225: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 225

เปน -1 อยางไรกตามไมแนะนาใหใชวธนเพราะอาจใชพนทเกบขอมลของระบบไปจนหมดกได

11.3 ชนดของการลงบนทกลอก (Types of Logging) มการลงบนทกลอกอย 2 แบบ คอ การลงบนทกลอกแบบเวยน (Circular Logging) ซงเปน default และการลงบนทกลอกแบบถาวร (Archive Logging)

11.3.1 การลงบนทกลอกแบบเวยน (Circular Log-ging) รปท 11.2 แสดงวธการทางานของการลงบนทกลอกแบบเวยน

รปท 11.2 – การทางานกบลอกปฐมภม (Primary Logs) และลอกทตยภม (Secondary Logs) ในรปท 11.2 มลอกปฐมภม 3 ลอก สามารถมองไดวาคา LOGPRIMARY ไดตงเปน 3 ในตวอยางน สมมตวามธรกรรม (Transaction) เกดขนเพยงรายการเดยว

Page 226: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

226 เรมตนกบ DB2 Express-C

ระหวางธรกรรมนนกาลงดาเนนไป จะเรมมการบนทกลงพนทในไฟลลอก P1 และ P2 ตามลาดบ ถามการยนยน (Commit) เกดขน และหลงจากทมการสงขอมลออกไปยงดสกของเทเบลสเปซแลว ดงนน P1 และ P2 จะถกเขยนทบได เนองจากขอมลในไฟลลอกนนไมจาเปนสาหรบการกคนกรณระบบลม (crash recovery) อกตอไป (ซงจะมการพดถงรายละเอยดเหลานตอไปในภายหลง) ในทางกลบกน ถาการดาเนนธรกรรมนนเปนธรกรรมทยาว(long transaction) โดยไดมการใชทง พนทลอก P1 P2 และ P3 ไปแลว แตยงคงตองการพนทลอกเพมขนอก เนองจากธรกรรมนนไมไดถกยนยน (commit) ดงนนลอกทตยภม (S1 ดงรป) จะถกจดสรรขนแบบพลวตแทน ถาธรกรรมนนยงคงดาเนนไปเรอยลอกทตยภมกจะถกจดสรรเพมขนไปจนกระทงถงคาสงสดท ระบไวใน LOGSECOND แตถายงตองการลงบนทกลอกเพมขนอกผใชกจะไดรบขอความแสดงความผดพลาด (Error) วาลอกเตมแลว และรายการธรกรรมกจะทายอนกลบ (Rollback)

11.3.2 การลงบนทกลอกแบบถาวร (Archival Logging) หรอการเกบรกษาลอก(Log Retain) ในการลงบนทกลอกแบบถาวร จะไมเขยนทบไฟลลอกแตจะเกบไฟลลอกในรปแบบออนไลนหรอออฟไลน ลอกถาวรแบบออนไลนนนจะถกเกบอยกบไฟลลอกแบบแอคทฟ (Active Log) ซงจาเปนตองใชในการกคนเมอระบบลม(crash

Page 227: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 227

recovery) สวนลอกถาวรแบบออฟไลน จะถกยายไปเกบทสออน เชน เทป เปนตน ซงการลงบนทกลอกแบบนสามารถทาไดดวยรทน USEREXIT การเปดใชงานการลงบนทกลอกแบบถาวรนน สามารถทาไดโดยการตงคา LOGRETAIN ของพารามเตอร db cfg เปน YES โดยทวไปแลว การลงบนทกลอกแบบถาวร จะใชมากกบระบบทใชงานจรง (production systems) และเนองจากมการเกบไฟลลอกเหลาน ทาใหสามารถกคนฐานขอมลกลบคนมาถงสถานะทไฟลลอกทลาสดทเกบไวได ดวยการลงบนทกลอกแบบถาวรนเอง ททาให DBA สามารถกคนและแกไขสงผดพลาดทเกดจากมนษย(human er-

ror)ไดในระดบหนง ยกตวอยางเชน ถาผใชระบบเรมดาเนนธรกรรมทผดพลาดบางอยางซงกนเวลานานหลายวน แตเมอมาพบปญหาในภายหลง DBA กสามารถกคนระบบกลบสสภาพเดมทเปนกอนทจะมการดาเนนธรกรรมทผดพลาดนนได อยางไรกตาม อาจมบางสงทตองจดการดวยมอ (manual manipulation) เพอทจะดาเนนธรกรรมนนใหมอกครงใหถกตอง การลงบนทกลอกแบบถาวรน เปนสงทจาเปนสาหรบการกคนแบบไปขางหนา (Roll Forward Recovery) และการเกบสารองขอมลแบบออนไลน (On-line Backup) รปท 11.3 แสดงถงกระบวนการลงบนทกลอกแบบถาวร

Page 228: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

228 เรมตนกบ DB2 Express-C

รปท 11.3 – การลงบนทกลอกแบบถาวร (Archive Logging)

11.4 การลงบนทกลอกของฐานข�อมล จาก Control Center สามารถตงคาในการลงบนทกลอกของฐานขอมลจาก Control Center โดยการคลกขวาบนฐานขอมลทตองการและเลอก “Configure Database Logging” ดงแสดงในรปท 11.4

Page 229: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 229

รปท 11.4 – การตงค�าในการลงบนทกลอกของฐานข�อมลจาก Control Center รปท 11.5 ตวชวย Database Logging ซงสามารถเลอกทจะลงบนทกลอกแบบเวยน (Circular Logging) หรอลงบนทกลอกแบบถาวร (Archival Logging) กได

Page 230: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

230 เรมตนกบ DB2 Express-C

รปท 11.5 – ตวช�วย Database Logging

11.5 พารามเตอร�ของการลงบนทกลอก (Logging Parameters) พารามเตอรของ DB CFG ทเกยวของกบการลงบนทกลอกนนมดวยกนหลายตว ตารางท 11.1 แสดงพารามเตอรหลก พารามเตอร�

คาอธบาย

logbufsz ปรมาณของหนวยความจาทใชเปนบฟเฟอรเกบขอมลลอกกอนเขยนลงลอกบนดสก

logfilsz ขนาดของแตละลอกในจานวนของเพจขนาด 4KB

Page 231: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 231

logprimary

จานวนของลอกปฐมภมในขนาดของ logfilsz ทสรางขน

logsecond

จานวนของไฟลลอกทตยภมทสรางและใชสาหรบการกคน ถาตองการ

logpath/newlogpath

สถานท (Path) ทใชเกบลอกแบบแอคทฟ และสถานทใหม (Path) ทใชเกบลอกถาวรในอนาคต

mirrorlogpath

เพอเปนการปองกนความเสยหายทเกดกบลอกในทเกบไฟลลอกหลก (Primary Log Path) ในกรณดสกเกดขดของหรอเกดการลบไฟลทงโดยบงเอญ สามารถระบใหเกบลอกทเหมอนกนทกประการเพมขนอกหนงชดในทเกบไฟลลอกสารอง(Secondnary/Mirror Log path)

loghead ชอของไฟลลอกทยงใชงานอยในปจจบน (currently active)

userexit เปดใชงานโปรแกรม userexit ใหทาสาเนาลอกในลกษณะออฟไลนได

softmax กาหนดความถในการทา soft check-point ซงจะชวย DB2 ในการกาหนดไฟลลอกทจะตองใชในการทาโปรเซส crash recovery

logretain

เปดใชงานโหมดการลงบนทกลอกแบบถาวร

overflowlogpath

คลายกนกบตวเลอก OVERFLOW LOG PATH ของคาสง ROLLFORWARD เพยงแตตงคาพารามเตอรนครงเดยวแทนการระบตวเลอก OVERFLOW LOG PATH กบทกๆคาสง Rollforward

Page 232: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

232 เรมตนกบ DB2 Express-C

blk_log_dsk_ful

ใชตงคาเพอปองกนการแจงขอความขอผดพลาดทเกดจากดสกเตม (Disk Full Error) ในกรณท DB2 ไมสามารถสรางไฟลลอกใหมในทเกบลอกแบบแอคทฟได ดวยวธน DB2 จะพยายามสรางไฟลลอกขนมาทก ๆ 5 นาท จนกวาจะสามารถสรางไดสาเรจ ในระหวางน คาสง SQL ทอานขอมลเพยงอยางเดยว (Read-Only) จะไมถกปดกน (Unblocked) ยงสามารถทางานตอไปได

max_log เปอรเซนตของพนทเกบลอกแบบแอคทฟสงสดตอรายการธรกรรม

num_log_span

จานวน ของไฟลลอกแบบแอคทฟสาหรบ 1 active UOW (Unit of Work)

ตารางท 11.1 – 1 พารามเตอร�ของการลงบนทกลอก (Logging Parameters)

11.6 การเกบสารองฐานข�อมล (Database Backup) คาสงเกบสารองขอมล (Backup) ของ DB2 ทาใหทาสาเนาแบบ Snapshot ของฐานขอมล ณ เวลาทสงใหเกบสารองขอมลได ไวยากรณทงายทสดของคาสงนกคอ BACKUP DATABASE <ชอฐานขอมล> [ TO <path> ] คาสงและโปรแกรมอรรถประโยชนสวนใหญ สามารถทางานไดทงแบบออนไลนและออฟไลน

Page 233: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 233

คาสงแบบออนไลน หมายความวาวาอาจมผใชเชอมตอหรอปฏบตการอยางหนงอยางใดกบฐานขอมล ในขณะทเรยกใชคาสงนน คาสงแบบออฟไลน หมายความวาไมมผใชใด ๆ เชอมตอกบฐานขอมลในขณะทเรยกใชคาสงนน เพอใหทาคาสงแบบออนไลนใหเพมคยเวรด ONLINE ในคาสงนน มฉะนนจะถอวาใชคาสงนนในแบบออฟไลน ตวอยางเชน ถาตองการทเกบสารองฐานขอมล sample ไปยง Path C:\BACKUPS สามารถใชคาสงตอไปนจาก DB2 Command Window หรอ ลนกซ เชลล db2 BACKUP DB sample TO C:\BACKUPS หมายเหต ตองม C:\BACKUPS

อยในสารบบกอนทจะเรยกใชคาสงน นอกจากนตองใหแนใจดวยวาไมมการเชอมตอกบฐานขอมลในขณะทเรยกใชคาสง มเชนนนจะไดรบขอความ Error เนองจากการเกบสารองขอมลแบบออฟไลนจะทาไมไดถามการเชอมตอกบฐานขอมล เพอตรวจสอบวามการเชอมตอกบฐานขอมลตาง ๆ ใน Instance หนงอยหรอไม ใหใชคาสงตอไปนจาก DB2 Command Window หรอ ลนกซ เชลล db2 list applications

Page 234: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

234 เรมตนกบ DB2 Express-C

เพอบงคบใหปดการเชอมตอทกอยางกบฐานขอมลใน Instance หนง ใหใชคาสงตอไปนจาก DB2 Command Window หรอ ลนกซ เชลล db2 force applications all ไมควรใชคาสงนในสภาวะแวดลอมทใชงานจรงทมผใชจานวนมาก ไมเชนนน จะไดรบโทรศพทตอวาจากเพอนรวมงานทกาลงทางานอย หมายเหต คาสงสดทายนประมวลผลแบบไมประสานเวลา (Asynchronous) ซงหมายความวา ถาพยายามประมวลผลคาสงเกบสารองขอมลหลงจากนทนท อาจจะยงไมสามารถทางานได ใหรอสกพก และใชคาสงเกบสารองขอมลซาถาไดรบขอผดพลาด (Error) ในครงแรก หลงจากประมวลผลคาสงเกบสารองขอมลสาเรจแลว ไฟลใหมทเกบขอมลสารองนนจะถกสรางขน ชอของไฟลนจะเปนไปตามรปแบบแสดงในรปท 11.6

รปท 11.6 – รปแบบการตงชอไฟล�ข�อมลสารอง Type “0” หมายถงการเกบสารองขอมลแบบสมบรณ (Full Backup)

Page 235: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 235

Type “3” หมายถงการเกบสารองขอมลเฉพาะเทเบลสเปซเทานน คาโหนด (Node) ไดตงคาตายตวไวเปน NODE0000 สาหรบฐานขอมลทไมมการแบงสวน (Non-Partitioned) ซงเปนแบบททกเอดชน(edition)ของ DB2 ใช ยกเวน DB2 Enterprise Edition ทมคณลกษณะ DPF คา Catalog Node ไดตงคาตายตวไวเปน CATN0000 เชนกน โปรดดทคมอ DB2 สาหรบรายละเอยดเพมเตม เมอมการเกบขอมลสารองหลายชดไวใน Path เดยวกน คาตรงเวลา (Timestamp) ทอยทายชอไฟลจะใชในการบอกความแตกตางระหวางขอมลสารองนได จะไดพบในหวขอตอไปวา คาสง RESTORE สามารถใช Timestamp นในการคนสภาพขอมลจากขอมลสารองทตองการ

Page 236: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

236 เรมตนกบ DB2 Express-C

ปฏบตการท 10 – (Scheduling) การเกบสารองข�อมล วตถประสงค ถงแมวา DB2

จะสามารถจดการบารงรกษาฐานขอมลไดโดยอตโนมต

แตในบางครงคณอาจตอง

ปรบแตงจดการฐานขอมลเมอมกจกรรมบางอยางเกดขน

ในปฏบตการนจะสรางกาหนดการทปรบแตงสาหรบการเก

บสารองขอมลแตละคนสาหรบ

ฐานขอมล Express ขนตอน

1. จากทรแสดงรายการใน Control Center เลอก Control Center => All Databases คลกขวาทฐานขอมลEXPRESS แลวเลอกBackupจะเปดทางานตวชวย Backup .

2. หนา Introduction ของตวชวย จะสรปสถานะปจจบนของฐานขอมลรวมถง

Page 237: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 237

เวลาทเกบสารองขอมลลาสดและวธการลงบนทกลอก กดปม Next เพอไปยงหนาถดไปของตวชวย

3. ในหนา Image ของตวชวย เลอกทเกบไฟลขอมลสารอง โดยทวไปแลว จะเลอกดสกทตางจากดสกทเกบฐานขอมลอย สาหรบปฏบตการน ใหสรางโฟลเดอรใหม บนสารบบ (File System) เรยกวา C:\db2backup และระบโฟลเดอรนนเปนทเกบขอมลสารอง คลกท Add แลวเลอกโฟลเดอรทเพงสรางขน แลวคลกปม OK คลกทปม Next เพอไปยงหนาถดไป ของตวชวย

4. สามารถสารวจสงตางๆในหนา Options และหนา Performance แตตวเลอกโดยปรยาย มกจะเพยงพอแลวเพราะวาDB2จะพยายามทาการเกบขอมลสารองอตโนมตดวยตวเลอกทเหมาะสมทสดอยแลว ไปยง หนากาหนดการ (Schedule) เมอสารวจเรยบรอยแลว

5. ในหนา Schedule ถา Scheduler ยงไมมการเปดใช ใหเลอก Enable Scheduler ตอนนเลย เลอกระบบเพอสราง tools catalog และสราง Tools Catalog ใหมขนระบ schema สาหรบ Tools Catalog และเลอกทจะสรางในฐานขอมล EXPRESS ทมอย Tools Catalog จะเกบ metadata ทเกยวกบ Scheduled Tasks ทงหมดไว กดทปม OK เพอทาขนตอไป กดปม Next เพอไปยงหนาถดไปของตวชวย เมอ tools catalogไดถกสรางขน

Page 238: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

238 เรมตนกบ DB2 Express-C

6. ในหนา Schedule เลอกสรางกาหนดการสาหรบประมวลผลงาน กาหนดการ เกบสารองขอมล จะประมวลผลทกวน โดยเรมเมอเวลา 01.00 น. กดท ปมNext เพอไปยงหนาถดไป

Page 239: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 239

Page 240: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

240 เรมตนกบ DB2 Express-C

7. ในหนาสรป (Summary) สามารถตรวจทานงานตามกาหนดการ (Scheduled Tasks) ทจะ สรางขน เมอ ตรวจทานเรยบรอยแลว กดปม Finish เพอสรางงานขน

8. เปด Task Center เพอดหรอปรบเปลยน งานเกบสารองขอมลทเพงสรางขนใหม

Page 241: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 241

11.7 การก�คนฐานข�อมล (Database Recovery) การกคนขอมล เปนการทาใหฐานขอมลกลบคนสสภาพใชงานไดดงเดมจากไฟลขอมลสารองและ/หรอไฟลลอก ถาเพงทาการคนสภาพจากฐานขอมลสารอง เทากบเปนการสรางฐานขอมลขนมาใหม ใหมสภาพเหมอน ณ เวลาเมอตอนทาการสารองขอมลนน ในกรณทมการเปดใชงานการลงบนทกแบบถาวรกอนทจะมการเกบสารองขอมล จะสามารถคนสภาพฐานขอมลจากทงขอมลสารองและจากขอมลลอกไดดวย จะไดเหนในหวขอตอไปวาการกคนแบบไปขางหนา (Roll-Forward Recovery) สามารถคนสภาพฐานขอมลจากขอมลสารอง และจากนนใชไฟลลอกในการดาเนนการตอไปขางหนา (Roll-Forward) จนจบลอก หรอเพยงถง ณ เวลาหนงกได หมายเหต “กคน” (“recovery”) จะใช บอยในหวขอน แตคาสงทใช ในการกคนน คอคาสง RESTORE’

11.7.1 ประเภทของการก�คน (Recovery Types) การกคนม 3 ประเภท � การก�คน จากสภาพล�มหรอการเรมใหม� (Crash or Restart Recovery)

Page 242: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

242 เรมตนกบ DB2 Express-C

สมมตวากาลงทางานอยบนคอมพวเตอรซงทารายการธรกรรมในฐานขอมล DB2 อย ทนใดนน กระแสไฟฟาเกดขดของ หรอมคนทาปลกหลดโดยบงเอญ อะไรจะเกดขนกบฐานขอมล ครงตอไปเมอเปดคอมพวเตอร และเรมใชงาน DB2 การกคนฐานขอมลจากสภาวะลมจะเกดขนโดยอตโนมต ในการกคนจากสภาวะลม DB2 จะประมวลผลคาสง RESTART DATABASE โดยอตโนมต พรอมทงอานและทาซาหรอทายอน (Redo/Undo) รายการธรกรรมโดยพจารณาจากลอกแบบแอคทฟ (Active Logs) เมอคาสงนประมวลเสรจ จะมนใจไดวาฐานขอมลนจะอยในสถานะทสอดคลองกน (Consistent) อะไรกตามทมการยนยน (Committed) จะไดรบการบนทก (Saved) และอะไรกตามทยงไมมการยนยน (Uncommitted) จะไดรบการทายอนกลบสสภาพเดม (Rollback)

� Version or image recovery (การก�คนแบบ version หรอ image) การกคนประเภทนเปนการคนสภาพจากขอมลสารองเทานน ดงนนฐานขอมลจะกลบส สภาพเหมอนกบฐานขอมล ณ เวลาททาการเกบสารองฐานขอมล สวนรายการธรกรรมใดททากบฐานขอมลหลงจากการเกบสารองขอมลเสรจสนไปแลว กจะสญหายไป

� การก�คนแบบ Roll-forward (Roll forward-recovery)

Page 243: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 243

ในการกคนประเภทน ไมเพยงแตคนสภาพ จากขอมลสารองเทานน แตยงประมวลผลคาสง ROLLFORWARDเพอดาเนนการประมวลผลตามขอมลลอกไปบนขอมลสารองตออกดวย จะไดสามารถกสถานะของฐานขอมลไปยง ณ เวลาทตองการได การกคนขอมลประเภทนชวยทาใหการสญหายของขอมลลดนอยลง

11.7.2 การคนสภาพฐานข�อมล (Database Restore) ใชคาสง RESTORE เพอกคนฐานขอมลกลบมาจากไฟลขอมลสารอง ไวยากรณทงายทสดของคาสงนกคอ RESTORE DATABASE <dbname> [from <path>] [taken at <timestamp>] ตวอยางเชน ถามไฟลขอมลสารองของขอมลตวอยาง ดวยชอน

สามารถใชคาสงดงน RESTORE DB sample FROM <path> TAKEN AT 20060314131259

Page 244: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

244 เรมตนกบ DB2 Express-C

11.8 การทางานอนๆกบคาสง BACKUP และ RESTORE รายการตอไปนเปนสงทสามารถทาไดดวยคาสง BACKUP และ RESTORE สวนรายละเอยดเพมเตม สามารถอานทบทวนไดจากคมอ DB2

• เกบสารองฐานขอมลใน 32-bit Instance และ คนสภาพฐานขอมลใน 64-bit instance

• คนสภาพขอมลบนฐานขอมลทมอย • การใชการคนสภาพแบบ Redirect (Redirected Restore) เมอคนสภาพสระบบทมจานวนดสกตางจากทระบไวในไฟลขอมลสารอง

• เกบสารองหรอคนสภาพเฉพาะเทเบลสเปซ แทนทจะทาทงฐานขอมล สามารถเกบสารองขอมลทงแบบสวนตาง (Delta) และแบบสะสมเพม (Incremental) ได โดยการสารองแบบสวนตาง (Delta Backup) จะบนทกเพยงเฉพาะสวนทเปลยนแปลงในระหวางการเกบสารองในแตละรอบเทานน เชน ถาทา full backup วนอาทตย แลวทาการสารองแบบสวนตางวนจนทร จะทาการสารองขอมลทเปนสวนตางจากวนอาทตยถงวนจนทร แลวทาการสารองแบบสวนตางวนองคาร จะทาการสารองขอมลทเปนสวนตางจากวนจนทร ถงวนองคาร

ขณะทการสารองแบบสะสมเพม (Incremental Backup) จะบนทกสวนทเปลยนแปลงทงหมดจาก

Page 245: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 11 – การเกบสารองขอมล (Backup) และการกคนขอมล (Recovery) 245

full backup เชน ถาทา full backup วนอาทตย แลวทาการสารองแบบสะสมเพมวนจนทร จะทาการสารองขอมลทเปนสวนตางจากวนอาทตยถงวนจนทร แลวทาการสารองแบบสะสมเพมวนองคาร จะทาการสารองขอมลทเปนสวนตางจากวนอาทตยถงวนองคาร

• การเกบสารองจาก Flash Copy (ตองมฮารดแวรใชไดสาหรบงานน)

• คนสภาพตารางทลบทงไป (ถาทางเลอกนเปดใชงานสาหรบตารางน)

• การเกบสารองจากแพลตฟอรมหนง (เชน วนโดวส) และคนสภาพไปยงอกแพลตฟอรมหนง (เชน ลนกซ ) ไมสามารถทาได ใช db2look และ db2move สาหรบสถานการณน

Page 246: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 247: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

247

12 บทท 12 – งานบารงรกษา

บทนจะกลาวถงงานทจาเปนตอการบารงรกษาฐานขอมลใหคงสภาพดอยเสมอ แนวทางโดยรวมใน DB2 คอการดาเนนงานเหลานโดยอตโนมต เชนเดยวกบทกเอดชนของ DB2 เวอรชนปจจบน DB2 Express-C กจะมความสามารถในการจดการแบบอตโนมตนดวย ความสามารถในการจดการตนเองนเปนประโยชนอยางยงสาหรบบรษทขนาดเลกและขนาด กลางทไมสามารถจางผดแลระบบฐานขอมลแบบเตมเวลามาจดการเครองแมขายขอมลได ในทางกลบกน ในกรณทมผดแลระบบฐานขอมล ผดแลระบบฐานขอมลจะมเวลามากขนเพอทจะดาเนนงานทซบซอน ซงทาใหบรษท ไดประโยชนมากยงขน หมายเหต: รายละเอยดเพมเตมเกยวกบงานบารงรกษา สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4302

12.1 คาสง REORG, RUNSTATS, REBIND ใน DB2 มงานบารงรกษาหลก ๆ อยดวยกน 3 งาน ดงแสดงในรปท 12.1 ไดแก REORG, RUNSTATS และ REBIND

Page 248: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

248 เรมตนกบ DB2 Express-C

รปท 12.1 – งานบารงรกษา : REORG, RUNSTATS, REBIND รปท 12.1 แสดงงานบารงรกษาททาในแบบเวยน ถามการเรยกใชคาสง REORG มขอแนะนาใหใชคาสง RUNSTATS ตามดวยคาสง REBIND ดวย เมอเวลาผานไประยะหนง ตารางในฐานขอมลจะเรมมการเปลยนแปลงไป เนองจากคาสง UPDATE, DELETE และ INSERTจากนน วงจรจะเรมใหมอกครงดวยคาสง REORG

12.1.1 คาสง REORG เมอเวลาผานไป ขอมลจะเรมมการเกบกระจดกระจายไปตามหนา(pages)ตาง ๆ ของฐานขอมลมากขนเรอย ๆ เนองจากการใชคาสง INSERT, UPDATE และ DELETE คาสง REORG จะทาหนาทเรยกเนอทไรประโยชนเหลานนกลบคนมา

Page 249: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 249

และยงทาการจดระเบยบขอมลใหมเพอใหการคนคนขอมลมประสทธภาพมากยงขนและตารางท มการเปลยนแปลงบอยๆ จะไดรบประโยชนสงสดจากคาสง REORG สามารถใชคาสง REORG กบดชน (Index) ไดเชนเดยวกบตาราง นอกจากน คาสง REORG ยงสามารถทาไดทงแบบออนไลนหรอออฟไลน การใชคาสง REORG แบบออฟไลน จะทาไดเรวและมประสทธภาพมากกวา แตจะไมอนญาตใหมการเขาถงตารางจากภายนอกได แตในขณะทการใชคาสง REORG แบบออนไลน อนญาตใหเขาถงตารางได แตอาจใชทรพยากรของระบบมาก วธน จงเหมาะกบตารางเลกๆมากกวา ไวยากรณ�

REORG TABLE <ชอตาราง> ตวอย�าง: REORG TABLE employee คาสง REORGCHK สามารถใชกอนคาสง REORG เพอตดสนใจวาจะตองมการปรบหรองานบารงรกษากบตารางหรอดชนหรอไม

12.1.2 คาสง RUNSTATS DB2 Optimizer เปนดง“มนสมอง” ของDB2 โดยทมนจะหาเสนทางเขาถงขอมลทมประสทธภาพทสดในการหาทอยและคนคนขอมล

Page 250: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

250 เรมตนกบ DB2 Express-C

Optimizerเปนระบบทคานงถงตนทนในการประมวลผลของระบบและใชสถตของขอมลในฐานขอมลทเกบในตาราง Catalog เพอใหไดประสทธภาพของฐานขอมลสงสด ตวอยางเชนตาราง Catalog จะเกบคาสถตเกยวกบจานวนคอลมนและแถวทมอยในตาราง รวมทงจานวนและประเภทของดชนทตารางม และอน ๆ ขอมลสถตเหลานจะไมมการปรบใหเปนปจจบนแบบ Dynamic หรออตโนมต การออกแบบเชนนเปนการจงใจ เนองจากไมตองการให DB2 ทาการปรบสถตของฐานขอมลทกครงทมการเรยกใชคาสงบนฐานขอมล เพราะจะกอใหเกดผลเสยตอประสทธภาพโดยรวมของฐานขอมล ฉะนน DB2 จงมคาสง RUNSTATS ใหเรยกใช เมอตองการปรบขอมลสถตใหเปนปจจบน ทงนเราควรระลกอยเสมอวาเปนสงจาเปนมากสาหรบคาสถตทเปนปจจบน DB2 Optimizer สามารถเลอกเสนทางในการเขาถงขอมลไดอยางแตกตางกนมาก ระหวางกรณท optimizer คดวาในตารางมขอมลเพยง 1 แถว กบในกรณตารางทมขอมล 1 ลานแถว เมอคาสถตเปนปจจบน DB2 กจะสามารถเลอกเสนทางในการเขาถงขอมลทดขนได ความถของการปรบคาสถตนนดไดจากความถของการเปลยนแปลงขอมลในตาราง ไวยากรณ�

RUNSTATS ON TABLE <schema.ชอตาราง>

Page 251: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 251

ตวอย�าง: RUNSTATS ON TABLE myschema.employee

12.1.3 BIND / REBIND หลงจากทประมวลผลคาสง RUNSTATS เสรจเรยบรอยแลว ไมใชวาทกๆคาสงสอบถาม (Query) จะใชขอมลสถตลาสด แผนการเขาถงขอมลของ SQL แบบสถต (Static) จะกาหนดเมอมการใชคาสง BIND ดงนนสถตทใชในการคดแผนการเขาถงขอมลขณะทใชคาสง BIND นน อาจแตกตางจากสถตในปจจบน รปท 12.2 ชวยอธบายความคดน

รปท 12.2 – แสดงโพรเซสการ Bind ของ SQL แบบสถต (Static) ในรปท 12.2 มการพรคอมไพลโปรแกรมภาษาซแบบ Embedded (จดเกบเปนไฟลนามสกล “sqc” )

Page 252: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

252 เรมตนกบ DB2 Express-C

หลงจากการพรคอมไพลแลว 2 ไฟลถกสรางขนมาคอ ไฟล “.c” ซงมรหสภาษาซ โดยบรรทดทเปนคาสง SQL จะถกใสเปนคอมเมนทไว และไฟล “.bnd” ซงประกอบดวยคาสง SQL ขางตนทงหมดไฟลภาษาซทมนามสกลเปน“.c” จะถกคอมไพล ดวยคอมไพเลอรภาษาซตามปกต โดยจะสราง“ไลบราร” ดงแสดง ณ มมบนขวาในรป ไฟล“.bnd” กจะมการ Bind เชนเดยวกน โดยจะสรางเปนแพคเกจเกบไวในฐานขอมล การทา Binding จะเทยบเทากบการคอมไพลคาสง SQL โดยมการกาหนดแผนการเขาถงขอมลทดทสด โดยดจากคาสถตทมอยในขณะนน จากนนจะเกบไวในแพคเกจ ตอนน จะเกดอะไรขน ถามการเพมขอมลจานวน 1 ลานแถวเขาไปในตารางทคาสง SQL ในโปรแกรมภาษาซแบบ Embedded นใช หลงจากการเพมขอมลใหมเขาไปแลว ถามการใชคาสง RUNSTATS จะทาใหคาสถตตมการปรบใหเปนปจจบน อยางไรกตาม แพคเกจจะไมปรบปรงเพอคานวณเสนทางเขาถงขอมลใหมโดยใชคาสถตลาสดโดยอตโนมต คาสง db2rbind สามารถใช Rebind ทกแพคเกจทมอยทงหมดโดยใชคาสถตลาสดได ไวยากรณ�

db2rbind database_alias -l <logfile>

Page 253: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 253

ตวอย�าง: เพอ Rebind ทกแพคเกจของฐานขอมล sample และบนทกผลการประมวลผลลงในไฟล mylog.txt ใหใชคาสงดงน:

db2rbind sample -l mylog.txt

12.1.4 งานบารงรกษาจาก Control Center จาก Control Center สามารถใชคาสง REORG และ RUNSTATS ได รปท 12.3 แสดงวธการทา

รปท 12.3 – REORG และ RUNSTATS จาก Control Center

Page 254: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

254 เรมตนกบ DB2 Express-C

เลอกตารางทตองการ จากนนคลกขวาและเลอก Reorganize (สาหรบ REORG) หรอเลอก Run Statistics (สาหรบ RUNSTATS) มมมองดาเนนการของฐานข�อมล เมอเลอกฐานขอมลแลว มมมองดาเนนการของฐานขอมล ทมมลางขวาของControl Center จะแสดงขอมลทเกยวของกบฐานขอมลนน เชน ขนาด เวลาทมการเกบสารองขอมลครงลาสด ไดตงระบบบารงรกษาอตโนมตหรอไม ฯลฯ นอกจากน view นยงทาใหสามารถเหนไดอยางรวดเรววาฐานขอมลตองการบารงรกษาอะไรบาง รปท 12.4 แสดงถงขอมลน

Page 255: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 255

รปท 12.4 – Operational View ของฐานข�อมลจาก Control Center

12.2 ทางเลอกในการบารงรกษา การบารงรกษาฐานขอมลแบงไดเปน 3 ทางเลอก 1. การบารงรกษาดวยมอ (manual maintenance) ทากจกรรมบารงรกษาดวยมอ เมอมความจาเปน

2. สรางสครปตในการทาการบารงรกษา

Page 256: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

256 เรมตนกบ DB2 Express-C

สามารถสรางสครปตโดยใชคาสงในการบารงรกษาและจดกาหนดการ (Schedule) ประมวลผลสครปตอยางสมาเสมอ

3. การบารงรกษาโดยอตโนมต (Automated Maintenance) ให DB2 ดแลบารงรกษาใหโดยอตโนมต (ดวยคาสง REORG RUNSTATS และ BACKUP)

ในสวนนจะเนนในสวนของการบารงรกษาโดยอตโนมต การบารงรกษาโดยอตโนมตประกอบดวยสวนตาง ๆ ดงน

- ผใชจะกาหนด กรอบเวลาท จะทาการบารงรกษา ซงมกเปนชวงเวลาทสามารถจดการกบฐานขอมลไดอยางราบรนทสดตวอยางเชน ถามการใชระบบนอยทสดในทกวนอาทตยชวง 2.00 น. ถง 4.00 น. จะเลอกใชกรอบเวลานในการบารงรกษาฐานขอมล

- กรอบเวลาทใชโดยทวไป แบงไดเปน 2 ชนดคอกรอบเวลาสาหรบงานออนไลน และกรอบเวลาสาหรบงานออฟไลน

- DB2 จะทาการบารงรกษาโดยอตโนมต เมอม ความจาเปนและอยในชวงเวลา กรอบเวลาทกาหนดเทานน

จาก Control Center สามารถเรยกใชตวชวย Configure Automated Maintenance ไดดงแสดงในรปท 12.5

Page 257: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 257

รปท 12.5 – การเรยกใช�ตวช�วย Configure Auto-mated Maintenance รปท 12.6 แสดงตวชวย Configure Automated Maintenance

Page 258: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

258 เรมตนกบ DB2 Express-C

รปท 12.6 – ตวช�วย Configure Automated Maintenance

Page 259: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 259

ปฏบตการท 11 – การปรบแต�งระบบบารงรกษาอตโนมต วตถประสงค ในปฏบตการน เพยงไมกขนตอนกจะ สามารถปรบแตงระบบบารงรกษาอตโนมตบน DB2 ฐานขอมล Sample ได ขนตอน

1. จากทรแสดงรายการใน Control Center คลกขวาท SAMPLE ฐานขอมลแลวเลอก Configure Automatic Maintenance จากเมน จากนนตวชวย Configure Automatic Maintenance จะเปดทางานขนมา

2. หนา Introduction ของตวชวย จะแสดงคาการบารงรกษาแบบอตโนมตทเปนอยปจจบนถาสรางฐานขอมลโดยเลอกการบารงรกษาแบบอตโนมตแสดงวาการบารงรกษาแบบอตโนมต ไดรบการจดการเรยบรอยแลว สามารถใชตวชวยนในการตงคาการบารงรกษาแบบอตโนมตใหม กดปม Next เพอไปยงหนาถดไปของตวชวย

3. หนา Type ของตวชวย จะใหเลอกระหวาง ยกเลก การบารงรกษาอตโนมตทงหมดหรอเปลยนแปลง การตงคาการบารงรกษาอตโนมตใหเลอกออพชนเพอ

Page 260: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

260 เรมตนกบ DB2 Express-C

เปลยนแปลงตงคาการบารงรกษาแบบอตโนมตในปจจบนกดปม Next

4. หนาTiming ของตวชวย จะใหระบกรอบเวลาแบบอตโนมตในปจจบนตงคากรอบเวลาแบบOfflineเปนทกคนวนเสารและอาทตย ในชวงตงแตเทยงคนถงหกโมงเชาดงแสดงใหเหนดานลาง กดปม Change ทอยดานขางของ Offline Maintenance Window และเลอกชวงเวลาทตองการ หลงจากระบคาทจาเปนแลว กดปม OK เพอกลบไปยงตวชวย ปลอย Online Maintenance Window ไวเหมอนเดม (การบารงรกษาแบบออนไลนสามารถเกดขน ณ เวลาใดกได)กดปม Next

Page 261: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 261

5. บนหนา Notification สามารถใสขอมลการตดตอในกรณทการบารงรกษาอตโนมตลมเหลวใหขามขนตอนนไปกอน กดปม Next

6. บนหนา Activities สามารถเลอกทจะใหกจกรรมแตละอยางทางานโดยอตโนมตหรอไมเปนอตโนมต รวมทงเลอกทจะใหมการแจงใหทราบเมอเกดกจกรรมกได ในตวอยางนใหเลอกทชอง Automate และ ใหยกเลกทชอง notify ทกรายการกดปม Next

Page 262: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

262 เรมตนกบ DB2 Express-C

7. กอนทจะดาเนนการตอไป ควรจะตงคาระบตาแหนงการเกบสารองฐานขอมล โดยปกตแลว ควรจะเกบขอมลสารองในดสกทตางจากดสกเกบขอมลเพอปองกนกรณดสกเกดขดของ disk failure. จากหนา Activities ใหเลอก Backup database option จากนนกดปม Configure Settings

8. ในแถบ Backup Criteriaของหนาตางโตตอบ Configure Settings ใหเลอกBalance Database Recoverability with Performanceในแถบ Backup Location ใหเลอกทเกบสารองขอมลทมอย จากนนกดปมChangeใหระบทเกบทตางจากเดมเพอเกบสารองขอมล (ตรวจใหแนใจวามพนทเหลอพอในดสกนน)ในแถบ Backup Mode ตรวจใหแนใจวา Offline Backup ไดเลอกไว กดทปม OK เพอปดแถบ Backup Criteria กดปม Next

9. หนา Summary page ของ Configure Automated Maintenance เปนการสรปสงทไดเลอกไว กดปม Finish เพอยนยนและสงปฏบต

Page 263: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 263

บทท 13 – การทางานพร�อมกน(Concurrency) และการใช� Lock

บทนจะกลาวถงวธในการใหผใชงานหลายคนเขาใชงานฐานขอมลเดยวกนพรอมกน โดยไมใหเกดการรบกวนซงกนและกน และยงคงรกษาความสอดคลองของการทางานไวไดจะกลาวถงแนวคดของธรกรรม (Transaction) ,การทางานพรอมกน และ Locking หมายเหต: รายละเอยดเพมเตมเกยวกบการทางานพรอมกนและการใช Lock สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4322

13.1 ธรกรรม (Transactions) ธรกรรมหรอหนวยของงาน (unit of work) ประกอบดวยคาสง SQL ตงแตหนงคาสงขนไป เมอประมวลผล จะพจารณาเปนหนวยของงานชนเดยวกน ถามหนงคาสงในธรกรรมเกดลมเหลว คาสงทงหมดในธรกรรมนนจะถอวาลมเหลวไปดวยและจะดาเนนการยอนกลบ (Rollback) ธรกรรมรายการหนงจะถอวาจบสนดวยคาสงยนยน (Commit) ซงถอเปนจดเรมตนของธรกรรมรายการใหม รปท 13.1 แสดงตวอยางธรกรรม

Page 264: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

264 เรมตนกบ DB2 Express-C

รปท 13.1 –ตวอย�างธรกรรม ในตวอยางรปท 13.1 ตองการโอนเงน 100 ดอลลารจากบญชเงนฝากไปยงบญชกระแสรายวน อาจเกดลาดบเหตการณขนดงน ถอนเงน 100 ดอลลารจากบญชเงนฝาก ฝากเงน 100 ดอลลารเขาบญชกระแสรายวน ถาลาดบเหตการณขางตนไมถอเปนหนงหนวยของงาน (Unit of Work) หรอหนงธรกรรม จนตนาการถงสงซงจะเกดขนถาเกดไฟฟาขดของหลงจากทมการถอนเงนจากบญชเงนฝากแต กอนการฝากเงนเขาบญชกระแสรายวนผลกคอจะสญเสยเงน 100 ดอลลาร

13.2 การทางานพร�อมกน(Concurrency) การทางานพรอมกนหมายถงการทผใชงานหลายคนสามารถทางานกบขอมลเดยวกนบนฐานขอมล ณ เวลาเดยวกนได DB2

Page 265: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 265

ไดรบการออกแบบมาใหเปนฐานขอมลสาหรบผใชงานพรอมกนหลายคน (Multi-User)การเขาถงขอมลตองมการประสานงานอยางเหมาะสมและโปรงใส (Transparent) โดยใชกลไกใหเกดความมนใจในความถกตองสมบรณ (Integrity) และความสอดคลอง (Consistency) ของขอมลพจารณารปท 13.2 เปนตวอยาง

รปท 13.2 –แสดงตวอย�างของการทางานพร�อมกน และความจาเป�นทต�องมการควบคมการทางานพร�อมกน (Concurrency Control) จากรปท 13.2 ม 4 โปรแกรมประยกตคอ App A, App B, App C และ App D ซงตองการเขาถงขอมลแถวเดยวกน (แถวท 2) ในตาราง ถาปราศจากการควบคมการทางานพรอมกนโปรแกรมประยกตทงหมดยงสามารถดาเนนการบนขอมลแถวเดยวกนได สมมตใหโปรแกรมประยกตทงหมดทาการปรบปรงขอมลอายของแถวท 2 ดวยคาอายทแตกตางกน โปรแกรมประยกตทไดทาการปรบปรงขอมลเปนตวสดทายจะถอวาเปน“ผชนะ”ในสถานการณน เหนไดชดวา จากตวอยางขางตน จาเปนตองมการความคมการทางานพรอมกน เพอรบประกนความสอดคลองของผลลพธในงานททา การทางานพรอมกนจะขนอยกบการใช Lock

Page 266: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

266 เรมตนกบ DB2 Express-C

แนวคดเรองการใช Lock และการทางานพรอมกนมความเกยวเนองซงกนและกน การใช Lock จะหยดโปรแกรมประยกตอนชวคราวจากการดาเนนการจนกวาโปรแกรมประยกตหนงจะทางานเสรจสนลง ยงมการใช Lock ในระบบมากเทาไหร ยงจะเปนการลดการทางานพรอมกนไดมากเทานน ในทางกลบกน หากมการใช Lock ในระบบนอยลง การทางานพรอมกนจะมมากขน Lock จะเกดขนอตโนมตเพอรองรบธรกรรมทเกดขน และจะทาการปลดปลอยเมอการทางานของธรกรรมนนสนสดลง (การปลดปลอยอาจเนองมาจากมการใชงานคาสง COMMIT หรอ ROLLBACK) Lock สามารถเกดไดกบตารางหรอแถว ประเภทพนฐานของ Lock ม 2 ประเภท:

- Lock แบบใชรวมกน (Shared Lock – S lock)– เกดขนเมอโปรแกรมประยกตตองการอานขอมลปองกนไมใหโปรแกรมประยกตอน ปรบปรงขอมลในแถวเดยวกน

- Lock แบบใชคนเดยว (Exclusive Lock – X lock) – เกดขนเมอโปรแกรมประยกตทาการปรบปรง เพม หรอลบแถวขอมล

พจารณารปท 13.3 ซงมความคลายคลงกบรปท 13.2 เพยงแตมการแสดง Lock

Page 267: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 267

รปท 13.3 –ตวอย�างของการทางานพร�อมกน และความจาเป�นทต�องม Lock จากตวอยางในรปท 13.2 ถา App B เปนโปรแกรมประยกตแรกทเขาถงขอมลในแถวท 2 และกาลงดาเนนการปรบปรงขอมล App B จะครอบครอง Lock แบบใชคนเดยว (X lock) บนแถวนน เมอ App A, App C และ App D พยายามทจะเขาถงขอมลในแถวเดยวกนกบ App B จะไมสามารถทาการปรบปรงขอมลได เพราะเกดLock แบบใชคนเดยว บนแถวขอมลนน การควบคมนกอใหเกดความสอดคลอง (Consistency) และความสมบรณ (Integrity) ของขอมล

13.3 ป�ญหาเมอปราศจากการควบคมการทางานพร�อมกน เมอปราศจากการควบคมการทางานพรอมกนอาจทาใหเกดปญหาเหลานตามมา � การปรบปรงขอมลทสญเปลา (Lost Update) � การอานขอมลทไมไดรบการยนยน (Uncommitted Read)

� การอานขอมลททวนซาไมได (Non-repeatable Read)

Page 268: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

268 เรมตนกบ DB2 Express-C

� การอานขอมลเงา (Phantom Read)

13.3.1 การปรบปรงทสญเปล�า (Lost Update) ในสวนนจะอธบายถงปญหาในการปรบปรงทสญเปลา ซงกคอปญหาทโปรแกรมประยกตตวใดททาการปรบปรงขอมลเปนตวสดทายจะถอวาเปน “ผชนะ” ในการทาการปรบปรงขอมล

รปท 13.4 – การปรบปรงทสญเปล�า (Lost Up-date) จากรปท 13.4 มโปรแกรมประยกต�สองโปรแกรมทพยายามเข�าไปปรบปรงข�อมลในแถวเดยวกน โปรแกรมประยกต�ทางซ�ายมอคอ App1 และโปรแกรมประยกต�ทางขวามอคอ App2 ลาดบเหตการณ�ทเกดขนเป�นดงน

1. App1 ปรบปรงขอมลในแถว 2. App2 ปรบปรงขอมลในแถวเดยวกน 3. App1 ยนยนการปรบปรง 4. App2 ยนยนการปรบปรง

Page 269: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 269

App1 จะสญเสยขอมลทปรบปรงไป เมอ App2 ทาการปรบปรงขอมล สงนเองทเรยกวาการปรบปรงทสญเปลา “(Lost Update)”

13.3.2 การอ�านข�อมลทไม�ได�รบการยนยน (Uncom-mitted Read) การอานขอมลทไมไดรบการยนยน (Uncommitted Read) หรอการอานขอมลทมการแกไข “(dirty read)” ปลอยใหโปรแกรมประยกตอานขอมลทยงไมไดรบการยนยน ดงนนขอมลทอานไดอาจไมถกตอง

รปท 13.5 – การอ�านข�อมลทไม�ได�รบการยนยน (Un-committed Read) จากรปท 13.5 สามารถแสดงลาดบเหตการณไดดงน

Page 270: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

270 เรมตนกบ DB2 Express-C

1. App1 ปรบปรงขอมลในแถว 2. App2 อานขอมลใหมจากแถวท App1 ทาการปรบปรง

3. App1 ทาการปรบปรงยอนกลบขอมลในแถวทไดทาการปรบปรงไปแลว(rollback)

App2 อานขอมลทไมไดรบการยนยน ซงถอเปนขอมลทไมถกตอง สงนเองทเปนปญหาทเรยกวาการอานขอมลทไมไดรบการยนยน “(uncommitted read)”

13.3.3 การอ�านข�อมลททวนซาไม�ได� (Non-repeatable Read) การอานขอมลททวนซาไมได (Non-repeatable Read) หมายความวาไมสามารถไดผลลพธทเหมอนเดมถาประมวลผลการอานขอมลดวยคาสงเดม

รปท 13.6 – การอ�านข�อมลททวนซาไม�ได� (Non-repeatable Read)

Page 271: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 271

พจารณาจากรปท 13.6 ถาตองการจองเทยวบนจาก Dallas ไปยง Honolulu ลาดบเหตการณทเกดขนเปนดงน

1. App1 เปดตวชตาแหนง (Cursor) หรอทเรยกวาชดผลลพธ (Result Set) ทไดจากสงทแสดงในรปท 13.6

2. App2 ลบแถวขอมลซงมอยในตวชตาแหนงของ App1 (เชน แถวทคา Destination เปน “San Jose”)

3. App2 ยนยนการเปลยนแปลงขอมล 4. App1 ปดตวชตาแหนง แลวเปดตวชตาแหนงใหมอกครง

จากกรณนจะเหนวา ในการอานซาอกครงของ App1 ไมสามารถไดคาขอมลทเหมอนเดม ทาให App1 ไมสามารถผลตผลตชดขอมลทเหมอนเดมได สงนเองทเปนปญหาทเรยกวาการอานขอมลททวนซาไมได “(non-repeatable read)”

13.3.4 การอ�านข�อมลเงา (Phantom Read) การอานขอมลเงา (Phantom Read) เปนปญหาทมความคลงกบการอานขอมลททวนซาไมได แตความแตกตางจะอยทผลลพธทไดตามมาโดยจะไดผลลพธครงใหมทมจานวนแถวทมากกวา เดม แทนทจะนอยกวาเดม รปท 13.7 แสดงตวอยางทเกดจากปญหาน

Page 272: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

272 เรมตนกบ DB2 Express-C

รปท 13.7 – การอ�านข�อมลเงา (Phantom Read) จากรปท 13.7 สามารถแสดงลาดบเหตการณไดดงน

1. App1 เปดตวชตาแหนง(cursor) 2. App2 เพมแถวลงในฐานขอมล ซงอยในตวชตาแหนงของ App1

3. App2 ยนยนการเปลยนแปลงขอมล 4. App1 ปดตวชตาแหนง แลวเปดตวชตาแหนงใหมอกครง

จากกรณนจะเหนวา ในการอานซาอกครงของ App1 จะไมสามารถไดคาขอมลทเหมอนเดม โดย App1 จะไดชดขอมลทมจานวนแถวมากกวาเดม สงนเองทเปนปญหาทเรยกวาการอานขอมลเงา “(phantom read)”

13.4 ระดบ Isolation คณสามารถคดถงระดบ Isolation เปนนโยบายการใช Lock ซงทาใหพบเหนพฤตกรรมทแตกตางกน

Page 273: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 273

สาหรบการใช Lock ดวยโปรแกรมประยกต ขนอยกบระดบ Isolation ทเลอกใช DB2 ไดใหระดบของการปองกนทแตกตางกน ของIsolation: � การอานขอมลทไมไดรบการยนยน (Uncommitted Read - UR)

� การอานขอมลแบบ Cursor Stability - CS � การอานขอมลแบบ Read Stability - RS � การอานขอมลททวนซาได (Repeatable Read - RR)

13.4.1 การอ�านข�อมลทไม�ได�รบการยนยน (Uncom-mitted Read) การอานขอมลทไมไดรบการยนยน (Uncommitted Read) นนรจกกนในอกชอหนงคอ dirty read โดยทการอานขอมลทไมไดรบการยนยน (Uncommitted Read) เปนระดบตาทสดของระดบ Isolation และใหระดบของการทางานพรอมกน (degree of concurrency) ทสงทสดในการอานขอมล (read operations) จะไมมการใช Lock ระดบแถว (Row Lock) นอกจากวามโปรแกรมประยกตอนพยายามทจะลบ (drop) หรอปรบเปลยน (alter) ตารางนน และสาหรบการปรบปรงขอมล(update) นนจะทางานเหมอนกบการใช ระดบ Isolation แบบ Cursor Stability ปญหาทอาจเกดขนไดเมอใชระดบ Isolation นคอ � การอานขอมลทไมไดรบการยนยน (Uncommitted Read)

Page 274: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

274 เรมตนกบ DB2 Express-C

� การอานขอมลททวนซาไมได (Non-repeatable Read)

� การอานขอมลเงา (Phantom Read) ปญหาทระดบ Isolation นสามารถปองกนไดคอ � การปรบปรงขอมลทสญเปลา (Loss of Update)

13.4.2 การอ�านข�อมลแบบ Cursor Stability Cursor Stability เปนDefault ของระดบ Isolationเปนการใช Lock ในระดบตาโดยพนฐานแลวระดบ Isolation น ขอมลแถวปจจบนทมตวชตาแหนงจะม Lock อย ถามการอานแถวขอมลเทานน Lock จะคงอยจนถงเมอมการนาขอมลแถวใหมมา หรอหนวยของงานจบสนลง ถามการปรบปรงแถวขอมล Lock จะคงอยตลอดไป จนกวาหนวยของงานจะจบสนลง ปญหาทอาจเกดขนไดเมอใชระดบ Isolation นคอ � การอานขอมลททวนซาไมได (Non-repeatable Read)

� การอานขอมลเงา (Phantom Read) ปญหาทระดบ Isolation นสามารถปองกนไดคอ � การปรบปรงขอมลทสญเปลา (Loss of Update) � การอานขอมลทไมไดรบการยนยน (Uncommitted Read)

Page 275: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 275

13.4.3 การอ�านข�อมลแบบ Read Stability ดวยการใช Read Stability นน โปรแกรมประยกตจะม Lock บนทกแถวขอมลทไดรบมาภายในหนงหนวยของงาน กรณมการใชตวชตาแหนงจะม Lock บนขอมลทกแถวทเปนสวนหนงของชดผลลพธ ตวอยางเชนถามตารางทมขอมล 10,000 แถว และการสอบถามคนคามา 10 แถว ดงนนเฉพาะ 10 แถวนเทานนทจะม Lock อย Read Stability เปนการใช Lock ในระดบปานกลาง ปญหาทอาจเกดขนไดเมอใชระดบ Isolation นคอ � การอานขอมลเงา (Phantom Read) ปญหาทระดบ Isolation นสามารถปองกนไดคอ � การปรบปรงขอมลทสญเปลา (Loss of Update) � การอานขอมลทไมไดรบการยนยน (Uncommitted Read)

� การอานขอมลททวนซาไมได (Non-repeatable Read)

13.4.4 การอ�านข�อมลททวนซาได� (Repeatable Read) Repeatable Read เปนระดบ Isolation ระดบสงสดเปนการใช Lock ในระดบสงสด และมระดบการทางานพรอมกนทตาทสด Lock จะคงอยกบทกแถวทถกนามาประมวลผลเพอใหไดชดผลลพธ

Page 276: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

276 เรมตนกบ DB2 Express-C

ดงนนแถวทไมอยในชดผลลพธสดทายอาจม Lock ได ไมมโปรแกรมประยกตอนใดทสามารถปรบปรง ลบ หรอเพมแถวทจะมผลกระทบตอชดผลลพธจนกวาหนวยของงานจะทาจนเสรจสมบรณ Repeatable Read รบประกนวาการสอบถามทเหมอนเดมในหนวยของงานเดม จะใหผลลพธเหมอนกนทกครง ปญหาทอาจเกดขนไดเมอใชระดบ Isolation นคอ � ไมม ปญหาทระดบ Isolation นปองกนไดคอ � การปรบปรงทสญเปลา (Loss of Update) � การอานขอมลทไมไดรบการยนยน (Uncommitted Read)

� การอานขอมลททวนซาไมได (Non-repeatable Read)

� การอานขอมลเงา (Phantom Read)

13.4.5 การเปรยบเทยบระดบ Isolation รปท 13.8 เปรยบเทยบความแตกตางของระดบ Isolation สาหรบการนาขอมลมา (Fetch) จากรปจะเหนไดวาระดบ Isolation แบบ Uncommitted Read (UR) นนไมมการใช Lock ระดบ Isolation แบบ Cursor Stability (CS) นนจะไดรบ Lock สาหรบแถวท 1 ขณะทนาขอมลมา (Fetching) แตจะทาการปลดปลอยทนททนาขอมลแถวท 2 มา โดยเปนเชนนไปเรอย ๆ สาหรบ ระดบ Isolation แบบ Read Stability (RS) หรอ

Page 277: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 277

Repeatable Read (RR) ขอมลทกแถวทนามาจะม Lock และคงอยจนกวาจะจบธรกรรม (ซงเปนจดยนยน)

รปท 13.8 – การเปรยบเทยบระดบ Isolation สาหรบการนาข�อมลมา (Fetch)

13.4.6 การกาหนดค�าระดบ Isolation ระดบ Isolation สามารถกาหนดไดหลายระดบชน: � ระดบชน Session หรอระดบชนโปรแกรมประยกต � ระดบชนการเชอมตอ (Connection) � ระดบชนคาสง (Statement) โดยปกตแลวระดบ Isolation จะกาหนดไวทระดบชน session หรอ ระดบชนโปรแกรมประยกต ถาหากไมไดมการกาหนด ระดบ Isolation ไวในโปรแกรมประยกต Cursor stability จะเปนคาโดยปรยายตวอยางเชน ตารางท

Page 278: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

278 เรมตนกบ DB2 Express-C

13.1 แสดงใหเหนถงระดบ Isolation ทเปนไปไดสาหรบโปรแกรม .NET หรอ JDBC ทเทยบเทากบระดบ Isolation ของ DB2

DB2 .NET JDBC Uncommitted Read (UR)

ReadUncommitted

TRANSACTION_READ_UNCOMMITTED

Cursor Stability (CS)

ReadCommitted

TRANSACTION_READ_COMMITTED

Read Stability (RS)

RepeatableRead

TRANSACTION_REPEATABLE_READ

Repeatable Read (RR)

Serializable

TRANSACTION_SERIALIZABLE

ตารางท 13.1 การเปรยบเทยบคาศพท�ทใช�ระบระดบ Isolation ระดบ Isolation ระดบชนคาสง (Statement) สามารถตงคาไดโดยการใช WITH {} ตวอยาง SELECT ... WITH {UR | CS | RS | RR} สถานการณตวอยาง โปรแกรมประยกตตองการทจะนบจานวนแถวทงหมดในตารางอยางหยาบ ๆ ประสทธภาพ(performance)เปนสงทสาคญทสด ระดบ

Page 279: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 279

Isolation แบบ Cursor Stability เปนทตองการ ยกเวนบางคาสงของ SQL SELECT COUNT(*) FROM tab1 WITH UR สาหรบ Embedded SQL ระดบ Isolation จะกาหนด ณ เวลา Bind สวน Dynamic SQL นน ระดบ Isolation จะกาหนด ณ เวลาประมวลผล (Run Time) การเลอกใชระดบ Isolation นนขนกบโปรแกรมประยกต ถาโปรแกรมประยกตไมตองการรจานวนทแนนอนเหมอนในตวอยางขางตน ใหเลอกใช UR ถาโปรแกรมประยกตตองการการควบคมทรดกมกบขอมล ใหเลอกใช RR

13.5 การยกระดบ Lock (Lock Escalation) ทก Lock ทเกดจาก DB2 มการใชหนวยความจาในการจดการ lock เมอสวนปรบปรงประสทธภาพ (optimizer) คดวาจะเปนการดกวาทจะม Lock ระดบตาราง (Table Lock) ตวเดยวทงตาราง แทนทจะม Lock ระดบแถว (Row Lock) หลายแถว สงนเองทาใหเกดการยกระดบ Lock สามารถแสดงตวอยางไดตามรปท 13.9

Page 280: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

280 เรมตนกบ DB2 Express-C

รปท 13.9 – แสดงการยกระดบ Lock (Lock Esca-lation) มพารามเตอรหลกสองตวทเกยวของกบการยกระดบ Lock � LOCKLIST – คอขนาดหนวยความจา (ใน หนวยของเพจขนาด 4K) ทจองไว เพอใชในการจดการ Lock สาหรบทกโปรแกรมประยกตทงหมดทเชอมตอเขามา คา default 50 เพจทมขนาดเพจละ 4K (คดเปน 200 K)บนระบบปฏบตการวนโดวส

� MAXLOCKS – คอรอยละสงทสดของ Lock ทมใหใชไดตอหนงโปรแกรมประยกตคาโดยปรยายคอรอยละ 22

Page 281: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 281

ดงนนถาใชคา default การยกระดบ Lock จะเกดขนเมอโปรแกรมประยกตหนงตองการพนทบนหนวยความจาไวใชในจดการ lock มากกวา 44K (200 K * 22% = 44K) ถาเกดการยกระดบ Lock บอยเกน ควรจะปรบเปลยนการตงคา ควรจะปรบเปลยนการตงคาโดยเพมคาของ LOCKLIST และ MAXLOCKS การยกระดบ Lock สงผลเสยตอประสทธภาพของระบบ เพราะจะลดระดบการเกดการทางานพรอมกน ไฟล Diagnostic Log ของ DB2 (db2diag.logซงอยใน C:\Program Files\IBM\SQLLIB\DB2 ) สามารถบอกไดวาเกดการยกระดบ Lock ขนหรอไม

13.6 การเฝ�าสงเกต Lock (Lock Monitoring) สามารถเฝาสงเกตการใช Lock ไดโดยการใช Application Lock Snapshot ของ DB2 สามารถเปด Snapshot สาหรบ Lock ไดโดยใชคาสงน UPDATE MONITOR SWITCHES USING LOCK ON หลงจากใชคาสงนแลว ขอมลเฝาสงเกตจะถกเกบรวบรวมไว สามารถเรยกดรายงานการใช Lock ในเวลาใด ๆ โดยใชคาสงน GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENTID <handle>

Page 282: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

282 เรมตนกบ DB2 Express-C

รปท 13.9 แสดงผลลพธตวอยางการใชงาน Application Lock Snapshot

รปท 13.9 – Application Lock Snapshot

13.7 การรอคอย Lock (Lock Wait) เมอมโปรแกรมประยกตตงแตสองโปรแกรมขนไปตองการดาเนนการบนออบเจกตเดยวกน โปรแกรมประยกตอยางนอยหนงตวนนอาจตองรอคอย Lock ทตองการตอไป โปรแกรมประยกตจะรอคอยอยางไมมกาหนดโดยปรยาย

Application Lock Snapshot

Snapshot timestamp = 11-05-2002

00:09:08.672586

Application handle = 9 Application ID =

*LOCAL.DB2.00B9C5050843

Sequence number = 0001

Application name = db2bp.exe

Authorization ID = ADMINISTRATOR Application status = UOW Waiting

Status change time = Not Collected

Application code page = 1252

Locks held = 4

Total wait time (ms) = 0

List Of Locks Lock Name = 0x05000700048001000000000052

Lock Attributes = 0x00000000

Release Flags = 0x40000000

Lock Count = 255

Hold Count = 0 Lock Object Name = 98308

Object Type = Row Tablespace Name = TEST4K

Table Schema = ADMINISTRATOR

Table Name = T2

Mode = X

Page 283: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 283

เวลาในการรอคอย Lock ของโปรแกรมประยกตจะถกควบคมโดยพารามเตอร LOCKTIMEOUT คาโดยปรยายของพารามเตอรนคอ -1 (รอคอยอยางไมมกาหนด) สามารถตงคาใหมการรอคอย Lock สาหรบการเชอมตอหนงไดทเรจสเตอร CURRENT LOCK TIMEOUT โดยปรยาย เรจสเตอรนจะตงคาไวเปนคาของ LOCKTIMEOUT ใช�คาสง SET LOCK TIMEOUT เพอเปลยนแปลงคาน เมอมการตงคารจสเตอร ไวสาหรบการเชอมตอหนงแลวคานนจะคงอยตลอดทกธรกรรมไป ตวอยาง SET LOCK TIMEOUT=WAIT n

13.8 สาเหตการเกดและการตรวจหา Deadlock Deadlock เกดขนเมอมโปรแกรมประยกตตงแตสองตวขนไปทเชอมตอกบฐานขอมลเดยวกนรอคอยอยาง ไมมกาหนดเพอใชทรพยากรหนง การรอคอยนไมสามารถจบลงไดเนองจากแตละโปรแกรมทรอคอยอยตางถอครองทรพยากร ทอกฝายหนงตองการ Deadlock เปนเรองเกยวกบการออกแบบโปรแกรมประยกตโดยสวนใหญรปท 13.10 แสดงการเกด Deadlock

Page 284: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

284 เรมตนกบ DB2 Express-C

รปท 13.10 – สถานะการณ� Deadlock ในรปท 13.10 ผใช A กาลงถอกลองธญพช และจะไมทาอะไรจนกวาจะไดนมมาใส อกฝงหนง ผใช B กาลงถอกลองนม และจะไมทาอะไรจนกวาจะไดกลองธญพช ดงนนจะเกด Deadlock สามารถจาลองการเกด Deadlock ใน DB2 ดงน 1. เปด Command Window ของ DB2 สองหนาตาง (เรยก “CLP1” และ “CLP2” ตามลาดบ) เพอเปนตวแทนของโปรแกรมประยกตสองตวทเชอมตอไปยงฐานขอมล

2. ทหนาตาง CLP1 พมพคาสงดงน: db2 connect to sample db2 +c update employee set firstnme = 'Mary' where empno = '000050'

Page 285: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 285

ขนแรกจะทาการเชอมตอกบฐานขอมล SAMPLE และใชคาสงปรบปรงแถวทม “empno = 000050” ในตาราง employee “+c” option ในคาสงคาสงนคอการกาหนดไมให DB2 Command Window ทาการยนยนคาสงแบบอตโนมต เจตนาทาเชนนเพอยงคงถอ Lock ไว

3. ทหนาตาง CPL2 พมพคาสงดงน db2 connect to sample db2 +c update employee set firstnme = 'Tom' where empno = '000030' ในหนาตางของ CLP2 ซงถอวาเปนตวแทนของโปรแกรมประยกตทสอง จะทาการเชอมตอฐานขอมล SAMPLE อกเชนกน แตจะทาการปรบปรงแถวอนในตาราง employee

4. ทหนาตาง CLP1 พมพคาสง db2 +c select firstnme from employee where empno = '000030'

หลงจากกด Enter เพอเรมกระทาการตามคาสง SELECT ขางตน คาสง SELECT จะเหมอนวาคางอยไมไดรบการดาเนนการ ซงความจรงแลวคาสง SELECT ไมไดรบการดาเนนงาน แตเปนการรอคอยการปลดปลอย Lock โดย CLP2 ในขนตอนท 3 จากจดน ถา LOCKTIMEOUT

Page 286: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

286 เรมตนกบ DB2 Express-C

ถกปลอยใหเปนไปตามคาโดยปรยายซงเปน -1 โปรแกรมประยกต CLP1 จะตองรอคอยตลอดไป

5. ทหนาตาง CLP2 พมพคาสง db2 +c select firstnme from employee where empno = '000050'

จากคาสง SELECT ขางตน ทาใหเกด Deadlock คาสง SELECT นกเหมอนจะไมไดรบการดาเนนการ แตในความเปนจรงกคอกาลงรอคอยการปลดปลอยตวทถก Lockทโดย CLP1 ถอครองในขนตอนท 2

จากเหตการณ Deadlock ขางตน DB2 จะตรวจสอบคาพารามเตอร DLCHKTIMEพารามเตอรน ใชเพอตงระยะเวลาทจะไปตรวจสอบ Deadlockตวอยางเชนถาพารามเตอรนถกตงคาไวท 10 วนาท DB2 จะคอยตรวจสอบทก ๆ 10 วนาทวาม Deadlock เกดขนหรอไม ถาเกด Deadlock จรง DB2 จะใชขนตอนวธภายในเพอพจารณาวาจะใหธรกรรมใดดาเนนการยอนกลบ (Rollback) หรอใหธรกรรมใดดาเนนการตอไป ถาเกด DeadLock บอย ควรกลบไปตรวจสอบธรกรรมทมอยอกครง และทาการปรบเปลยนโครงสรางเทาทจาเปน

Page 287: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 13 – ภาวะพรอมกน (Concurrency) และการใช Lock 287

13.9 วธปฏบตทดทสดต�อการเกดการทางานพร�อมกนและการใช� Lock สงทจะแสดงใหดตอไปนเปนเคลดลบเพอจดการการเกดการทางานพรอมกนทคดวาดทสด: 1. รกษาใหธรกรรมมการทางานใหสนทสดเทาทจะเปนได สงนจะทาไดโดยใชคาสง COMMIT บอยๆ (แมจะเปนธรกรรมทมแตการอานขอมลเพยงอยางเดยวกตาม) เทาทโปรแกรมประยกตจะยอมใหม

2. บนทกขอมลลอก(log transaction)ของการทาธรกรรมเทาทจาเปน

3. ลบขอมลออกอยางรวดเรว โดยใชคาสง: ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE

4. ดาเนนการเปลยนแปลงขอมลเปนแบบกลมตวอยางเชน DELETE FROM ( SELECT * FROM tedwas.t1 WHERE c1 = … FETCH FIRST 3000 ROWS ONLY)

5. ใชคณลกษณะการจดการการทางานพรอมกนในเครองมอ DB2 Data Movement Tools

6. ตงคาพารามเตอร LOCKTIMEOUT ในระดบฐานขอมล (ระยะเวลาทแนะนา ใหอยระหวาง 30-120

Page 288: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

288 เรมตนกบ DB2 Express-C

วนาท)อยาปลอยใหเปนคาโดยปรยายซงมคา -1 สามารถใช Lock Timeout ระดบ Session ไดดวย

7. อยาดงขอมลมามากเกนความจาเปนตวอยางเชนควรใชคาสง FETCH FIRST n ROWS ONLY ระบเพมเตมลงในคาสง SELECT

Page 289: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

289

ส�วนท 3 – การศกษา: การพฒนาแอพพลเคชน

ในสวนท 3 ของหนงสอเลมน จะกลาวถงการออกแบบแอพพลเคชนออบเจกต (objects) ตางๆ ในฐานขอมล ไดแก stored procedures, user-defined functions (UDFs) และ triggers

Page 290: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

290 เรมตนกบ DB2 Express-C

หมายเหต: คณสามารถเรยนรวธการเขยนโปรแกรมในหลายภาษาดวยการใช DB2 เปน data server โดยการศกษาจากตวอยางทมมาใหใน DB2 server installation ทอยในโฟลเดอรชอ SQLLIB\samples

รปดานลางแสดงตวอยางโปรแกรมภาษาจาวา(Java)ท DB2 กาหนดมาใหในระบบปฏบตการวนโดวส

ตวอย�างโปรแกรมจาวาซงมาพร�อมกบ DB2

Page 291: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

291

14 บทท 14 – SQL PL Stored Procedures

ในบทน จะกลาวถง stored procedure store procedure คอ แอพพลเคชนออบเจกตของฐานขอมลซงสามารถ เกบรวบรวมคาสงSQLและ business logicไว การเกบสวนของ application logic ในฐานขอมลเพอใหการทางานดขน ซงทาใหจานวนของ network traffic ระหวาง แอพพลเคชน กบฐานขอมลลดลง Stored procedures ทาการเกบโคดรวมไวทสวนกลาง ทาใหแอพพลเคชนอนๆ สามารถใช procedure เดยวกนได Stored procedures ของ DB2 สามารถถกเขยนไดดวย SQL PL, C/C++, Java, Cobol, ภาษาทรองรบ CLR (Common Language Runtime)และ OLE ในบทน จะเนนท SQL PL procedures เนองจากเปนทนยมและใชงานงาย รปท 14.1 แสดงการทางานของ stored proce-dures

Page 292: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

292 เรมตนกบ DB2 Express-C

รปท14.1 – การลดลงของ Network traffic ด�วย stored procedures ดานบนทางซายมอของรป คณจะมองเหนหลายๆ คาสง SQL ถกประมวลผล แตละคาสง SQL จะถกสงจากไคลเอนต ไปยง เซรฟเวอร และ เซรฟเวอร จะสงคากลบคนมาท ไคลเอนต ถาหลายๆคาสง SQL ถกประมวลผลในลกษณะน network traffic จะเพมขน อกนยหนง มมลางดานขวามอ คณจะเหน Stored procedure ชอ “myproc” ถกเกบไวบน เซรฟเวอร ซงเหมอนกบ SQL ท ไคลเอนต (ดานซายมอ) คาสง CALL ถกใชในการเรยกใช procedure วธท 2 ของการเรยกใช procedure เปนวธทมประสทธภาพมากกวา โดยการใชเพยง 1 คาสง CALL บนระบบเครอขาย ผลลพธจะแสดงในฝงไคลเอนต

Page 293: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 293

Stored procedures สามารถนาไปใชในเรองความปลอดภยของฐานขอมล ตวอยางเชน คณสามารถอนญาตใหผใชเขาถงตาราง หรอ view ผานทาง stored procedures เทานน ซง จะชวยลดภาระของ เซรฟเวอร และยงเปนการปองกนไมใหผใชสามารถเขาถงขอมลทไมควร เขาถงได วธนเปนไปได เนองจากผใชไมจาเปนตองม privilege บนตารางหรอ view ทเขาถงผาน stored procedures เพยงแคมการกาหนดสทธใหสามารถใชงานผาน stored procedures ได บนทก: ตองการขอมลเพมเตมเกยวกบ SQL PL stored procedure สามารถดไดจากวดโอ http://www.channeldb2.com/video/video/show?id=807741:Video:4343

14.1 The IBM Data Studio IBM Data Studio เปนโซลชน ซงชวยในการพฒนาและจดการแอพพลเคชนทางดานฐานขอมล คณสมบตทมใน Data Studio ไดแก: - สราง เปลยนแปลงและลบ object ของฐานขอมลของ DB2 (ตองวเคราะหผลกระทบ)

Page 294: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

294 เรมตนกบ DB2 Express-C

- กระจายและแกไขขอมล ทงในรปแบบของ relational และ XML - สรางคาสง SQL และ XQuery - ทาการ Optimize query ดวย Visual Explain - พฒนา ตรวจสอบแกไขขอผดพลาด(debug) และ deploy stored procedure ในรป SQL และจาวา (Java)™ - พฒนา user defined functions (UDFs) - พฒนา SQLJ applications - พฒนา queries และ routines สาหรบแอพพลเคชนทเปน pureXML - จดการเรองการเคลอนยายของขอมล - มการทางานและแลกเปลยน project ระหวางสมาชกในทม - สราง SOAP และ REST Web Services ไดอยางรวดเรว - คนหาความสมพนธระหวางออบเจกต ของฐานขอมลโดยใช physical data models - วเคราะการกระจายขอมลระหวางตาราง IBM Data Studio ทางานบน Eclipse platform IBM Data Studio มแยกเปนสวนตางหากจากการลง DB2 แตยงคงฟร Data Studio images สามารถดาวนโหลดไดจากแทบ “ดาวนโหลด” บนเวบไซต ibm.com/db2/express รปท 14.2 แสดง IBM Data Studio

Page 295: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 295

รปท 14.2 – แสดง IBM Data Studio

14.1.2 การสร�าง stored procedure ใน Data Studio เพอทจะสรางจาวาหรอ SQL PL stored procedure ใน Data Studio ใหทาตามขนตอนตอไปน หมายเหต: stored procedures ในภาษาอนๆไมสามารถถกสรางจาก Data Studioได ขนตอนท 1 การสร�าง Data Studio project เรมจาก Data Studio เมน เลอก File -> New -> Project และเลอก Data Development Projectแสดงดงรปท 14.3

Page 296: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

296 เรมตนกบ DB2 Express-C

รปท 14.3 – The data development project ทาตามขนตอนโดยเรมจากตวชวยเพอใสชอ project ของคณ กาหนดฐานขอมลทตองการเชอมตอและกาหนดโฟลเดอร JDK(คาเรมตนทกาหนดใหถกตองอยแลว) ขนตอนท 2: การสร�าง stored procedure เมอ project ถกสราง ดานซายมอของ data perspective จะแสดง project นน ในรปท 14.4 จะเหนวา project ชอ “myProject” ไดถกสรางขนและสามารถจะขยายรายละเอยดออกมาได

Page 297: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 297

รปท 14.4 –project ชอ “myProject” รปท 14.4 project ชอ myProject เมอคณตองการสราง stored procedure ใหคลกขวาบนโฟลเดอร Stored Procedures และเลอก New -> Stored Procedureการใช “New Stored Procedure wizard ” ในการชวยสรางStore Procedures สามารถกาหนดขอมลตางๆ ไดแก projectทตองการ, ชอและภาษาของ store procedures(หมายเหต: เฉพาะSQL PL และจาวา ทสามารถทางานใน IBM Data Studioได) และคาสง SQL ทใชใน Stored Procedures Data Studio กาหนดตวอยางคาสง SQL มาใหอตโนมต ในจดน คณสามารถคลกท Finish และ

Page 298: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

298 เรมตนกบ DB2 Express-C

store procedure จะถกสรางขนดวยโคด ทเปนเทมเพลต และคาสง SQL จะถกกาหนดใหดงตวอยาง แสดงดงรปท 14.5

รปท 14.5 – ตวอย�าง stored procedure รปท 14.5 โคดของ stored procedure ตวอยางชอ “MYPROCEDURE” ไดถกสรางขนคณสามารถแทนทโคดทงหมดดวยโคดของคณเองได เพอใหงายคณสามารถใชตวอยาง stored procedure ขางตนทถกเขยนไวเพอนาไปใชตอได ขนตอนท 3: คอมไพล� (Compile หรอ deploy) stored procedure

Page 299: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 299

เมอ stored procedure ถกสราง ใหทาการคอมไพลและ deploy stored procedure โดยการคลกเมาสปมขวาทชอ stored procedure ใด ๆ ใน panel ทางดานซายมอ จากนนเลอก “Deploy” รปท 14.6 แสดงขนตอนน

รปท 14.6 – Deploying a stored procedure ขนตอนท 4: รน stored procedure เมอ Stored Procedures ถก deploy คณสามารถรนโดยการคลกขวาบน Stored Procedures และเลอก “Run” ผลลพธทไดแสดงท“ Results” tab ซงอยมมขวาลางของวนโดวส

Page 300: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

300 เรมตนกบ DB2 Express-C

เพอจะรน Stored Procedures ดวย Command Window หรอ Command Editor คณสามารถใชคาสง CALL <procedure name>

14.2 คาสงพนฐานเกยวกบ SQL PL stored procedures SQL Procedural Language (SQL PL) stored procedures งายในการสรางและศกษา มนสามารถรนไดดทสดใน DB2 SQL PL stored procedures (หรอเรยกงายๆ วา “SQL stored procedures”) จะถกกลาวถงในบทน

14.2.1 โครงสร�างของ Stored procedure ไวยากรณพนฐานของ Stored procedure แสดงดงน CREATE PROCEDURE proc_name [( {optional parameters} )] [optional procedure attributes] <statement> ซง <statement> เปนเพยง 1 คาสงหรอกลมของคาสง ทจบเปนกลมไดโดย BEGIN [ATOMIC] ... END

14.2.2 คณสมบตของ stored procedure ทสามารถเลอกได� ตอไปเปนการอธบายเกยวกบคณสมบตของ optional stored procedure: � LANGUAGE SQL

Page 301: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 301

คณลกษณะ (attribute) นเปนการชใหเหนวา Stored procedure นใชภาษาอะไร LANGUAGE SQL เปนคา default สาหรบภาษาอนๆ เชนจาวาหรอซ ใช LANGUAGE JAVA หรอ LANGUAGE C ตามลาดบ

� RESULT SETS <n> คณลกษณะ (attribute) นจาเปนถา stored

procedure มการสงคากลบ จานวน n result sets

� SPECIFIC my_unique_name ชอของ procedure ตองไมซา Stored procedure สามารถมชอเดยวกนแตตองมจานวนพารามเตอรทแตกตางกน การใชคยเวรด SPECIFIC คณสามารถกาหนดชอของ Stored procedure ใหไมซาและสามารถทจะจดการ Stored procedure ไดงาย ตวอยางเชน ตองการลบ Stored procedure โดยการใชคยเวรด SPECIFIC สามารถทาไดโดยใชคาสง DROP SPECIFIC PROCEDUREถา ไมไดใชคยเวรด SPECIFIC ในการลบ Stored procedure ดวยคาสง DROP PROCEDURE ตองมการกาหนดชอของ Stored Procedure ประกอบกบพารามเตอร จะทาให DB2 ทราบวา procedures ตวใดทตองการลบ

14.2.3 พารามเตอร� (Parameters) พารามเตอรใน SQL PL stored procedure ม 3 ชนด

Page 302: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

302 เรมตนกบ DB2 Express-C

� IN – หมายถง Input parameter � OUT – หมายถง Output parameter � INOUT – หมายถงเปนทง Input และ Output parameter

ตวอยางเชน CREATE PROCEDURE proc(IN p1 INT, OUT p2 INT, INOUT p3 INT) เมอเรยกใช procedure พารามเตอรทกตว จาตองถกกาหนดไวในคาสง CALL ตวอยางเชน เมอเรยกใช store procedure ขางตน จะตองกาหนด CALL proc (10,?,4) เครองหมายคาถาม (?) ถกใชสาหรบ OUT parameters ในคาสง CALL ตวอยางตอไปของ stored procedure

CREATE PROCEDURE P2 ( IN v_p1 INT, INOUT v_p2 INT,

Page 303: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 303

OUT v_p3 INT) LANGUAGE SQL SPECIFIC myP2 BEGIN -- my second SQL procedure SET v_p2 = v_p2 + v_p1; SET v_p3 = v_p1; END

เพอเรยกใช procedure จาก Command Editor ใชคาสง: call P2 (3, 4, ?)

14.2.4 การใส�หมายเหต (Comments) ใน SQL PL stored procedure ม 2 วธในการใสหมายเหต (Comments) ใน SQL PL stored procedure:

� ใชเครองหมาย -- ตวอยาง -- This is an SQL-style comment

� ใชรปแบบเชนเดยวกบภาษาซ ตวอยาง /* This is a C-style coment */

Page 304: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

304 เรมตนกบ DB2 Express-C

14.2.5 ประโยคคาสงผสม (Compound statements) ประโยคคาสงผสมใน Stored Procedures เปนคาสงทประกอบดวยหลายๆ คาสงของ Stored Procedures และคาสง SQL มารวมกนโดยอยภายใตคยเวรด BEGIN และ END เมอใชคยเวรด ATOMIC ตามหลง BEGIN ประโยคคาสงผสมจะถกมองเปน 1หนวย ทกคาสงในประโยค คาสงผสมจะตองทางานสาเรจเพอทจะทาใหประโยคคาสงผสมสามารถทจะทาสาเรจได ถาคาสงใดในนนทางานไมสาเรจ ทกอยางจะ roll back รปท 14.7 แสดงโครงสราง ประโยคคาสงผสม

รปท 14.7 – ประโยคคาสงผสม

14.2.6 การประกาศค�าตวแปร เพอประกาศคาตวแปร ใชคาสง DECLARE DECLARE var_name <data type> [DEFAULT value];

Page 305: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 305

นคอบางตวอยาง DECLARE temp1 SMALLINT DEFAULT 0; DECLARE temp2 INTEGER DEFAULT 10; DECLARE temp3 DECIMAL(10,2) DEFAULT 100.10; DECLARE temp4 REAL DEFAULT 10.1; DECLARE temp5 DOUBLE DEFAULT 10000.1001; DECLARE temp6 BIGINT DEFAULT 10000; DECLARE temp7 CHAR(10) DEFAULT 'yes'; DECLARE temp8 VARCHAR(10) DEFAULT 'hello'; DECLARE temp9 DATE DEFAULT '1998-12-25'; DECLARE temp10 TIME DEFAULT '1:50 PM'; DECLARE temp11 TIMESTAMP DEFAULT '2001-01-05-12.00.00'; DECLARE temp12 CLOB(2G); DECLARE temp13 BLOB(2G);

14.2.7 คาสงในการกาหนดค�า (Assignment statements) เพอกาหนดคาใหกบตวแปร ใชคาสง SET ตวอยาง SET total = 100; The above statement is equivalent to VALUES(100) INTO total; ถาตองการกาหนดคาบางตวแปรเปน NULL :

Page 306: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

306 เรมตนกบ DB2 Express-C

SET total = NULL; ถามมากกวา 1 แถวของตาราง fetch เฉพาะแถวแรกของตาราง SET total = (select sum(c1) from T1); SET first_val = (select c1 from T1 fetch first 1 row only) คณสามารถตงคาใหสอดคลองกบคณสมบตของฐานขอมล (da-

tabase properties) ได SET sch = CURRENT SCHEMA;

14.3 เคอร�เซอร� เคอรเซอรคอ result set ซงเกบผลลพธของคาสง SELECT ไวยากรณในการประกาศคา การเปด การ fetch และการปด เคอรเซอร แสดงดงน DECLARE <cursor name> CURSOR [WITH RETURN <return target>] <SELECT statement>; OPEN <cursor name>; FETCH <cursor name> INTO <variables>; CLOSE <cursor name>; เมอ เคอรเซอร ถกประกาศคา สวนของ WITH RETURN จะถกใชกบคาเหลาน

• CLIENT : result set จะสงคากลบมาทแอพพลเคชนของไคลเอนต

Page 307: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 307

• CALLER: result setจะสงคากลบมาท ไคลเอนต หรอ Stored Procedures ซงมการใชคาสง CALL

ตอไปนเปนตวอยางของ Stored Procedures ทใช เคอรเซอร

CREATE PROCEDURE set() DYNAMIC RESULT SETS 1 LANGUAGE SQL BEGIN DECLARE cur CURSOR WITH RETURN TO CLIENT FOR SELECT name, dept, job FROM staff WHERE salary > 20000; OPEN cur; END

14.4 Flow control เหมอนๆกนในหลายภาษา SQL PL จะมหลายคาสงซงถกใชเพอควบคมการทางาน ดานลางนคอคาสง flow control ทสามารถใชงานได: CASE (selects an execution path (simple search)) IF FOR (executes body for each row of table)

Page 308: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

308 เรมตนกบ DB2 Express-C

WHILE ITERATE (forces next iteration. Similar to CONTINUE in C) LEAVE (leaves a block or loop. "Structured Goto") LOOP (infinite loop) REPEAT GOTO RETURN CALL (procedure call)

14.5 การเรยกใช� stored procedures สวนของโคดตอไปนแสดงวธการเรยกใช stored procedures ดวยภาษาการโปรแกรมภาษาตางๆ ตวอย�างการเรยกใช� stored procedure จาก CLI/ODBC แอพพลเคชน

SQLCHAR *stmt = (SQLCHAR *) "CALL MEDIAN_RESULT_SET( ? )" ; SQLDOUBLE sal = 20000.0; /* Bound to parameter marker in stmt */ SQLINTEGER salind = 0; /* Indicator variable for sal */ sqlrc = SQLPrepare(hstmt, stmt, SQL_NTS); sqlrc = SQLBindParameter(hstmt, 1, SQL_PARAM_OUTPUT, SQL_C_DOUBLE, SQL_DOUBLE, 0, 0,

Page 309: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 309

&sal, 0, &salind); SQLExecute(hstmt);

if (salind == SQL_NULL_DATA) printf("Median Salary = NULL\n"); else printf("Median Salary = %.2f\n\n", sal ); /* Get first result set */ sqlrc = StmtResultPrint(hstmt); /* Check for another result set */ sqlrc = SQLMoreResults(hstmt); if (sqlrc == SQL_SUCCESS) { /* There is another result set */ sqlrc = StmtResultPrint(hstmt); }

ตองการรายละเอยดเพมเตมดไดจากไฟลตวอยางของDB2 : sqllib/samples/sqlproc/rsultset.c ตวอย�างการเรยกใช� stored procedure จาก VB.NET แอพพลเคชน

Try ‘ Create a DB2Command to run the stored procedure Dim procName As String =

Page 310: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

310 เรมตนกบ DB2 Express-C

“TRUNC_DEMO” Dim cmd As DB2Command = conn.CreateCommand() Dim parm As DB2Parameter cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = procName ‘ Register the output parameters for the DB2Command parm = cmd.Parameters.Add(“v_lastname”, DB2Type.VarChar) parm.Direction = ParameterDirection.Output parm = cmd.Parameters.Add(“v_msg”, DB2Type.VarChar) parm.Direction = ParameterDirection.Output ‘ Call the stored procedure Dim reader As DB2DataReader = cmd.ExecuteReader Catch myException As DB2Exception DB2ExceptionHandler(myException) Catch

Page 311: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 311

UnhandledExceptionHandler() End Try

ตวอย�างการเรยกใช� stored procedure จาก Java แอพพลเคชน

try { // Connect to sample database String url = “jdbc:db2:sample”; con = DriverManager.getConnection(url); CallableStatement cs = con.prepareCall(“CALL trunc_demo(?, ?)”); // register the output parameters callStmt.registerOutParameter(1, Types.VARCHAR); callStmt.registerOutParameter(2, Types.VARCHAR); cs.execute(); con.close(); } catch (Exception e) { /* exception handling logic goes here */

Page 312: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

312 เรมตนกบ DB2 Express-C

}

14.6 ข�อผดพลาด (Errors) และการจดการข�อผดพลาด ใน DB2 คยเวรด SQLCODE และ SQLSTATE ถกใชในการแสดงผลของการประมวลผลคาสง SQL วา successful หรอ unsuccessful คยเวรดเหลานตองมการประกาศคาตวแปรใน procedure ดงน DECLARE SQLSTATE CHAR(5); DECLARE SQLCODE INT; DB2 จะกาหนดคาของ คยเวรดขางตนอตโนมต หลงจาก จดการแตละคาสง SQL สาหรบ SQLCODE มคาดงน

� = 0, สาเรจ � > 0, สาเรจแตมคาเตอน � < 0, ไมสาเรจหรอมความผดพลาด � = 100, ไมมขอมล(เชน.: ประโยคคาสง FETCH ไมมคาขอมลตอบกลบ)

สาหรบ SQLSTATE มคาดงน

� สาเรจ: SQLSTATE '00000' � ไมพบ: SQLSTATE '02000' � คาเตอน: SQLSTATE '01XXX' � ไมสาเรจหรอมความผดพลาด: คาอนทงหมด

SQLCODE ขนกบ RDBMS และมรายละเอยดมากกวา SQLSTATE

Page 313: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 313

SQLSTATE เปนมาตราฐานระหวาง RDBMS แตคอนขางจะเหมอนกน หลายๆ SQLCODE อาจจะตรงกบ SQLSTATE เพยงอนเดยว SQLCODE และ SQLSTATE จะลงรายละเอยดในบทท 18 Troubleshooting CODE ของความผดพลาด ถกสงมาจากคาสง SQL ซงอาจจะตรงกนกบ SQLSTATE ตวอยางเชน SQLSTATE '01004' ถกสงมาเมอคาถกตดระหวางการทางานของSQL ถาจะใช SQLSTATE '01004' เพอทดสอบ จะตองมการกาหนดชอ ในตวอยางน กาหนด ชอ “trunc” ให SQLSTATE ‘01004’ดงแสดงดานลาง DECLARE trunc CONDITION FOR SQLSTATE '01004' Conditions Name ทตองกาหนดไวใหกอนแลว คอ:

• SQLWARNING • SQLEXCEPTION • NOT FOUND

Condition handling เพอทจะ จดการกบขอผดพลาด คณจะตองสราง condition handler ซงจะตองกาหนด:

• Condition ทจะจดการ

Page 314: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

314 เรมตนกบ DB2 Express-C

• คาสงทตองการ excute ตอ (ขนกบชนดของการจดการ : CONTINUE, EXIT หรอ UNDO)

• Action ตาง ๆ ทตองทา ซงสามารถเปนคาสงใด ๆ หรอ คาสงการควบคม

ถา SQLEXCEPTION ถกสงมาและไมมการจดการ condition handler procedure จะจบการทางานและสงคากลบไปแจงทไคลเอนตวา มขอผดพลาดเกดขน ชนดของการจดการข�อผดพลาด การจดการขอผดพลาดม 3 ชนด CONTINUE – ใชในการชวาถามขอผดพลาดแสดงขนมาและ Handler จดการ ทาAction ตาง ๆ ทตองทา แลวการทางานจะไปยงคาสงถดไปตอจากคาสงททาใหเกด condition ขนมา EXIT – ใชในการชวาถามขอผดพลาดแสดงขนมาและ Handler จดการ ทาAction ตาง ๆ ทตองทา แลวการทางานจะไปยงจดสนสดของ procedure โดยทจะไมยกเลกหรอ rollback คาสงททาไปแลว UNDO – ใชในการชวาถามขอผดพลาดแสดงขนมาและ Handler จดการทาAction ตาง ๆ ทตองทา แลวการทางานจะไปยงจดสนสดของ procedure และยกเลกหรอ rollback คาสงตาง ๆ ททามา

Page 315: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 14 – SQL PL Stored Procedures 315

รปท 14.8 แสดง condition handlers ทแตกตาง และลกษณะของแตละชนด

รปท14.8 – ชนดของcondition handlers

14.7 Dynamic SQL Dynamic SQL ซงตรงกนขามกบ Static SQL DB2 จะยงไมทราบรายละเอยดทงหมดของคาสง SQL เชน parameter marker โดยท DB2 จะไดรายละเอยดดงกลาวตอนประมวลผลคาสง SQL ตวอยางเชน ถา col1 และ tabname เปนตวแปรในคาสง แสดงวาเรากาลงใช dynamic SQL อย 'SELECT ' || col1 || ' FROM ' || tabname; Dynamic SQL สามารถถกประมวลผลไดดวย 2 วธ

• ใชคาสง EXECUTE IMMEDATE สาหรบ ประมวลผลหนงคาสง SQL

• ใชคาสง PREPARE ควบคกบคาสง EXECUTE สาหรบประมวลผล SQL หลาย ๆคาสง

Page 316: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

316 เรมตนกบ DB2 Express-C

ตอไปนเปนตวอยางของ Dynamic SQL ทใชวธประมวลผลทง 2 แบบ ในตวอยางสมมตวา ตาราง T2 ถกสรางดวยคาสงตอไปน CREATE TABLE T2 (c1 INT, c2 INT)

CREATE PROCEDURE dyn1 (IN value1 INT, IN value2 INT) SPECIFIC dyn1 BEGIN DECLARE stmt varchar(255); DECLARE st STATEMENT; SET stmt = 'INSERT INTO T2 VALUES (?, ?)'; PREPARE st FROM stmt; EXECUTE st USING value1, value1; EXECUTE st USING value2, value2; SET stmt = INSERT INTO T2 VALUES (9,9)'; EXECUTE IMMEDIATE stmt; END

Page 317: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

317

15

บทท 15 – Inline SQL PL Triggers, และ UDFs

ในบทน จะกลาวถง inline SQL PL และ database application objects อน เชน user-defined functions (UDFs) และ trigger หมายเหต: รายละเอยดเพมเตมเกยวกบ trigger และ UDFs สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4367 http://www.channeldb2.com/video/video/show?id=807741:Video:4362

15.1 Inline SQL PL ในบทท 14 ไดกลาวถงการสราง stored procedures ดวย SQL PL language SQL PL language สามารถถกใชในลกษณะ “inline” ซงหมายความวาไมจาเปนตองมการสราง stored procedure SQL PL ทถกใชใน UDFs และ triggers ถอเปน inline เนองจากโคดถกใสเขามาในลกษณะ เปนโคดเดยวกนกบโคดของ UDF/trigger และโดยปกตแลวมกเปน Dynamic SQL Inline SQL PL รองรบเฉพาะคาสง คาสง SQL PL บางคาสงเทานน ตอไปนเปน คยเวรด ใน inline SQL PL:

Page 318: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

318 เรมตนกบ DB2 Express-C

DECLARE <variable> SET CASE FOR GET DIAGNOSTICS GOTO IF RETURN SIGNAL WHILE ITERATE LEAVE ตอไปนเปนคยเวรด ทไมสามารถใชไดใน inline SQL PL ALLOCATE CURSOR ASSOCIATE LOCATORS DECLARE <cursor> DECLARE ...HANDLER PREPARE EXECUTE EXECUTE IMMEDIATE LOOP REPEAT RESIGNAL CALL COMMIT/ROLLBACK ตอไปนเปนตวอยางของ Dynamic compound SQL ซงใช inline SQL PL ถาคณตองการทดลอง

Page 319: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 319

สามารถใสลงใน สครปตไฟล โดยจะตองสรางตารางตอไปนกอน CREATE TABLE T1 (c1 INT) CREATE TABLE T3 (c1 INT)

BEGIN ATOMIC DECLARE cnt INT DEFAULT 0; DECLARE sumevens INT DEFAULT 0; DECLARE err_msg VARCHAR(1000) DEFAULT ''; WHILE (cnt < 100) DO IF mod(cnt,2) = 0 THEN SET sumevens = sumevens + cnt; END IF; SET cnt=cnt+1; END WHILE; INSERT INTO T3 values (sumevens); SET cnt = (SELECT 0 FROM SYSIBM.SYSDUMMY1); FOR cur1 AS SELECT * FROM T1 DO IF cur1.c1 > 100 THEN SET cnt = cnt + 1; END IF; END FOR; SET err_msg = 'Rows with values > 100 is:' || char(cnt); SIGNAL SQLSTATE '80000' SET

Page 320: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

320 เรมตนกบ DB2 Express-C

MESSAGE_TEXT = err_msg; END!

ถาคณบนทก inline SQL PL ขางตนใน สครปตไฟลชอ “myScript.txt” คณสามารถประมวลผลไดดวยคาสงตอไปน db2 -td! –vf myScript.txt

15.2 Triggers Triggers เปนออบเจกตของฐานขอมล ซงมความเกยวของกบตาราง โดยการกาหนดการทางานตางๆทจะเกดขนเมอมการ INSERT, UPDATE หรอ DELETE กบขอมลในตาราง จะมการถก กระตน(activateหรอ “fired”) อตโนมต คาสงททาให trigger รนขนมาอตโนมต เรยกวา triggering SQL statements 15.2.1 ประเภทของ triggers Trigger ม 3 ประเภทคอ “before” triggers, “after” triggers และ “instead of” triggers Before triggers Before triggers ถกกระตน (activate) กอนทแตละแถว(row) จะถกเพม(inserted), แกไข(updated) หรอลบ(deleted)ซงคาสงตางๆทถกทาโดย trigger นจะไมสามารถกระตน trigger อนได (ดงนนคาสง INSERT, UPDATE, and DELETE จะไมสามารถทาได)

Page 321: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 321

ตวอยางของ before trigger แสดงดงรปท 15.1.

รปท 15.1 – ตวอย�างของ before trigger ในรปท 1.5.1 trigger ชอ “default_class_end” เปน trigger ทจะทางานกอนคาสง INSERT จะทางานกบตาราง cl_sched ตารางนอยในฐานขอมลชอ SAMPLE ดงนน คณสามารถสรางและทดสอบ trigger นไดดวยตวเองขณะทกาลงเชอมตอกบฐานขอมลน ตวแปร “n” ใน trigger กาหนดเพอแสดงคาใหมในการINSERT ซงกคอคาทกาลงเพมลงในตาราง Trigger จะตรวจสอบความถกตองกอนการเพมลงตาราง ถาคอลมน “ending” ไมมการใสคามาจากการINSERT Trigger จะรบประกนวาคาของคอลมนนมคา โดยคานวณจากคาในคอลมน Starting บวก 1 ชวโมง

Page 322: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

322 เรมตนกบ DB2 Express-C

คาสงตอไปนแสดงวธการทดสอบ trigger C:\Program Files\IBM\SQLLIB\BIN>db2 insert into cl_sched (class_code, day, starting) values ('abc',1,current time) DB20000I The SQL command completed suc-cessfully. C:\Program Files\IBM\SQLLIB\BIN>db2 se-lect * from cl_sched CLASS_CODE DAY STARTING ENDING ---------- ------ -------- -------- 042:BF 4 12:10:00 14:00:00 553:MJA 1 10:30:00 11:00:00 543:CWM 3 09:10:00 10:30:00 778:RES 2 12:10:00 14:00:00 044:HD 3 17:12:30 18:00:00 abc 1 11:06:53 12:06:53 6 record(s) selected. triggerชอ “validate_sched” ทแสดงดานลาง สรางตอมาจาก trigger ชอ “default_class_end” ทอธบายกอนหนาน คณสามารถสรางและทดสอบอกครงดวยฐานขอมลชอ SAMPLE

Page 323: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 323

CREATE TRIGGER validate_sched NO CASCADE BEFORE INSERT ON cl_sched REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL BEGIN ATOMIC -- supply default value for ending time if null IF (n.ending IS NULL) THEN SET n.ending = n.starting + 1 HOUR; END IF; -- ensure that class does not end beyond 9pm IF (n.ending > '21:00') THEN SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT='class ending time is beyond 9pm'; ELSEIF (n.DAY=1 or n.DAY=7) THEN SIGNAL SQLSTATE '80001' SET MESSAGE_TEXT='class cannot be scheduled on a weekend'; END IF; END

After triggers After triggers ถกกระตน (activate) หลงคาสง SQL ประมวลผลกบแตละแถว(row)ของตารางสาเรจ

Page 324: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

324 เรมตนกบ DB2 Express-C

ซงคาสงตางๆทถกทา โดย trigger นสามารถกระตน trigger อนได (cascading สามารถทาไดถง 16 ชน) After triggers รองรบคาสง INSERT, UPDATE และ DELETE ดานลางเปนตวอยางของ after trigger

CREATE TRIGGER audit_emp_sal AFTER UPDATE OF salary ON employee REFERENCING OLD AS o NEW AS n FOR EACH ROW MODE DB2SQL INSERT INTO audit VALUES ( CURRENT TIMESTAMP, ' Employee ' || o.empno || ' salary changed from ' || CHAR(o.salary) || ' to ' || CHAR(n.salary) || ' by ' || USER)

ในตวอยางน trigger ชอ audit_emp_sal ถกใชในการตรวจสอบคอลมน “salary” ในตาราง “employee” เมอมผใชเปลยนแปลงคาในคอลมนน trigger จะเขยนขอมลการเปลยนแปลงทเกดขนเกยวกบ salary ลงในตารางชอ ชอ “audit” โดย“OLD as o NEW as n” นน “o” ถกใชในการแสดง คาเกาหรอเปนคาทมอยแลวในตาราง สวน “n” ใชในการแสดงคาใหมทมาจากคาสง UPDATE ดงน “o.salary” หมายถงเงนเดอนเกาทมและ “n.salary” หมายถงคาทถก update ในคอลมน salary

Page 325: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 325

“Instead of” triggers Instead of triggers จะเปนการใช triggerในกรณของ view ตวอยางเชน ถาคณทาการ update –ขอมลไปท view trigger จะถกกระตนใหทางาน ซงจะทาใหสามารถ update ขอมลไปท ตารางท view อางถงได Trigger ไมสามารถถกสรางไดจาก IBM Data Studio สามารถสรางจาก Control Center หรอจาก Command line tools (Command Window, Command Line Processor หรอ the Command Editor)

Page 326: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

326 เรมตนกบ DB2 Express-C

ปฏบตการท12 – การสร�าง trigger ใน Control Center วตถประสงค Trigger เปนออบเจกตของฐานขอมล ทถกใชในการจดการ business logic เมอมการเปลยนแปลงขอมลในตาราง ในปฏบตการนคณสามารถสราง trigger ดวย Control Center Triggerนมการเกบลอก เมอมการเปลยนแปลงททากบตาราง SALES เพอใชในการตรวจสอบขอมล คณสามารถลอกขอมล User ID ของคนททาการเปลยนแปลง รวมถงวนเวลาททาการเปลยนแปลง ขนตอน

1. เปด Control Center 2. สาหรบ ปฏบตการน คณตองสรางตารางเพมเตมเพอใชในการเกบลอก สรางตารางโดยการกาหนดคณสมบต(characteristic) ดงน ชอตาราง: saleslog คอลมนแรก ชอคอลมน (Name): userid ชนดขอมล (Data Type) : VARCHAR(128) คณสมบตอน (Other attributes): NOT NULL

Page 327: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 327

คอลมนท 2 ชอคอลมน : daytime ชนดขอมล : TIMESTAMP คณสมบตอน (Other attributes): NOT NULL ขอเสนอแนะ: การสรางตารางนใชคาสง CREATE TABLE ใน Command Editor หรอใช Create Table ใน Control Center

3. ใน Control Center เขาไปในโฟลเดอร ของฐานขอมล EXPRESS จากนนคลกเมาสปมขวาบนโฟลเดอร Triggers และเลอก Create Trigger dialog window จะถกเปดขนมา

4. ใสขอมลตอไปนใน dialog window

Trigger schema: User ID userid ทคณ log in (เปนคาโดยปรยาย) ชอ trigger: audit_sales Table or view schema: User ID userid ทคณ log in (เปนคาโดยปรยาย) ชอตารางหรอ view: SALES Time to trigger action: After

Page 328: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

328 เรมตนกบ DB2 Express-C

คาสงททาให trigger ตองมการประมวลผล คอ Update คอลมน(ไมตองกาหนดคอลมน เพราะเราตองการให trigger รนเมอมคอลมนใดกตามถก update) Comment: Logs all update actions on Sales table.

5. บนแทบชอ triggered action เลอกตวเลอก For Each STATEMENTใชโคดตอไปนเพอการทางานของ trigger (Triggered action)

Page 329: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 329

WHEN ( 1=1 ) BEGIN ATOMIC INSERT INTO saleslog (userid, daytime) VALUES (CURRENT USER, CURRENT TIMESTAMP); END (หมายเหต: Statement trigger จะทา trig-ger action หนงครง หลงจากคาสงทกระตน trigger ทาสาเรจ สวน row trigger จะทา trigger action ทกๆ ครงทคาสงทกระตน triggerทางานกบแตละ row

คลกทปม OK เพอสรางtrigger

Page 330: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

330 เรมตนกบ DB2 Express-C

6. คณสามารถด trigger ในโฟลเดอร Triggers ใน Control Center

7. เรยกดขอมล (query) จากตาราง saleslogเพอดวาไมมขอมลอย ลบรายการทอาจมอย (DELETE FROM saleslog)

8. ทดลองปรบปรงรายการในตาราง sales( ขอเสนอแนะ: ใช Command Editor หรอ ตวชวย SQL Assist)

9. ตรวจสอบขอมลของตาราง saleslog อกครง มกแถวในตาราง

15.3 User-defined functions (UDFs) user-defined function (UDF) คอ แอพพลเคชนออบเจกตของฐานขอมลซงมการรบคาinputเขามาและ มการสงผลลพธ(output)ออกไป ตวอยางเชน ฟงกชนมการวดคาหนวยเปนนวในสวนของ input และสงคากลบ outputออกมาเปนเซนตเมตร DB2 รองรบการสรางฟงกชนดวย SQL PL, C/C++, Java, CLR (Common Language Runtime) และ OLE (Object Linking and Embedding)ในหนงสอเลมน จะเนนท SQL PL functionเนองจากงาย เปนทนยมและมประสทธภาพ

Page 331: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 331

ฟ�งก�ชนม 4 ประเภท คอ scalar, table, row และ column functions ในบทน จะพดถงเฉพาะ scalar และ table functions

15.3.1 Scalar functions Scalar functions สงคากลบ(return) เปนคาเดยว(single value) Scalar functions ไมสามารถใชคาสง SQL ทจะทาใหมการเปลยนสถานะของฐานขอมล; เชนคาสง INSERT, UPDATE และDELETE ตวอยาง scalar functions ทมมากบ DB2 (Built-in) บางตว เชน SUM(), AVG(), DIGITS(), COALESCE() และ SUBSTR() DB2 อนญาตใหคณสราง user-defined functions ซงเปนลกษณะงานทมการใชงานบอยๆ ตวอยางเชน การ migrate แอพพลเคชนจาก Oracle ไปยง DB2 ในแอพพลเคชน ฟงกชน NVL() ของ Oracle สามารถใช built-in function ใน DB2 แทนกนได คอ COALESCE แทนทจะตองเปลยนชอทกฟงกชน NVL ในแอพพลเคชนดวย COALESCE คณสามารถสราง user-defined function ใน DB2 เพอเรยกใช NVL และอางถงฟงกชน COALESCE ดงแสดงดานลาง

CREATE FUNCTION NVL (p_var1 VARCHAR(30), p_var2 VARCHAR(30)) SPECIFIC nvlvarchar30 RETURNS VARCHAR(30)

Page 332: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

332 เรมตนกบ DB2 Express-C

RETURN COALESCE(p_var1, p_var2) ฟงกชน COALESCE จะสงคาตวแปร ซงไมเปนคาวาง(NULL)กลบมา ดานลางเปนอกตวอยางเกยวกบ scalar function ฟงกชนจะถกเรยกวา “deptname” และ จะสงคากลบมาเปนรหสแผนก (departure number) ของพนกงานตามคาของรหสพนกงาน (employee id)

CREATE FUNCTION deptname(p_empid VARCHAR(6)) RETURNS VARCHAR(30) SPECIFIC deptname BEGIN ATOMIC DECLARE v_department_name VARCHAR(30); DECLARE v_err VARCHAR(70); SET v_department_name = ( SELECT d.deptname FROM department d, employee e WHERE e.workdept=d.deptno AND e.empno= p_empid); SET v_err = 'Error: employee ' || p_empid || ' was not found'; IF v_department_name IS NULL THEN SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT=v_err; END IF; RETURN v_department_name; END

Page 333: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 333

เพอทดสอบฟงกชน ใชคาสงตอไปนใน Command Window หรอ ลนกซ/ยนกซ เชลล db2 "values (deptname ('000300'))" Invoking scalar UDFs Scalar UDFs สามารถถกเรยกในคาสง SQL ในตาแหนงใดๆ ทมการเรยกใชscalar value หรอในสวนของคาสง VALUES ตวอยางบางตวอยางทแสดงการเรยกใช COALESCE scalar function: SELECT DEPTNAME, COALESCE(MGRNO, 'ABSENT') FROM DEPARTMENT VALUES COALESCE(‘A’,’B’)

15.3.2 Table functions Table functions สงคากลบ ในรปตารางประกอบดวยแถว(row) คณสามารถเรยกใชผาน query ในสวนของ FROM clause Table functions ตรงขามกบ scalar functions สามารถเปลยนแปลงสถานะของฐานขอมลได ดงนนจงสามารถใชคาสง INSERT, UPDATE และ DELETE ได ตวอยาง table functions ทมมากบ DB2 (Built-in)SNAPSHOT_DYN_SQL( ) และ MQREADALL( ) Table functions คลาย view แตอนญาตใหใชคาสงในการเปลยนแปลงขอมล(

Page 334: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

334 เรมตนกบ DB2 Express-C

INSERT, UPDATE และ DELETE) ซง table functions เหลานมประสทธภาพอยางมาก ฟงกชนเหลานถกใชในการสงคาตารางและเกบขอมลเพอการตรวจสอบ (audit record) ดานลางเปนตวอยางของ table function ซงใชในการแจกแจงพนกงานภายในแผนก

CREATE FUNCTION getEnumEmployee(p_dept VARCHAR(3)) RETURNS TABLE (empno CHAR(6), lastname VARCHAR(15), firstnme VARCHAR(12)) SPECIFIC getEnumEmployee RETURN SELECT e.empno, e.lastname, e.firstnme FROM employee e WHERE e.workdept=p_dept

เพอทดสอบฟงกชนขางตน ใชคาสง db2 "SELECT * FROM table(getEnumEmployee('D11')) AS t" Invoking table UDFs ตาราง UDF ตองถกเรยก ในสวนของ FROM ของคาสง SQL ฟงกชน TABLE() จะตองถกเรยกใชรวมและจะตองถกตงชอตวแทนของฟงกชน TABLE()

Page 335: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 335

รปท 15.2 แสดงตวอยางวธการเรยกฟงกชนชอ “getEnumEmployee” ซงเราไดทดสอบมากอนหนานแลว

รปท15.2 – แสดงการใชงาน table function

ปฏบตการท13 – สร�าง a UDF ด�วย IBM Data Studio วตถประสงค ใน ปฏบตการนคณ จะสราง scalar user-defined function ใน IBM Data Studio สงนจะทาใหคณมประสบการณใน Data Studio เพอทาใหมความคนเคยกบ SQL PL language สาหรบการทางานกบ user-defined function ขนตอน

1. เปด IBM Data Studio (ขอเสนอแนะ: สามารถเปดจากเมน Start)

Page 336: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

336 เรมตนกบ DB2 Express-C

2. จาก Data Project Explorer window เลอก project ทถกสรางไวใน ปฏบตการกอนหนาน จากนนเลอก Open Project

3. คลกเมาสปมขวาทโฟลเดอร User-Defined Functions เลอกเมน New เลอกรายการ SQL User-Defined Function คณสามารถเลอก User-Defined Function using Wizard ถาตองการคาแนะนาในการทางานดวยตวชวย GUI

4. ใน Editor view จะกาหนดโครงสรางของฟงกชนมาให ทาการปรบปรงโคด ดงน : CREATE FUNCTION booktitle(p_bid INTEGER) RETURNS VARCHAR(300) ---------------------------------------------------------- SQL UDF (Scalar) ---------------------------------------------------------- SPECIFIC booktitle F1: BEGIN ATOMIC DECLARE v_book_title VARCHAR(300); DECLARE v_err VARCHAR(70); SET v_book_title = (SELECT title FROM books WHERE p_bid = book_id); SET v_err = 'Error: The book with ID ' || CHAR(p_bid) || ' was not found.';

Page 337: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 337

IF v_book_title IS NULL THEN SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT=v_err; END IF; RETURN v_book_title; END

5. สรางฟงกชนโดยการคลกเมาสปมขวาบนฟงกชนและเลอก Deploy

6. รนฟงกชนโดยการคลกทปม Run บนทลบาร(toolbar)

7. เนองจากฟงกชนตองการรบพารามเตอรหนงตว dialog window จะปรากฎเพอใหใสคาหนงคาสาหรบพารามเตอรน

รบคา: 80002 ผลลพธคออะไร ใสคาอกครงดวย 1002 จะเกดอะไรขน (ขอเสนอแนะ: ดทขอความ(Messages) ใน Output view)

8. ปด IBM Data Studio เมอทาเสรจ

Page 338: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

338 เรมตนกบ DB2 Express-C

บทท 16 – DB2 pureXML

ในบทนกลาวถง PureXML ซงเปนเทคโนโลยใหมทเรมมใน DB2 9 ทรองรบการจดเกบ XML แบบ Native ตวอยางแนวคดมากมายทกลาวถงในบทนนามาจาก IBM Redbook: DB2 9: pureXML overview and fast start ดขอมลเพมเตมไดในหวขอของ Resources ของหนงสอเลมน รปท 16.1 แสดงหวขอตาง ๆ ในภาพรวมของ DB2 ซงจะกลาวถงในบทน

Page 339: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 339

รปท 16 .1 – ภาพรวมของ DB2: คาสง DB2, SQL/XML และ XQuery หมายเหต: รายละเอยดเพมเตมเกยวกบ pureXML สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4382

16.1 การใช� XML กบฐานข�อมล เอกสาร XML สามารถจดเกบไดทงในรปแบบไฟลขอความ (Text File), XML Repository หรอรปแบบของฐานขอมล มเหตผลหลก 2 ประการซงทาใหองคกรตาง ๆ เสนอใหเกบขอมล XML ไวในฐานขอมล คอ

• การจดการกบขอมล XML ขนาดใหญเปนปญหาดานฐานขอมล XML เปนขอมลเหมอนกบขอมลทวไป แตกตางกนเพยงรปแบบเทานน เหตผลเดยวกนกบการเกบขอมลเชงสมพนธ(relational data)ลงในฐานขอมล: เพราะฐานขอมล ชวยในเรองของประสทธภาพในการสบคนและคนคนขอมล รองรบการจดเกบเพอความถาวร การเกบสารองขอมล และการกคนขอมล รองรบการจดการธรกรรม ประสทธภาพในการประมวลผล และการปรบขนาดได (Scalability)

• การบรณาการขอมล : โดยการเกบขอมลเชงสมพนธและเอกสาร XML

Page 340: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

340 เรมตนกบ DB2 Express-C

เขาไวดวยกน ทาใหสามารถรวมขอมล XML เขากบขอมลเชงสมพนธทมอยเดม และ สามารถเขยน SQL รวมกบ Xpath หรอ Xqueryในqueryเดยวกน นอกจากนยงสามารถนาเ สนอขอมล เชงสมพนธในรปแบบ XML และทาในทางกลบกนไดดวย ดวยการบรณาการขอมลนฐานขอมลสามารถรองรบ เวบแอพพลเคชน (Web Application) เอสโอเอ (SOA) และเวบเซอรวส (Web Services) ไดดยงขน

16.2 ฐานข�อมล XML ฐานขอมลสาหรบเกบขอมล XML ม 2 ประเภท คอ

- ฐานขอมลแบบ XML-enabled - ฐานขอมลแบบ Native XML

16.2.1 ฐานข�อมลแบบ XML-enabled ฐานขอมลแบบ XML-enabled จะใชรปแบบของระบบจดการฐานขอมลเชงสมพนธเปนรปแบบหลกในการจดเกบขอมล ดงนน จาเปนตองมการแปลงขอมลระหวางขอมล XML (ซงเปนแบบลาดบชน) และขอมลเชงสมพนธ หรอตองจดเกบขอมล XML ในรปแบบของ CLOB ซงวธการนถกมองวาเปนเทคโนโลยทลาสมย แตยงคงมการใชอย โดยตวแทนจาหนายระบบจดการ ฐานขอมลหลายราย รปท 16.2 อธบายรายละเอยดการเกบขอมล XML ในสองรปแบบขางตนของฐานขอมลแบบ XML-enabled

Page 341: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 341

รปท 16.2 – ทางเลอกในการเกบข�อมล XMLในฐานข�อมลแบบ XML-enabled ดานซายของรปท 16.2 แสดงการเกบเอกสาร XML ลงฐานขอมลดวยวธเกบขอมลเปน CLOB และ Varchar การเกบเอกสาร XML เปน String เมอตองการคนคนบาง element ของเอกสาร XML จะตองเขยนโปรแกรมโดยนา String นนมาประมวลผลใหไดผลลพธตามทตองการ ซงวธนจะทาไดยากและไมยดหยน อกทางเลอกหนงสาหรบฐานขอมลแบบ XML-enabled เรยกวา Shredding หรอ Decomposition ซงอธบายไวดานขวาของรปท 16.2 วธนคอการแบงเอกสาร XML ทตองการจดเกบออกเปนสวนยอย ๆ และแยกไปจดเกบในแตละคอลมภในตาราง การใชวธนทาใหโครงสรางแบบลาดบชนของเอกสาร XML ถกเปลยนแปลงใหจดเกบอยในรปแบบขอมลเชงสมพนธ ซงไมมความยดหยนเชนกน เพราะการเปลยนแปลงตาง

Page 342: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

342 เรมตนกบ DB2 Express-C

ๆ ททากบเอกสาร XML ซงเกบไวในตารางนนเปนไปไดยาก และอาจตองมการสรางตารางใหมเพมขนมากมายในกรณทมการเพมขอมลใหมเขาไปยงเอกสาร XML อกทงวธการนยงมผลทาใหการทางานไมมประสทธภาพ เพราะหากตองการไดเอกสาร XML เดม (กอนการแปลงใหจดเกบอยในรปแบบขอมลเชงสมพนธ)กลบคนมา จาเปนตองประมวลผลคาสง SQL Join ซงจะสนเปลองทรพยากรของระบบมาก เพราะตอง Join หลายตารางเขาดวยกน

16.2.2 ฐานข�อมลแบบ Native XML ฐานขอมลแบบ Native XML ใชรปแบบในการจดเกบและประมวลผลขอมลแบบลาดบชน สาหรบขอมล XML โดยไมมการแปลงขอมลใหจดเกบในรปแบบขอมลเชงสมพนธ และไมไดจดเกบเอกสาร XML ไวในรปแบบทเหมอนกบการจดเกบรปภาพ เราสามารถใชคาสง XPath หรอ XQuery ในการประมวลผลกบเอกสาร XMLไดโดยตรง ซงเปนเหตผลทเราเรยก ฐานขอมลประเภทนวา ฐานขอมลแบบ “Native” XML ระบบจดการฐานขอมล DB2 ตงแตเวอรชน 9 เปนตนไป เปนระบบจดการฐานขอมลเพยงหนงเดยวในปจจบนทรองรบการทางานในรปแบบน

16.3 XML ใน DB2 รปท 16.3 ดานลาง

แสดงเคาโครงการเกบขอมลเชงสมพนธและขอมลเอกสา

Page 343: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 343

ร XMLแบบลาดบชน(hierarchical data) ใน DB2 ตงแตเวอรชน 9 รปนสมมตใหตาราง dept มนยามดงตอไปน: CREATE TABLE dept (deptID CHAR(8),…, deptdoc XML);

รปท 16.3 – XML ใน DB2 สงเกตวาการกาหนดโครงสรางตารางใชชนดขอมล(data type) เปน XML สาหรบ deptdoc คอลมน ลกศรทางซายมอในรปแสดงคอลมน deptID ทเกบอยในแบบเชงสมพนธ ในขณะทคอลมน deptdoc มโครงสรางเปน XML จดเกบแบบลาดบชน รปท 16.4 แสดงถง DB2 เวอรชน9 เปนตนไป มวธการเขาถงขอมลได 4 วธดงน :

- ใช SQL เพอเขาถงขอมลเชงสมพนธ - ใช SQL ทม XML Extension เพอเขาถงขอมล XML

- ใช XQuery เพอเขาถงขอมล XML - ใช XQuery เพอเขาถงขอมลเชงสมพนธ

Page 344: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

344 เรมตนกบ DB2 Express-C

รปท 16.4 – 4444วธในการเข�าถงข�อมลใน DB2 ดงนนขณะทผใชงาน SQL อาจเหน DB2 เปนระบบฐานขอมลเชงสมพนธ ทรองรบ XML และผใชงาน XML อาจเหน DB2 เปนแหลงรวบรวมขอมล XML ทรองรบ SQL IBM ใชคาวา pureXML แทน native XML ในการกลาวถงเทคโนโลยน ขณะทผจาหนาย รายอนยงคงใชเทคโนโลยเกาโดยใช CLOB/Varchar หรอ Shredding ในการเกบเอกสาร XML และเรยกวธการเชนนนวา “native XML” เพอหลกเลยงความสบสน IBM ไดตดสนใจ ใชคาใหมวา pureXML เปนเครองหมายการคา เพอไมใหผจาหนายรายอนนาคานไป ใชกบเทคโนโลยทตางออกไป ใน DB2 9.1 การจดการแบบ pureXML มเฉพาะเมอ สรางฐานขอมลแบบ Unicode เทานน DB2 9.5 ไมมขอจากดน กลาวคอสามารถใช pureXML กบฐานขอมลทงแบบ Unicode และแบบ Non-Unicode

Page 345: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 345

16.3.1 ประโยชน�ของเทคโนโลย pureXML เทคโนโลย XML มประโยชนหลายประการ คอ 1. สามารถลดการลงทนในการใชขอมลเชงสมพนธโดยเกบเอกสาร XML ไวในคอลมน ของตารางทมประเภทเปน XML

2. สามารถลดความซบซอนของการเขยนโปรแกรม ตวอยางเชน รปท 16.5 แสดงการ เขยนสครปตภาษา PHP ทงแบบทใชและไมใช pureXML การใช PureXML (ในกรอบสเขยว) ลดจานวนบรรทดของการเขยนของโปรแกรม ซงไมเพยงแตหมายความวา โปรแกรมซบซอนนอยลงเทานน แตประสทธภาพโดยรวมยงดขน เนองจากมจานวนบรรทด ของโปรแกรมนอยลงทจะตองถกประมวลผลและรวมถ

งการดแลแกไขกลดลงดวย

Page 346: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

346 เรมตนกบ DB2 Express-C

รปท 16.5 – ความซบซ�อนของโปรแกรมทใช� และไม�ใช� pureXML

3. การปรบเปลยน Schema ทาไดงายขนเมอใช XML และ pureXML เทคโนโลย รปท 16.6 อธบายตวอยางของการเพมความยดหยนในรปน สมมตใหมฐานขอมล ซง ประกอบดวยตาราง Employee และ Department โดยทวไป หากเปนฐานขอมล ทไมรองรบ XML ถาผบรหารตองการใหเกบหมายเลขโทรศพท ไดมากกวาหนง หมายเลขสาหรบพนกงานหนงคน (หมายเลขโทรศพทบาน) และหมายเลขสารอง (หมายเลขโทรศพทมอถอ) อาจจาเปนตองเพมคอลมนขนในตาราง Employee เพอเกบหมายเลขโทรศพทมอถอในคอลมนใหมทสรางขนอยางไรกตาม การกระทาเชนนเปนวธทขดตอกฎบรรทดฐานของฐานขอมลเชงสมพนธ (normalization rules) เพอรกษากฎนไวควรสรางตาราง Phone ใหม และยายขอมล หมายเลขโทรศพททงหมดไปยงตารางใหมน จากนนจงสามารถเพมขอมลหมายเลขโทรศพทมอถอเขาไปไดดวย การสรางตารางใหมเปนการสนเปลอง ไมเพยงเพราะการตองยายขอมลขนาดใหญ แตเพราะโปรแกรม SQL ทงหมดทเกยวของตองเปลยนจดเชอมโยงไปยงตาราง ใหม

แทนทจะทาเชนนน รปดานซายมอแสดงการใช XML ในการจดการหากพนกงานชอ “Christine” มหมายเลขโทรศพทมอถอ

Page 347: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 347

สามารถเพมขอมลนไดโดยการเพม Tag ใหมลงไป ถาพนกงานชอ “Michael” ไมมหมายเลขโทรศพทมอถอ กปลอยไวเหมอนเดม

รป 16.6 – แสดงความยดหย�นของข�อมลทเพมขนด�วยการใช� XML

4. สามารถเพมประสทธภาพการทางานของ XML แอพพลเคชน จากการทดสอบการใชเทคโนโลย pureXML แสดงใหเหนถงประสทธภาพ ทเพมขนอยางมากในหลาย XML แอพพลเคชน รปท 16.7 แสดงผลลพธของ การทดสอบของบรษทแหงหนงซงเปลยนจากเทคโนโลยเดมมาใช pureXML คอลมนตรงกลางแสดงผลลพธของวธการแบบเกาในการทางานกบ XML

Page 348: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

348 เรมตนกบ DB2 Express-C

และคอลมนทสามแสดงผลลพธทเกดจากการใช pureXML งาน ฐานข�อมลเชง

สมพนธ�อนๆ DB2 ทใช� pureXML

พฒนาโปรแกรมค�นหาและค�นคนกระบวนการทางธรกจ

CLOB: 8 ชวโมง Shred: 2 ชวโมง

30 นาท

จานวนบรรทดของโปรแกรมในส�วนทเกยวข�องกบ I/O

100 35 (ลดลง 65% )

เพม Field ในโครงสร�างข�อมล

1 สปดาห� 5 นาท

การสอบถาม (Queries)

24 - 36 ชวโมง

20 วนาท - 10 นาท

รปท 16.7 – ประสทธภาพทเพมขนเมอใช�เทคโนโลย pureXML

16.3.2 พนฐานภาษา XPath XPath คอภาษาทใชในการสอบถามขอมลในเอกสาร XML รปท 16.8 แสดงเอกสาร XML และรปท 16.9 แสดงเอกสาร XML ทเหมอนกนโดยนาเสนอเปนรปแบบลาดบชน (Parsed-Hierarchical) เรยกอกอยางวา “node” หรอ “leaf” เราจะใชรปแบบ Parsed-Hierarchical ในการอธบายการทางานของ XPath

Page 349: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 349

รปท 16.8 – เอกสาร XML

รปท 16.9 – การแสดงในแบบ Parsed-Hierarchical ของเอกสาร XML ในรปท 16.8 ทางลดในการเรยนร XPath คอการเปรยบเทยบกบ change directory (cd) คาสง ใน MS-DOS หรอ ลนกซ/ยนกซ ใชคาสง cd เขาถง Directory Tree ดงน: cd /directory1/directory2/…

dept

name

employee

phone id=901

John Doe

office

408-555-1212 344

name

employee

phone id=902

Peter Pan

office

408-555-9918 216

<dept bldg=“101”> <employee id=“901”> <name>John Doe </name>

<phone>408 555 1212</phone> <office>344</office>

</employee> <employee id=“902”>

<name>Peter Pan </name> <phone>408 555 9918</phone> <office>216</office>

</employee> </dept>

Page 350: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

350 เรมตนกบ DB2 Express-C

ทานองเดยวกนใน XPath ใชเครองหมาย / ในการเขาถงขอมลจาก element หนง ไปยง elementอนภายในเอกสาร XML ตวอยางเชน จากเอกสารในรปท 16.9 ใน XPath สามารถสบคนดรายชอพนกงานทงหมดไดโดยใชการสอบถามตอไปน: /dept/employee/name XPath expressions XPath expressions ใชการระบเสนทางแบบสมบรณในการระบ Elements และ/หรอ Attributes เครองหมาย “@”ใชในระบ Attributes การสบคนเฉพาะคาขอมลของ Element (Text Node) สามารถทาไดโดยใชฟงกชน “text()” ตารางท 16.1 แสดง XPath Queries และผลลพธทสอดคลองกนจากการใชเอกสาร XML ในรปท 16.9

XPath ผลลพท� /dept/@bldg 101 /dept/employee/@id 901

902 /dept/employee/name <name>Peter

Pan</name> <name>John Doe</name>

/dept/employee/name/text()

Peter Pan John Doe

Page 351: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 351

ตาราง 16.1 – ตวอย�างของ XPath expression อกษรตวแทนของ XPath (XPath Wildcards) ม Wildcard หลก ๆ อย สอง Wildcards ใน XPath:

• “*” ตรงกบ ชอ Tag ใด ๆ กได • “//” คอ “descendent-or-self” wildcard

ตารางท 16.2 แสดงตวอยางเพมเตมโดยใชเอกสาร XML จากรปท 16.9

XPath ผลลพท� /dept/employee/*/text()

John Doe 408 555 1212 344 Peter Pan 408 555 9918 216

/dept/*/@id 901 902

//name/text() Peter Pan John Doe

/dept//phone <phone>408 555 1212</phone> <phone>408 555 9918</phone>

ตาราง 16.2 – ตวอย�างการใช XPath wildcard

Page 352: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

352 เรมตนกบ DB2 Express-C

เงอนไขของ XPath (XPath Predicates) เงอนไขอยในเครองหมายกามป [ ] โดยเปรยบเทยบสามารถคดไดวาเงอนไขของ XPath เปนเหมอนสวน WHERE ในคาสง SQL ตวอยางเชน [@id=”902”] สามารถอานไดวา : “WHERE id มคาเทากบ 902” ใน XPath Expression หนงสามารถมไดหลายเงอนไข การระบเงอนไขบอก ตาแหนงทาไดโดยใช [n] ซงหมายถงการเลอก Child ลาดบท n ตวอยางเชน employee[2] หมายถงการเลอก employee ลาดบทสอง ตาราง 16.3 แสดงตวอยางเพมเตม XPath ผลลพท� /dept/employee[@id=“902”]/name

<name>Peter Pan</name>

/dept[@bldg=“101”]/employee[office >“300”]/name

<name>John Doe</name>

//employee[office=“344” OR office=“216”]/@id

901 902

/dept/employee[2]/@id 902 ตาราง 16.3 – ตวอย�างเงอนไขของ XPath XPath: the parent axis เชนเดยวกบใน MS-DOS หรอ ลนกซ/ยนกซ สามารถใชเครองหมาย “"."” (จด) ในแสดง element ปจจบน (Current Context) และเครองหมาย “".."” (จด จด) อางถง ele-

Page 353: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 353

ment ทอยเหนอ element ปจจบนขนไปหนงระดบ (Parent Context) ตารางท 16.4 แสดงตวอยางเพมเตม Xpath ผลลพท� /dept/employee/name[../@id=“902”]

<name>Peter Pan</name>

/dept/employee/office[.>“300”]

<of-fice>344</office>

/dept/employee[office > “300”]/office

<of-fice>344</office>

/dept/employee[name=“John Doe”]/../@bldg

101

/dept/employee/name[.=“John Doe”]/../../@bldg

101

ตาราง 16.4 – XPath parent axis

16.3.3 นยาม XQuery XQuery คอ ภาษาสอบถามทสรางมาสาหรบ XML XQuery รองรบ path expressions ท ใช�ค�นในโครงสร�างลาดบชนของ XML ในความเปนจรงแลว XPath เปนสวนหนงของ XQuery ดงนนทกเรองทเรยนรมาขางตนเกยวกบ XPath ใชไดกบ XQuery ดวย XQuery รองรบขอมลTyped data และuntyped data XQuery ปราศจากค�าว�าง (Null) เพราะในเอกสาร XML ละข�อมลทสญหาย (Missing)

Page 354: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

354 เรมตนกบ DB2 Express-C

หรอข�อมลทไม�ทราบค�า (Unknown) XQuery ให�ผลลพธ�เป�นลาดบ (Sequence) ของข�อมล XML สงสาคญคอ XQuery และ XPath Expression มคณลกษณะ Case Sensitive XQuery รองรบ FLWOR expression ถาเปรยบเทยบกบคาสง SQL คาสง FLWOR Expression มลกษณะเหมอนกบการใช SELECT-FROM-WHERE

Expression ขนตอไปเปนการ อธบายรายละเอยดของ FLWOR

XQuery: FLWOR expression FLWOR ย�อมาจาก:

� FOR: เปนการวนซาไปตามลาดบขอมล และใหคาตวแปรเทากบแตละขอมลในลาดบ

� LET: เป�นการให�ค�าตวแปรเท�ากบลาดบข�อมล � WHERE: เป�นการกาจดข�อมลทจะวนซา � ORDER: เป�นการเรยงลาดบข�อมลในการวนซา � RETURN: เป�นการสร�างผลลพธ�จากการสอบถาม

ซง expression เหลานใช�ในการจดการเอกสาร XML และทาให�สามารถ คนค�าเป�น expression อนกลบมาได� ตวอย�างเช�น สมมตว�ามตารางซงมนยามดงน CREATE TABLE dept(deptID CHAR(8),deptdoc XML);

Page 355: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 355

และต�อมามการเพมเอกสาร XML เข�าไปในคอลมน� deptdoc <dept bldg=”101”> <employee id=”901”>

<name>John Doe</name> <phone>408 555 1212</phone> <office>344</office>

</employee> <employee id=”902”>

<name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office>

</employee> </dept> จากนนใช�คาสง XQuery ด�วย FLWOR Expression ในการประมวลผลดงน xquery for $d in db2-fn:xmlcolumn('dept.deptdoc')/dept let $emp := $d//employee/name where $d/@bldg > 95 order by $d/@bldg return <EmpList> {$d/@bldg, $emp} </EmpList> ซงจะคนผลลพธ�ดงน

Page 356: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

356 เรมตนกบ DB2 Express-C

<EmpList bldg="101"> <name> John Doe </name> <name> Peter Pan </name> </EmpList>

16.3.4 การเพมเอกสาร XML การเพมเอกสาร XML ลงในฐานขอมล DB2 สามารถทาไดโดยการใชคาสง INSERT SQL หรอใช IMPORT utility XQuery ไมสามารถใชในวตถประสงคนเนองจากไมไดถกนยามไวในมาตรฐาน โปรดดตวอยางตามสครปตดานลาง ซงสามารถประมวลผลจาก DB2 Command Window หรอ ลนกซ เชลล โดยใชคาสงน db2 –tvf table_creation.txt table_creation.txt -- (1) drop database mydb ; -- (2) create database mydb using codeset UTF-8 territory US

Page 357: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 357

; -- (3) connect to mydb ; -- (4) create table items ( id int primary key not null, brandname varchar(30), itemname varchar(30), sku int, srp decimal(7,2), comments xml ); -- (5) create table clients( id int primary key not null, name varchar(50), status varchar(10), contact xml ); -- (6) insert into clients values (77, 'John Smith', 'Gold', '<addr>111 Main St., Dallas, TX, 00112</addr>') ;

Page 358: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

358 เรมตนกบ DB2 Express-C

-- (7) IMPORT FROM "D:\Raul\clients.del" of del xml from "D:\Raul" INSERT INTO CLIENTS (ID, NAME, STATUS, CONTACT) ; -- (8) IMPORT FROM "D:\Raul\items.del" of del xml from "D:\Raul" INSERT INTO ITEMS (ID, BRANDNAME, ITEMNAME, SKU, SRP, COMMENTS) ; ไฟลสครปตและไฟลทเกยวของไดจดเตรยมไวใน expressc_book_quicklabs.zip ทผนวกมากบหนงสอเลมน

ใหตดตามคาอธบายแตละบรรทดในสครปต

1. ลบฐานขอมล “mydb” โดยปกตคาสงนใชในไฟลสครปตเพอลางขอมล (Cleanup) ถาไมมฐานขอมล “mydb” นมากอน จะไดรบขอความ Error แต ไมมผลอะไร

2. การสรางฐานขอมล “mydb” โดยการใช codeset UTF-8 ตองใชฐานขอมล UNICODE เพอใชงาน pureXML(สาหรบ DB2 เวอรชนตากวา 9.5) ซงขนตอนนมความจาเปน สาหรบเพอสรางฐานขอมลทมชนดเปน UNICODE

Page 359: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 359

3. เชอมตอไปยงฐานขอมลทสรางใหมคอ “mydb”ซงเปนสงสาคญในการสราง ออบเจกต ภายในฐานขอมล

4. สรางตาราง “items” คอลมนสดทายของตาราง (คอลมน comments) นยามเปนคอลมน XML โดยระบดวยชนดขอมลแบบใหมคอ XML

5. สรางตาราง “clients” คอลมนสดทายของตาราง (คอลมน “contact”) นยามเปนคอลมน XML

โดยระบดวยชนดขอมลแบบใหมคอ XML 6. ใชคาสง SQL INSERT เพมเอกสาร XML ลงในคอลมน XML ในคาสง INSERT สามารถสงผานเอกสาร XML เปนขอความภายในเครองหมายคาพดเดยว (Single Quote)

7. สามารถใชคาสง IMPORT เพมหรอนาเขาเอกสาร XML หลายๆเอกสาร เขาไปฐานขอมลพรอม ๆ กบขอมลเชงสมพนธได ใน (7) เปนการนาเขาขอมล จากไฟล clients.del (delimited ascii file) และบอกถงทอยของขอมล XML ทอางถงโดยไฟล clients.del (สาหรบตวอยางนคอใน D:\Raul)

จะพจารณารายละเอยดในไฟล clients.del อกท แตกอนอนมาพจารณาดขอมลภายใน D:\Raul (รปท 16.10)

Formatted: Bullets and Numbering

Page 360: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

360 เรมตนกบ DB2 Express-C

ร ปท 16.10 - ข�อมลภายใน D:\Raul directory ทมเอกสาร XML

และมขอมลของไฟล clients.del clients.del 3227,Ella Kimpton,Gold,<XDS FIL='Client3227.xml' />, 8877,Chris Bontempo,Gold,<XDS FIL='Client8877.xml'/>, 9077,Lisa Hansen,Silver,<XDS FIL='Client9077.xml' /> 9177,Rita Gomez,Standard,<XDS FIL='Client9177.xml'/>, 5681,Paula Lipenski,Standard,<XDS FIL='Client5681.xml' />, 4309,Tina Wang,Standard,<XDS FIL='Client4309.xml'/> ในไฟล clients.del ขอความ “XDS FIL=” ใชระบไปยงชอไฟลเอกสาร XML

Page 361: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 361

รปท 16.11 แสดง Control Center หลงจากประมวลผลสครปตขางตน

รปท 16.11 – The Control Center

หลงจากประมวลผล table_creation.txt ขอสงเกตคอ รปนแสดงขอมลภายในตาราง CLIENTS คอลมนสดทาย “Contact” คอคอลมน XML เมอคลกปมทมจด 3 จด หนาตางอกหนาจะเปดขนแสดงใหเหนขอมลภายในเอกสาร XML ซงแสดงปมทมมบนดานขวาของรปท 16.11

Page 362: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

362 เรมตนกบ DB2 Express-C

16.3.5 การสอบถามข�อมล XML มสองทางเลอกในการสอบถามขอมล XML ใน DB2 ดงตอไปน

- การใชคาสง SQL ทม XML Extension (SQL/XML)

- การใช XQuery ทงสองกรณน DB2 มการทางานเปนไปตามมาตรฐานสากลของ XML การสบค�นข�อมล XML โดยใช� SQL/XML การใช คาสง SQL ตามปกตชวยใหสามารถทางานกบแถวและคอลมนได อกทงยงสามารถทางานกบเอกสาร XML ไดดวยเชนกน อยางไรกตาม การใชรปแบบคาสง SQL ยงไมมสวนชวยในการสบคนเอกสารเฉพาะสวน ในกรณน จาเปนตองใช SQL ทม XML Extension (SQL/XML) ตารางท 16.5 อธบายฟงกชนบางสวนของ SQL/XML ทใชงานตามมาตรฐาน SQL 2006 ชอฟ�งก�ชน คาอธบาย XMLPARSE การสงผานคาขอมลทเปนตวอกษร

หรอไบนารขนาดใหญเพอสรางเปน คาขอมล XML

XMLSERIALIZE แปลงขอมล XML ใหอยในรปแบบขอความตวอกษรหรอขอมลไบนารขนาดใหญ

XMLVALIDATE ตรวจสอบความถกตองของขอมล

Page 363: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 363

XML โดยเทยบกบโครงสรางของ XML(XML Schema)

XMLEXISTS ตรวจสอบดการสงผลลพธของ XQuery (ตวอยางเชนสงผลลพธเปนลาดบของขอมลหนงชดหรอมากกวาหนงชด)

XMLQUERY ดาเนนการหรอรน XQuery และคนคากลบมาเปนลาดบของผลลพธ

XMLTABLE ดาเนนการ XQueryหรอรน และคนคากลบมา ในรปแบบตารางของขอมลเชงสมพนธ (หากเปนไปได)

XMLCAST เปลยนชนดขอมลใด ๆ ใหเปน XML หรอจาก XML ใหเปนชนดขอมลใด ๆ

ตารางท 16.5 – ฟ�งก�ชนของ SQL/XML ตวอยางตอไปนสามารถใชฐานขอมล mydb ทสรางไวกอนหนานในการทดสอบได ตวอย�างท 1 ตวอยางนกลาวถงวธการสอบถาม สมมตวาตองการทราบชอของลกคาทงหมดทอาศยอยในพนททมรหสไปรษณยตามทระบ ซงตาราง clients เกบทอยของลกคาทมรหสไปรษณย (zip) ในคอลมน XML

Page 364: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

364 เรมตนกบ DB2 Express-C

ใช XMLEXISTSสามารถใชคนหารหสไปรษณยทตองการซงเกบอยในคอลมน XML และจากดผลลพธทคนคากลบมาไดตามตองการ SELECT name FROM clients WHERE xmlexists( '$c/Client/Address[zip="95116"]' passing clients.contact as "c" ) บรรทดแรกคอคาสง SQL ทระบวาตองการขอมลในคอลมน “name” ของตาราง “clients “ ในสวนของ WHERE เรยกใชฟงกชน XMLEXISTS โดยระบเปน XPath เพอสงให DB2 เขาถงและคนหา Element ชอ “zip” และตรวจสอบ zip ทมคาเทากบ 95116 $c/Client/Address เปนการบงชถงพาธ(path))))ภายในลาดบชนของเอกสาร XML ททาให DB2 สามารถหาตาแหนง zip elementได เครองหมายดอลลาร ($) ใชกากบตวแปร ดงนน “c” จงเปนคาตวแปร ซงกาหนดดวยคาสง passing clients.contact as "c" ซงในทน“clients” คอชอตาราง และ “contact” คอชอคอลมนทเปน XML กลาวคอเปนการสงเอกสาร XML ไปเกบไวในตวแปร “c”

Page 365: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 365

DB2 ตรวจสอบขอมล XML ในคอลมน contact เรมจากโหนด Client ซงเปน Root โหนด ผานโหนด Address เขาสโหนด zip และทายทสดจงเปรยบเทยบหาลกคาทอาศยอย ใน รหสไปรษณยตามเปาหมาย ถาฟงกชน XMLEXISTS ประมวลไดคาจรงในแถว (Row) ใด DB2 จะใหคาผลลพธเปนชอของลกคาในแถวนนกลบไป ใน DB2 9.5 การสอบถามข�างต�นสามารถเขยนสน ๆ ได�ดงต�อไปน SELECT name FROM clients WHERE xmlexists( '$CONTACT/Client/Address[zip="95116"]' ) DB2 สรางตวแปรทมชอเดยวกนกบชอคอลมน XML ขนโดยอตโนมต จากตวอยางขางตน DB2 สรางตวแปร CONTACT ขนโดยอตโนมต ซงมชอเดยวกบคอลมน XML ชอ CONTACT ตวอย�างท 2 มาพจารณาวธการแกปญหาของการสรางรายงานทประกอบดวย e-mail addresses ของลกคาทมสถานภาพเปน Gold โดยใชการสอบถามดงตอไปน SELECT xmlquery('$c/Client/email' passing contact as "c") FROM clients WHERE status = 'Gold'

Page 366: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

366 เรมตนกบ DB2 Express-C

บรรทดแรก แสดงใหเหนวาตองการคนคา email address ซงเปน Element ของเอกสาร XML (ไมใชคอลมนทวไปของตาราง) ซงจากตวอยางทแลว $c คอตวแปรทเกบเอกสาร XML ไว ตวอยางนใชฟงกชน XMLQUERY ซงสามารถใชตามหลง SELECT ในขณะทฟงกชน XMLEXISTS ใชตามหลง WHERE ตวอย�างท 3 ในบางสถานการณ อาจตองการแสดงขอมล XML เปนตาราง ซงทาไดดวยฟงกชน XMLTABLE ดงตวอยางขางลาง SELECT t.comment#, i.itemname, t.customerID, Message FROM items i, xmltable('$c/Comments/Comment' passing i.comments as "c" columns Comment# integer path 'Com-mentID', CustomerID integer path 'Cus-tomerID', Message varchar(100) path 'Mes-sage') AS t บรรทดแรกระบคอลมนทตองการใหแสดงผลลพธออกมา คอลมนทระบหนาชอไวดวยตวแปร t นนมาจากคาในเอกสาร XML

Page 367: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 367

บรรทดท 2 ใชฟงกชน XMLTABLE เพอชไปยงคอลมน XML ทเกบขอมลเปาหมาย (“i.comments”) และพาธในเอกสาร XML ทม Element ทสนใจ ประโยค “columns” ในชวงบรรทดท 4 ถง 6 เปนการระบ XML Element ทจะแปลงไปเปนคอลมนผลลพธของคาสง SQL ทอยในบรรทดท 1 ในสวนของการแปลงน มการระบชนดขอมล (Data Type) เปาหมายทแปลงมาจากคาของ XML Element ตวอยางนแปลงขอมล XML ทงหมด เปนชนดขอมล SQL แบบดงเดม ตวอย�างท 4 มาดตวอยางงาย ๆ ทใช FLWOR Expression ของ XQuery ภายในฟงกชน XMLQUERY ของคาสง SQL/XML SELECT name, xmlquery( ‘for $e in $c/Client/email[1] return $e’ passing contact as “c ” ) FROM clients WHERE status = ‘Gold’ บรรทดแรก ระบผลลพธทตองการแสดงออกมา ซงประกอบดวยชอลกคาและผลลพธจากฟงกชน XMLQUERY

Page 368: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

368 เรมตนกบ DB2 Express-C

บรรทดท 2 เลอก Element ชอ “email” ตวแรก

ซงเปน Element ลาดบรองจาก “Client” เปนคาตอบ บรรทดท 3 เปนการบอกแหลงของขอมล XML (คอลมน contact) บรรทดท 4 บอกวาคอลมนนมาจากตาราง clients และบรรทดท 5 เปนการชวาลกคาในสถานะ Gold เทานนทสนใจ ตวอย�างท 5 ตวอยางนสาธตการใชฟงกชน XMLQUERY ทมการใช FLWOR Expression ของ XQuery แตไมเพยงแคแสดงผลลพธเปน XML เทานน แตยงแสดงเปน HTML ไดดวย SELECT xmlquery('for $e in $c/Client/email[1]/text() return <p>{$e}</p>' passing contact as "c") FROM clients WHERE status = 'Gold' คาสง return ของ XQuery ทาใหสามารถปรบเปลยนรปแบบของผลลพธของ XML ไดตามตองการ ฟงกชน text() ในบรรทดแรกเปนการเลอกเฉพาะสวนขอความ (Text) ของ email address แรกของลกคาทสนใจ บรรทดท 2 เปนการระบใหครอบผลลพธนดวย Tag ยอหนา (<p>) ของ HTML ตวอยางท 6

Page 369: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 369

ตวอยางนใชฟงกชน XMLELEMENT สรางกลมของ Element ชอ item โดยแตละitemม Element ยอยทแสดงรหส (ID) ตราสนคา (brand) และจานวนสนคาคงคลง (Stock Keeping Unit - SKU) ซงเปนคาทไดมาจากคอลมนตาง ๆ ในตาราง items โดยพนฐานแลวสามารถใชฟงกชน XMLELEMENT แปลงจากขอมลเชงสมพนธใหเปนขอมล XML SELECT xmlelement (name "item", itemname), xmlelement (name "id", id), xmlelement (name "brand", brandname), xmlelement (name "sku", sku) FROM items WHERE srp < 100 คาสงสอบถามขางตน มผลลพธดงตอไปน : <item> <id>4272</id> <brand>Classy</brand> <sku>981140</sku> </item> … <item> <id>1193</id> <brand>Natural</brand <sku>557813</sku> </item>

Page 370: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

370 เรมตนกบ DB2 Express-C

การสอบถามข�อมล XML ด�วย XQuery ในหวขอทผานมา แสดงวธสอบถามขอมล XML ดวยคาสง SQL ทม XML Extension มการใช SQL เปนคาสงสอบถามหลกเสมอ โดยม XPath อยภายในคาสง SQL ในหวขอนกลาวถงการสอบถามขอมล XML ดวย XQuery โดยครงนจะใช XQuery เปนคาสงสอบถามหลก และในบางกรณ จะใชคาสง SQL อยภายในคาสง XQuery (โดยใชฟงกชน db2-fn:sqlquery)

ครงนจะใช Xquery จะมการใชฟงกชนบางอยาง รวมทง FLWOR Expression ดวยเชนกน ตวอย�างท 1 คาสง XQuery ทใชในการคนคาขอมลการตดตอของลกคา xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’) ใหขนตนคาสง XQuery ดวยคาวา “xquery” เสมอเพอให DB2 ทราบวาเปนคาสง XQuery มฉะนนหากไมมการระบ DB2 จะเขาใจวาเปนคาสง SQL ฟงกชน db2-fn:xmlcolumn เปนฟงกชนในการสบคนเอกสาร XML จากคอลมนทถกระบไวเปนพารามเตอร มคาเหมอนคาสง SQL ตอไปน ซงเปนการเรยกดขอมล

XML ทงคอลมน SELECT contact FROM clients ตวอย�างท 2

Page 371: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 371

ตวอยางนเปนการใช FLWOR expression เพอสบคนขอมลเบอรโทรสารของลกคา xquery for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/fax return $y บรรทดแรกเปนการเรยก XQuery บรรทด 2 เปนการสง DB2 ใหทางานวนซากบ Element ชอ fax ทอยในคอลมน CLIENTS.CONTACT ซงแตละอลเมนต fax จะถกกาหนดใหเปนคาตวแปร $y บรรทดท 3 เปนการคนคาตวแปร $y สาหรบการวนซาแตละรอบ ผลลพธของการสอบถามมดงตอไปน (ตามปกตผลลพธอาจมการรวม Namespace เขาไปดวย แตในทนไมไดนามาแสดงดวย มฉะนนผลลพธทออกมาจะยากตอการอาน และมหลายบรรทด) <fax>4081112222</fax> <fax>5559998888</fax> ตวอย�างท 3 ตวอยางถดไปนสอบถามขอมล XML และคนคาในรปแบบ HTML xquery <ul> { for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address

Page 372: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

372 เรมตนกบ DB2 Express-C

order by $y/zip return <li>{$y}</li> } </ul> HTML ตวอยาง คนคากลบมามรปแบบดงน <ul> <li> <address> <street>9407 Los Gatos Blvd.</street> <city>Los Gatos</city> <state>ca</state> <zip>95302</zip> </address> </li> <address> <street>4209 El Camino Real</street> <city>Mountain View</city> <state>CA</state> <zip>95302</zip> </address> </li> ... </ul> ตวอย�างท 4 ตวอยางขางลางนใชคาสง SQL ภายในคาสง XQuery ดวยการใชฟงกชน db2-fn:sqlquery ฟงกชนนประมวลผลคาสง SQL และคนคากลบมาเฉพาะขอมล XML ทเลอกเทานน คาสง

Page 373: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 373

SQL ทสงใหฟงกชน db2-fn:sqlquery นตองใหผลลพธเปนขอมล XML เทานน ซงขอมล XML ดงกลาวสามารถนาไปประมวลผลตอดวย XQuery xquery for $y in db2-fn:sqlquery( ‘select comments from items where srp > 100’ )/Comments/Comment where $y/ResponseRequested=‘Yes’ return ( <action> {$y/ProductID $y/CustomerID $y/Message} </action> ) จากตวอยางขางตน การสอบถามดวยคาสง SQL ทาการคดกรองแถวตาง ๆ โดยเลอกเฉพาะแถวทคอลมน “srp” มคามากกวา 100 เทานน แลวจงทาการดงคอลมน comment ทเปน XML มาจากแถวเหลานนอกท ตอมาคาสง XQuery (หรอ XPath) จะประมวลผลกบ Element ยอย หมายเหต: DB2 มลกษณะเปน Case insensitive และมการจดการกบตารางและคอลมนทงหมดในรปแบบตวพมพใหญ ขณะทXQuery เปน case sensitive ซงฟงกชนขางตนเปนฟงกชนทใชเชอมตอกบ XQuery

Page 374: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

374 เรมตนกบ DB2 Express-C

ดงนน ชอตาราง และ คอลมนทงหมด จงตองถกสงผานไปยงฟงกชนเหลานในรปแบบตวพมพใหญซง การผานชอ ออบเจกตไปในรปแบบตวพมพเลกอาจใหผลเปน Error จากการไมรจกชอออบเจกต

16.3.6 การ Join ด�วย SQL/XML ในสวนนอธบายถงวธการใชงาน JOIN ระหวางคอลมน XML 2 คอลมนทอยคนละตารางกน หรอระหวางคอลมน XML กบคอลมนขอมลเชงสมพนธ (Relational Column) สมมตวาไดสรางตาราง 2 ตารางตามคาสงดงน CREATE TABLE dept (unitID CHAR(8), deptdoc XML) CREATE TABLE unit (unitID CHAR(8) pri-mary key not null, name CHAR(20), manager VARCHAR(20), ... ) สามารถทาการ JOIN ได 2 วธดงน วธท 1: SELECT u.unitID FROM dept d, unit u WHERE XMLEXISTS ( ‘$e//employee[name = $m]’ passing d.deptdoc as “e”, u.manager as “m”)

Page 375: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 375

ในบรรทดท 3 ของคาสงน แสดงใหเหนวามการ JOIN ระหวาง Element ชอ “name” ทเปน Element ยอยของคอลมน XML ชอ “deptdoc” ในตาราง “dept” กบคอลมนขอมลเชงสมพนธชอ “manager” ในตาราง “unit” วธท 2: SELECT u.unitID FROM dept d, unit u WHERE u.manager = XMLCAST( XMLQUERY(‘$e//employee/name ‘ passing d.deptdoc as “e”) AS char(20)) ในวธนคอลมนขอมลเชงสมพนธอยทางดานซายของการ JOIN ถาคอลมนขอมลเชงสมพนธอยฝงซายของสมการ อาจมการใชดชนเชงสมพนธ (Relational Index) แทนดชน XML (XML Index)

16.3.7 การ Join ด�วย XQuery สมมตวามการสรางตารางดงน: CREATE TABLE dept(unitID CHAR(8), deptdoc XML) CREATE TABLE project(projectDoc XML) ถาใช SQL/XML จะมการสอบถามเปนดงน

Page 376: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

376 เรมตนกบ DB2 Express-C

SELECT XMLQUERY ( ‘$d/dept/employee’ passing d.deptdoc as “d”) FROM dept d, project p WHERE XMLEXISTS ( ‘$e/dept[@deptID=$p/project/deptID]‘ passing d.deptdoc as “e”, p.projectDoc as “p”) การสอบถามด�วย XQuery ทให�ผลเหมอนกนเป�นดงน xquery for $dept in db2-fn:xmlcolumn(“DEPT.DEPTDOC”)/dept for $proj in db2-fn:xmlcolumn(“PROJECT.PROJECTDOC”)/project where $dept/@deptID = $proj/deptID return $dept/employee วธท 2 นสามารถอธบายไดงายกวา ตวแปร “$dept” เปนตวแปรทเกบเอกสาร XML ของ คอลมน “deptdoc” ในตาราง “dept” $proj เปนตวแปรทเกบเอกสาร XML ของคอลมน “projectdoc” ในตาราง “project” บรรทดท 4 แสดงถงการ JOIN ระหวาง Attribute ของเอกสาร XML แรกกบ Element ของเอกสาร XML ทสอง

Page 377: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 377

16.3.8 การปรบปรงและลบข�อมล การปรบปรงแกไขและการลบ ขอมล XML สามารถทาไดสองวธคอ: � การใช�คาสง SQL UPDATE และ DELETE � การใช� TRANSFORM Expression วธแรกใชคาสง UPDATE และ DELETE ของ SQL การปรบปรงแกไขหรอการลบเกดขนท ระดบของเอกสารนนหมายความวา ขอมลทอยในเอกสาร XML ทงหมดจะถกแทนทดวยขอมลทปรบปรงทงหมด ตวอยางเชน ถาในตวอยางขางลางน หากตองการเปลยนแปลงเพยงอลเมนต<state> แตความจรงแลวเอกสาร XML ทงหมดถกแทนท UPDATE clients SET contact=( xmlparse(document ‘<Client> <address> <street>5401 Julio ave.</street> <city>San Jose</city> <state>CA</state> <zip>95116</zip> </address> <phone> <work>4084633000</work> <home>4081111111</home> <cell>4082222222</cell> </phone> <fax>4087776666</fax>

Page 378: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

378 เรมตนกบ DB2 Express-C

<email>[email protected]</email> </Client>') ) WHERE id = 3227 สาหรบวธท 2 สามารถปรบปรงแกไขขอมลบางสวนโดยการใช TRANSFORM Expression ซงเปนวธทมประสทธภาพมาก วธนอนญาตใหแทนท เพม ลบ หรอเปลยนชอของโหนดในเอกสาร XML รวมทงสามารถเปลยนคาขอมลของโหนดโดยไมไดแทนทโหนด ซงเปนวธการปรบปรงคาของ Element หรอ Attribute ทเกดขนโดยทวไปวธนเรมมใน DB2 9.5 TRANSFORM Expression เปนสวนหนงของภาษา XQuery สามารถใชไดทกหนทกแหงทใช XQuery ได ตวอยางเชน ใชใน FLWOR Expression หรอในฟงกชน XMLQUERY ในคาสง SQL/XML การใชงานทพบบอยคอการใชในคาสง UPDATE ของ SQL เพอเปลยนแปลงขอมลในคอลมนทเปนเอกสาร XML โครงสรางคาสงของ TRANSFORM Expression เปนดงน

>>-transform--| copy clause |--| modify clause |--| return clause |->< copy clause

Page 379: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 379

.-,---------------------------------------. V | |--copy----$VariableName--:=--CopySourceExpression-+------------| modify clause |--modify--ModifyExpression-------------------------------------| return clause |--return--ReturnExpression-------------------------------------|

คาสง copy ใชเพอกาหนดคาเอกสาร XML ทตองการใหแกตวแปร คาสง modify สามารถใชในการเพม (Insert) ลบ (Delete) เปลยนชอ (Rename) หรอแทนท (Replace) ซงเหลานทาใหสามารถปรบปรงแกไขขอมลในเอกสาร XML ได ตวอยางเชน ถาตองการเพมโหนดใหมในเอกสาร XML ตองใช Insert Expression ถาตองการลบโหนดในเอกสาร XML ตองใช Delete Expression ถาตองการเปลยนชอ Element หรอ Attribute ในเอกสาร XML ตองใช Rename Expression และถาตองการแทนทโหนดทมดวยโหนดใหม ตองใช Replace Expression

Page 380: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

380 เรมตนกบ DB2 Express-C

คาทนาไปแทนทสามารถถกใชเพอเปลยนคาของ Element หรอ Attribute เทานน ประโยค return มหนาทสงกลบคาผลลพธของ TRANSFORM Expression ตวอยางของคาสง UPDATE โดยการใช TRANSFORM Expression แสดงดงน

(1)-- UPDATE customers (2)-- SET contactinfo = xmlquery( 'de-clare default element namespace (3)-- "http://posample.org"; (4)-- transform (5)-- copy $newinfo := $c (6)-- modify do insert <email2>my2email.gm.com</email2> (7)-- as last into $newinfo/customerinfo (8)-- return $newinfo' passing con-tactinfo as "c") (9)-- WHERE id = 100

จากตวอยางขางบน ในบรรทดท (1) (2) และ (9) เปนสวนหนงของคาสง UPDATE ของ SQL ในบรรทดท 2 ใชฟงกชน XMLQUERY ซงทาการเรยกใช TRANSFORM Expression ในบรรทดท 4 โดย TRANSFORM Expression ครอบคลมตงแตบรรทดท 4 ถงบรรทดท 8 และใชเพมโหนดใหมคอ <email2> ลงในเอกสาร XML หมายเหต การปรบปรงแกไข Element ในเอกสาร XML ผาน View ไมสามารถทาได

Page 381: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 381

การลบทงเอกสาร XML จากตารางทาไดงายเชนเดยวกบการใชคาสง SELECT ใน SQL/XML ใชคาสง DELETE ของ SQL และกาหนดเงอนไข WHERE ทตองการ

16.3.9 การทาดชน XML (XML indexing) ในเอกสาร XML สามารถสรางดชนสาหรบ Element, Attribute หรอคาตาง ๆ (Text Nodes) ดงตวอยางขางลางตอไปน สมมตวาไดสรางตารางขางลางนขน CREATE TABLE customer(info XML) และสมมตวาสวนหนงของเอกสาร XML มการเกบขอมลขางลางน <customerinfo Cid="1004"> <name>Matt Foreman</name> <addr country="Canada"> <street>1596 Baseline</street> <city>Toronto</city> <state>Ontario</state> <pcode>M3Z-5H9</pcode> </addr>

Page 382: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

382 เรมตนกบ DB2 Express-C

<phone type="work">905-555-4789</phone> <phone type="home">416-555-3376</phone> <assistant> <name>Peter Smith</name> <phone type="home">416-555-3426</phone> </assistant> </customerinfo> 1) คาสงนเปนการสรางดชนชไปท Attribute ชอ “Cid ” CREATE UNIQUE INDEX idx1 ON cus-tomer(info) GENERATE KEY USING xmlpattern '/customerinfo/@Cid' AS sql DOUBLE 2) คาสงนเปนการสรางดชนชไปยง element “name ” CREATE INDEX idx2 ON customer(info) GENERATE KEY USING xmlpattern '/customerinfo/name' AS sql VARCHAR(40) 3) คาสงเปนการสรางดชนชไปทก elements “name ”

Page 383: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 383

CREATE INDEX idx3 ON customer(info) GENERATE KEY USING xmlpattern '//name' AS sql VARCHAR(40); 4) คาสงนเปนการสรางดชนชไปททก Text Node (ทกคาขอมล) แตวธนไมแนะนาใหใชเพราะเปนการสนเปลองมากเกนไปในการบารงรกษาดชนเมอมการปรบปรงแกไข ลบ หรอเพมขอมล และดชนนจะมขนาดใหญเกนไป CREATE INDEX idx4 ON customer(info) GENERATE KEY USING xmlpattern '//text()' AS sql VARCHAR(40);

Page 384: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

384 เรมตนกบ DB2 Express-C

ปฏบตการท 14 - SQL/XML และ XQuery วตถประสงค ไดแสดงหลายตวอยางของนยามการใชคาสง SQL/XML และ XQuery และไดรจกกบ DB2 Command Editor และ IBM Data Studio ในปฏบตการน จะไดทดสอบความร SQL/XML และ XQuery และไดรบประสบการณในการใชเครองมอเหลานอกดวย จะใชฐานขอมลชอ “mydb” ทสรางจากไฟลสครปต table_creation.txt ทกลาวถงไปแลวในตอนตนของบทน ขนตอน 1. สรางฐานขอมลชอ mydb และบรรจขอมล XML ตามทไดอธบายมากอนหนานในบทน

2. เลอกใช Command Editor หรอ IBM Data Studio: a) คนคนขอมล comment ของเอกสาร XML จากตาราง ITEMS ทงสองวธ แตใหใชเฉพาะ XQuery เทานน

b) ทาไมผลลพธทไดจากคาสง SQL นไมเหมอนกบการใช XQuery ขางตน

SELECT comments FROM items c) คนคน ID และ BRANDNAME จากแถวทมเอกสาร XML ทม Element ชอ ResponseRequested มคาเปน “No ”

Page 385: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

บทท 16 – SQL/XML และ XQuery 385

______________________________________________________________________ เฉลยวธแกปญหา:

2a) xquery db2-

fn:xmlcolumn('ITEMS.COMMENTS') xquery db2-fn:sqlquery("select

comments from items")

2b) ผลลพธทไดมความแตกตางกนเพราะ SQL คนคา NULL กลบหากวาไมมคาใดๆ แต XQuery ไมสงคาใด ๆ กลบมาทงสน

2c) SELECT id, brandname FROM items WHERE XMLEXISTS('$c/Comments/Comment[ResponseRequested="No"]' passing ITEMS.COMMENTS as "c

Page 386: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42
Page 387: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

387

17 บทท 17 –การพฒนาโปรแกรมด�วยภาษา Java ภาษา PHP และภาษา Ruby

บทนจะอธบายหลกการพฒนาแอพพลเคชนเพอเรยกใชงาน DB2 โดยใชภาษา Java, ภาษา PHP และภาษา Ruby บน Rails วตถประสงคของบทนจะไมไดสอนการใชงานภาษาเหลาน แตจะใหขอมลทเกยวในการใชงานภาษาเหลานกบ DB2 หมายเหต: รายละเอยดเพมเตมเกยวกบหวขอนสามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4402

17.1 การพฒนาแอพพลเคชนโดยใช Java IBM DB2 Driver สาหรบ JDBC (รจกกนในชอ JCC Driver ดวย) ไดรบการปรบเพม ประสทธภาพบน DB2 Server ทใชงานในทกๆ Platforms ไฟล db2jcc.jar (com.ibm.db2.jcc) จะประกอบดวย Driver ทงแบบท 2 และแบบท 4 ไฟล db2jcc.jar จะมาพรอมกบ DB2 Client หรอสามารถดาวนโหลดเองได (IBM DB2 Driver สาหรบ JDBC และ SQLJ) จาก เวบไซต DB2 Express-C (ibm.com/db2/express)

17.1.1 JDBC Driver แบบท 2 JDBC Driver แบบท 2 จะตองม DB2 Client ถกตดตง ณ ทเดยวกบทแอพพลเคชน JDBC ทางานอย รปท 17.1 แสดงภาพแอพพลเคชน JDBC ทไช driver แบบท 2

Page 388: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

388 การเรมตนดวย DB2 Express-C

Figure 17.1 – The JDBC type 2 driver รปท 17.2 เปนตวอยางวธการเชอมตอกบ Db2โดยใช JDBC Driver แบบท 2 ใหสงเกตวาในตวแปร URL จะไมมขอมล Hostname หรอ Port เพราะวาขอมลเหลานจะไดมาจาก DB2 Client ...

public static final String DB_URL = “ jdbc:db2:sample ”; Properties connectProperties = new Properties(); connectProperties.put(“user”, “db2admin”); connectProperties.put(“password”, “ibmdb2”); Connection connection = null try { Class.forName(“ com.ibm.db2.jcc.DB2Driver ”).newInstance(); connection = DriverManager.getConnection(url, connectProperties) } catch (Exception e) throw e; } ... รปท 17.2 – การเชอมต�อทใช� JDBC Driver แบบท 2 17.1.2 JDBC Driver แบบท 4 JDBC Driver แบบท 4 ไมไดตองการ DB2 Client ในการเชอมตอกบ DB2 server. รปท 17.3 แสดง ภาพแอพพลเคชน JDBC ทใช Driver แบบท 4

Page 389: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เนอหาตางๆ 389

รปท 17.3 – JDBC Driver แบบท 4 รปท 17.4 เปนตวอยางวธการเชอมตอกบ Db2โดยใช JDBC Driver แบบท 4 ใหสงเกตวาในตวแปร URL นจะมขอมล Hostname หรอ Port อยดวย ...

public static final String DB_URL = “ jdbc:db2://server1:50000/sample ” ; Properties connectProperties = new Properties(); connectProperties.put( “user ” , “db2admin ” ); connectProperties.put( “password ” , “ ibmdb2 ” ); Connection connection = null try { Class.forName( “com.ibm.db2.jcc.DB2Driver ” ).newInstance(); connection = DriverManager.getConnection(url,connectProperties) } catch (Exception e) throw e; } ... รปท 17.4 – แสดงการเตรยมการเชอมต�อโดยใช� JDBC Driver แบบท 4

Page 390: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

390 การเรมตนดวย DB2 Express-C

17.2 การพฒนาแอพพลเคชนโดยใช PHP PHP (PHP Hypertext Preprocessor) เปนภาษาสครปตทสามารถใชงานไดโดยไมขนกบ Platform และเปนภาษาแบบเปดเผยโคด (Open Source) ภาษานถกออกแบบเพอใชสาหรบการพฒนาเวบแอพพลเคชน และเปนภาษาสาหรบพฒนาเวบอนหนงทถกใชอยางมากทสดในปจจบนตวหนงของโลก ความนยมของ PHP เปน เพราะคณลกษณะของภาษาดงตอไปน: - เรยนรการใชงานไดงาย พฒนาได ไว และ ใชซา ได - คงทน (Robust), ประสทธภาพสง (High-Performance) และปรบขยายได

(Scalable) - เสถยร (Stable) และมนคงปลอดภย (Secure) - เปนอกทางเลอกสาหรบการพฒนาเวบ นอกเหนอจาก J2EE และ .NET - งายตอการรวมระบบทมสภาพแวดลองแตกตางกน (Heterogeneous) - ไดรบการพสจนแลวจากการใชงานอยางกวางขวาง - มชมชนผใชทเขมแขง PHP เปนคอมโพเนนทหนงของ LAMP (ซงประกอบดวย Linux, Apache HTTP Server, MySQL, PHP / Perl / Python) LAMP เปนเทคโนโลยเวบแบบเปดเผยรหส ท ISP สวนใหญจะมใหใช โดยมคาใชจายตอเดอนทเหมาะสม

17.2.1 ทางเลอกในการเชอมต�อกบ DB2 สาหรบ PHP

IBM รองรบการเขาถงฐานขอมล DB2 จากPHP แอพพลเคชนได 2 เอกเทนชน (Extension) คอ ibm_db2: เอกเทนชน ibm_db2 นม procedural API(application programming interface) สาหรบสราง, อาน, ปรบปรง และบนทกขอมลลงสฐานขอมล

รวมทงวธการเขาถง Metadata เอกเทนชนน สามารถใชงานไดกบ PHP 4 หรอ PHP 5 และสามารถหาเอกเทนชนนไดจาก รโพสทอรของ PECLภายใตลขสทธของ Apache 2.0 เอกเทนชนนถกพฒนาและสนบสนนโดย IBM เอกเทนชนนสามารถทางานกบ Stored Procedure และ LOBs และยงมความรวดเรว ไดรบการปรบแตงใหทางานกบ DB2 ไดเปนอยางด PDO_ODBC:

Page 391: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เนอหาตางๆ 391

PDO_ODBC เปน Driver สาหรบเอกเทนชน PHP Data Objects (PDO) ซงสามารถเขาถง ฐานขอมล DB2 ผานมาตรฐาน Object-oriented Database Interface ทเรมมใน PHP 5.1 เราสามารถ Compile โปรแกรมไดโดยตรงกบ Libraries ของ DB2 และเปนรปแบบตามมาตรฐานของ PHP ในการตดตอขอมล อกทงยงทางานไดรวดเรว, ไมซบซอน และ เปนแบบ Obect Oriented อกดวย ของ เอกเทนชน PDO_ODBC ใช Libraries ของ DB2 สาหรบการเขาถงขอมลแบบ Native และถกสรางไวอยแลวใน PHP 5.1 สามารถดรายละเอยดเพมเตมไดจาก

• http://pecl.php.net/package/pdo • http://pecl.php.net/package/PDO_ODBC

การเชอมต�อไปยงฐานข�อมล DB2 แบบ Uncatalogued Listing 17.1 แสดงการเชอมตอไปยงฐานขอมลของ DB2 ดวยเอกเทนชนทงสองแบบ ทกลาวถงในขางตน $host = 'localhost'; $port = 50000; $DSN = "DRIVER={IBM DB2 ODBC DRIVER}; PORT=$port; HOSTNAME=$host; DATABASE=$database; PROTOCOL=TCPIP; USER=$user; PWD=$password"; -- If using the ibm_db2 extension -- $uconn = db2_connect($DSN, null, null); -- If using the PDO_ODBC extension -- try { $uconn = new PDO("odbc:$DSN", null, null); } catch (PDOException $e) { print $e->errmsg(); } Listing 17.1 – การเชอมต�อไปยงฐานข�อมล DB2 แบบ Uncatalogued Listing 17.2 แสดงตวอยางของโปรแกรม PHP แอพพลเคชนอยางงายทใชเอกเทนชน ibm_db2 <?php $sql = "SELECT name, breed FROM ANIMALS WHERE weight < ?"; $conn = db2_connect($database, $user, $password); $stmt = db2_prepare($conn, $sql); $res = db2_execute($stmt, array(10)); while ($row = db2_fetch_assoc($stmt)) { print "{$row['NAME']} is a {$row['BREED']}.\n"; } ?>

Page 392: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

392 การเรมตนดวย DB2 Express-C

Listing 17.2 – แสดงตวอยางของโปรแกรม PHP แอพพลเคชนอยางงายทใชเอกเทนชน ibm_db2

การกาหนดค�าใน PHP สาหรบ ibm_db2 ในระบบปฎบตการ Linux หรอ UNIX อาจตองเปลยนแปลงขอมลในไฟล php.ini ดงตอไปน extension=ibm_db2.so ibm_db2.instance_name=<instance name> บนระบบปฎบตการ Windows เปลยนแปลงคาในไฟล php.ini ดงน extension=php_ibm_db2.dll คณยงสามารถดาวนโหลดและตดตงชด Application Suite ของ Zend Core for IBM เพอทจะไดตดความกงวลในการกาหนดคาเหลาน ซงจะไดอธบายในหวขอถดไป

17.2.2 Zend Core for IBM

Zend Core เปนชดซอฟทแวรสาเรจรป สาหรบการพฒนาและใชงาน PHP สาหรบเวบแอบพลเคชนทมความสาคญทางธรกจ โดยมความนาเชอถอ, มประสทธผล และ ความยดหยน อนเปนสงจาเปนสาหรบการใชงานแอบพลเคชน PHP คณสามารถดาวนโหลด Zend Core ไดฟรจาก http://ibm.com/software/data/info/zendcore Zend Core for IBM จะตดตง DB2 และ IDS Clients, Apache HTTP

(เลอกไดวาจะตดตง หรอไมตดตง) , PHP 5 และ เอกเทนชนทเปนทนยมของ PHP รวมทงเอกเทนชน ibm_db2 และ PDO_INFORMIX ดวย Zent Core for IBM สามารถเลอกตดตง DB2 Express-C Server, IBM Cloudscape Server, หนงสอคมอการใชงานของ PHP ฉบบสมบรณ และตวอยางแอพพลเคชนสาหรบ DB2 ได Zend Core มหนาจอการใชงานงายๆ สาหรบการใชและปรบแตงคาสภาพแวดลอมของ PHP ดงแสดงไวในรปท 17.5, 17.6 และ 17.7

Page 393: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เนอหาตางๆ 393

รปท 17.5 - หน�าจอสาหรบการจดการและการควบคมของ Zend Core

Page 394: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

394 การเรมตนดวย DB2 Express-C

รปท 17.6 - หน�าจอสาหรบการปรบแต�งของ Zend Core

Page 395: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เนอหาตางๆ 395

รปท 17.7 - หน�าจอสาหรบการปรบแต�งของ Zend Core

17.3 การพฒนาแอพพลเคชนโดยใช Ruby บน Rails Ruby เปนภาษาสครปตเชงออบเจกตแบบพลวต (Dynamic) และทางานขาม แพลตฟอรม ได ซงชวยใหการพฒนาทาไดรวดเรวและมไลบรารใหใชอยมากมาย Ruby เปนภาษาแบบออบเจกทงายและสนก คดคนโดย Yukihiro Matsumoto ("Matz") ในป ค.ศ. 1995 Rails คอ Framework ชดเตม ทเขยนดวยภาษา Ruby สาหรบใชพฒนา เวบแอพพลเคชน ทใชฐานขอมล และมสถาปตยกรรมแบบ Model-View-Control (MVC) ทาใหเราสามารถใช Rails ไดอยางมประสทธผล และ ใชงานไดอยางงายดาย Rails เปนหนงใน Web Frameworks ทไดรบความนยมเรวทสด ตงแตป ค.ศ. 2004 ซงสรางขนโดย David Heinemeier Hansson

17.3.1 Startup Toolkit สาหรบ DB2 on Rails

IBM รถงความสาคญของ Ruby on Rails ในกลมชมชนรวมพฒนา ดงนนจงได สรางเปน แพคเกจ ทเรยกวา Startup Toolkit for DB2 on Rails โดยชด Toolkit นจะเปนโปรแกรมตดตงทจะสรางสภาพแวดลอมทสมบรณสาหรบพฒนาแอพพลเคชนบน DB2 ดวย Ruby on Rails สามารถดาวนโหลด และใชไดฟรจากเวบไซต IBM alphaWorks ท http://www.alphaworks.ibm.com/tech/db2onrails The Startup Toolkit สาหรบ DB2 on Rails:

� มโปรแกรมตดตงทสมบรณ � ชวยใหตดตงและปรบแตงคาของ Ruby on Rail ไดงาย � ตดตง DB2 Express – และเครองมอตาง ๆ � ม DB2 Ruby Driver และ DB2 Rails Adapter ทพฒนาโดย IBM

มโปรแกรมสาธต (Demos) และโปรแกรมการสอน (Tutorials) ตาง ๆ

การเรมต�นด�วย DB2 Express-C

Page 396: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

396 การเรมตนดวย DB2 Express-C

หนงสอสาหรบชมชนโดยชมชน

Page 397: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

เนอหาตางๆ 397

Page 398: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

398 การเรมตนดวย DB2 Express-C

การจดพมพ�ครงท2 (เมษายน 2008) การจดพมพ�ครงนได�มการปรบปรงสาหรบ IBM® DB2® Express-C Version 9.5 สาหรบลนกซ�®, ยนกซ�®และ วนโดวส�® © ลขสทธของบรษทไอบเอม ป� 2007, 2008สทธต�างๆ

ถกรกษาไว�

Page 399: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

399

ภาคผนวก A. – การแก�ไขป�ญหา

ภาคผนวกนอภปรายวธการแกไขปญหาตางๆ ซงอาจจะประสบเมอทางานกบ DB2 รปท A.1 เปนการสรปภาพรวมแบบคราวๆ ของการดาเนนการเมอเกดปญหาขน

Problem!

db2 ? <code>

Review Administration Notification Log

Review db2diag.log

Search for APARs, or known problems

Review system with Operating System

commands

Collect Traces, dumps, trap files, core files and contact IBM DB2 Tech

Support รปแบบ A.1 .1 – ภาพรวมของการแก�ไขป�ญหา

Page 400: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

400 การเรมตนดวย DB2 Express-C

หมายเหต: รายละเอยดเพมเตมเกยวกบการแกไขปญหา สามารถศกษาไดจากวดทศนน: http://www.channeldb2.com/video/video/show?id=807741:Video:4462

A.1 การค�นหาข�อมลเพมเตมเกยวกบรหสผดพลาดต�างๆ หากตองการไดรบขอมลเพมเตมเกยวกบรหสผดพลาดตางๆ ใหปอนคาเรมตนของรหสดวยเครองหมายคาถามในพนทปอนขอมลใน Command editor และใหกดทปมExecuteขนตอนถกแสดงใน รปท A.2.

Page 401: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

ภาคผนวก A. – การแกไขปญหา 401

รปท A.2. –การค�นหาข�อมลเพมเตมเกยวกบรหสผดพลาดต�างๆ ของ DB2 เครองหมายคาถาม (?)เปนการเรยกใชคาสงชวยของ DB2 สวนตอไปนเปนตวอยางตางๆทใชในการเรยกใชความชวยเหลอททานตองการ ตวอยางเชน รหสผดพลาด “104”ใน SQL ตวอยางตางๆ ตอไปนทงหมดใชไดเหมอนกนหมด db2 ? SQL0104N db2 ? SQL104N db2 ? SQL-0104 db2 ? SQL-104 db2 ? SQL-104N

A.2 SQLCODE และ SQLSTATE SQLCODE คอรหสทไดรบ หลงจากทมการประมวลผลแตละคาสง SQL ความหมายของ คาตาง ๆ ถกสรปดงตอไปน: SQLCODE = 0; การประมวลผลคาสงประสบความสาเรจ (เสรจสนดวยความเรยบรอย) SQLCODE > 0; การประมวลผลคาสงประสบความสาเรจ, แตมการแจงเตอนกลบมา

Page 402: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

402 การเรมตนดวย DB2 Express-C

SQLCODE < 0; การประมวลผลคาสงไมประสบความสาเรจ และมการแจงขอผดพลาดกลบดวย SQLSTATE เปนกลมตวอกษร 5 ตว ทไดกาหนดตามมาตรฐาน ISO/ANSI SQL92 ตวอกษร 2 ตวแรก บอกเกยวกบ class ของรหส SQLSTATE: class รหส 00 หมายถงการประมวลผลคาสงประสบความสาเรจ class รหส 01 หมายถงการแจงเตอน class รหส 02 หมายถงการไมพบภาวะทกาหนด class อนๆ ทงหมดจะเปนขอผดพลาดตางๆ

A.3 การบนทกลอกแจ�งรายละเอยดของการทางานของ DB2 บนทกแจงของDB2 ใหขอมลการวเคราะหเกยวกบขอผดพลาดตางๆตรงจดทประมวลผลไมประสบความสาเรจ บนแพลตฟอรมของ ลนกซ/ยนกซ บนทกแจงน จะเปนไฟลขอความทเรยกวา<instance name>.nfy (ตวอยางเชน “db2inst.nfy”) บนวนโดวส ขอความบนทกทงหมดทแจงน จะถกเขยนลงในบนทกเหตการณของวนโดวส(Windows Event log) การกาหนดคาตวแปร DBM configuration parameter ชอ notifylevel ผจดการระบบ(Administrator)สามารถทจะกาหนดระดบของขอมลทจะตองถกบนทกลงในบนทกแจง

Page 403: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

ภาคผนวก A. – การแกไขปญหา 403

0 – ไมมการตรวจจบการแจงขอความใด ๆ (ไมแนะนาใหใชระดบน) 1 – เหตการณรายแรงหรอขอผดพลาดตางๆ ทไมอาจแกไขได 2 – ระบบตองการการตอบสนองอยางฉบพลนเพอแกไขปญหาทเกดขน 3 -- ขอมลทสาคญ,แตไมจาเปนตองมการตอบสนองอยางฉบพลน ( หากไมกาหนดระดบ ระบบจะอยทระดบน) 4 -- ขอความขอมลตางๆ

A.4 db2diag.log db2diag.log ใหขอมลทเปนรายละเอยดในเชงลกมากกวาทมอยในบนทกแจงทกลาวมาขางตน (DB2 Administration noti-fication log) ปกตใชเฉพาะสาหรบฝายสนบสนนดานเทคนคของ DB2(DB2 Technical support) หรอ DBA ทมประสบการณเทานน ขอความขอมลใน db2diag.log ประกอบดวย - รหสของ DB2 ทบอกขอผดพลาด - ชอของแอพพลเคชน ทชวยใหทานอางองถงแอพพลเคชนตาง ๆ ททางานกบ DB2 ทเกบอยใน db2diag.logs ของเซรฟเวอรและไคลเอนต

Page 404: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

404 การเรมตนดวย DB2 Express-C

- ขอมลการวเคราะห (เรมตนดวยคาวา "DIA") ใชอธบายเหตผลเกยวกบขอผดพลาด

- ขอมลสนบสนนใดๆ ทมอย เชน โครงสรางขอมลใน SQLCA และ pointers เพอจะบอกถงท เกบของ dump ไฟลพเศษ หรอ trap ไฟลตางๆ

บนวนโดวส โดยปกตสวนทเปน db2diag.log จะอยใน directory: C:\Program Files\IBM\sqllib\<instance name>\db2diag.log บน ลนกซ/ยนกซ โดยปกตสวนทเปน db2diag.log จะอยใน directory: /home/<instance_owner>/sqllib/db2dump/db2diag.log รายละเอยดของขอความทบนทกใน db2diag.logจะขนกบ dbm cfg โดยการกาหนดคาพารามเตอร DIAGLEVEL ระดบคาจาก 0 - 4 (ของ DIAGLEVEL) โดยทคา 0 เปนการกาหนดรายละเอยดนอยทสดและคา 4 เปนการกาหนดรายละเอยดมากทสด ระดบคาตงตน (default) คอ 3

A.5 การตดตามการทางานของ CLI (CLI Traces) สาหรบแอพพลเคชนตางๆ ทเปน CLI และจาวา ทานอาจจะเปดการเรยกการใช traces ของ CLI

Page 405: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

ภาคผนวก A. – การแกไขปญหา 405

เพอชวยในการแกไขปญหาบนแอพพลเคชนของทาน การดาเนนการขางตนสามารถทาไดโดยการแกไขในไฟล db2cli.ini บนเครองเซรฟเวอรทมแอพพลเคชนของทานทางานอย ตวอยางคาตาง ๆ ในไฟล db2cli.ini มดงตอไปน: [common] trace=0 tracerefreshinterval=300 tracepath-name=/path/to/writeable/directory traceflush=1 ทานสามารถใชคาสง db2trc ในการตรวจสอบการทางาน ซงผลลพธทไดอยในรปแบบทจะตอง ใหฝายสนบสนนดานเทคนคของ DB2 ทาการตรวจสอบ

A.6 ข�อบกพร�อง(Defects) และการแก�ไข DB2 ในบางครงปญหาททานพบ อาจจะ เกดขนจากขอบกพรองทมอยใน DB2โดยปกต IBM จะสงชดการแกใข(fix packs) ซงมสวนการแกไขสาหรบขอบกพรองทเกดขน (APARs) เอกสารในชดการแกไขจะมรายการการแกไขตางๆทมอย ในการพฒนาแอพพลเคชนใหม ๆ บรษท IBM จะแนะนาใหใชชดแกไขลาสด(lastest fix pack) เพอใหผใชไดรบประโยชนจากการแกไขตางๆ ทลาสดดวย ในการหาวาเวอรชนของ DB2 ททานใช

Page 406: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

406 การเรมตนดวย DB2 Express-C

และระดบชดการแกไข: ทานสามารถดไดจาก โปรแกรมศนยกลางการควบคม (Control Center) ใหเลอก About จากในเมน Help แตถาดจากใน Command Window ใหพมพ “db2level” หมายเหต ชดแกไขตางๆ และฝายสนบสนนทเปนทางการของ IBM DB2 จะรองรบ DB2 Express-C เฉพาะทานไดทาการจดซอ subscription license ทเปนแบบ 12 เดอน

Page 407: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

407

ทรพยากรต�างๆ

เวบไซต�ต�างๆ

1. เวบไซต DB2 Express-C: www.ibm.com/db2/express ใหใชเวบไซตนในการ ดาวนโหลด DB2 Express-C server, DB2 clients, DB2 drivers, คมอตางๆ, การเขาถง บลอก ของทม, การลงทะเบยนเพอใหอยใน mailing list, ฯลฯ

2. DB2 Express forum: www.ibm.com/developerworks/forums/dw_forum.jsp?forum=805&cat=19 ใหใช forum ในการถามปญหาทางเทคนคเมอทานไมสามารถหาคาตอบไดจากคมอตางๆ ดวยตนเอง

3. DB2 Information Center http://publib.boulder.ibm.com/infocente

r/db2luw/v9/index.jsp ศนยกลางขอมลใหการเขาถงคมอออนไลนตางๆ (online manuals) คมอออนไลนเปนขอมลททนสมยทสด

4. developerWorks http://www-

128.ibm.com/developerworks/db2

Page 408: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

408 การเรมตนดวย DB2 Express-C

เวบไซตนเปนทรพยากรทดเยยมสาหรบนกพฒนาฯ และ DBA ในการเขาถงหวขอตาง ๆ ททนสมย, ตวอยางของคาสงตาง ๆ ฯลฯ โดยไมมคาใชจาย

5. alphaWorks http://www.alphaworks.ibm.com/ เวบไซตนใหการเขาถงการพฒนาเทคโนโลยใหม ๆ ทกาลงจะเกดขนของบรษท IBM เวบไซตนเปนสถานททผสนใจสามารถทจะคนหาเทคโนโลยลาสดตางๆ จากสถาบนวจยของ IBM (IBM Research) Research

6. planetDB2 www.planetDB2.com เวบไซตขางตนเปนการรวมบลอกจากกลมบคคลทเขยนบลอกเกยวกบ DB2

7. DB2 Technical Support ฝายสนบสนนทางดานเทคนคของ DB2 ถาทานไดทาการจดซอ subscription license ของ DB2 Express-C ทเปนแบบ 12 เดอน ทานสามารถ download ชดแกไขตาง ๆ(fixpacks) จากเวบไซดน http://www.ibm.com/software/data/db2/su

pport/db2_9/

8. ChannelDB2 คอเครอขายสาหรบกลมผใช DB2 เครอขายนมเนอหาตาง ๆ เชน วดโอตาง ๆ ทเกยวของกบ DB2, demos, podcasts, บลอก,

Page 409: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

ภาคผนวก A – ปญหาและการแกปญหา 409

การแลกเปลยนความคดเหนตาง ๆทรพยากรตาง ๆ ฯลฯ สาหรบ ลนกซ ยนกซ วนโดวส z/OSและ i5/OS http://www.ChannelDB2.com/

Page 410: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

410 การเรมตนดวย DB2 Express-C

หนงสอต�างๆ 1. Free Redbook : DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and.NET Whei-Jen Chen, John Chun, Naomi Ngan, Rakesh Ranjan, Manoj K. Sardana, August 2006 - SG24-7301-00 http://www.redbooks.ibm.com/abstracts/

sg247301.html?Open

2. Understanding DB2 – Learning Visually with Examples V9.5 Raul F. Chong, et all. January 2008 ISBN-10: 0131580183

3. DB2 9: pureXML overview and fast start by Cynthia M. Saracco, Don Chamberlin, Rav Ahuja June 2006 SG24-7298 http://www.redbooks.ibm.com/abstracts/

sg247298.html?Open

4. DB2® SQL PL: Essential Guide for DB2® UDB on Linux™, UNIX®, Windows™, i5/OS™, and z/OS®, 2nd Edition Zamil Janmohamed, Clara Liu, Drew Bradstock, Raul Chong, Michael Gao, Fraser McArthur, Paul Yip ISBN: 0-13-100772-6

Page 411: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

ภาคผนวก A – ปญหาและการแกปญหา 411

5. Redbook ฟร: DB2 pureXML Guide Whei-Jen Chen, Art Sammartino, Dobromir Goutev, Felicity Hendricks, Ippei Komi, Ming-Pang Wei, Rav Ahuja, Matthias Nicola. สงหาคม 2007 http://www.redbooks.ibm.com/abstracts/sg247315.html?Open

6. Information on Demand - Introduction to DB2 9 New Features Paul Zikopoulos, George Baklarz, Chris

Eaton, Leon Katsnelson ISBN-10: 0071487832 ISBN-13: 978-0071487832

7. Redbook: Developing PHP Applications for IBM Data Servers. Whei-Jen Chen, Holger Kirstein, Daniel

Krook, Kiran H Nair, Piotr Pietrzak May 2006 - SG24-7218-00 http://www.redbooks.ibm.com/abstracts/

sg247218.html?Open

อเมล ทใช�ในการตดต�อ เมลสาหรบ DB2 Express-C ทวไป: [email protected] เมลสาหรบโครงการ DB2 สาหรบสถานศกษา [email protected]

Page 412: DB2 Express-C ?????????????????????????myy.haaga-helia.fi/~dbms/db2/04_Resources/00_Books/Getting Started with... · 4 เร มต นก บ DB2 Express-C 2.2.2 Connection Concentrator.....42

412 การเรมตนดวย DB2 Express-C