13
กกกกก 1 กกกกกก Virtual Private Database VPD เเเเเเเเเเเเเ Policy เเเเเเ Access DB เเเเเเเเ Row-Level (เเเเเเ เเเเเเเเเเเเเเเเเเเ Access เเเเเเเเเเเเเเเเเเ Row) เเเเเเเเเเเเเเเ Login เเเเเเเเเ Role เเเเเเเเเเเ Access เเเเเเ Row เเเเเเเเเเ เเเเเเเเเเเเเเเเเเเ เเเเ Access เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเเเเเเเเ DB เเเเเเเเเเเเเเเเเ เเเเเเเเเเ เเเเเเเ DB เเเเเเเเเเเเเเเเเเเเเเเ Oracle เเเเเเเเเเเ where statement เเเ เเเเเเเเเเเเเเเเ user เเเเเเเ เเเ select เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเ VPD - Virtual Private Database (เเเเเเเเเเเเเเเเเเเเเเเเเเ mail เเเเเเ) เเเเ technology เเเ Oracle เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเเเเเเ user เเเเเเเเเเเเเเเเเเเเเ เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเเเเเเ (Row Level Security) เเเเ feature เเเเเเเเเเเเเเเเเเเ Oracle 8i เเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเเ user เเเเเเเเเเ query database เเเเ เเ เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ user เเเเเเเ (เเเเเเเเเเเเเ เเเเเเเเเเเเเเเเ $VPD เเเเเเเเเเเเ เเเเเเเเเเเเเ) เเเเเเเเเเ modify sql statement เเเ user เเเเเเ เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ policy เเเเเเเเเเเเเ เเเเ เเเเเเเเเเ user A เเเเเเ เเเเเเเเเ credit limit เเเ เเเเเเเเเเเเเเเเเเ เเเเ user A เเเเเเเเเเเเ select * from customer เเเเเเ เเ auto append where statement เเเเเเเเ statement เเเเเ เเเ user A เเเเเ เเเเเเเเเเเเเเเเเเเเเเ เเเเเ query (เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ) เเเเ เเเเเเเเเเเเเเเเเเเเเเเเ Virtual Private Database เเเเเเเเเเเเเเเเเเเเเเ DB เเเเเเเเเเเเเเ เเเเเเเเเเเเเเเเเเเ เเเ user เเเเเเเเเเเเเเเเเเเเ database เเเเเเเเ เเเเเเเเเ เเเเเเเ database เเเเเเ เเเเเ - เเเ config เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ user เเเ เเเเเเเเเเเเ modify เเเเเเเเเเเ เเเเเเเ - เเเเเเเเเเเเเ เเเเเเเเ policy เเเเเเเเ เเเเเเ maintain เเเเเ เเ เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ admin เเเเเเเเ เเเ เเเเเเเเเ modify VPD policy เเเเเเเเเเ system เเเเเเเเ Oracle Audit เเเเเเเเเเเเเเเเเเเเ database , session , network , data เเเเ เเเเเเเเเเเเเเเเเเเ sql statement เเเ เเเเ เเเเเเเเเเเเเเเเเเเเเ select เเเเเเเเ table salary , เเเเเเเเเเเเเเเเ login / logout เเเเ user manager เเเเเเเเ เเเเเเเ เเเเเเเเเเเเเเเเเเเเเ table เเเเเเเ dba_audit_session , dba_audit_statement , dba_audit_xxx เเเเเเเเเเเเเเเ audit เเเเ audit session by manager; เเเเเเเเเ เเเเเเ login / logout เเเ user manager เเเเเเเเ เเเเเเเเเเเเเเเ

สรุป Oracle Feature 12 Features

  • Upload
    tanin

  • View
    3.232

  • Download
    14

Embed Size (px)

Citation preview

Page 1: สรุป Oracle Feature 12 Features

กลุ่��ม 1 เรื่อง

Virtual Private Database

VPD เป็�นการก�าหนด Policy ของการ Access DB ในระบด�บ Row-Level (เข�าใจว่�าเป็�นการก�าหนดการ Access ข�อมู�ลในระด�บแต่�ละ Row) ว่�าถ้�าเป็�นคนที่� Login เข�ามูาต่ามู Role น�!จะสามูารถ้ Access ข�อมู�ล Row ไหนได�บ�าง ค$ออน%ญาต่'ให�ผู้��ที่� เข�า Access ข�อมู�ลน�!นเห)นเฉพาะข�อมู�ลที่� เค�าถ้�กก�าหนดส'ที่ธิ์'-ให�เห)นเที่�าน�!น ไมู�สามูารถ้เห)นข�อมู�ลส�ว่นอ$ นๆ เสมู$อนว่�าเป็�น DB ส�ว่นต่�ว่ของแต่�ละคน แต่�ที่� จร'งแล�ว่ค$อ DB ก�อนเด�ยว่ก�นเพ�ยงแต่�ต่�ว่ Oracle มู�การไป็เต่'มู where statement ต่�อที่�ายการที่�างานของ user คนน�!นๆ ว่�า select เฉพาะข�อมู�ลของคนๆน�!เที่�าน�!นนะเข�าไป็

VPD - Virtual Private Database (ส�ว่นที่� เจ�าของกล%�มูส�งเข�า mail ไว่�ให�)

เป็�น technology ของ Oracle ที่� ใช้�ในการก�าหนดส'ที่ธิ์'-การเข�าถ้1งข�อมู�ลในต่ารางให�ก�บ user แต่�ละคนหร$อแต่�ละกล%�มู โดยสามูารถ้ต่�!งให�ละเอ�ยดได� ในระด�บของแต่�ละแถ้ว่ (Row Level Security) ซึ่1 ง feature น�!จะเร' มูมู�ต่�!งแต่� Oracle 8i

