Tag DB2

DB2 Launchpad มีแต่หน้าจอว่างๆ ไม่มีเมนู หรือปุ่มให้ลงโปรแกรม

สำหรับหลายๆคนที่ Install IBM DB2 เจอหน้าจอว่างๆแบบนี้ สาเหตุ: เกิดจาก Path ที่เก็บตัว Setup มี Space นะครับ เช่น “C:\TEMP IBM” การแก้ไข: เปลี่ยน Path ที่เก็บตัว Setup ไม่ให้มี Space นะครับ เช่น “C:\TEMP_IBM”

[DB2] Query ตรวจสอบการ Set Automatic Storage ของ Table Space

เมื่อวานได้ลองขึ้น DB สุดท้ายแล้ว พอทดสอบ Run App มันแจ้ง Error นี้ครับ SQL0289N Unable to allocate new pages in table space “USERSPACE1”. SQLSTATE=57011 สาเหตุ คือ DB2 มันจัดสรรพื้นที่ให้ไม่ได้ แต่การที่เราจะแก้อะไร ควรจะดู Config เก่าก่อน ได้มีการกำหนด Automatic Storage หรือ ยัง โดยเจ้า Automatic Storage เป็น Feature ที่ช่วยตรวจสอบพื้นที่ของ Table…

[DB2] ลองใช้ Execution Plan เพื่อดูว่า Query ที่เขียนนั้นแย่ หรือไม่

IBM DB2

บทความแรกของปี 2016 เลย (จริงๆ Plan ว่าจะเขียนนานแล้ว แต่ติดงานประจำที่ Change บ่อยมากๆ) วันนี้เลยไปเจอ Shell Script ของ AIX ตั้งนึง ที่ทำหน้าดึงข้อมูลมาใส่ใน Temp Table และส่งออกเป็น Text File ไประบบอื่นผ่าน FTP แต่ปัญหา คือ ว่ามันช้ามากกกกกกกกกกกกก รันเกือบ 20 นาทียังไม่ออกเลย จาก Query ตัวอย่าง เราจะพบว่า มัน Self Join เยอะมากก ซึ่งใน DBMS ถ้าตัวเจ๋งๆ…

[DB2] Set DB2CODEPAGE

CODEPAGE คือ อะไร ? CODEPAGE มองง่ายๆเลย คือ คำสั่งที่บอกให้เครื่องคอมพิวเตอร์รู้ว่า เรากำลังใช้ภาษาอะไรอยุ่กับมัน เช่น ภาษาไทย ภาษาอังกฤษ ซึ่ง Vender แต่ละค่ายได้แก่ Microsoft, SAP, ORACLE เป็นต้น ออกมาตรฐาน CODEPAGE ของตัวเองมา อย่างภาษาไทยมี CODEPAGE เช่น Windows-874,Tis-620,UTF-8 ทำไมภาษาไทย อันเดียวถึงมีหลากหลาย CODEPAGE ? เพราะ แต่ละเจ้าต้องการเป็นผู้นำ และก็เป็นเรื่องประสิทธิภาพด้วย เพราะ ถ้า Vender  พัฒนา CODEPAGE เอง ตัว Vender สามารถจะโมปรับแต่งให้เข้ากับระบบงานของตัวเองได้ง่ายด้วย…

[DB2] เปิดใช้งาน Hierarchical Queries

Hierarchical queries อันนี้จริงๆเป็น Feature ลับของทาง Oracle ครับ โดยนำมาช่วยให้สามารถ Query ข้อมูลยาก และซับซ้อนได้ง่ายขึ้นครับ เช่น มีข้อมูล Company อยากรู้ว่า Company รายการนี้ มีบริษัทลูกกี่ตัว เป็นต้นครับ (อันนี้เดี๋ยวของไปเขียน Blog ยกอีกตอนครับ หุหุ) สำหรับการเปิดใช้ Feature Hierarchical queries สามารถใช้คำสั่งง่ายๆ ดังนี้ db2set DB2_COMPATIBILITY_VECTOR=08 db2stop db2start ข้อควรระวัง: การเปิดใช้ Hierarchical queries นั้นช่วยให้สามารถ Query ข้อมูลแบบลำดับขั้นได้แล้ว…

[DB2] หา Table / Column ตาม SQL Error Message

