Оракл (өгөгдлийн сан)

Оракл корпорациас 1997 онд гаргасан **Оракл өгөгдлийн сан** нь Лавренс Эллисон болон бусад хөгжүүлэгчдийн хамт зохиосон өгөгдлийн сан удирдах систем юм. Энэ нь бусад өгөгдлийн сан удирдах системээс илүү найдвартай , өргөн ашиглагддаг өгөгдлийн сангийн машинуудын нэг юм. Өгөгдлийн сангийн бүтэц нь өгөгдлийн файл, удирдах файлуудаас бүрдэнэ. Oracle DB нь Windows, Unix, Linux, Mac OS гэх мэт платформууд дээр ажилладаг.
 
Оракл-ийн давуу тал нь: Оракл өгөгдлийн сан дахь өгөгдлийн байршил нь бусад өгөгдлөөс үл хамаарах ба хэрэглэгчид ил тод харагдана.Физик өгөгдлийн сангийн үйл ажиллагаанд өөрчлөлт оруулалгүйгээр нэмэгдэх боломжтой. Өгөгдлийн хэмжээнээс  хамааран багтаамжийг өөрөө тохируулдаг бөгөөд нөөцийг үр дүнтэй ашиглах боломжоор хангадаг.Өгөгдлийн сангийн өгөгдөл нь сүлжээнд хадгалагддаг тул алдаа гарах үед асуудалгүй, найдвартай ажиллана.

## Оракл статементийн төрлүүд 
Өгөгдөл тодорхойлох хэл (DDL) статемент.
Өгөгдөл зохион байгуулах хэл (DML) статемент.
Шилжилт удирдах статемент.
Сешион  удирдах статемент.
Систем удирдах статемент.
Эмбэддэд(Хавсаргасан) SQL статемент.

### Өгөгдөл тодорхойлох хэл (DDL-Data Definition Language) статемент. 
Энэхүү статемент нь дараах үйлдлүүдийг биелүүлнэ.

•	Схемийн объектод Create, alter, drop үйлдийг хийнэ.

•	Эрх олгох болон цуцлах.

•	Хүснэгт, индекс, болон кластер дээрх мэдээлэлд шинжилгээ хийх.

•	Сонголтонд хяналт тогтоох.

•	Өгөгдлийн толь бичигт тайлбар нэмэх.
DDL статемент нь оракл өгөгдлийн сангаас схемийн объектод дахин хөрвүүлэлтийг хийх болон дахин баталгаажуулалтыг хийнэ.DDL статемент нь DBMS_SQL –ийн цогц програм хангамжыг PL/SQL –тэй хамтран ашиглахыг дэмждэг.DDL статементэд эдгээр нь багтана:

1.	ALTER ... (Бүх статементийн эхлэл нь ALTER байна). Энэ нь өмнө үүссэн хүснэгт,виртуал хүснэгт,өгөгдлийн сан,кластерт өөрчлөлт оруулах болон дахин сэргээх үед ашигладаг.

2.	ANALYZE - ANALYZE статементийг ашиглан сонгосон үзүүлэлтүүдийг цуглуулна.
Жишээлвэл:

■ Скаляр объектийн аттрибут, кластер, индексээс бүтсэн хүснэгт, хүснэгт болон хүснэгтийн хуваагдал, индекс болон индексийн хуваагдлын тухай сонгосон үзүүлэлтүүдийг устгах болон цуглуулна. 

■ Объектийн лавлах, кластер, индексээс бүтсэн хүснэгт, хүснэгт болон хүснэгтийн хуваагдал, индекс болон индексийн хуваагдлын байгуулалтыг батлана. 

■ Кластер болон хүснэгтийн хязгаартай болон шилжсэн мөрийг тодорхойлно. Схемийн объект нь заавал ANALYZE ANY системийн эрхтэй үед тухайн статементийг ашиглана.

3.	ASSOCIATE STATISTICS - ASSOCIATE STATISTICS статементийг домайн индекс, төрөл, багц, функц, нэг болон олон мөрийн өртөг, статик цуглуулгуудыг хамаатай функцыг агуулах статистик төрөлтэй нэгтгэхэд ашиглана.

4.	AUDIT- AUDIT статементийг дараах тохиолдолд ашиглана: 
■ Хэрэглэгчийн сешион дэх SQL статементийн байршилыг чиглүүлэх. 