หล�กการที่�างานของมู�นก)ค$อ เ$ มู$ อ user ใช้�ค�าส� ง query database เข�ามูา ระบบจะที่�าการต่รว่จสอบส'ที่ธิ์'-การเข�าถ้1งข�อมู�ลของ user คนน�!นๆ (จะมู�การบ�นที่1กส'ที่ธิ์'-ไว่�ในต่าราง $VPD อะไรซึ่�กอย�าง จ�าช้$ อไมู�ได�) แล�ว่ที่�าการ modify

sql statement ของ user คนน�!น ให�เห)นเฉพาะข�อมู�ลที่� สามูารถ้เข�าถ้1งได�ต่ามู policy ที่� ต่� !งเอาไว่� เช้�น ถ้�าต่�!งให� user

A สามูารถ้ เห)นเฉพาะ credit limit ของล�กค�าที่� ต่นเองด�แล  แล�ว่ user A เข�ยนค�าส� ง select * from

customer  ระบบก)จะ auto append where statement เข�าไป็ใน statement น�!นๆ โดย user A จะไมู�เห)นคว่ามูเป็ล� ยนแป็ลงใดๆ ในการ query (ค$อเป็�นการใช้�งานต่ามูป็กต่'น� นเอง) ด�ว่ยเหต่%น�!มู�นเลยถ้�กเร�ยกว่�า Virtual

Private Database เพราะมู�นจะที่�าเสมู$อนว่�า DB ก�อนเด�ยว่เน� ย มู�นซึ่อยเป็�นก�อนเล)กๆ ที่� user แต่�ละคนเข�าถ้1งได�แต่� database ของต่นเอง เลยคล�ายๆ ก�บเป็�น database เสมู$อน

ข�อด� - การ config จะไมู�กระที่บต่�อการที่�างานต่ามูป็กต่'ของ user เลย เพราะเป็�นการ modify ที่� หล�งบ�านข�อเส�ย - อาจจะไมู�เหมูาะ ถ้�ามู�นมู� policy อะไรมูากๆ ต่�องมูา maintain ในน�! เพราะค�าส�� งที่� ใช้�ค�อนข�างจะต่�องอาศั�ยคนมู�คว่ามูร� �ในการ admin เล)กน�อย และส'ที่ธิ์'-การ modify VPD policy จะต่�องเป็�น system เที่�าน�!น

Oracle Audit ใช้�ต่รว่จสอบการเข�าถ้1ง database , session , network , data หร$อแมู�แต่�ต่รว่จการใช้�งาน sql

statement ได� เช้�น ต่รว่จสอบที่%กคนที่� เข�าไป็ select ข�อมู�ลใน table salary , หร$อต่รว่จสอบคนที่� login / logout ด�ว่ย user manager ที่%กคร�!ง เป็�นต่�น

ผู้ลที่� ได�ก)จะเก)บไว่�ใน table ที่� ช้$ อ dba_audit_session , dba_audit_statement , dba_audit_xxx

ต่�ว่อย�างค�าส� ง audit เช้�น audit session by manager;  ค$อจะต่รว่จสอบการ login / logout

ของ user manager ที่%กคร�!ง ผู้ลที่� ได�ค$อเว่ลาที่� มู�คน login user manager จะมู�การเก)บ log ไว่�ในฐานข�อมู�ล (ร�ป็ด�ใน slide เอา)

audit ค$อการต่รว่จสอบ และรายงานผู้ลของการใช้�ข�อมู�ลต่�างๆ ใน database .. ไมู�ใช้�การื่ป้�องก�นการเข�าถ้1งข�อมู�ล

ข�อด� ค$อถ้�าเก'ดมู�ใครเข�ามูาถ้1งฐานข�อมู�ลได�แล�ว่ การ audit ก)ช้�ว่ยต่รว่จสอบการเข�าถ้1งข�อมู�ลได�อ�กที่าง ข�อเส�ย ถ้�าเป็7ด audit มูากเก'นไป็จะที่�าให�ระบบช้�าลง ใช้�เน$!อที่� ในการเก)บ log ของการ audit เยอะ

Syntax : AUDIT audit_option [ON schema.object_name] 

Page 2: สรุป Oracle Feature 12 Features

   [BY username]     [BY { SESSION | ACCESS }]    [WHENEVER { SUCCESSFUL|NOT SUCCESSFUL }]

Example : AUDIT session BY scott, james, retail;

กลุ่��ม 2 เรื่อง

Table space

Oracle จะที่�าการจ�ดเก)บข�อมู�ลแบบ Logical Structure และ Physical Structure

โดย Logical Structure จะเร�ยกว่�า Tablespace ส�ว่น Physical Structure จะเร�ยกว่�า Data file

Data file จะถ้�กจ�ดเก)บไว่�ใน OS โดยมู�นามูสก%ลเป็�น .dbf

ใน 1 Database มู�ได�หลาย Tablespace, 1 Tablespace สามูารถ้มู�ได�หลาย Data File แต่� 1 Data

File สามูารถ้อย��ได�ใน Tablespace เด�ยว่เที่�าน�!น

ป้รื่ะเภทของ Tablespace ม�ดั�งน�� SYSTEM เป็�น Tablespace ที่� เก)บ oracle data dictionary และ object ที่�!งหมูดของ schema

SYS สามูารถ้ access ได�เฉพาะ user SYS และ คนที่� ได�ร�บการ grant role DBA ที่%ก database ของ oracle ต่�องมู� SYSTEM tablespace

SYSAUX เร' มูมู�ใน Oracle 10g ใช้�เก)บข�อมู�ลที่� จ�าเป็�นต่�อการที่�างานในส�ว่นที่� ต่'ดต่�!งเพ' มู และ component

