Oracle Database 18c XE กับปัญหาการ import user
Oracle Database XE คืออะไร Oracle XE หรือ Oracle Express Edition เป็นซอฟต์แวร์ฐานข้อมูล Oracle เวอร์ชันที่ให้สามารถดาวน์โหลดไปใช้งานได้โดยไม่มีค่าใช้จ่าย แต่จะมีข้อจำกัดในการใช้งาน ตัวอย่างเช่นในเวอร์ชัน 18c จะมีข้อจำกัด เช่น จำกัดการใช้งานข้อมูลได้ไม่เกิน 12 GB จำกัดการใช้งาน RAM ได้ไม่เกิน 2 GB ฟังก์ชันการใช้งานหลายอย่างที่ไม่มีให้ใช้งานเหมือนเวอร์ชัน Standard หรือ Enterprise Oracle Database XE 18c กับการติดตั้งในรูปแบบ Multitenant Oracle Database XE 18c จะถูกติดตั้งในรูปแบบที่เรียกว่า Multitenant ซึ่งจะมีรูปแบบดังนี้คือ มีฐานข้อมูลที่เป็น container database ฐานข้อมูลที่สร้างภายใต้ container เรียกว่า pluggable database ในการติดตั้งไม่สามารถเลือกได้ว่าจะลงเฉพาะ container database อย่างเดียวโดยไม่ลง pluggable database แต่ตัว pluggable database จะถูกติดตั้งมาให้ด้วย 1 pluggable database (มีได้สูงสุด 3 pluggable database) รูปตัวอย่างผลการติดตั้ง Oracle Database XE 18c การเรียกใช้ service name จะเป็นดังนี้ XE เป็น service name สำหรับเรียกใช้ container database XEPDB1 เป็น service name สำหรับเรียกใช้งาน pluggable database service name ทั้ง XE และ XEPDB1 จะถูกกำหนดไว้แล้วตั้งแต่ตอนติดตั้ง ปัญหาที่พบกับการ import user เมื่อมีการ import user ด้วยคำสั่ง impdp พบปัญหากับฐานข้อมูล container หรือ XE ส่วน ตัว pluggable หรือ XEPDB1 จะไม่พบปัญหาเช่นนี้ ตัวอย่างข้อความ error ที่พบ ORA-39083: Object type USER:”๊USER” failed to create with error: //”USER” คือชื่อ user ที่ถูก import เข้ามา ORA-65096: invalid common user or role name ตัวอย่างการแก้ปัญหาเมื่อต้องการ import user เข้า XE รันคำสั่ง alter session set “_ORACLE_SCRIPT”=true; สร้าง user ใหม่ โดยตั้งชื่อให้ตรงกับ user ที่ต้องการ import ทำการ import ด้วยคำสั่ง impdp ตามปกติ สิ่งที่น่าสนใจ จะเห็นว่า oracle database 18c XE ถูกติดตั้งมาในรูปแบบ multitenant โดยมี database เริ่มต้นให้ 2 database คือ container database และ pluggable database ดังนั้นการเลือกว่าจะใช้งานแบบไหนก็ขึ้นอยู่กับลักษณะงานที่เราต้องการใช้งาน แต่กรณีที่ต้องการใช้งานทั่วไปแบบปกติ จะเห็นว่าการเลือกทำงานกับฐานข้อมูล pluggable database ดูแล้วน่าจะพบปัญหาน้อยกว่าจะไปทำงานกับตัว container database