Tag Database

[DB2] BEGIN VS BEGIN ATOMIC

IBM DB2

ตอนแรกก็ไม่ได้เอ๊ะในอะไร คิดว่าเป็นเพียงแค่ชื่อ ธรรมดา แต่พอแก้ชื่อ Error เลย ผมเลยลองหาข้อแต่ต่างของ BEGIN ATOMIC ว่าต่างกับเจ้า BEGIN ธรรมดาอย่างไร โดยคำสั่ง BEGIN ATOMIC มีการจัดการ Transaction เ้สริมเข้ามา ถ้าคำสั่งภายใต้ BEGIN ATOMIC … END นั้นเกิดปัญหาขึ้น DBMS จะ ROLLBACK ข้อมูลกลับทั้งหมดครับ ตัวอย่างการใช้งาน เช่น

[DB2] SQL0668N Operation not allowed for reason code 7 on table

IBM DB2

วันนี้ผมนั่งทำงานเขียน Code เขียน Query อย่างเบลอๆ พอลองมา Test Program ปุบ เจอ Error Message แจ้งเตือน ดังรูป โดยเจ้า Error Message นี้ เป็นการบอกว่า Table ของเราอยู่สถานะ Pending รอการ REORG TABLE (สำหรับคนที่ส่งสัยว่า REORG คือ อะไร ให้ตามไปอ่านกันครับ) ซึ่งมีสาเหตุ มาจากการที่ผมไปแก้ Datatype ของ Column ‘USERDESC’ ใน Table จาก varchar(30)…

[DB2] การเพิ่ม Database Connection ใน Toad for DB2

IBM DB2

ถ้าคนที่เคยใช้ DB2 มา จะพบว่าตัว Database Manager ที่ใช้ในการจัดการ Query ต่างๆ มันช้า และไม่มี Feature ที่ช่วย User ได้ดีอย่างทางฝั่ง SQL Server และ Oracle และหลายๆคนก็น่าเคยใช้ Tools ตัวนึงที่ชื่อว่า Toad for DB2  กัน โดยวันนี้ผมมาแนะนำวิธีการ Setup DB Connection ครับ กรณีที่โปรแกรม ไม่สามารถไปดึงข้อมูลจาก ODBC ที่ตั้งไว้ครับ

[DB2] SQL0964C Transaction log for database is full

IBM DB2

น่าจะเป็น Blog แรกของเดือนนี้มั้งที่ได้ Public พอดีช่วงนี้งานเยอะ เลยไม่ได้มาเขียนบ่อยๆ เขาเรื่องเลยและกัน คือ งานชิ้นปัจจุบันของผมใช้งาน Database DB2 ของ IBM ใช้ไปใช้มาพอถึงวันนึง จะ Delete ข้อมูลเท่านั้นแหละ ระบบได้แจ้ง Message เตือนขึ้นมา ดังรูป ก่อนจะเข้าเรืองกัน เราควรจะมีรู้เรื่องก่อนว่าเจ้า Transaction log คือ อะไร โดยตัว Transaction log มัน คือ บันทึกการทำงานของ Database เราทุกอย่างตั้งแต่ INSERT, UPDATE, DELETE หรือจะเป็นการแก้ไขโครงสร้างข้อมูลครับข้อมูล Log…

[Database] ข้อควรระวังในการใช้ TABLOCKX

brass padlock on rusty metal wire

ก่อนอื่นเลยขอบอกเลยว่า ปัญหานี้เกิดจากความสะเพร่าของผมเอง (ยังดีที่ไม่ส่งโปรแกรมให้ลูกค้า ไม่งั้นยาว) เกิดจากการเขียน Query ที่ผิดพลาด ทำให้ Table ใน Database ถูก Lock ไม่ให้แก้ไข ซึ่งส่งผลให้ User คนอื่นๆทำงานไม่ได้ เดี๋ยวจะงงไปกันใหญ่ว่าทำไมผิดเขียนโปรแกรมแล้ว Table ดัน Lock ได้  ผมของอธิบายที่มากันก่อน ปัญหา การแก้ไข หมายเหตุ การ Lock แบบนี้จะเป็นแบบ Exclusive คือ บังคับให้ Table นั้นมีได้เพียง 1  Connection หรือ 1 User เท่านั้น…