ต่�างๆ  เช้�น Oracle Enterprise Manager และ Automatic Workload Repository เป็�นต่�น โดยเมู$ อก�อนข�อมู�ลเหล�าน�!จะเก)บไว่�ที่� SYSTEM Tablespace และแยกออกมูาใน Version 10g ที่%กฐานข�อมู�ล ที่� เป็�น Oracle Database 10g ข1!นไป็ ต่�องมู� SYSAUX tablespace

TEMP เป็�น Tablespace ที่� ใช้�ช้� ว่คราว่ส�าหร�บการที่�างานของแต่�ละ Session ที่� เข�ามูาที่�างาน เช้�น การ Process SQL statement, ข�อมู�ลที่� เก)บเป็�น global temporary table , การเร�ยงล�าด�บของข�อมู�ล ใน Oracle 10g Table space น�!ถ้�กก�าหนดให�เป็�น Default Temporary Tablespace ถ้�าไมู�ได�สร�าง temporary tablespace เอาไว่� ข�อมู�ลที่� ไมู�อย��ถ้าว่รเหล�าน�! จะถ้�กเข�ยนใน SYSTEM tablespace แที่น ซึ่1 งเป็�นเร$ องที่� แย�มูาก ที่�าให� performance

Page 3: สรุป Oracle Feature 12 Features

UNDO เป็�น Tablespace ที่� ใช้�เก)บ Undo Segment ที่� ใช้�ในการที่�างานของแต่�ละ Transaction เช้�น Add, Update, Delete ถ้�าย�งไมู�มู�การ Commit เราสามูารถ้ใช้�ค�าส� ง Rollback เร�ยกข�อมู�ลเก�ากล�บมูาได� undo tablespace ต่�องมู�อย��ในที่%กฐานข�อมู�ลของ Oracle

USERS เมู$ อมู�การสร�าง User ข1!นมูา แล�ว่ไมู�ก�าหนด Tablespace ให�ก�บ User คนน�!นใช้�งาน การเก)บข�อมู�ลและ Object ที่� สร�างข1!น จะถ้�กจ�ดเก)บไว่�ใน USERS Tablespace น�!

EXAMPLE จะป็ระกอบไป็ด�ว่ย sample schema ที่� ให�ที่ดลองใช้�งาน

การื่จั�ดัการื่พื้�นท�ว่�างใน Tablespace แบ่�งเป้�น 2 ว่ ธี� คือ ** การจ�ดแบ�งพ$!นที่� ภายใน Tablespace เร�ยกว่�า extents **

1. Locally managed tablespace ข�อมู�ลพ$!นที่� ว่�างจะถ้�กจ�ดเก)บในร�ป็แบบของ Bit-Map เก)บไว่�ใน header File ของ Tablespace โดยเลข 1

หมูายถ้1งข�อมู�ล block ที่� ว่�างและเลข 0 หมูายถ้1ง Block ข�อมู�ลที่� ถ้�กใช้�งานไป็แล�ว่ ข�อด�ค$อเมู$ อต่�องการหาที่� ว่�างภายใน Tablespace จะที่�าได�รว่ดเร)ว่ และเมู$ อพ$!นที่� ภายใน Tablespace มู�การเป็ล� ยนแป็ลง จะเป็ล� ยนค�าจาก 1 เป็�น 0 ที่�นที่�

2. Dictionary-managed tablespace ข�อมู�ลที่� เป็�นพ$!นที่� ว่�างจะถ้�กจ�ดเก)บในร�ป็แบบของ Dictionary เมู$ อพ$!นที่� ใน Tablespace มู�การเป็ล� ยนแป็ลง ก)จะที่�าการเป็ล� ยนแป็ลงข�อมู�ลใน Data Dict ด�ว่ยเช้�นก�น ซึ่1 งจะที่�างานช้�ากว่�า แบบ Locally

การื่ขยาย Size Tablespace ม� 3 ว่ ธี�

1. add a datafile to a tablespace2. add a new tablespace3. increase the size of a datafile

RmanRecovery Manager (RMAN) เป็�นเคร$ องมู$อ(Utility) ที่� ถ้�กต่'ดต่�!งมูาพร�อมูก�บ Oracle Database มู�ไว่�เพ$ อที่�าหน�าที่� จ�ดการ backup restore and recovery

- สามูารถ้ใช้�ได�ก�บฐานข�อมู�ลที่� ที่�างานแบบ Archive Mode  และ No Archive Mode ได�- สามูารถ้ส� งงานผู้�าน Command Dos

Archive Mode

- เมู$ อ Restore จากไฟล:ที่� Backup ไว่� ค�าข�อมู�ลที่� ได�จะเป็�นค�าข�อมู�ลถ้1งช้�ว่งเว่ลาที่� เก'ดข�อผู้'ดพลาด (แบบน�!ไมู�ป็ระหย�ดพ$!นที่� แต่�ด�ส�าหร�บ restroe recovery จะได�ข�อมู�ล ณ ป็<จจ%บ�น)

No Archive Mode

- เมู$ อ Restore จากไฟล:ที่� Backup ไว่� ค�าข�อมู�ลที่� ได�จะเป็�นค�าข�อมู�ล ณ เว่ลาที่� ที่�าการ Backup เที่�าน�!น ไมู�สามูารถ้น�าข�อมู�ล ณ ช้�ว่งเว่ลาก�อนที่� จะเก'ดข�อผู้'ดพลาดกล�บมูาได� เน$ องจากไมู�มู�ข�อมู�ลจาก Redo Log File (แบบน�!จะป็ระหย�ดพ$!นที่� แต่� restore recovery จะมู�ข�อมู�ลบางส�ว่นขาดหายไป็ หล�งจากการ Backup)

ข$อดั�ของ Rman เมอเท�ยบ่ก�บ่ การื่ Back up แบ่บ่ป้รื่กติ