■ Тодорхой схемийн объект дэх үйл ажиллагааг чиглүүлнэ. Тухайн статементийг ашиглахад AUDIT SYSTEM системийн эрхтэй байх ёстой.

5.	COMMENT- COMMENT статементийг ашиглан биелүүлэгдсэн виртуал хүснэгт(materialized view), виртуал хүснэгт, хүснэгтийн тухай тайлбар нэмэх болон өгөгдлийн толь бичигрүү багана оруулна. Өгөгдийн сангаас тайлбарыг хасахдаа хоосон ‘ ‘ стринг авна.

6.	CREATE ... (CREATE)Өгөгдлийн санд шинээр объект үүсгэхэд ашиглана.

7.	DISASSOCIATE STATISTICS - DISASSOCIATE STATISTICS статементийг индекс төрөл болон домайн индекс, төрөл, багц, нэг удаагын функц, баганаас сонгосон үзүүлэлтийн төрөл болон анхдагч статистикийг тусгаардахад ашиглана. Статементийг ашиглахын тулд гол хүснэгт ,функц, багц, төрөл, домайн индекс, болон индекстөрөлд тохирох эрхийг олгосон байх шаардлагатай.

8.	DROP ... (Бүх статементийн эхлэл нь DROP байна) – өгөгдлийн сангаас объектийн хасах буюу устгахад ашиглана.Ашигласны дараа буцаах үйлдлээр сэргээх боломжтой.

9.	FLASHBACK ... (Бүх статементийн эхлэл нь FLASHBACK байна) - Use the FLASHBACK DATABASE статементийг ашиглан хуучин байсан өгөгдлийн санг буцаана. Энэ статемент нь өгөгдлийн сангийн бүрэн гүйцэтгэлийг шуурхай сэргээн авах боломжыг олгодог. 

10.	GRANT- GRANT статементийг ашиглан дараах эрхийг олгоно: 

■ Хэрэглэгч болон үүрэгт системийн эрхийг олгох. 

■ Хэрэглэгч болон үүрэгт үүрэг(role) олгох. Эрх болон үүрэг нь хоёулаа локал, глобал, эсвэл гадаад байна. 

■ Онцгойлсон объектоос хэрэглэгч болон үүрэгт объектийн эрхийг олгох. Ихэнх Оракл өгөгдлийн сангын эрх нь PL/SQL болон Жава багцуудаар хангагдсан байдаг. Системийн эрхийг АDMIN OPTION системийн эрх эсвэл GRANT ANY PRIVILEGE системийн эрхээр олгоно.

11.	NOAUDIT - NOAUDIT статемент нь AUDIT статемент-аар урьдчилан идэвхижүүлэгдсэн хяналтыг зогсооно. NOAUDIT статемент нь урьдчилан тодорхойлогдсон AUDIT статементтэй бичиглэлийн хувьд ижил байна. SQL статементийн хяналтыг зогсоохын тулд AUDIT SYSTEM системийн эрхтэй байх ёстой.

12.	PURGE - Use the PURGE статементийг дахин ашиглагдах агуулахаас хүснэгт, индекс, объект, хасагдсан хүснэгтний зай(tablespace)- ийг устгахад ашиглана. PURGE статементийг ашигласны дараа буцаах үйлдэл хийсэн ч сэргээх боломжгүй.

13.	RENAME- RENAME статементийг ашигласны дараа буцаах боломжгүй. Хүснэгт, виртуал хүснэгт, хувийн синонимийг нэрлэхэд ашиглана.
 ■ Оракл өгөгдлийн сан нь автоматаар хуучин объектийн эрх, констрайнтуудын нэгдэл, индексүүдийг шинэ объектруу шилжүүлдэг.

 ■ Оракл өгөгдлийн сан нь дахин нэрлэгдсэн объектийн виртуал хүснэгт, синоним, сторед процедур функцуудыг дахин нэрлэгдсэн хүснэгтрүү дамжуулах үед бүх объектийг хүчингүй болгодог. Хуучин_нэр нь одоогийн хүснэгт, виртуал хүснэгт, хувийн синонимийг заана. Шинэ_нэр одоогийн объектод өгч буй шинэ нэрийг заана. Шинэ нэр нь өмнө нь өөр схемийн объектод тодорхойлогдоогүй байх бөгөөд схемийн объектийн нэрлэх дүрмийг дагсан байх ёстой.

