Oracle คืออะไร


คือ Object – Relational Database Management System (ORDBMS) มีความสามารถทำงานได้ทั้งในรูปแบบ Rational และบางคุณสมบัติของ Object Oriented เป็นผลิตภัณฑ์จากบริษัทออราเคิล
และยังเป็น RDBMS เชิงพาณิชย์ตัวแรกของโลก ออราเคิลเซิร์ฟเวอร์ มีความสามารถโดดเด่นในด้าน
การจัดการฐานข้อมูล มีความน่าเชื่อถือสูง (reliable) ด้วยเทคโนโลยี Rollback Segment
ซึ่งเป็นลิขสิทธิ์ของบริษัทออราเคิล โดยปกติ Log file หรือไฟล์ที่เก็บ Transaction ของระบบ
ตัวอย่างเช่น การโอนเงินจากบัญชีธนาคารหนึ่งไปเข้าอีกบัญชีธนาคารหนึ่ง การทำงานมีอยู่สองรูปแบบ
คือ AIJ(After Image Journal) และ BIJ (Before Image Journal) โดย AIJ จะเก็บข้อมูลที่เป็น New Value ก่อนทำการแก้ไข ส่วน BIJ จะเก็บข้อมูลที่เป็น Old Value หลังจากการทำการแก้ไขข้อมูล ในส่วนของ MS SQL Server ซึ่งเป็นฐานข้อมูลเหมือนกันนั้นจะมี AIJ อย่างเดียว ในขณะที่ Oracle มีทั้ง AIJ และ BIJ ซึ่งทาง Oracle เรียกว่า Rollback Segment

ประโยชน์ Rollback Segment ที่ทำให้ผลิตภัณฑ์ของ Oracle ครองตลาดผู้ใช้มากสุด เนื่องจากสามารถจัดการกับข้อมูลในกรณีที่เกิด การล้มเหลวของระบบ หรือภาวะระบบไม่สามารถให้บริการได้ ด้วยเทคโนโลยี Rollback Segmentจะจัดการ Instance Recovery ข้อมูลไม่ให้เกิดความเสียหายอันเนื่องมาจาก การล้มเหลวของระบบ ได้อย่างดีมาก
นอกจากนี้ Oracle ยังมีส่วนที่เรียกว่า Timestamp ทำงานเกี่ยวข้องกับ Concurrency Control เป็นส่วนที่จัดการการทำงานกับหลาย ๆ Transaction ในเวลาเดียวกัน โดยทุก ๆ Transaction จะมี Timestamp เป็นตัวกำหนดเวลาเริ่มต้นของการประมวลผล (Process) ซึ่งช่วยในการขจัดปัญหาหลักของ Concurrency Problems
ปัจจุบันบริษัทออราเคิลกลายเป็นผู้ขายฐานข้อมูลสัมพันธ์ที่ใหญ่ที่สุดในโลก ฐานข้อมูลมีให้ใช้ได้ 80 แพลตฟอร์มซึ่งครอบคลุมเกือบทุกแพลตฟอร์มที่มีอยู่ในปัจจุบัน เริ่มตั้งแต่เครื่องคอมพิวเตอร์บนเมนเฟรม, มินิคอมพิวเตอร์, พีซี บนระบบปฏิบัติการตั้งแต่ Window 9x, NT, Window CE, UNIX, SOLARIS, LINUX โดยที่ในทุกพอร์ตมีโครงสร้างการเหมือนกันๆหมด คำสั่งที่ใช้ก็เป็นแบบเดียวกัน สามารถทำงานร่วมกันได้ สามารถนำข้อมูลจากพอร์ตหนึ่งไปพอร์ตอื่นได้อย่างไม่มีปัญหา เหมาะแก่การทำระบบต้นแบบ (Prototype) เช่น นักพัฒนาสามารถเขียน,ทดสอบ,พัฒนาระบบบนเครื่องเดส์กทอปได้โดยไม่ต้องสนใจว่าสุดท้ายจะใช้นำไปใช้ที่แพลตฟอร์มไหน
เป็นหัวใจสำคัญของซอฟต์แวร์จากบริษัทออราเคิล
ฐานข้อมูล Oracle เป็นฐานข้อมูลที่ได้รับความนิยมและมีการใช้งานอย่างแพร่หลาย เนื่องจากเป็นฐานข้อมูลที่มีประสิทธิภาพในการทำงานสูง เหมาะกับการจัดการเก็บข้อมูลขนาดใหญ่ที่ต้องการความปลอดภัยและความมั่นคงในการใช้งาน การจัดการฐานข้อมูล Oracle ให้เป็นไปอย่างถูกต้องจะช่วยให้การใช้งานฐานข้อมูลเป็นไปได้ง่ายและมีประสิทธิภาพมากยิ่งขึ้น หน้าที่ในการจัดการฐานข้อมูลเป็นหน้าที่หลักของผู้ดูและระบบฐานข้อมูล หรือ DBA (Database Administrator)