- Rman มู�การบ�บอ�ดข�อมู�ล ที่�าให�ป็ระหย�ดพ$!นที่� (ก�าหนดใน configution ให� บ�บอ�ด หร$อไมู�บ�บอ�ดก)ได�)

Page 4: สรุป Oracle Feature 12 Features

- Back up แบบป็รกต่' ไมู�มู�สามูารถ้บ�บอ�ดข�อมู�ลได�

- Rman เป็�น Incremental backup ค$อ ไฟล: backup เฉพาะส�ว่นที่� มู�การเป็ล� ยนแป็ลง (update insert

delete ) โดยจะต่�องมู�การที่�า full backup (Level 0 ) ในคร�!งแรกก�อนเสมูอ และหล�งจากน�!นในการ backup คร�!งต่�อไป็ Rman จะเป็ร�ยบเที่�ยบว่�า ส' งที่� เป็ล� ยนแป็ลงไป็ ค$อไฟล:ไหนบ�าง ก)จะที่�าการ backup เฉพาะส�ว่นที่� เป็ล� ยนแป็ลง แต่�แบบน�!จะมู�ข�อเส�ยค$อ เมู$ อต่�องการ Restroe recovery จะต่�องน�าไป็มูาต่�อเน$ องก�นไป็เร$ อย ๆ

- Back up แบบป็รกต่'จะเป็�น แบบ full backup ค$อ backup ที่�!งหมูด ที่�าให�ส'!นเป็ล$องเน$!อที่� แต่�จะมู�ข�อด�ค$อ เมู$ อข�อมู�ลเก'ดคว่ามูเส�ยหายก)น�า full backup เพ�ยงแคไฟล:เด�ยว่มูาที่�าการ Restroe recovery ได�เลย

Backup ม� 2 แบ่บ่ติามน��

1.Full Backup

ค$อการ backup ข�อมู�ลที่�!งหมูดไมู�ว่�าว่�นก�อนๆจะมู�การ Backup อะไรไป็บ�างแล�ว่ก)ต่ามู ต่ามูร�ป็ข�างล�าง

2.Incremental Backup

** Incremental Backup แบ�งย�อยได� ออกเป็�น Cumulative incremental backup ก�บ Differential incremental backup

increment = เพ' มูข1!น .. การที่�า incremental backup ก)ค$อ การ backup เอาเฉพาะเน$!อ data ส�ว่นที่� เพ' มูข1!นมูา น� นเอง ซึ่1 งการ backup คร�!งแรก เราต่�อง backup เป็�น level 0 (ซึ่1 งค$อ full backup) ก�อน เพ$ อน�ามูาเป็�นฐาน (based backup) แล�ว่จ1งที่�าการ backup level 1 ซึ่1 งเป็�นการเอาเฉพาะส�ว่นที่� เพ' มูเต่'มูจาก level 0 มูาเก)บ

ย�งแบ�งย�อย ลงได�อ�ก 2 แบบ ค$อ

Cumultaive incremental backup Differential incremental backup

2.1Cumultaive incremental backup

การที่�า cumulative backup จัะท&าการื่ backup ส่�ว่นท�เพื้ มติ�อ/เป้ลุ่�ยนแป้ลุ่ง หลุ่�งท&า incremental

backup ลุ่�าส่�ดั ท� level ติ&ากว่�าม�น

Page 5: สรุป Oracle Feature 12 Features

2.2Differential incremental backup

การที่�า differential backup จัะท&าการื่ backup ส่�ว่นท�เพื้ มติ�อ/เป้ลุ่�ยนแป้ลุ่ง หลุ่�งท&า incremental

backup ลุ่�าส่�ดั ท� level เท�าก�บ่ หรื่อ ติ&ากว่�าม�น (ในที่� น�!ค$อ ต่�อจาก level 0 และ level 1 ของว่�นก�อนหน�า ) สมูมูต่'ว่�า เรามู�การใส�ข�อมู�ลลงใน Block เพ' มูข1!น ว่�นละ 1 block เมู$ อส'!นว่�น มู�การที่�า differential backup

ในการใช้� RMAN ถ้�าเราบอกว่�าให�แบ)คอ�พแบบ incremental backup โดยไมู�ระบ%ว่�าเป็�น differential หร$อ cumulative มู�นจะเป็�น differential โดย default

กลุ่��ม 3 เรื่อง

Oracle Scheduler

ว่'ธิ์�สร�าง Job Scheduler ด�ว่ย dbms_scheduler

เมู$ อเราเข�ยนโป็รแกรมู(ในที่� น�!ใช้� PL/SQL)เสร�จแล�ว่ และต่�องการคว่บค%มูการที่�างานด�ว่ย Job บน server เราสามูารถ้ที่�าได�ต่ามูน�!คร�บ1. สร�างโป็รแกรมูให� Database ร� �จ�ก2. สร�าง Job ให�โป็รแกรมู โดย job จะที่�าหน�าที่� ก�าหนดเว่ลาที่�างานให�โป็รแกรมู และคว่ามูถ้� ที่� โป็รแกรมูจะที่�างาน

ส่รื่$างโป้รื่แกรื่ม

execute DBMS_SCHEDULER.create_program (

program_name => 'FILL_KEY_NO_PROGRAM',

program_type => 'PLSQL_BLOCK',

Page 6: สรุป Oracle Feature 12 Features

program_action => 'BEGIN PKG_SERVICES.FILL_KEY_NO_JOB(2); END;',

enabled => TRUE,

comments => 'Program to fill key no.');

เร' มูต่�นด�ว่ยการสร�าง program โดยที่�าการก�าหนดช้$ อโป็รแกรมู และค�าส� งที่�างานของโป็รแกรมูprogram_name = ก�าหนดช้$ อให� program

program_type = ช้น'ดของ program

program_action = ค�าส� งให�โป็รแกรมูที่�างานenabled = ก�าหนดสถ้านะให�โป็รแกรมู ที่�างานที่�นที่� เหรอ disable ไว่�ก�อน