14.	REVOKE -REVOKE статементийг дараах тохиолдолд ашиглана: 

■ Хэрэглэгч болон үүрэг(role)-ээс системийн эрхийг цуцлах 

■ Хэрэглэгч болон үүрэгээс үүрэгийг цуцлах 

■ Хэрэглэгч болон үүрэгээс онцгойлсон объектийн объектийн эрхийг цуцлах. REVOKE статемент нь зөвхөн GRANT статементээр олгогдсон эрхийг цуцлах үүрэгтэй. Дараах тохиолдолд тухайн статементийг ашиглаж болохгүй: 

■ Эрх болон үүрэг(roles) нь олгогдоогүй үед  

■ Үйлдийн системээр объектийн эрх болон үүрэг олгогдсон үед 

■ Үүрэгээр(role) эрх болон үүрэг олгогдсон үед

15.	TRUNCATE статемент нь кластер болон хүснэгт дэх бүх мөрийг устгана. Энэ нь бүхлээр устгадаг ба буцаах үйлдэл хийсэн ч сэргээх боломжгүй. TRUNCATE статементээр мөр устгах нь drop болон хүснэгт дахин үүсгэхээс илүү үр дүнтэй. DELETE статементээр бүх мөрийг усгаснаас TRUNCATE статементээр мөр устгах нь илүү хурдан. Тухайлбал олон тооны триггэр, индекс, мөн бусад хамааралуудад ашиглах нь үр дүнтэй.

### Өгөгдөл Зохион байгуулах Хэл (DML) статемент 
Өгөгдөл Зохион байгуулах хэл буюу (DML) статемент нь схемийн объект дахь өгөгдлийг ашиглах болон нэвтрүүлнэ. Бүхий л DML статемент нь PL/SQL-г бүрэн дэмжинэ. DML статементэд эдгээр нь багтана:

1.	CALL- CALL статементийг ашиглан SQL доторх тогтмолуудыг(процедур,фунц) ажилуулна

2.	DELETE - Delete нь нэг болон хэд хэдэн өгөгдлийг нөхцөл шалгах(where) үйлдлийн тусламжтай устгадаг. Устгасны дараа rollback команд ашиглан дахин сэргээх боломжтой. Дараах тохиолдолд DELETE статементийг ашиглан мөрийг устгана: 

■ Хуваагдсан болон хуваагдаагүй хүснэгтэнд 

■ Хуваагдсан болон хуваагдаагүй виртуал хүснэгтийн үндсэн хүснэгтэнд 

■ Бичих эрхтэй биелүүлэгдсэн виртуал хүснэгтийг(materialized view) агуулах хуваагдсан болон хуваагдаагүй хүснэгт 

■ Шинэчлэх боломжтой биелүүлэгдсэн виртуал хүснэгтийн(materialized view) хуваагдсан болон хуваагдаагүй мастер хүснэгт. Схем болон хүснэгтэнд объект устгах эрхтэй үед хүснэгтийн мөрийг устгаж болно.
DELETE ANY TABLE системийн эрхээр зөвшөөрүүлсэн үед виртуал хүснэгтийн үндсэн хүснэгт, хүснэгтийн хуваагдал(partition), болон бусад хүснэгтнээс мөрийг устгаж болно. 

3.	EXPLAIN PLAN- EXPLAIN PLAN-г ашиглан тодорхойлогдсон SQL статементийг хэрэгжүүлэх хэрэгжилтийн төлөвлөгөөг Ораклийн өгөгдлийн санд тодорхойлно. Энэ статемент нь тодорхойлогдсон хүснэгтрүү мөрийг тайлбарласан бүхий л хэрэгжүүлэлтийн төлөвлөгөөг оруулдаг. Мөн статентийг ажилуулах өртийг тогтоодог. Шаардлагатай мөрд хандах эрхийг тодорхойлж өгснөөр ашиглах боломжтой. EXPLAIN PLAN статемент бол DML-ээс илүү өгөгдөл тодорхойлох хэл (DDL) статемент юм. Түүнчлэн Оракл өгөгдлийн сан нь EXPLAIN PLAN статементаар шууд бус өөрчлөлтийг хийдэггүй.