[DB2] CALL SYSPROC.ADMIN_CMD( ‘REORG TABLE xxxx’ ) ?

IBM DB2

ทำงานเกี่ยวกับ DB2 จริงๆจังๆซักพักใหญ่แล้ว เคยสงสัยไหมว่าเวลาทำ SQL Script เราจะเจอคำสั่งชุดนึงที่มักจะอยู่ในลำดับท้ายๆ ของไฟล์ SQL Script นั้น คือ แล้ววันนี้เป็นโอกาสอันที่ ที่ผมมีเวลาว่าง เพราะเป็นวันหยุด 555 เดี๋ยวผมมาอธิบายกันว่าเจ้าคำสั่ง CALL SYSPROC.ADMIN_CMD( ‘REORG TABLE xxxx’ ) มันมันมีไว้ทำอะไรกัน ?โดยเราจะมองที่ละส่วนกัน เผื่อคนที่ยังไม่รู้ครับ ส่วนที่ 1: CALL SYSPROC.ADMIN_CMD คือ การเรียกใช้ Store procedure ของระบบ ซึ่งอยู่ใน Schema SYSPROC โดยเจ้า ADMIN_CMD…

[DB2] DB21007E seen when DB2 is accessing a text file

IBM DB2

จริงๆ ฺBlog อันนี้เป็นสาเหตุของ Blog นี้ครับ [PowerShell] Convert Unicode Text or SQL File To ASCII โดยสาเหตุของ Error Message นี้เกิดจากตัว line termination (ตัวบอกการขึ้นบรรทัดใหม่) ไม่ได้ใช้ตามมาตรฐาน ANSI ซึ่งจะใช้ (Carriage Return, ตัวย่อ CR, ASCII Code =13) เมื่อเรานำไฟล์จาก Windows ไปใช้งานบน Unix หรือ Linux นะครับ โดยการแก้ไขนั้นง่ายนิดเดียวครับ Reference

[DB2] WORKING WITH ISOLATION LEVEL

IBM DB2

ดองไว้นานมาสำหรับ Blog นี้ 555 เพราะตอนแรกได้ทำ Research เพิ่มคิวการทำงาน โดยใช้ Database เป็นตัวเก็บคิว ซึ่งปัญหาที่จะพบ คือ เราต้องควบคุมการดึงข้อมูลใน Step ต่างๆ เพื่อไม่ให้เกิดปัญหาหลุคคิวได้ โดยทางฝั่ง SQL Server มีคำสั่งใช้งานตรงตัวอยู่แล้ว อาจจะมีฟีเจอร์เพิ่มขึ้นมาจากที่กำหนดไว้ใน ANSI บ้าง ซึ่งผมมาเขียนสรุปใน Blog ถัดไปครับ คราวนี้เรามาลองดูที่พระเอกของเราบ้าง อย่าง DB2 เนี่ย ว่าเราใช้งาน ISOLATION LEVEL กันอย่างไรครับ ก่อนอื่น ผมขอสรุปเรื่อง ISOLATION LEVEL แบบรวบรัดสุดๆก่อนนะ ว่ามันมีอะไรบ้าง…

[PowerShell] Convert Unicode Text or SQL File To ASCII

powershell

สำหรับที่มาของ Script ชุดนี้นี่ทำ Team วุ่นวายเลย เรื่องก็มีอยู่ว่าเวลาพัฒนาระบบต่างๆมันมีในส่วนของ Source Code และ SQL Script ซึ่งต้องนำไป Run ใน Enviromemt ของ Test, Dev หรือ Production ก็ตาม แต่เพราะความสะเพร่าของผมเองที่ Save File Script เป็นแบบ Unicode เกิดปัญหาขึ้นเมื่อนำไป Run บน Database Server DB2 บนเครือง AIX จะเกิด Error Message ดังนี้ Error…