ประวัติการพัฒนา
ประวัติ Oracle ในปี ค.ศ. 1977 บริษัท Relation Software Inc หรือ RSI ได้ถือกำเนิดขึ้นใน Redwood รัฐ Clariflornia ผู้ร่วมก่อตั้งคือ Lawrence; J Ellison จบการศึกษาจากมหาวิทยาลัยอิลินอยส์และ ชิคาโก ต่อมาในปี ค.ศ.1983 บริษัท RSI ได้เปลี่ยนชื่อเป็น Oracle Corparation เพื่อหลีกเลี่ยงความสับสนกับคู่แข่งที่ชื่อ RIT ณ เวลานั้นนักพัฒนา Applicationได้สร้างระบบฐานข้อมูลที่สามารถทำงานได้หลายแพลตฟอร์มซึ่งเป็นเวอร์ชั่น 3 และออกจำหน่ายในท้องตลาด โดยเวอร์ชั่นนี้สามารถทำงานได้ทั้งระบบ Digital VAX / VMS แต่ยังสามารถทำงานบนแพลตฟอร์ม Unix และแพลตฟอร์มอื่น ๆ อีกด้วย
จนถึง ค.ศ. 1985 บริษัท Oracle ได้กล่าวว่าระบบฐานข้อมูลสามารถทำงานได้มากกว่า 30 แพลตฟอร์ม ในปัจจุบันนี้สามารถทำงานได้ถึง 80 แพลตฟอร์ม เช่น แพลตฟอร์ม Sun”Solaris, IBM, AIX, Windows ต่างๆและ Linux เพื่อต้องการส่วนแบ่งตลาดมากที่สุด นอกจากมีการสนับสนุนหลายๆแพลตฟอร์มแล้ว ข่าวคราวของ Oracle กลางทศวรรษที่ 1980 ยังคงได้ยินจนถึงปัจจุบันนี้ รวมถึงเครื่องมือในการพัฒนา Software และการตัดสินใจภาษา SQL ตามมาตรฐาน ANSI สามารถทำงานข้ามแพลตฟอร์มต่างๆได้และเชื่อมต่อเน็ตเวิร์คมาตรฐาน เป็นต้น
ตั้งแต่กลางทศวรรษที่ 1980 โมเดลการกระจายฐานข้อมูลก็ค่อยๆปรากฏออกมาจาก ดาตาเบส แอปพลิเคชั่น เซิร์ฟเวอร์เป็น ไคลแอนท์/เซิร์ฟเวอร์ แล้วกลายมาเป็น Internet ที่ทำงานบนเครื่องคอมพิวเตอร์ส่วนบุคคลและเครื่องคอมพิวเตอร์ไคลแอนท์ที่ใช้ทรัพยากรน้อย หรือเรียกว่า Thin Client และสามารถเข้าถึง ดาต้าเบสแอปพลิเคชั่นด้วยเบราเซอร์และกลายเป็นเทคโนโลยี Three-Tier ซึ่งเราจะพบเห็นในปัจจุบันนี้เช่น Web Service Oracle นะนำลักษณะเด่นด้านเทคนิคใหม่ๆ มาใส่ไว้ในฐานข้อมูลเหมือนกับโมเดลการคำนวณและการกระจายที่มี การเปลี่ยนแปลง จากการให้ฐานข้อมูลแบบกระจายจนถึง Java Virtual Machine ในเอ็นจิน ฐานข้อมูลหลัก
กว่า 3 ทศวรรษ ที่ออราเคิลยืนหยัดอยู่บนถนนสายซอฟต์แวร์ แลรี่ เอลลิสัน ก่อตั้งออราเคิลขึ้น เพราะเห็นโอกาสเติบโตสูงมากของตลาดฐานข้อมูล(ดาต้าเบส) และยังพัฒนาขยายธุรกิจดาต้าเบส ซึ่งเป็นเจ้าตลาดอยู่แล้วอย่างต่อเนื่อง ชื่อของออราเคิลในฐานะบริษัทซอฟต์แวร์ด้านระบบบริหารฐานข้อมูลที่ใหญ่ที่สุดในโลกและมีระบบบริหารธุรกิจ การบัญชีการเงิน ระบบบริหารการผลิต บริหารลูกค้าสัมพันธ์ (CRM) หรือเรียกรวมๆว่า อีบิสซิเนส สวีท (E-Business Suite) ซึ่งคุณสมบัติของ Oracle เช่น โปรแกรมประมวลผลคำ โปรแกรมตารางคำนวณ โปรแกรม ฐานข้อมูล โปรแกรมนำเสนอเกม โปรแกรมป้องกันไวรัส นอกจากนี้ยังมีระบบการติดตั้งที่รวดเร็ว ช่วยให้วงจรการดำเนินธุรกิจหลักๆ ขับเคลื่อนได้ภายในเวลาอันสั้น อีกทั้งยังเป็นชุดแอปพลิเคชั่นอยู่ภายใต้งบประมาณที่เหมาะสม
ชุดผลิตภัณฑ์ฐานข้อมูล Oracle 1. เวอร์ชั่นบุคคล เป็นฐานข้อมูลที่ใช้คนเดียวเพราะสามารถ เขียน แก้ไขบนโค้ดคอมพิวเตอร์เดียว ซึ่งถ้ามีการ Hank ของข้อมูลก็จะไม่ทำให้ผู้อื่นเดือดร้อน 2. เวอร์ชั่นมาตรฐาน เป็นฐานข้อมูล Server ใช้กันหลายคนหรือเรียกว่า Work group Server 3. เวอร์ชั่น Enterprise เช่นเดียวกับเวอร์ชั่นมาตรฐาน แต่สนับสนุนผู้ใช้ได้มากและรวมฟังก์ชั่นเครื่องมือต่างๆเพิ่มขึ้น เช่นการจัดการระดับสูง network program คลังข้อมูล เป็นต้น