4.	INSERT статемент нь объектийн виртуал хүснэгт дэхь үндсэн хүснэгт, объектийн хүснэгт, виртуал хүснэгтийн үндсэн хүснэгт, болон тэдгээрийн хүснэгтийн мөрүүдрүү өгөгдөл оруулахад ашиглана. Хандах эрх бүхий схемийн хүснэгтэнд INSERT үйлдийг хийнэ. INSERT ANY TABLE статементийг ашиглан хүснэгтийн мөррүү өгөгдөл оруулах эрхийг үүсгэнэ. Шууд-замын INSERT нь хэд хэдэн хязгаарлалтыг хамаарана. Хэрэв эдгээр хязгаарлалтийг зөрчсөн үед Оракл өгөгдлийн сан нь ямар нэгэн хариу мессежгүй гүйцэтгэдэг бөгөөд энэ нь эдгээр тэмдэглэснээс бусад үед хэрэгжинэ. 

■ Шууд-замын олон INSERT статемент нь DML статементтэй хамт болон хамт биш байсан ч нэг шилжилтэнд байж болно. 

■ Квери нь ижил хүснэгт, партишион, индексрүү шууд-замын INSERT-г ашиглахаас өмнө хандах хандалтыг зөвшөөрдөг.  

■ Цуваа болон паралелл статементүүд нь ижил шилжилт(transaction) дэхь шууд-замын INSERT –р өөрчлөгдсөн хүснэгтрүү хандах оролдлого хийдэг. 

■ Сонгосон хүснэгт нь бүлэглэсэн индекс болон бүлэг кластер байж болохгүй. 

■ Сонгосон хүснэгт нь объектийн төрлийн баганыг агуулж болохгүй.  

■ Сонгосон хүснэгтэнд триггэр болон констрайнтуудын нэгдлийг тодорхойлж болохгүй. 

■ Сонгосон хүснэгт нь хуулбар хүснэгт байж болохгүй. 

■ Шилжилт(transaction) нь шууд-замын INSERT статементийг агуулах бөгөөд энэ нь тархсан байж болохгүй.

5.	LOCK TABLE статемент нь тогтоосон горимд нэг болон хэд хэдэн хүснэгт, хүснэгтийн хуваагдал, хүснэгтийн олон хуваагдлуудыг түгжинэ. Автомат түгжилтийг даван тодорхойлж хүснэгт болон виртуал хүснэгтийг(view) түгжинэ . Зарим хэлбэрийн түгжээ нь ижил хугацаанд ижил хүснэгтэнд хийгдэж болно. Харин зарим түгжээ нь зөвхөн хүснэгтэнд нэг түгжээ байхыг зөвшөөрдөг. Хүснэгтний түгжээ дээр квери бичих боломжгүй. Түгжээг хэрэглэхийн тулд LOCK ANY TABLE  системийн эрхтэй байх ёстой.Тодорхой заагдсан нэртэй хүснэгт болон виртуал хүснэгт(view) нь түгжигдсэн байна. Виртуал хүснэгт нь тодорхой заагдсан үед Оракл өгөгдлийн сан  виртуал хүснэгт дахь үндсэн хүснэгтийг түгжинэ.

6.	MERGE статемент нь нэг болон хэд хэдэн эх үүсвэрээс мөр сонгон хүснэгт болон виртуал хүснэгт рүү шинчлэх болон оруулах үйлдэл хийнэ. Шинчлэх болон оруулах хүснэгт болон виртуал хүснэгтийг тодорхойлсон байхыг шаардана. Өөрөөр хэлбэл шийдвэрлэх статемент гэж болно.Энэ статемент нь олон оператортай хослуулан хэрэглэхэд тохиромжтой. INSERT, UPDATE, DELETE DML статементүүдтэй хослуулан хэрэглэхэд төвөгтөй. Ижил MERGE статемент дэх товлосон хүснэгтний ижил мөрөн дээр олон удааа шинчлэлт(update) хийх боломжгүй. Оракл өгөгдлийн сан нь MERGE статементийг хэрэглэх явцад хандалтын удирдлагыг нэтрүүлдэггүй.

7.	SELECT статемент нь нэг болон олон хүснэгт, объектийн хүснэгт, виртуал хүснэгт, объектийн виртуал хүснэгт болон биелүүлэгдсэн виртуал хүснэгтнээс (materialized view) өгөгдөл буцаана. Хүснэгт болон биелүүлэгдсэн виртуал хүснэгтнээс(materialized view) өгөгдөл сонгоход хүснэгт болон биелүүлэгдсэн виртуал хүснэгтэндээ(materialized view) SELECT эрхийг олгосон байх шаардлагатай. 

