ORA-01000 Maximum Cursors Exceeded! เจ้าตายแล้ว!


ห่างหายไปนานเลยครับ ฮ่าๆ ช่วงนี้งานชุกมากๆ แต่ยังไงวันนี้ก็มีเรื่องราวดีๆ มาฝากเหมือนเดิม ORA-01000

นี้มัน Error อะไรกันอีกเนี่ย! ORA-01000 maximum open cursors exceeded! เคยเจอกันไหมครับ? เคยหล่ะซิ โอเค วันนี้ผมจะมางัดแงะแกะเกา Error message ตัวนี้ให้ทุกคนเข้าใจตรงกันนะครับ!

ORA-01000 maximum open cursors exceeded
Cause: A host language program attempted to open too many cursors. The initialization parameter OPEN_CURSORS determines the maximum number of cursors per user.
Action: Modify the program to use fewer cursors. If this error occurs often, shut down Oracle, increase the value of OPEN_CURSORS, and then restart Oracle.

Continue Reading

ORA-1652 TEMP เต็ม! ทำไงดีอ่ะ?


สวัสดีครับ เดียวเริ่มตั้งแต่ช่วงเดือนหน้าผมอาจจะมีเรื่องมาแชร์ทุกคนมากขึ้นครับ เนื่องจากจะเริ่มทำการเตรียมตัวสอบเพื่อเอา Oracle 11g Performance Tuning Certified Expert ถ้าเจอเรื่องอะไรน่าสนใจก็จะเอามาลงแบ่งปันกันเหมือนเดิมครับและสำหรับวันนี้ผมขอเกริ่นนำกันก่อนละกันนะครับ เราจะทำอย่างไรดีถ้า Temporary tablespace เต็ม? ซึ่งเราอาจจะทราบว่ามันจะเกิด ORA-1652: unable to extend temp segment ใน Alert log ขึ้น แล้วทำไงดีหละ? มันเต็มไปแล้วอ่ะ… วันนี้ผมเอาความรู้เกี่ยวกับ Temporary tablespace วิธีการมอนิเตอร์และรับมือกับปัญหา ORA-1652 มาฝากครับ

Continue Reading

Keepalive บน Oracle Database: SQLNET.EXPIRE_TIME


วันนี้จะเอาเคสที่เจอสดๆ ร้อนๆ เมื่อไม่นานนี้เองมาเล่าให้ฟังครับ เริ่มเรื่องมาจากทาง Developer team ต้องการสร้าง Connection บนดาต้าเบสทิ้งไว้คล้ายๆ การทำงานของ On-demand batch ซึ่งเค้าต้องการให้ Establish session ทิ้งเอาไว้ แต่ผลจากการเทสปรากฏว่า Database session ถูก terminate ออกจากระบบหลังจากที่ Connect เข้ามาทุกๆ 30 นาที ซึ่งหลังจากตรวจสอบแล้วสันนิษฐานกันว่าเป็นเพราะ Firewall setting ที่คอยตัดการเชื่อมต่อของ Idle connection ครับ และหลังจากตรวจสอบ OS parameter ที่เกี่ยวข้อง TCP Keepalive ซึ่งก็คือ net.ipv4.tcp_keepalive_time พบว่าเป็นค่า Default ซึ่งก็คือ 2 ชั่วโมง

แล้วทำยังไงถึงจะแก้ปัญหานี้ได้หละ???

Continue Reading

ORA-00054 Resource Busy มันคืออะไรกัน!?


หลายคนคงเคยเจอปัญหาน่าปวดหัวเกี่ยวกับ Error ที่มี Code ว่า ORA-00054 หลังจากที่เราพยายาม Execute DDL command บนตารางใดๆ ซักตารางนึง ซึ่งวันนี้ผมจะมาขยายความให้ชัดเจนว่าเจ้า Error ตัวนี้มันเกิดมาจากอะไร? และวิธีแก้ไข/วิธีเลี่ยงมีอะไรบ้างครับ…

ORA-00054: resource busy and acquire with NOWAIT specified.
Cause: Resource interested is busy.
Action: Retry if necessary.

Continue Reading

Adaptive direct path read บน Oracle 11g คืออะไร?


สวัสดีครับ! ก็ไม่ได้เขียนบทความซะนานต้องขออภัยจริงๆ เพราะว่าช่วงนี้งานโถมเข้าใส่แบบไม่ยั้ง ฮ่าๆ วันนี้เลยบอกตัวเองว่างานหนักยังไงก็ต้องเขียนบทความใหม่ให้ได้ โดยส่วนตัวถือเป็นความรู้ใหม่ของตัวเองด้วย เลยอยากให้ทุกคน(ที่เผลอเข้ามาอ่าน) ได้รับรู้ไปกับผมด้วยครับ และในวันนี้ผมจะพูดถึง Adaptive direct path read บน Oracle 11g มันคืออะไร? ดีหรือไม่อย่างไร? ลองอ่านกันดูครับ:)

Continue Reading

APPEND hint เคล็ด(ไม่)ลับสำหรับการ INSERT ข้อมูล


ไม่ได้เขียนบทความซะนานเลยครับ เนื่องจากช่วงหลังๆ มานี้งานค่อนข้างเยอะ วันนี้เลยเข้าเขียนบทความต่อจากคราวที่แล้วที่เราพูดถึงการใช้งาน NOLOGGING กันไป ซึ่งมันมีความเกี่ยวข้องกับ APPEND hint ที่ผมจะกล่าวถึงในวันนี้ครับ และจะมากล่าวคร่าวๆ กับวิธีการใช้งานด้วยครับ

APPEND hint มีผลต่อประสิทธิภาพอย่างไร?

โดยวิธีการทำงานของ APPEND hint นั้นมันจะทำการ insert ข้อมูลโดยตรงลงบน data files ซึ่งจะทำให้ประสิทธิภาพในการ INSERT … SELECT ดีขึ้นดังนี้

Continue Reading

ว่าด้วยเรื่องของ NOLOGGING กับการใช้งาน


NOLOGGING คืออะไร?

NOLOGGING คือ ออฟชั่นนึงบนตารางที่ช่วยทำให้การ INSERT หรือการสร้างอินเด็กซ์มีความเร็วมากขึ้นกว่าปกติ เป็นเพราะว่ามันจะไม่ทำการเขียน Redo log นั่นเอง แต่ความเร็วที่เพิ่มขึ้นก็ต้องแลกมาด้วยความอันตรายจากการใช้ NOLOGGING นั้น ถ้าในขณะนั้นฐานข้อมูลของคุณเกิดเหตุการณ์ไม่คาดคิดขึ้น แล้วคุณจำเป็นต้องกู้คืนข้อมูลผ่าน Archive log หรือแม้กระทั่ง Redo log ณ ตารางนั้นๆ จะไม่สามารถกู้ข้อมูลกลับมาได้ เพราะฉะนั้นจงใช้มันอย่างระมัดระวังมากที่สุดนะครับ

Continue Reading