PlusMagi's Blog By Pitt Phunsanit Database,Oracle Database Oracle: Database และ Schema

Oracle: Database และ Schema

สำหรับคนที่เคยใช้ MySQL หรือ SQL Server มาก่อน เมื่อย้ายมาใช้ Oracle Database อาจจะเกิดความสับสนเรื่องโครงสร้างได้ครับ เพราะแนวคิดของคำว่า Database และ Schema ใน Oracle นั้นมีความแตกต่างจากระบบอื่นอย่างชัดเจน ความเข้าใจที่ว่า “เห็นแต่ Schema” นั้นถูกต้องแล้วครับในมุมมองของผู้ใช้งาน โดยสรุปความแตกต่างได้ดังนี้ครับ


1 User = 1 Schema

ใน Oracle Schema คือเซตของ Object ที่เป็นของ User คนใดคนหนึ่งเท่านั้น

  • เมื่อคุณสร้าง User ใหม่ ระบบจะสร้าง Schema ชื่อเดียวกันขึ้นมาโดยอัตโนมัติ
  • ในขณะที่ MySQL 1 Database อาจจะมีหลาย User เข้ามาใช้งานได้ แต่ใน Oracle เราจะมองว่า Schema คือพื้นที่ส่วนตัวของ User นั้น ๆ

โครงสร้างแบบ Multitenant

ถ้าคุณใช้ Oracle เวอร์ชันใหม่ ๆ โครงสร้างจะแบ่งออกเป็น

  • CDB : คือตัวระบบฐานข้อมูลใหญ่
  • PDB : คือฐานข้อมูลย่อยที่อยู่ข้างใน
  • สิ่งที่คุณเห็น: เมื่อคุณ Connect เข้าไปใน PDB คุณจะมองเห็น “Schemas” ต่าง ๆ ของ User ที่อยู่ใน PDB นั้น

ตารางเปรียบเทียบให้เห็นภาพ

องค์ประกอบMySQL / SQL ServerOracle Database
ระดับบนสุดInstanceInstance / CDB
สิ่งที่เก็บ DataDatabasePDB หรือ Tablespace
เจ้าของ ObjectDatabase (User แค่มีสิทธิ์) Schema (User คือเจ้าของ)

วิธีตรวจสอบ Database ที่คุณใช้งานอยู่

หากคุณต้องการดูว่าตอนนี้คุณกำลังต่ออยู่กับ Database ชื่ออะไร หรืออยู่ใน Container ไหน สามารถใช้คำสั่ง SQL เหล่านี้ได้ครับ

คำสั่งวัตถุประสงค์ระดับสิทธิ์ที่ต้องการ
SELECT * FROM global_nameดูชื่อ Database ปัจจุบันทั่วไป
SELECT user FROM dualดูชื่อ Schema / User ที่คุณกำลังใช้งานทั่วไป
SELECT name FROM v$databaseดูชื่อ Database และสถานะเชิงลึกAdmin / SYSDBA
SELECT instance_name FROM v$instanceดูชื่อ Instance (SID) Admin / SYSDBA

สรุปสั้น ๆ

ใน Oracle เราจะไม่สร้าง Database พร่ำเพรื่อเหมือน MySQL แต่เราจะสร้าง User / Schema เพื่อแยกโปรเจกต์ออกจากกันครับ


อ่านเพิ่มเติม