ส่รื่$าง Job

execute DBMS_SCHEDULER.create_job (

job_name => 'FILL_KEY_NO_JOB',

program_name => 'FILL_KEY_NO_PROGRAM',

start_date => SYSTIMESTAMP,

repeat_interval => 'sysdate+30/(24*60*60)',

end_date => NULL,

enabled => TRUE,

comments => 'Job fill key no.');

ส�ว่นสร�าง job จะก�าหนดเว่ลา และคว่ามูถ้� ที่� job จะที่�างาน

ในต่�ว่อย�างน�!จะให� job ที่�างาน ที่%กๆ 30 ว่'นาที่� โดยให�เร' มูที่�างานที่�นที่�ที่� run command น�! (ค�า SYSTIMESTAMP

จะค$นค�า ว่�นที่� และเว่ลาป็<จจ%บ�น )

ถ้�าต่�องการให� job run ที่%กๆ แป็ดโมูงเช้�า ก)เป็ล� ยนพารามู'เต่อร: repeat_interval เป็�น repeat_interval =>

'TRUNC(SYSDATE+1)+8/24'

คื&าส่�งเพื้ มเติ ม

//enable job ให�ที่�างาน

dbms_scheduler.enable('RESET_PAGE_JOB');

//disable job ไมู�ให�ที่�างาน

dbms_scheduler.disable('RPT1001_PROGRAM', TRUE);

//ด�ข�อมู�ล program ที่� มู�ใน database

SELECT owner, program_name, enabled FROM dba_scheduler_programs;

//ด�ข�อมู�ล schedule ที่� มู�ใน database

SELECT owner, schedule_name FROM dba_scheduler_schedules;

//ด�ข�อมู�ล job ที่� มู�ใน database

SELECT owner, job_name, enabled FROM dba_scheduler_jobs;

Page 7: สรุป Oracle Feature 12 Features

//drop program ที่'!ง

DBMS_SCHEDULER.drop_program (program_name => 'program_name');

//drop job ที่'!ง

DBMS_SCHEDULER.drop_job (job_name => 'program_name');

Materialize views

materialize view เป็�นการช้�ว่ยเพ' มู performance ในการ query ป็กต่'แล�ว่ ในการที่�างาน query หน�ก ๆ อย�างงาน data warehousing น�!น table จะต่�องถ้�ก join และ aggregate อย��เสมูอ เพ$ อส�งผู้ลล�พธิ์:ให�ผู้��ใช้�ที่� เร�ยกด�รายงาน ด�ว่ยเหต่%น�!จ1งมู�กมู�การสร�างส' งที่� เร�ยกก�นว่�า summary table ข1!นมูาค$อ ยอมูเส�ยเน$!อที่� บนด'สก:เพ$ อเก)บข�อมู�ลที่� summary แล�ว่โดยว่'เคราะห:จากการใช้�งานของผู้��ใช้�งานว่�ามู�กจะที่�าการ query ข�อมู�ลแบบไหนที่� summary

level ใด และที่� key ใดบ�าง แต่�ป็<ญหาค$อ

1. summary table น�!นไมู� link ก�บ base table ที่� ถ้�กสร�างข1!นมูา ด�งน�!นผู้��ใช้�งานจ1งต่�องร� �เองว่�ามู� summary

table อย�� แล�ว่ใช้� SELECT statement มูาย�ง summary table น�!แที่น 2. summary table ต่�องถ้�ก refresh อย��เสมูอเพ$ อให�ได�ข�อมู�ลที่� update ในระด�บที่� น�าพอใจ จ1งเป็�นการเพ' มูงานของ dba หร$อผู้��ด�แลข�อมู�ล เพราะงาน data warehouse น�!นไมู�ได�มู� summary table เพ�ยงต่�ว่เด�ยว่

Oracle จ1งแก�ป็<ญหาน�!โดยมู� materialize view ข1!นมูา โดย materialize view น�!นก)เป็�นเสมู$อน view ที่� ย�ง link definition อย��ก�บ base table แต่�เป็�นเหมู$อนก�บ table ต่รงที่� มู�นเก)บข�อมู�ลไว่�ในต่�ว่มู�นเองเลย...

ที่�น�!...ก)สบาย dba แค�ก�าหนดว่�าจะต่�องให� mview ต่�ว่น�! refresh บ�อยแค�ไหน มู�นก)จะที่�าเองโดยอ�ต่โนมู�ต่'...

ที่� สะดว่กมูาก ๆ อ�กอย�างหน1 งก)ค$อ ผู้��ใช้�งานไมู�จ�าเป็�นต่�องร�บร� �ว่�ามู� mview เพ�ยงแค�เร�ยก SELECT statement มูาที่� base table เหมู$อนเด'มู...ต่�ว่ optimizer จะที่�าการเป็ล� ยน query ให�เองโดยอ�ต่โนมู�ต่'มูาที่� mview ถ้�ามู�น analyze แล�ว่ว่�าสามูารถ้เร�ยกใช้� mview ได� แมู�ว่�า query น�!นจะไมู� match 100% ก�บ field ใน mview.

ซึ่1 งการใช้� mview ต่�องมู�การ set parameter ของ database ใน init.ora ไว่�อย�างเช้�น query_rewrite_enabled และอ$ น ๆ

Scheduler & Material View (ส�ว่นที่� เจ�าของกล%�มูเค�าส�งเข�า mail ไว่�ให�)

Scheduler มู�นถ้�กพ�ฒนามูาจาก Job ใน Oracle version เก�า ๆ ซึ่1 งเขาได�เพ' มูคว่ามูสามูารถ้ในการที่�างานให�มูากข1!นห�ว่ใจส�าค�ญของ Scheculer ค$อ1. Program -> ค$อบอกว่�าจะให� Job น�!นที่�าอะไร ซึ่1 งในการส� งให�ที่�างานน�!จะเป็�นได�ที่�!ง PL/SQL Block, Store