ประเภทของ Oracle
ลักษณะงาน ซอฟแวร์ของ Oracle มี 2 แบบ คือ
1. Personal Oracle
2. Oracle Server

ทั้ง 2 แบบนี้มีลักษณะการใช้งานและคำสั่งเหมือนกัน แต่ต่างกันที่ Personal Oracle คือฐานข้อมูลที่เมื่อติดตั้งบนเครื่องคอมพิวเตอร์แล้ว ผู้ใช้จะต้องนั่งทำงานกับ Oracle นี้ที่หน้าเครื่องท่านั้น ส่วนของ Oracle Server คือ ฐานข้อมูลในลักษณะเซิร์ฟเวอร์ คือเครื่องคอมพิวเตอร์ที่ติดตั้งโปรแกรมของ Oracle Server ไว้ และยอมให้ผู้ใช้งานเรียกฐานข้อมูล หรือจัดการกับข้อมูลจากเครื่องคอมพิวเตอร์อื่น ๆ ได้(เรียกเครื่องอื่นๆ เป็นไคลเอนต์) ดังนั้นถ้าต้องการให้มีผู้เรียกใช้ข้อมูลจากฐานข้อมูลหลาย ๆ คนได้ ก็ควรต้องเลือกแบบที่เป็น Oracle Server

