[ย้อนรอย] ความรู้ Database Oracle และ SQL ของ Note ตัวเองเมื่อ10ปีที่แล้ว

Thanawat Masileerungsri
2 min readJan 2, 2021

--

ภาพโดย Pete Linforth จาก Pixabay

ก่อนอื่นขอนั่ง Time Machine ย้อนเวลากลับไปเมื่อ 10 ปีที่แล้วก่อนสมัยที่ยังเป็นเด็ก เด๋อๆ วิชา Com ยอมรับเลยครับว่า ตอนเรียนสมัยนั้น Database ถือว่าเป็นวิชาที่หนักหน่วงเป็นรองจากวิชา Computer Architecture เลยครับ ซึ่งตอนที่กว่าจะผ่านมาได้ บอกเลยครับว่า Final Project ของวิชานี้ ทุกคนในภาคทำกันอย่างเต็มที่ run oracle 10g หามรุ่ง หามค่ำ กันทั้งวัน หลังสอบเสร็จ harddisk ก็ถึงกับงอแง ไม่ทำงานต่ออีกเลย (O . o) ขอไว้อาลัยกับ HD Notebook ตัวนั้นด้วย

บทความนี้เกิดจาก ความเสียดายที่จะส่งกระดาษโน๊ต หวนคืนธรรมชาติ ซึ่งโน๊ตเคยจดไว้เมื่อปี 2554 หากมีความผิดพลาดประการใด ขออภัยไว้ ณ โอกาสนี้ด้วย

สิ่งที่เรียนในวันนั้นคือ Database ที่ใช้ Oracle 10g เป็นหลัก ที่จดไว้ใน A4 จะเป็นเรื่อง โครงสร้างการทำงานของ Oracle กับ กลุ่มคำสั่ง

ภาพโดย mcmurryjulie จาก Pixabay

การทำงานของ Database มีอยู่ 2 ส่วนหลักๆคือ

  1. Memory เป็น part ไว้ทำงานที่เกี่ยวกับข้อมูล
    1.1) Shared Pool มี 2 ส่วนคือ
    - Library Cache (เก็บพวกคำสั่ง SQL ที่เคยถูก execute ไว้*) *คำสั่งไหนที่ไม่ได้ใช้เป็นเวลานานจะถูก clear ออกจาก memory เอง
    - Data dictionary cache (โครงสร้างตาราง)
    1.2) Database buffer cache เอาไว้เก็บข้อมูลที่อ่านได้จาก Disk
    1.3) Redo log buffer cache เก็บข้อมูลเก่าหลังเกิดการเปลี่ยนแปลง เพื่อไว้ทำ Rollback
    1.4) Java Pool สำหรับการแปลง format data ไปเป็น format ที่ทำงานได้
    1.5) Large Pool สำหรับ Streaming data
  2. Process เป็น part ไว้ control ตัว database อีกที ซึ่งมีหลายส่วนย่อยดังนี้
    2.1) Process Monitor (PMON) เอาไว้เช็ค Process ที่ Idle เช่น user ไหนที่ไม่ได้ใช้งาน 5 นาที จะโดน disconnected เอง
    2.2) System Monitor (SMON) เช็คความพร้อมของ DB ตอนที่ DB เริ่มทำงาน
    2.3) Database Writer (DBWR) อ่าน และเขียนข้อมูลจาก Memory ในส่วน db buffer cache ลง disk
    2.4) Log Writer (LGWR) เอาไว้เขียน redo log
    2.5) Checkpoint (CKPT) เป็นเหมือนจุด Save Point ให้เราสามารถวาร์ปกลับไปยัง จุดที่ Save ได้
    2.6) SQL Plus เป็น part ที่ไว้ interpet command-line ที่ใช้ในการเชื่อมต่อเข้ากับ Oracle Database

กลุ่มคำสั่ง SQL

คำสั่งของ SQL จะแบ่งเป็น 5 กลุ่มหลัก ซึ่งแต่ละกลุ่มจะทำหน้าที่ที่แตกต่างกัน ซึ่งประกอบไปด้วย (ซึ่งตรงจดผิด555 ขอโม content เอาเนื้อหาที่ถูกมาแปะ credit)

  1. DDL (Data Definition Language) คือ Command พวกที่เกี่ยวกับ Schema database ไม่ว่าจะเป็น CREATE, DROP, ALTER, TRUNCATE, COMMENT, RENAME
  2. DQL (Data Query Language) คือ Command ที่เอาไว้ Look up ข้อมูลโดย set logic/criteria ในการดึงออก ซึ่งคำสั่งกลุ่มนี้คือ SELECT นั่นเอง
  3. DML (Data Manipulation Language) คือ Command ที่เอาไว้จัดการ data แปลตรงตัวเลย ซึ่งประกอบด้วย INSERT, UPDATE, DELETE
  4. DCL (Data Control Language) คือ Command ไว้ควบคุมการ access ถึง data และการจัดการกลุ่มคน มีอยู่ 2 อันได้แก่ GRANT, REVOKE
  5. TCL(transaction Control Language) สุดท้ายฟินนาเล่ ด้วย Command ประเภท Time stone แบบ Doctor Strange
    COMMIT — เอาไว้ Approve ว่า Data ที่มีการ update นั้นถูกต้อง
    SAVEPOINT — ปักหมุดเวลาไว้ เอาไปย้อนกลับ หรือวาป
    ROLLBACK — หากอยากจะย้อนก็ Data ที่ถูกแก้ไขไปแล้วให้กลับมายังจุดที่ยังไม่เละ

หวังว่าความทรงจำวันนั้น ยังคงหอมหวานอยู่ในวันนี้
ลงชื่อ 2/1/21 แล้วเจอกันใหม่บทความหน้า สวัสดีครับ ( o /.\ o)
เขินจัง ตั้งใจว่าจะลงให้ทันวันที่ 2 แต่เลยมาวันที่ 3 ละ เอาหนะดีกว่าไม่ลง

จดแบบที่ตัวเองเข้าใจ ขออภัยถ้าทำให้งง

Reference
document ของ Oracle 10g อยู่นี่นะตามไปลองกันได้ https://docs.oracle.com/cd/B19306_01/index.htm

--

--

No responses yet