การแก้ปัญหา ORA-12154: TNS:Could not resolve the connect identifier specified ของ Navicat
- Posted by Jirapa Sujiranutham
- Categories Explicit Knowledge
- Date August 17, 2022
เนื่องจากมีการลงโปรแกรม Navicat และต้องการเซตค่าให้สามารถเชื่อมต่อกับฐานข้อมูล Oracle แล้วเกิด error คือ ORA-12154: TNS:Could not resolve the connect identifier specified ดังรูปด้านล่าง

จากปัญหาดังกล่าว ให้ตรวจสอบ ดังนี้
๑. มีการติดตั้ง Oracle Client หรือ Instance Client ของ Oracle ไว้หรือไม่
๒. เซต Path ของ TNS_ADMIN environment variable ไปที่ Instance
Client โดยคลิกขวาที่ This PC และเลือก Properties ดังรูปด้านล่าง

ต่อจากนั้นให้คลิกที่ Advanced system settings ดังรูปด้านล่าง

เมื่อคลิกแล้ว จะเห็นภาพด้านล่าง

จะเห็นว่าไม่มี TNS_ADMIN จึงต้องทำการเพิ่มทั้งในส่วน User variables for admin และ System variables โดยคลิกปุ่ม New… ดังภาพด้านล่าง ให้พิมพ์ TNS_ADMIN ใน block Variable name และ คลิกเลือก Browse Directory เพื่อเลือก Directory ที่เก็บ tnsnames.ora

๓. ให้ copy tnsnames.ora ที่เคยใช้งานจากเครื่องเดิม ไปวางไว้ภายใต้ Path ที่ระบุโดยตัวแปร TNS_ADMIN
๔. ให้เรียกโปรแกรม Navicat เพื่อเซต OCI Path
เมื่อเปิดโปรแกรมแล้ว ให้คลิกที่ Tools –> Options.. และคลิกที่ OCI และให้คลิกเลือก Directoty (OCI library (oci.dll)) ที่ติดตั้ง Instance Client ดังภาพด้านล่าง

๕. ปิดโปรแกรม และ restart เครื่องคอมพิวเตอร์
๖. เมื่อเปิดเครื่องแล้วเรียกโปรแกรม Navicat มา ก็จะสามารถเชื่อมต่อฐานข้อมูล Oracle
ได้ แต่ในกรณีที่พบปัญหา ดังภาพด้านล่าง

ปัญหาดังกล่าวเกิดจาก Instance Client ที่ติดตั้งไปเป็น 64 bit ซึ่งไม่สามารถใช้งานร่วมกับ Navicat ที่อยู่ในเครื่องได้ วิธีการแก้คือ ให้ download Instant Client 32 bit และทำการติดตั้งแทนที่ Instance Client 64 bit และทำการ set OCI Path ของ Navicat ให้ชี้ไปยัง Directory ของ Instance Client 32 bit แทน และ restart Navicat ก็จะสามารถใช้งานได้
You may also like
ที่มา/ปัญหา เพื่อให้การใช้งาน Docker Volumes ร่วมกับโปรแกรม Cursor และ Git Azure ได้อย่างมีประสิทธิภาพจึงต้องทำการเชื่อมต่อข้อมูลไฟล์ Project กับ Container และใช้ SSH ในการเชื่อมต่อโดยมีขั้นตอนการทำดังต่อไปนี้ สิ่งที่จำเป็นและต้องเตรียม ๑. Docker Desktop ๒. Docker Container ๓. Extension SFTP ของ Cursor หรือ VS Code ขั้นตอนการติดตั้งและใช้งาน ๑. ติดตั้ง OpenSSH Server โดยเข้าไปที่ Container Exec แล้วลองพิมพ์ …
ที่มา/ปัญหา การใช้งาน Docker Container ปัจจุบันเราจะใช้วิธีการ Bind Mounts เพื่อเชื่อมโยง Folder Code จากเครื่อง Windows เข้าไปใน Container โดยตรงทำให้เราสามารถแก้ไขเปลี่ยนแปลงไฟล์ระหว่าง Windows กับ Container ได้สะดวกแต่ปัญหาก็คือการใช้ Bind Mounts นั้นทำให้ web ที่เราพัฒนาอยู่เรียกใช้งานได้ช้ามากเนื่องจากการเชื่อมต่อไฟล์ระหว่าง Windows กับ Container จะต้องแปลงไฟล์ระบบของ Windows ให้เข้ากันกับไฟล์ระบบของ Container ก่อน ทำให้การอ่านไฟล์ช้ากว่าปกติ การแก้ปัญหาก็คือ การนำ Docker Volumes มาใช้แทนการ Bind Mounts …
กรณีที่ไม่สามารถลบรายวิชาได้ผ่านในส่วนของหน้าบ้านของระบบ BUU LMS เมื่อพยายามที่จะลบรายวิชาดังกล่าวระบบจะขึ้นค้างตามภาพด้านล่าง หลังจากกด Refresh แล้วทดสอบค้นหารายวิชาบนระบบยังคงพบว่ารายวิชาดังกล่าวที่การลบออกไปนั้นยังคงมีอยู่ระบบ 1. แก้ปัญหาโดยการรัน Script ของ delete_course.php เพื่อลบรายวิชา โดยใช้คำสั่ง php /app/moodle/lms/admin/cli/delete_course.php –courseid=xxxx 2. ถ้าหาก Run Script ตามข้อที่ 1 แล้วเจอ Error เหมือนภาพด้านล่าง ให้ใช้สั่ง php /app/moodle/lms/admin/cli/delete_course.php –courseid=xxxx –non-interactive –disablerecyclebin แทน