Procedure, Executeable file และ shell script.

2. schedule -> บอกว่�าจะให� Job ที่�างานเมู$ อไร ซึ่1 งโดยป็กต่'ก)จะมู�การ set เป็�นแบบ recurrence เช้�น ที่�าที่%ก ๆ ส'!นเด$อน, ที่%กว่�นจ�นที่ร: เป็�นต่�น ซึ่1 งในการก�าหนดเว่ลาในการที่�างาน สามูารถ้ก�าหนดให�เป็�นเว่ลาใด ๆ ก)ได�ในอนาคต่

ในการสร�าง Job เราจะให� Package : DBMS_SCHEDULER

โดยในการสร�างจะสร�าง 4 แบบ1. Inline ค$อระบ%ไป็เลยว่�าจะให�ที่�าอะไรเมู$ อไร2. สร�าง Program ข1!นมูาก�อน แล�ว่ก)สร�างเหมู$อน Inline แต่�ส�ว่นที่� บอกว่�าจะให�ที่�าอะไรก)ให� refer มูาที่� Program

แที่น

Page 8: สรุป Oracle Feature 12 Features

3. สร�าง schedule ไว่�ก�อนแล�ว่ ที่�าเหมู$อน Inline แต่�ในส�ว่นที่� บอกว่�าจะที่�าเมู$ อไรก)ให� refer มูาที่� schedule แที่น4. สร�างแบบ Refer ที่�!ง Program และ Schedule

Materialized Viewมู�นมู�ข1!นมูาเพ$ อก�าจ�ดป็<ญหาของ View ป็กต่'เพราะในการใช้�งาน view ป็กต่'ที่%ก ๆ คร�!งในการเร�ยกใช้�งานมู�นจะต่�องไป็ด1ง data มูาจาก table ที่� เก)บ data น�!นจร'ง ๆ และโดยป็กต่'ในการสร�าง view เราสร�างมูาเพ$ อย�าย query ที่� ซึ่�บซึ่�อนและการที่�า Summary data ไป็ไว่�ในน�!น ด�งน�!นจากเง$ อนไขน�!จ1งที่�าให� view จะที่�างานช้�า

เขาจ1งสร�าง concept ใหมู�ข1!นมูาเพ$ อเพ' มูข�อด�ให� view ค$อ Materialized View มู�นจะที่�าการเก)บ Data ที่� เป็�น output ของมู�นมูาไว่�ที่� ต่�ว่เองเลย ไมู�ต่�องไป็ด1งใหมู� จ1งที่�าให�มู�นไว่ข1!น เพราะมู�นจะเส�ย cost ในการที่�าต่อนแรก และต่อน refresh data เที่�าน�!น และด�ว่ย concept ที่� มู�นสามูารถ้ refresh data ของต่�ว่มู�นเองได� มู�นจ1งถ้�กน�ามูาใช้�แที่นการสร�าง permanent table ส�าหร�บการเก)บ Summary Data ด�ว่ย (ไอ�น� ต่�อง Manual Refresh)

นอกจากมู�นจะที่�าหน�าที่� เมู$อน view ป็กต่'แล�ว่ มู�นย�งมู� Feature QUERY REWRITE ด�ว่ยซึ่1 ง feature น�!มู�ป็ระโยช้น:มูากส�าหร�บการที่� ต่�อง issue Query เด'มูบ�อย ๆ ต่�ว่ feature น�!มู�นจะมู� Query

Rewrite Engine ในการต่รว่จด�ว่�ามู� Query Text ที่� issued มูาเหมู$อนก�บ query ที่� ที่�า Materialized View

ไหมู ถ้�าเหมู$อนมู�นจะย�ายไป็ด1ง data จาก Materialized view แที่นอ�ต่โนมู�ต่' โดยที่� เราไมู�ต่�องแก� Qeury ที่� issue

ไป็แต่�อย�างใด

ในการ Refresh Data มู�นก)สามูารถ้ต่�องเป็�นช้�ว่งเว่ลา , Manual หร$อบอกว่�าให� refresh ที่%ก คร�!งมู�การ commit

transaction ก)ได�

กลุ่��ม 4

ASM - Automatic Storage Management ค'ดง�ายก)เป็�นการจ�ดการ HDD ในการเก)บข�อมู�ลฐานข�อมู�ล ค'ดว่�ามู�นเป็�นการ Implement การที่�างานแบบ RAID

