Tag Database

[DB2] Restrictive Database ทำให้เกิด Error CLI0125E Function sequence error. SQLSTATE=S1010

IBM DB2

เนื่องจากทีมที่ได้เข้ามาทำ Hardening ทีมก่อนหน้าได้เปิด Option การสร้าง Database แบบ Restrictive ครับ ทำให้ Application เดี้ยงกับเป็นแถบครับ ก่อนทีจะแก้ปัญหาเราต้องมารู้จักกันก่อนครับ ว่าเจ้า Restrictive มัน คือ อะไร Restrictive Database มาดูปัญหาของฝั่ง Application ดีกว่าครับ ปัญหาที่เกิดขึ้น มัน คือ อะไรกันนะ ? [IBM][CLI Driver] CLI0125E Function sequence error. SQLSTATE=S1010  Error ครอบจักรวาล เหมือนเคส Else แนวทางการหาสาเหตุหละ…

[DB2] Restrictive Database

IBM DB2

หลายคนอาจจะสงสัยว่า Restrictive Database ตัว Option นี้มันมาทำให้ชีวิตเราสบายขึ้น หรือ แย่ลงกันนะ มาลองดูที่ผมอธิบายครับ Restrictive Database สร้างอย่างไร ? ข้อดีของ Restrictive Database ข้อเสีย Restrictive Database

[DB2] คืนพื้นที่ให้กับเครื่อง

ขอคืนพื้นที่ เนื่องจาก Disk ไม่เพียงพอครับ สำหรับใครที่ลองทำที่เครื่อง Develop พบปัญหานี้กันบ่อยๆครับ ตัวฐานข้อมูลเหมือนกับครับ สำหรับ DB2 ที่ลึกๆแล้วเป็นการเก็บข้อมูลในรูปแบบ File ที่เรียกว่า Table Space ครับ ซึ่งเมื่อเราทำอะไรเยอะๆ เข้า Insert เยอะๆ ตัวพื้นที่ถูกจองไปเรื่อยๆครับ แต่ถ้าลบข้อมูลออกมันไม่คืนพื้นที่นะครับ ถ้าจะบังคับให้คืนต้องไปเคลียร์ตัว Table Space ครับ ขั้นตอนการขอคืนพื้นที่ ข้อควรระวัง

[DB2] รูปแบบการเขียนวันที่ เวลาใน Query

IBM DB2

ผมจดไว้กันลืมมากกว่านะครับ ว่ารูปแบบการเขียนวันที่ เวลาใน Query สำหรับใช้ในการ SELECT หรือ WHERE ต้องทำอย่างไรบ้างนะครับ กรณีวันที่ กรณีวันที่ + เวลา กรณีวันที่ + เวลา + เสี่้ยววินาที

[DB2] ประเภทของ License

IBM DB2

มาสรุปประเภทของ License แบบงูๆปลาๆกันครับ หลังจากดูพวกโครงการ Infrastructure กันแล้วครับ โดยที่ผมเข้าใจ DB2 จัด License ออกเป็นกลุ่มๆ ดังนี้ – A per user approach แบบนี้มี Model อยู่แบบเดียวครับ – A capacity approach ตอนนี้มีวิธีคิด 3 แบบ AU, PVU และ VPC ครับ ส่วนแบบไหนจะถูกจะแพงอันนี้ถาม Sale กันเองครับ หมายเหตุ

[DB2] ตัวอย่างการใช้งาน Stored Procedure DELETE_MANY_ROWS

IBM DB2

หลังจากบทความเมื่อหลายปีก่อนได้นำเสนอวิธีการลบข้อมูลเยอะๆบน DB2 แล้วไม่ให้เกิดปัญหา Transaction Log Full ไปแล้ว แต่ผมดันลืมแนบตัวอย่าวการใช้ไป คราวนี้ผมมาใส่ตัวอย่างการใช้งานครับ ถ้ามองเป็น SQL SELECT มันจะเทียบเท่ากับ