พอดีเจอมาหลายครั้งแต่ แต่ก็ยังไม่ได้เขียนสักที ในระหว่างเราพัฒนาโปรแกรมเชื่อมต่อกับฐานข้อมูล DB2 บ่อยครั้งมักมี Error Message ของตัว SQL แล้วทีนี้ เราจะรู้ได้อย่างไรว่ามัน Error ที Table ไหน เพื่อทีจะได้หาสาเหตุได้อย่างรวดเร็วครับ โดยมีได้มี Error Message ดังนี้ ERROR [23502] [IBM][DB2/NT64] SQL0407N Assignment of a NULL value to a NOT NULL column “TBSPACEID=2, TABLEID=1111, COLNO=7” is not allowed.…

[DB2] SQL1159 Initialization error with DB2 .NET Data Provider / SQLSTATE IM004, Error Reason Code 10

black and white piano keys

พอดี Application ที่ทำตัวเป็นลูกครึ่งผมระหว่างระบบเก่า และใหม่ จึงมีการเชื่อมต่อเข้ากับ DB2 2 แบบ ได้แก่ ODBC และ DB2 .NET Data Provider และพบ Error ดังนี้ สำหรับตัว ODBC มีรูปแบบ Error ดังนี้ รูปแบบ Error สำหรับตัว ODBC การแก้ไข: ให้ไปเพิ่มสิทธิของ User ที่ใช้งาน Application ให้อยู่ในกลุ่ม DB2ADMNS หรือ DB2USERS ครับ สำหรับตัว DB2 .NET…

[DB2] เรียง ID ของแถวตามเงื่อนไขด้วย Function ROW_NUMBER()

จริงๆช่วงนี้มีอะไรให้เขียน Blog ได้หลายตอนครับ แต่เวลา และปริมาณงานนี่สิไม่เคยพอ เข้าเรื่องเลยดีกว่า ตอนนี้ผมมีหน้าจอนึง ซึ่งแต่ละแถวใน Grid จะมี Column ซ่อนไว้ ชื่อ “SEQNO” เอาไว้เป็น Key คู่กับ Column “COMPANYID” เพื่อเอาไปใช้อ้างอิงในหน้าจออื่นๆที่เรียกใช้งาน ตอนแรกดูเหมือนว่า IDEA นี้น่าจะดี   แต่มันมีสิ่งที่ผิดพลาดเรื่องนึงครับ คือ Column “SEQNO” แทนที่มันจะ Auto Increment มันดันเอา Mx + 1 ครับ มันเลยเกิดปัญหาที่ว่า ถ้า User มีข้อมูลใน Grid 4…

[DB2] Auto Increment

ดอง Blog ไว้นาน เนื่องจากถึงโค้งสุดท้ายของ Project Treasury ที่ได้ทำกับทางออมสินแล้ว วันนี้ขอเขียนต่อให้เสร็จเลยและกัน จะได้ไปเก็บตัว DataSet ต่อ สำหรับคนที่ใช้งาน DB2 อาจจะสงสัยว่ามันมี Auto Increment แบบ MySQL หรือป่าวครับ คำตอบมีครับ โดยสามารถกำหนดเพิ่ม ดังนี้ครับ GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) โดยคำสั่งข้างต้น คือ การกำหนดให้ระบบสร้างตัวเลขที่ UNIQUE(IDENTITY) ทุกครั้ง โดยให้เริ่มจาก 1 และเพิ่มขึ้นที่ละ…

[DB2] BAT Script สำหรับ Restore DB

IBM DB2

ช่วงนี้มี UAT และต้องการนำ DB จาก SITE งานมาขึ้นที่ Environment ของบริษัทครับ โดยผมได้เขียนโครง BAT Script ง่ายๆ และก็ให้พี่ที่ทำงานปรับปรุงต่อนิดหน่อย โดยมีสาระสำคัญ ดังนี้ ขั้นแรก โครงสร้างโฟลเดอร์ทีมี WAITING เอาไว้ใส่ไฟล์ DB ในรูปแบบ Zip ไฟล์ โดยข้างในมีไฟล์ Script ที่จำเป็นในการสร้างฐานข้อมูล และมีโฟลเดอร์ย่อย DBDATA ที่เก็บข้อมูล Back ของฐานข้อมูลในรูปแบบ .ixf ที่ Export มาจากเครื่อง AS400 ARCHIVE เอาไว้เก็บไฟล์ .Zip Restore เข้า…