การทำงานของ Oracle
ในการติดต่อใช้งานกับ Oracle Database นั้น เราต้องใช้ภาษา SQL (ซึ่งบางท่านเรียกว่า SEQUEL)
ซึ่งเป็นภาษาที่ใช้ในการกำหนด และจัดการกับ Database (DDL, DML)
การทำงานกับ Database ในแบบ Relational Database นั้นหมายความว่า Database Engine จะมีการจัดเก็บข้อมูล ในลักษณะที่เป็นกลุ่มของข้อมูลที่มีความสัมพันธ์กัน ใน 1 Database สามารถที่จะมี Table ตั้งแต่ 1 table เป็นต้นไป และในแต่ละ Table ก็สามารถมีได้หลาย Column หลาย Row
โดยปกตินั้น Oracle Database Software จะแบ่งออกเป็น 4 ประเภทด้วยกัน คือ
? Oracle Enterprise Edition จะเป็น Edition ที่มีความสามารถครบที่สุด มี Feature ตามที่ Oracle โฆษณาไว้ทุกอย่าง
? Oracle Standard Edition จะมีความสามารถน้อยกว่า Enterprise Edition ซึ่งถูกออกแบบเพื่อรองรับงานระดับ Department โดยความสามารถที่ขาดหายไปจาก Enterprise Edition ก็อย่างเช่น การทำ Parallel Processing และ Function ที่เกี่ยวกับ Data Warehousing เป็นต้น
? Oracle Personal Edition จะมีความสามารถใกล้เคียงกับ Enterprise Edition เกือบทุกอย่าง เพียงแต่ว่า Edition นี้ถูกออกแบบให้ใช้งาน Database ได้เพียงแค่คนเดียว
? Oracle Lite ถูกออกแบบเพื่อให้ใช้งานกับอุปกรณ์ประเภท Mobile อย่าง Palm หรือ Windows CE เป็นต้น

Oracle Server
Oracle Database
? Data files
? Control files
? Redo log files
? Archived log files
? Parameter file
? Password file

An Oracle Database
Oracle Database คือส่วนของ Oracle Server ที่จะจัดเก็บข้อมูลต่าง ๆ ไว้ที่ storage ที่เป็นลักษณะ Persistence หรือเรียกง่าย ๆ ว่าถ้าปิดไฟฟ้าแล้วข้อมูลต้องยังอยู่ ซึ่งแน่นอนว่า Disk เป็น Storage ที่เป็นที่นิยมที่สุด กล่าวโดยสรุปก็คือ Oracle Database จะถูกจัดเก็บบน Disk ในลักษณะเป็น files โดยแบ่งเป็นประเภท ดังนี้
Data Files
คือ ส่วนในการจัดเก็บข้อมูลของระบบฐานข้อมูล ซึ่ง Data File นั้นเป็นชื่อเรียกทาง Physical ในขณะที่ทาง Logical จะเรียกว่า Tablespace โดยจะทำการตัดแบ่งไฟล์ไปจัดเก็บในหน่วยเล็กๆ ที่เรียกว่า Data blocks โดยส่วนหัวของบล็อกจะเรียกว่า Header ซึ่งจะจัดเก็บรายละเอียดของ Data Files เช่นขนาดของไฟล์ ขนาดของบล็อก พื้นที่จัดเก็บตาราง เวลาที่สร้าง เป็นต้น เมื่อมีการเปิดใช้งานข้อมูลในฐานข้อมูล ออราเคิลจะทำการตรวจสอบรายละเอียดของไฟล์ที่ส่วนหัวนี้ เพื่ออ่านข้อมูลใน Data Files มาเก็บในหน่วยความจำชั่วคราวแบบแคช ทำให้สามารถค้นหาข้อมูลได้รวดเร็วมากขึ้นซึ่งเราจะเรียกส่วนนี้ว่า Database Buffer cache
Tablespace อย่างน้อยที่สุดจะต้องมี System Tablespace ซึ่งจะทำหน้าที่เก็บ Data Dictionary ของ Database ทั้งหมด พูดให้ง่ายขึ้นก็คือเป็นข้อมูลอย่างเช่น มี tables ,user หรือ objects อื่น ๆ อะไรบ้าง ใครเป็นเจ้าของ เป็นต้น
เวลาที่เราทำงานกับฐานข้อมูลของออราเคิล เพื่อประสิทธิภาพในการทำงานที่ดี ขอแนะนำให้สร้าง Tablespace ใหม่ขึ้นมาเพื่อใช้เก็บข้อมูลของแต่ละงานแยกกัน โดยปกติถ้าเราใช้ DBCA เป็นตัวสร้าง Database ตัว DBCA จะสร้าง tablespace อื่นนอกเหนือจาก Systems Tablespace ให้เราด้วยแล้ว