ด�ว่ย Tool ของ Oracle เอง แที่บจะเร�ยกได�ว่�ามู�นเป็�น RAID เลยแหล�ะ ข$อดั�- ไมู�ต่�องใช้� Tool จาก 3rd Party เพราะว่�า Oracle เองรว่มูมูาให�แล�ว่- ที่�าการ Load Balance ระหว่�างข�อมู�ลในแต่�ละ HDD ที่�าให� HDD ไมู�ที่�างานหน�ก- เร)ว่ เพราะว่�า ข�อมู�ลถ้�กจ�ดเก)บในแต่�ละ Disk ที่�าให�เว่ลาด1งข�อมู�ลก)ด1งออกมูาจาก HDD หลายๆ ต่�ว่พร�อมูก�น แล�ว่เอามูาป็ระกอบก�นเป็�นข�อมู�ลช้%ดน1ง น�าไป็ป็ระมูว่ลผู้ลต่�อไป็    เช้�น สมูมูต่'นะ ถ้�าเรามู� HDD ที่�า ASM ก�น 5 ล�ก แต่�ละล�กอ�านข�อมู�ลได� 10 mb/s เว่ลาอ�านข�อมู�ลก)อ�านมูาด�ว่ยคว่ามูเร)ว่เที่�ยบเที่�า 5 x 10 mb/s = 50 mb/s (แต่�จร'งๆ แล�ว่ไมู�ถ้1ง แต่�ก)ใกล�เค�ยงละ) การื่ท&างาน (ดั*รื่*ป้จัากใน Slide แลุ่$ว่จัะเข$าใจัง�ายข+�นนะ)1. ที่�า Pool ของ Storage ไว่�2. แบ�งส�ว่นของ Disk ออกเป็�นส�ว่นๆ3. แบ�งส�ว่นของข�อมู�ลไป็จ�ดเก)บไว่�ในแต่�ละ Disk แล�ว่ที่�าการสร�าง Index ในการเร�ยกไฟล:ด�ว่ยว่'ธิ์� Database Oriented Indexing4. Indexing แบบน�!จะอน%ญาต่'ให�ที่�า rebalance โดยอ�ต่โนมู�ต่' โดยเว่ลาที่� การเพ' มูหร$อย�าย Disk ออกไป็ เช้�น Disk1 เก)บ 3 ส�ว่น, Disk 2 เก)บ 3 ส�ว่น ถ้�าเราเพ' มู Disk3 เข�าไป็ ก)จะแบ�งส�ว่นไป็ให� Disk 3 จ�านว่น 2 ส�ว่น กลายเป็�น Disk1-3 เก)บต่�ว่ละ 2 ส�ว่น แบบน�!เป็�นต่�น SQL*PLUS.... 

Page 9: สรุป Oracle Feature 12 Features

ไมู�ร� �จะเข�ยนอะไร ไป็ด� Slide เอาเองละก�น มู�แต่�ค�าส� งพว่ก SQLPlus SQL*PLUS (command line) - 2 Tiers -> Database (Oracle) + Client(Command line)iSQL*PLUS (GUI) - 3 Tiers --> Database (Oracle) + Application server + Client (Web browser) พ$!นฐานแล�ว่ Tools ต่�ว่น�! รองร�บ 1. SQL Command 2. PL/SQL Block3. SQL*PLUS การที่�างาน ค$อ iSQL*PLUS ย'ง Command ไป็เร�ยก SQL*PLUS อ�กที่�น1ง แล�ว่น�าผู้ลล�พธิ์:มูาแสดงบนหน�าจอ

กลุ่��ม 5 เรื่องของ

DATA PUMP

DATA PUMP ถ้�กออกแบบมูาเพ$ อใช้�ในการ Copy ข�อมู�ลของ อราเค'ลจาก ฐานข�อมู�ลหน1 งไป็อ�กฐานข�อมู�ลหน1 ง ไมู�ใช้�การแบ>คอ�พข�อมู�ลโดยต่รง แต่�ก)สามูารถ้น�าไป็ป็ระย%กต่:ใช้�ได�ในการ Backup Data โดยมู�ค�าส� งน�! ต่� !งแต่�เว่อร:ช้� น 10g

เป็�นต่�นมูา แต่�เว่อร:ช้� นก�อนหน�าน�!ก)จะมู�ค�าส� งส�าหร�บน�าข�อมู�ล เข�า- ออก จากฐานข�อมู�ลอราเค'ล ไฟล:ที่� ได� จะเป็�นไฟล: นามูสก%ล *.dmp แต่�มู�นจะใช้�ไฟล:นามูสก%ลเหมู$อนก�บค�าส� ง exp แต่�ไมู�สามูารถ้ใช้�ค�าส� ง Import ของ ดาต่�า Pump ได�

ค�าส� งน�าข�อมู�ลออก Export Data Pump : ค�าส� ง expdp

 >expdp user/password @instand  dumpfile.dmp [Option]

 

ค�าส� ง Import Data Pump ค�าส� ง impdp

สามูารถ้ใช้�ค�าส� งน�! ได�ที่� !งแบบ คอมูมูานไลน: หร$อ ที่�างานผู้�าน Enterprise Manager ได� (ถ้�าสามูาถ้ต่'ดต่�อ Host ได�)

ที่� ส�าค�ญ user ที่� เป็�น SYSDBA ไมู�สามูารถ้ที่�าค�าส� ง น�! ได�ใน EM และในค��มู$อบอกว่�าไมู�คว่รใช้� User ที่� เป็�น Sysdba

คว่รใช้� User ที่� มู�ส'ที่ธิ์'- ที่�าการ Export Import เที่�าน�!น

การที่�า Data Pump มู�ป็ระโยช้น:ค$อ ใช้�ในการย�ายข�อมู�ลที่�!งระด�บ Database, Schema, Table และใช้�ได�ก�บออราเค'ลเที่�าน�!น  

Enterprise Manager

เป็�นแอป็พล'เคช้�นที่� ที่�างานผู้�านเบราเซึ่อร:

เป็�นเคร$ องมู$อที่� ให�ผู้��ด�แลระบบจ�ดการบร'หารฐานข�อมู�ลสะดว่กรว่ดเร)ว่ข1!นซึ่1 งจะช้�ว่ยบร'หารจ�ดการการที่�างานเก� ยว่ก�บฐานข�อมู�ลเก$อบที่�!งหมูดเลย

Page 10: สรุป Oracle Feature 12 Features

เคร$ องที่� จะสามูารถ้ใช้�งานเคร$ องมู$อช้%ดน�!ได�ค$อเคร$ องที่� ต่'ดต่�!ง Oracle Database Server หร$อเคร$ องที่� ต่'ดต่�!ง Oracle Database Client ในแบบ Administrator

ถ้�าเที่�ยบต่�ว่ enterprise manager ของ Microsoft ก,คือติ�ว่ Server management studio

จะสามูารถ้ที่�างานได�ต่�อง start service อย�างน�อย 3 ต่�ว่น�!

Oracle Service

Oracle Listener

Oracle console

ป็ระกอบไป็ด�ว่ย 4 หน�าหล�กๆ  ค$อ

Home database console

Performance จะบอกในล�กษณะของ graph ว่�าต่อนน�! performance ของเคร$ องถ้�กใช้�งานไป็เที่�าไรแล�ว่บ�าง

Administrator จะแสดง link ในการเข�าไป็ก�าหนด database object และการ initiate database

operations ของ oracle database inside เช้�นเอาไว่� giant ส'ที่ธิ์:ให� user หร$อสร�าง user admin ใมู�ข1!นมูาเป็�นต่�น  

Maintenance เป็�นหน�าจอที่� เต่ร�ยมู function ให� admin เข�าไป็ คว่บค%มูระหว่�าง flow data หร$อ  outside Oracle databases

กล%�มู 6

FlashBack Table & Flashback Version Query

Flashback เข�าใจง�ายๆ ก)ค'อการย�อนเว่ลา ข�อมู�ลของเราโดยที่�  FlashBack Table เป็�นการย�อนเว่ลาเฉพาะ Table ที่� เราก�าหนดไว่� โดยเป็�นการย�อนเว่ลาของข�อมู�ลในต่ารางน�!นให�กล�บๆไป็ย�งช้�ว่งเว่ลาที่� ต่�องการในอด�ต่ เราสามูารถ้จะก�าหนดเป็�นช้�ว่งเว่ลาหร$อหมูายเลข SCN (System

