Upload
tanin
View
3.232
Download
14
Embed Size (px)
Citation preview
กลุ่��ม 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]
[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
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 ให� บ�บอ�ด หร$อไมู�บ�บอ�ดก)ได�)
- 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 ติ&ากว่�าม�น
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',
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;
//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
แที่น
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....
ไมู�ร� �จะเข�ยนอะไร ไป็ด� 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 งจะช้�ว่ยบร'หารจ�ดการการที่�างานเก� ยว่ก�บฐานข�อมู�ลเก$อบที่�!งหมูดเลย
เคร$ องที่� จะสามูารถ้ใช้�งานเคร$ องมู$อช้%ดน�!ได�ค$อเคร$ องที่� ต่'ดต่�!ง 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
- ช้�ว่ยย�นระยะเว่ลาในการแก�ไขข�อผู้'ดพลาดให�เร)ว่ข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
ORDER BY VERSIONS_ENDTIME DESC;