Control Files
คือไบนารี่ไฟล์ซึ่งเก็บข้อมูลเกี่ยวกับระบบปฏิบัติการที่ใช้งานอยู่ชื่อฐานข้อมูล เวลาที่สร้างชื่อ Data Files และ Online Redo Log Files รวมถึง Archived Redo Log Files ด้วย ทุกครั้งที่มีการ mount ฐานข้อมูลก็จะเกิด Control File ขึ้นเพื่อระบุ Data Files และ Online Redo Log Files ที่ต้องใช้ในการทำงานของระบบฐานข้อมูล ถ้าหากมีการเปลี่ยนแปลง เช่น มีการสร้าง Data File หรือ Redo Log File ใหม่ขึ้นมาก็จะทำการบันทึกลงใน Control File ซึ่งโดยปกติแล้วควรจะแยกเก็บเป็น mirror ไว้บนฮาร์ดดิสก์คนละตัวกัน เพื่อป้องกันการ Fail ของฮาร์ดดิสก์ และเก็บเป็นไฟล์นามสกุล .con นอกจากนี้เรายังควรที่จะทำการสำเนาไฟล์นี้เอาไว้เผื่อกรณีฉุกเฉินด้วย

Online Redo Log Files
ออราเคิลจะมี Redo Log File เพื่อใช้ในการจัดเก็บการเปลี่ยนแปลงทุกอย่างที่เกิดขึ้นกับ Database เพื่อนำไว้ใช้ในกรณีที่เกิดเหตุการไม่ปกติกับ Database อย่างเช่น มีคนซนดึง plug ไฟฟ้าของเครื่องออก โดยที่ยังไม่ได้ทำการ Shutdown Database ก่อน

Archived Redo Log Files
ส่วนนี้จัดเก็บข้อมูลจาก Online Redo Log File ที่มีการจัดเก็บจนเต็มแล้ว โดยแยกเก็บในพื้นที่ภายนอก ที่สามารถขยายได้ (เนื่องจาก Online Redo Log File นั้นเมื่อบันทึกจนเต็มก็จะย้ายไปทำงานที่ตัวถัดไป จนกระทั่งทุกตัวบันทึกเต็มหมดแล้ว ก็จะกลับมาเริ่มที่ตัวแรกใหม่ ซึ่งจะเริ่มเขียนทับข้อมูลเดิม ดังนั้นออราเคิลจึงได้ทำการย้ายไปเก็ฐใน Archive Redo Log File แทน )ทำให้เราสามารถจัดเก็บข้อมูลย้อนหลังได้มากขึ้นเพื่อว่าเวลาที่เกิดปัญหาขึ้นจะได้สามารถนำ ข้อมูลกลับคืนมาได้ครบถ้วน Archived Redo log files จะเกิดขึ้นในกรณีที่ Database เรากำหนด mode เป็น ARCHIVELOG Mode ซึ่งจะทำให้เราสามารถกู้ข้อมูลกลับคืนมาได้ทั้งหมด ในกรณีที่มีปัญหาเกิดขึ้น

นอกจากนั้นจะมี file ประกอบการทำงานอีก 2 file คือ
Parameter File
ทำหน้าที่ เก็บ parameter ต่าง ๆ ข้อ Database ที่เราใช้งานซึ่งรวมไปถึงการกำหนดขนาดของ SGA และพฤติกรรมการทำงานต่าง ๆ ฉะนั้นเวลา DBA เค้าคิดจะ Tuning เจ้าตัว Database เค้าก็จะมาปรับแต่งที่ file นี้
Password File
ทำหน้าที่เก็บ user และ password ของคนที่มีสิทธิ startup และ shutdown Database ได้