[DB2] ลอง Replace Query มาเป็น Stored Procedure กันครับ

IBM DB2

เนื่องจากปัญหาในช่วงนี้ตัว Framework ที่วางกันไว้มันเกินข้อจำกัดไปแล้วครับ การเอา SQL ไปยัดลงเป็น String ในฐานข้อมูลเนี่ยย นอกจากมีข้อจำกัดในการทำ HADR แล้ว ถ้า Requirement เปลี่ยนไปจน Query มันมีขนาดเกินจากที่กำหนดไว้นี่แย่แน่เลยครับ หนทางการแก้ไขมีหลายแบบครับ มาลองไล่วิธีที่เคยทำกันก่อนครับ สำหรับใน Blog นี้ของเอาวิธีที่ 3 ครับ เนื่องจากข้อมูลในเนตมันน้อยมากครับ และผมอยากจะแก้ Query เดิมให้น้อยที่สุดครับ สรุป

[DB2] Query ดูกันว่าในฐานข้อมูลของเรามี Index กี่อัน

IBM DB2

พอดีช่วงหลังๆ DB ถูกใช้งานจากคนหลายคน และ ปรับ Performance โดยหลายๆคน แต่บางที Index อาจจะขัดแย้งกันก็ได้ ครั้นจะไปกดไล่ใน DB ที่จะ Table มันก็ไม่ไหวนะ มา Query ดูกันดีกว่า มาดูตัวอย่างกันได้เลยครับ ตามรูปเลย ผมหา Index ตาม Pattern ที่ได้ตกลงกันไว้ในทีมครับ

[DB2] สร้าง VM สำหรับ DB2 11.1 Fixed Pack 4 บน Ubuntu 18.04.2

IBM DB2

หลังจากโน้มน้าวทีมให้เปลี่ยนมาใช้ VM ที่เป็น Linux ได้ หลังจากใช้ Windows มานานนนนนแสนนานครับ โดยอันนี้ผมจะลงแบบ Native นะครับ เพราะถ้าใช้ Docker มันจะเปลืองพื้นที่มากเปิดไป Docker Image ของ DB2 Express C 11.1 กินเนื้อที่ประมาณเกือบๆ 4 GB และขึ้น Database ได้แค่ 1 Database เองด้วย สำหรับขั้นตอนการทำ VM ก็ตาม List นี้เลยครับ Prepare Host Install DB2 11.1.4.4…

[DB2] Run Script แบบ Check ก่อน ถ้าผ่านไปต่อ

IBM DB2

จริงๆ Blog นี้เกิดจากการได้เป็นผู้โชคดีไปช่วยน้องในทีม Run Script สำหรับ UAT ครับ โดยที่น้องคนนั้นก็ไม่ค่อยมั่นใจกับ Script ครับ เมื่อทดสอบที่ Site ลูกค้าจริงแล้วพบว่า อ้าวเฮ้ยยยย ไม่เหมือนที่คุยกันไว้นี่นาที่บอกว่า Migrate ครบ แต่อ้าวข้อมูลหายไปอ้าวเฮ้ย อย่ากลืนน้ำลายตัวเองดีกว่าเสียเวลาร้องขออะไรสุดท้ายข้อมูลก็ต้องกลับคืน (มันของลูกค้า ไม่ได้ข้อมูลครบคงหัวขาด) ทำไมถึงเป็นเช่นนั้นหละ ทำไม Script ที่มีการซักซ้อมมาอย่างดีถึงเกิดปัญหาตอนใช้จริง มาดูโครงสร้าง Script กันดีกว่าครับ โดยได้ทำเป็น Batch File ชุดนึงครับ (ไฟล์ migrate.bat ) ข้างในมีเนื้อหาประมาณนี้ครับ แต่พอลองทดสอบทำงานจริง อ้าวววววววว Schema ไม่ตรงกัน…