Change Number) ก)ได� โดย SCN ค$อ ค�าที่� จะบอกว่�า ณ ต่อนน�!ข�อมู�ลมู�การเป็ล� ยนแป็ลงไป็คร�!งที่� เที่�าไหร�แล�ว่ SCN

จะเก'ดข1!นที่%กคร�!งที่� มู�การ Commit Database จะมู�การสร�างเลข SCN ข1!นมูา 1 ต่�ว่และบว่กเพ' มูข1!นไป็เร$ อยๆ แล�ว่เก)บลงใน Data File, Control File, Redo Log Group(ง�ายๆก)เป็�นการย�อนเว่ลา Table น�!นกล�บไป็เมู$ อเว่ลาที่� เราต่�องการ)

** การที่�า FlashBack Table ไมู�สามูารถ้ที่�าได�ก�บ Partitioned Table หร$อ Materialized View ได�และในช้�ว่งเว่ลาที่� ต่�องการย�อนน�!น โครงสร�างของต่ารางจะต่�องไมู�เป็ล� ยนแป็ลงจ1งจะสามูารถ้ที่�า Flashback Table ได�

ข�อด�

- ช้�ว่ยแก�ไขข�อผู้'ดพลาดในฐานข�อมู�ลที่� ที่�าได�ง�ายข1!นโดยใช้�เพ�ยงค�าส� ง SQL

Page 11: สรุป Oracle Feature 12 Features

- ช้�ว่ยย�นระยะเว่ลาในการแก�ไขข�อผู้'ดพลาดให�เร)ว่ข1!น

Example :

ก�อนที่�า Flashback Table เราต่�องที่�าการ Enable การแก�ไข ROWID ก�อน เพราะการที่�า Flashback Table จะมู�ผู้ลกระที่บต่�อค�าของ RowID

ALTER TABLE EMPLOYEES ENABLE ROW MOVEMENT;

แบบที่� 1 : FLASHBACK TABLE orders, order_items TO TIMESTAMP (JUL-07-2003, 02:33:00);

ลองที่�า Flashback Table แบบย�อนเว่ลาไป็เมู$ อ 1 นาที่�ที่� แล�ว่ด'@ เมู$ อก�!เราที่�าอะไรไป็)

FLASHBACK TABLE EMPLOYEES TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' MINUTE);

 Flashback Version Query

ก)เป็�นการ Query ข�อมู�ลเมู$ อในเว่ลาในอด�ต่ แต่�ย�งไมู�ได�เป็�นการส� งย�อนข�อมู�ลกล�บไป็เมู$ อเว่ลาน�!นๆนะ แค� Query ข1!นมูาด�ว่�าที่�าอะไรไป็ก�บข�อมู�ลบ�าง

Pseudocolumn ในการแสดงข�อมู�ล เก� ยว่ก�บ Version เป็�น column ที่� oracle provide ไว่�ให�

• VERSIONS_XID บอก ID ของเว่อร:ช้� น

• VERSIONS_STARTSCN บอก start time แบบหมูายเลข SCN

• VERSIONS_STARTTIME บอก start time แบบ timestamp

• VERSIONS_ENDSCN บอก end time แบบหมูายเลข SCN

• VERSIONS_ENDTIME บอก end time แบบหมูายเลข timestamp

• VERSIONS_OPERATION บอก type การที่�างานว่�า Insert, Update, Delete

 ** หมูายเลข SCN ก)เป็�นหมูายเลขที่� Oracle สร�างข1!นมูาให�เมู$ อมู�การที่�างานก�บข�อมู�ลแต่�ละคร�!ง เป็�นหมูายเลขที่� เอาไว่�อ�างอ'งถ้1งช้�ว่งเว่ลาการที่�างานน�!นๆ แต่�ป็กต่'เราก)ใช้�เลข timestamp เน� ยแหละ

ค�าส� ง ที่�าการ Flashback Version Query ด�ว่�าเก'ดการที่�างานอะไรก�บข�อมู�ลบ�าง อ�นน�!มู� Table ที่� ช้$ อ EMPLOYEES ไว่�อย��แล�ว่

SELECT VERSIONS_STARTTIME, VERSIONS_ENDTIME,VERSIONS_OPERATION,EMP_NO, EMP_NAME

FROM EMPLOYEES VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE

Page 12: สรุป Oracle Feature 12 Features

ORDER BY VERSIONS_ENDTIME DESC;