Oracle Server
Memory Structure
? SGA
? Shared pool
? Library Cache
- Data Dictionary cache
- Database Buffer cache
? Redo buffer cache
? PGA
SGA
SGA(System Global Area) เป็นโครงสร้างหน่วยความจำส่วนที่สำคัญมากของ Oracle Server ซึ่งประกอบด้วย buffer cache หลายประเภทด้วยกันตามประเภทการใช้งาน ซึ่งจุดประสงค์โดยรวมก็เพื่อลดเวลาในการทำ I/O ให้มากที่สุดเพื่อประสิทธิภาพที่ดีในการทำงานกับฐานข้อมูล ภายใน SGA นั้น ประกอบด้วย buffer cache ประเภทต่าง ๆ ซึ่งในบทความนี้จะกล่าวถึงเฉพาะส่วนประกอบสำคัญๆ ดังนี้

Redo Log Buffers Cache
Redo Log Buffers Cache จะทำการบันทึก การเปลี่ยนแปลงที่เกิดขึ้นในฐานข้อมูล โดยการเปลี่ยนแปลงเหล่านี้ก็จะถูกเขียนลงไปใน Online redo log files ซึ่งการบันทึกการเปลี่ยนแปลงที่เกิดขึ้นนี้สามารถที่จะนำไปใช้ในการ roll-forwardในระหว่างที่ฐานข้อมูลกระทำการกู้ข้อมูล โดยการกระทำนี้จะเกิดขึ้นก่อนที่จะเขียนหรือบันทึกข้อมูลลงไปใน Online redo log files ขนาดของ Redo Log Buffers Cache จะสามารถตั้งค่าผ่าน LOG_BUFFER parameter ในไฟล์ init.oraได้

Database Buffer Cache
การทำสำเนาข้อมูลที่ถูกเรียกใช้จาก data files โดยจะช่วยให้การทำงานในการเรียกใช้ข้อมูลจากฐานข้อมูลมีความรวดเร็วขึ้นโดยการเก็บข้อมูลที่ถูกเรียกใช้งานเป็นประจำเอาไว้ใน Database Buffer Cache โดยสามารถใช้คำสั่ง DB_BLOCK_SIZE ในการกำหนดเนื้อที่ของ Database Buffer Cache
Shared pool
Shared pool ถูกใช้สำหรับเก็บการกระทำการของ SQL statement และ รายละเอียดต่างๆของข้อมูล ในการกำหนดขนาดของ Shared pool ใช้คำสั่ง SHARED_POOL_SIZE โดย Shared pool มีส่วนประกอบด้วยกัน 2 ส่วนคือ
1. Library Buffer Cache จะใช้สำหรับเก็บประโยคคำสั่ง SQL และ PL/SQLที่ใช้ในการทำงานโดย Library Buffer Cache ประกอบด้วย 2 โครงสร้าง คือ Shared SQL area และ Shared PL/SQL area ขนาดของ Library Buffer Cache จะขึ้นอยู่กับการกำหนดจาก Share pool
2. Data Dictionary Cache จะเก็บรวบรวมรายละเอียดต่าง ๆ ที่ใช้ในฐานข้อมูลรวมทั้งข้อมูลที่เกี่ยวกับ tables, indexes, columns, users, privileges และ object ฐานข้อมูลอื่น ๆ ขนาดของ Data Dictionary Cache จะขึ้นอยู่กับการกำหนดจาก Share pool

PGA
PGA เป็นพื้นที่ ( พื้นที่ส่วนนี้จะถูกจองเมื่อมีการ start ของ server process เกิดขึ้น )ที่อยู่ในหน่วยความจำซึ่งจะช่วย user process ในการกระทำการดังตัวอย่าง เช่น bind variable information, sort areas, cursor information และsession information ซึ่งโดยทั่วไปแล้วในการกระทำการของ SQL statements ในshared area ถูกเรียกใช้จาก Library cache แล้วคุณสงสัยไหมว่าทำไม user จึงต้องการพื้นที่ในการที่จะกระทำการเป็นของตนเอง เหตุผลก็คือ userต้องการที่จะกระทำการ select หรือ update โดยไม่มีการถูกใช้ข้อมูลร่วมกันได้ ( Shared ) เพราะฉะนั้น PGA จึงถูกใช้ในการเก็บข้อมูลจริง ๆ ในที่ซึ่งไม่มีผู้ใดสามารถมองเห็นได้ สำหรับที่จะกระทำ SQL statement