Tag DB2

[DB2] ทำไมตอนลง DBMS DB2 และ ตอนสร้าง DB ใหม่ต้องย้อนเวลาด้วย ?

IBM DB2

หลายคนอาจจะสงสัย เฮ้ยยยยนี่มันปิด 2021 แล้วนะ ทำไมต้องทำแบบนั้นกันด้วยครับ มันมีเหตุผลครับ DB2 แอบทำอะไร ? DB2 ตอนติดตั้ง หรือ Bind พวก Package ต่างๆ เช่น Package db2look ตัว DB2 มันเก็บวันและเวลา (Timestamp) ไว้ด้วยครับ DB2 เวลาสร้างทุกอย่าง เช่น Table / Function มันใส่ Timestamp ไว้ เพื่อตรวจสอบความถูกต้องของฐานข้อมูลครับ ยกตัวอย่าง เช่น ถ้าผมลอง SELECT จาก SYSCAT.FUNCTIONS…

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

IBM DB2

เนื่องจากทีมที่ได้เข้ามาทำ Hardening ทีมก่อนหน้าได้เปิด Option การสร้าง Database แบบ Restrictive ครับ ทำให้ Application เดี้ยงกับเป็นแถบครับ ก่อนทีจะแก้ปัญหาเราต้องมารู้จักกันก่อนครับ ว่าเจ้า Restrictive มัน คือ อะไร Restrictive Database Database ที่มีการจำกัดสิทธิของ Publish ออกหมดเลยครับ หากสงสัยอะไร สามารถอ่าน Blog ของผมเพิ่มเติมได้เลยครับ มาดูปัญหาของฝั่ง Application ดีกว่าครับ Application เป็นโปรแกรมที่เก่าอยู่พอสมควรครับ ใช้ ADODB เป็นเทคโนโลยีในการเชื่อมต่อ (VB6 + RecordSet) ครับ…

[DB2] Restrictive Database

IBM DB2

หลายคนอาจจะสงสัยว่า Restrictive Database ตัว Option นี้มันมาทำให้ชีวิตเราสบายขึ้น หรือ แย่ลงกันนะ มาลองดูที่ผมอธิบายครับ ปกติแล้วตัว DB2 เวลาสร้าง Database ขึ้นมา มันจะสร้าง Public เข้ามาด้วยครับ ซึ่งจะมีสิทธิต่างๆ ให้มาโดย Default ครับ ตัว DB2 เองพวก User ที่เข้าจัดการ Database ตัว DB2 มันไม่ได้จัดการนะครับ งานในส่วนนี้เป็นหน้าที่ของ OS ที่ติดตั้ง DB2 ครับ อย่างพวก AIX Linux Windows ดังนั้นถ้ามี…

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

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

[IBM] TSA และ TSM มันคือ อะไร

บันทึกไว้ก่อนครับ เนื่องจากได้ข้ามงานดูจากสายซอฟต์แวร์เพียวๆ ขยับมาทางด้านโซลูชัน มีทั้งด้านฮาร์ดแวร์ และ ซอฟต์แวร์ ครับ Tivoli System Automation (Tivoli SA-MP) เป็นซอฟต์แวร์ของ IBM เปลี่ยนชื่อจาก TSM ครับ โดยซอฟต์แวร์นี้รองรับการทำ Failover หรือการ Down บางส่วนของระบบเพื่อทำการซ่อมบำรุง (Maintenance) ตัวอย่างที่ใช้จริง เช่น การทำให้ฐานข้อมูล DB2 ใช้ Feature HA ทำการ Auto Take เช่น ในกรณีที่มีเครื่องที่ DC 2 เครื่อง ถ้าเครื่อง DC-A…

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

IBM DB2

ผมจดไว้กันลืมมากกว่านะครับ ว่ารูปแบบการเขียนวันที่ เวลาใน Query สำหรับใช้ในการ SELECT หรือ WHERE ต้องทำอย่างไรบ้างนะครับ กรณีวันที่ รูปแบบ yyyy-MM-dd ตัวอย่าง 2018-04-10 ตัวอย่างตอนใช้กับ Query กรณีวันที่ + เวลา รูปแบบ yyyy-MM-dd HH:mm:ss ตัวอย่าง 2018-04-10 09:45:45 ตัวอย่างตอนใช้กับ Query กรณีวันที่ + เวลา + เสี่้ยววินาที รูปแบบ yyyy-MM-dd HH:mm:ss.000000 ตัวอย่าง 2018-04-10 09:45:45.000000 ตัวอย่างตอนใช้กับ Query

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

IBM DB2

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

[DB2] ลอง Replace Query ใน Stored Procedure กันครับ

เนื่องจากปัญหาในช่วงนี้ตัว Framework ที่วางกันไว้มันเกินข้อจำกัดไปแล้วครับ การเอา SQL ไปยัดลงเป็น String ในฐานข้อมูลเนี่ยย นอกจากมีข้อจำกัดในการทำ HADR แล้ว ถ้า Requirement เปลี่ยนไปจน Query มันมีขนาดเกินจากที่กำหนดไว้นี่แย่แน่เลยครับ หนทางการแก้ไขมีหลายแบบครับ มาลองไล่วิธีที่เคยทำกันก่อนครับ เอา Query ที่ใข้งานบ่อยๆ JOIN กับเป็นประจำไปทำเป็น View ครับ ลดงานบางส่วนที่ทำ CTE ไว้ โดยยกไปเป็น Function ครับ แปลง SQL เดิมๆที่ทำกันไปเป็น Stored Procedure ครับ สำหรับใน Blog นี้ของเอาวิธีที่…

[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 นี้เลยครับ Install Ubuntu 18.04.2 Install Fixed…