8.	UPDATE статемент нь биелэгдсэн виртуал хүснэгт (materialized view) –ийн мастер хүснэгт, виртуал хүснэгт(view)- ийн суурь хүснэгт, хүснэгтэн дэх ашиглагдаж буй өгөгдлийн утгыг өөрчилнө. Схем болон эрх олгогдсон хүснэгт дэх өгөгдлийн утгыг засварлах боломжтой. Зөвхөн нэг бичлэгийг эсвэл хэсэг бүлэг бичлэгийг мөн бүх бичлэгийг өөрчлөхөд ашиглагдана.

### Шилжилт Удирдах Статемент 
Шилжилт удирдах статемент нь DML статементүүдэд хийгдсэн өөрчлөлтүүдийг удирддаг.Шилжилт удирдах статементэд дараах багтана:

1.	COMMIT статемент нь шилжилт дэх үндсэн бүхий л өөрчлөлтийг хэрэгжүүлэх болон хийгдэж буй шилжилтийг дуусгана. Оракл өгөгдлийн сан нь COMMIT –г бүхийл DDL-н өмнө болон дараа нь хэрэглэдэг. Аппликэшн болон програмдаа COMMIT болон ROLLBACK –г хэрэглэх болон сүүлийн шилжилтэндээ оруулахаас өмнө Оракл өгөгдлийн сангын холболтыг салгана. Энэ статементийг тархсан шилжилтэнд, унших шилжилтийг хязгаарлахад хэрэглэнэ. 

2.	ROLLBACK статемент нь гүйцэтгэл хийгдсэний дараа буцаах болон тархсан шилжилт дээрх гүйцэтгэлийг буцаах болмжоор хангадаг.

3.	SAVEPOINT статемент нь буцаах үйлдэл хийгдсэний дараа шилжилт хийгдэх газрыг тодорхойлно.

4.	SET TRANSACTION статемент нь буцаагдахаар тодорхойлогдсон сегментийг хувиарлах болон унших/бичих эрхийг нь тодорхойлно.

## Сешион Удирдах Статемент 
Сешион удирдах статемент нь динамикаар хэрэглэгчийн сешионг удирдана. PL/SQL нь сешион удирдах статементийг дэмждэггүй. Үүнд:
1.	ALTER SESSION статемент нь өгөгдлийн сантай холбогдон параметр болон нөхцөлийг өөрчилөхөд нөлөөлнө. Энэ нь статемент өгөгдлийн сан холболтгүй болсонч үр дүн нь хэвээр үлдэнэ. SQL-г идэвхитэй, идэвхигүй болгоход ALTER SESSION систем эрхтэй байх ёстой.

2.	SET ROLE статемент нь одоогийн сешион дахь үүрэгийг(ролл) идэвхитэй, идэвхигүй болгоно. Ижил хугацаанд 148  хэрэглэгчээс илүү тодорхойлогдсон үүрэгийг(ролл) идэвхитэй болгох боломжгүй. Оракл өгөгдлийнн санд хэрэглэгч тодорхойлох болон бүхийл эрхийг хэрэглэгчийн анхдагч (default) үүрэгт(role) эдгээрийг олгоно. Сешионы турш  аппликейшн болон хэрэглэгч нь SET ROLE статементийг хэрэглэн хэд хэдэн удаа үүрэгийг(role) өөрчилж болно. Өмнө олгогдсон үүрэгийг(role) нэрлэхдээ SET ROLE гэж нэрлэнэ.

## Систем Удирдах Статемент 
Нэг систем удирдах статемент болох ALTER SYSTEM нь динамикаар Ораклийн өгөгдлийн сан дахь инстансийг удирдана. PL/SQL –г дэмждэггүй.
ALTER SYSTEM- Оракл өгөгдийн сан дахь инстансийг динамикаар хувиргахад ашиглах бөгөөд ALTER SYSTEM системийн эрхтэй байх ёстой.

## Эмбэддэд(Хавсаргасан) SQL Статемент  
Эмбэддэд(Хавсаргасан) SQL Статемент , DDL, DML болон шилжилт удирдах статементүүд нь  процедур хэлний програмд багтдаг. Энэ нь Оракл –н дахин хөрвүүлэлтийг дэмждэг.

## Цахим холбоос 
*

Ангилал:Oracle
Ангилал:Хамааралт өгөгдлийн сангийн менежментийн систем