ปัญหาการเชื่อมต่อฐานข้อมูล Oracle ไม่ได้ เนื่องจาก Listener
สำหรับผู้ดูแลระบบที่เคยทำงานดูแลฐานข้อมูล Oracle คงเคยเจอกับปัญหาการเชื่อมต่อไปยังฐานข้อมูลไม่ได้ ซึ่งเมื่อไล่เรียงหาสาเหตุแล้ว ก็มีมากมายหลายสาเหตุด้วยกัน เช่น ปัญหาที่ตัวฐานข้อมูลเอง หรือ ปัญหาทางด้านระบบเครือข่าย ฯลฯ ซึ่งในบทความนี้จะเล่าถึงประสบการณ์ที่ได้พบเจอปัญหานี้เช่นกัน โดยสาเหตุนั้นเกี่ยวกับตัว Listener เหตุการณ์ที่เกิดขึ้นช่วงที่พบปัญหา ได้รับแจ้งจากผู้ใช้ว่าไม่สามารถเข้าใช้งานระบบได้ ซึ่งเมื่อได้รับแจ้งจึงทำการตรวจสอบและพบว่าปัญหาเกิดจากการที่ระบบไม่สามารถเชื่อมต่อไปยังฐานข้อมูลที่พัฒนาด้วย Oracle ได้ โดยที่ระบบเครือข่ายยังใช้งานได้ปกติ ดังนั้นสิ่งที่ทำต่อมาคือการตรวจสอบเฉพาะฐานข้อมูลว่าเกิดปัญหาอะไรขึ้น โดยสิ่งที่ทำคือ ทดลองเชื่อมต่อผ่าน SQL Developer ซึ่งเป็นเครื่องมือหนึ่งที่ใช้สำหรับบริหารจัดการฐานข้อมูล Oracle ผลลัพธ์คือ ไม่สามารถเชื่อมต่อได้ โดยมีข้อความแจ้งเตือนว่า socket timeout ทดลองเชื่อมต่อผ่าน Enterprise Manager ซึ่งเป็นเครื่องมือสำหรับบริหารจัดการฐานข้อมูลอีกตัวซึ่งได้ติดตั้งมาพร้อมกับตอนที่สร้างฐานข้อมูล ซึ่งก็ไม่สามารถเชื่อมต่อได้เช่นกัน และได้ลองสั่ง Startup DB ฐานข้อมูล จากเครื่องมือตัวนี้ อาการผิดปกติก็ยังคงเหมือนเดิม ทดลองเชื่อมต่อผ่าน ผ่าน SQL Plus ซึ่งใช้งานผ่าน command prompt ปราฏว่าสามารถเชื่อมต่อได้ ใช้คำสั่ง expdp เพื่อ dump ข้อมูลมาสำรองไว้ก่อน สามารถทำได้เช่นกัน แสดงว่าตัวฐานข้อมูลยังสามารถเข้าถึงได้อยู่ จึงพุ่งประเด็นไปที่ Listener เพราะเป็นตัวกลางที่จัดการให้ระบบหรือเครื่องมือภายนอกสามารถเชื่อมต่อมายังฐานข้อมูลได้ ทดลอง config Listener ใหม่ ด้วยเครื่องมือ Net Configuration Assistant พบว่าใช้เวลาตั้งค่านานมาก แต่ก็สามารถ config ได้ ลอง restart Listener และ Windows แล้ว อาการยังเหมือนเดิม ใช้คำสั่งบน command prompt ที่เกี่ยวกับ Listener ได้แก่ lsnrctl และ tnsping เพื่อตรวจสอบ Listener และ TNS พบว่าใช้เวลานานมาก จึงสันนิษฐานว่า อาจจะเป็นปัญหาที่ Listener แน่นอน เพราะยังเข้าถึงฐานข้อมูลผ่านช่องทางบางช่องทางได้ การแก้ไขปัญหา เมื่อได้ข้อมูลจากการตรวจสอบแล้ว ว่ามีปัญหาจาก Listener จึงได้ค้นข้อมูลใน internet เกี่ยวกับการเชื่อมต่อ Listener ที่ใช้เวลานาน พบว่ามีผู้แนะนำให้ตรวจสอบที่ไฟล์ listener.log ใน \app\Administrator\diag\tnslsnr\Win-User\listener\trace (ตัวอย่างนี้จะเป็น path ที่เป็น oracle 11) ***หมายเหตุ โฟลเดอร์ Win-User เป็นโฟลเดอร์ที่ต้ังตามชื่อ user ใน Windows ถ้าขนาดไฟล์ถึง 4 GB จะมีปัญหาได้ ให้ทำการหยุด service ของ Listener แล้ว rename ชื่อไฟล์ listener.log ใหม่ เมื่อ start listener แล้ว ไฟล์ listener.log ก็จะถูกสร้างมาใหม่ เมื่อได้ทำการตรวจสอบพบว่าไฟล์มีขนาด 4 GB จริง และได้ทำการแก้ไขตามวิธีที่มีการแนะนำ พบว่าสามารถเชื่อมต่อกับฐานข้อมูล Oracle ได้เป็นปกติ สำหรับกรณีศึกษาที่มีผู้นำเสนอไว้สามารถเข้าดูได้ผ่าน URL https://vjdba.wordpress.com/2013/09/24/93/