Orcale Tutorial Content
Getting Started - البدء مع إدارة قواعد البيانات
Oracle Architectural Components - مكونات قاعدة البيانات أوركل
Installing Oracle Database - تثبيت الأوركل
Creating and Configuring Database - إنشاء قاعدة البيانات
Controlling The Database -التحكم في قاعدة البيانات
Administrating Users - إدارة المستخدمين
Database Security & Monitoring - تأمين ومراقبة قاعدة البيانات
Oracle Net Services & Database Link & Metrlized Viewِ
Undo Management & Flashback Technology
Managing Shared Servers
Using Globalization Support
Logical Backup & Recovery
Physical Backup & Recovery
Recovery Manager (RMAN)
Managing Resources
Automating Tasks with the Scheduler
Dealing with Locking
Diagnostic Sources
Dealing With Database Corruption
Managing & Monitoring Memory
Performance Tunning
Undo Management & Flashback Technology
UNDO MANAGEMENT
ﻫل ﻓﻜﺭﺕ ﻴﻭﻤﺎﹰ ﻓﻲ ﻋﻤﻠﻴﺔ ﺍلROLLBACK ؟ ﻭﻫل ﺴﺄﻟﺕ ﻨﻔﺴﻙ ﻜﻴﻑ ﻴﻤﻜﻨﻙ ﺍﻟﺘﺭﺍﺠﻊ ﻋﻥ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻌﺩﻴل ﺍﻟﺘﻲ ﺤﺩﺜﺕ ﻓﻲ ﺒﻌﺽ ﺍﻟﺤﻘﻭل؟ ﺭﻏﻡ ﺃﻨﻪ ﺘﻡ ﺘﻐﻴﻴﺭ ﺍﻟﻘﻴﻡ ﺍﻟﻘﺩﻴﻤﺔ ﺇﻟﻰ ﺍﻟﻘﻴﻡ ﺍﻟﺠﺩﻴﺩﺓ.
ﺍﻟﺴﻴﻨﺎﺭﻴﻭ ﺒﺎﺨﺘﺼﺎﺭ ﺃﻨﻪ ﻋﻨﺩ ﺇﺠﺭﺍﺀ ﺍﻟﺘﻌﺩﻴﻼﺕ ﻋﻠﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻲ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﺈﻥ ﺍلOracle تﻘﻭﻡ ﺒﺘﺨﺯﻴﻥ ﺍﻟﻘﻴﻡ ﺍﻟﻘﺩﻴﻤﺔ ﻓﻲ ﺍلUndo Tablespace ﻗﺒل ﺃﻥ ﻴﺘﻡ ﺘﻐﻴﻴﺭﻫﺎ ﺒﺎﻟﻘﻴﻡ ﺍﻟﺠﺩﻴﺩﺓ،
ﻫﺫﺍ ﺍﻟﺴﻴﻨﺎﺭﻴﻭ ﻴﺘﻴﺢ ﻟﻨﺎ ﻓﺭﺼﺔ ﺍﻟﺘﺭﺍﺠﻊ ﻋﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻤﺘﻰ ﺍﺤﺘﺠﻨﺎ ﺇﻟﻰ ﺫﻟﻙ ﺒﺸﺭﻁ ﺃﻥ ﺘﻜﻭﻥ ﺍﻟﻘﻴﻡ ﺍﻟﻘﺩﻴﻤﺔ ﻤﺎ ﺯﺍﻟﺕ ﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍلUndo Tablespace
ﺇﺫ ﻻ ﻴﺘﺼﻭﺭ ﺃﻥ ﺘﻅل ﻫﺫﻩ ﺍﻟﻘﻴﻡ ﻤﻭﺠﻭﺩﺓ ﺇﻟﻰ ﻤﺎﻻ ﻨﻬﺎﻴﺔ ﻓﻬﻭ ﻓﻲ ﺁﺨﺭ ﺍﻷﻤﺭ Tablespace ﻟﻪ ﺴﻌﺔ ﻤﺤﺩﻭﺩﺓ ﻭﻜﺫﻟﻙ ﻟﻪ ﻓﺘﺭﺓ ﺍﺤﺘﻔﺎﻅ ﺒﺎﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﺤﺩﻭﺩﺓ ﻴﻘﻭﻡ ﺒﺘﻬﻴﺌﺘﻬﺎ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ
ﺤﺴﺏ ﻤﺎ ﻴﺭﺍﻩ ﻤﻨﺎﺴﺒﺎﹰ، ﻨﺴﺘﻁﻴﻊ ﻜﺫﻟﻙ ﻤﻥ ﺨﻼل ﻫﺫﺍ ﺍﻟﺴﻴﻨﺎﺭﻴﻭ ﺃﻥ ﻨﻨﺠﺯ ﻋﻤﻠﻴﺔ ﺍلFlashback Queries ﺇﺫﺍ ﺘﻭﻓﺭﺕ ﺍﻟﻘﻴﻡ ﺍﻟﻘﺩﻴﻤﺔ، ﺴﻨﺘﺤﺩﺙ ﻋﻥ ﺍلFlashback Queries لاحقاً
ﻭﻟﻜﻥ ﻋﻤﻭﻤﹰﺎ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﺴﺘﻌﻼﻡ ﻋﻥ ﻗﻴﻡ ﻟﻜﻥ ﻓﻲ ﺍﻟﻤﺎﻀﻲ.
ﻓﺎلUndo Tablespace ﺘﺘﻡ ﺇﺩﺍﺭﺘﻪ ﻋﻥ ﻁﺭﻴﻕ Locally Managed Tablespace ﻭﺃﻴﻀﺎﹰ Automatic Extent allocation ، ﻓﻠﺤﻅﺔ ﺒﺩﺀ ﺍﻟﻌﻤﻠﻴﺔ ﻴﺘﻡ ﺘﺨﺼﻴﺹ ﻭﺇﻨﺸﺎﺀ Undo Segment ﺃﻟﻴﺎﹰ
ﻟﺘﺨﺯﻴﻥ ﺍﻟﻘﻴﻡ ﺍﻟﺘﻲ ﺘﺘﻐﻴﺭ ﻓﻲ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ، ﺒﺤﻴﺙ ﻴﺘﻡ ﺘﺨﺼﻴﺹ Undo Segment ﻭﺍﺤﺩﺓ ﻟﻜل ﻋﻤﻠﻴﺔ ﻭﻟﻜﻥ ﻴﻤﻜﻥ ﺃﻥ ﺘﺨﺩﻡ ﻫﺫﻩ ﺍلSegment ﻋﺩﺩ ﻤﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ،
ﻓﻌﻨﺩ ﺍﻤﺘﻼﺀ ﺍلExtent ﻴﺘﻡ ﺍﻟﺘﺤﻭل ﻟﻠﺘﻲ ﺒﻌﺩﻫﺎ ﻓﻲ ﻨﻔﺱ ﺍلSegment ﺒﺤﻴﺙ ﻴﻜﻭﻥ ﻋﻠﻰ ﺍﻷﻗل ﻫﻨﺎﻙ ﺍﺜﻨﻴﻥ ﻤﻥ ﺍلExtents ﻓﻲ ﻜل Segment ﺃﻤﺎ ﺍﻟﺤﺩ ﺍﻷﻗﺼﻰ ﻓﻴﻌﺘﻤﺩ ﻋﻠﻰ DB Block Size ،
ﺃﻤﺎ ﺇﺫﺍ ﺘﻡ ﻤلﺀ ﺠﻤﻴﻊ ﺍلExtents ﻓﻲ ﺍلUndo Segment ﻓﺈﻨﻪ ﻴﺘﻡ ﺇﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻲ ﺍلExtent ﺍﺒﺘﺩﺍﺀ ﻤﻥ ﺍﻷﻭل، ﺃﻭ ﻴﺘﻡ ﻁﻠﺏ ﺘﺨﺼﻴﺹ
Extent ﺠﺩﻴﺩﺓ. ﻗﺩ ﻴﻜﻭﻥ ﻓﻲ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻭﺍﺤﺩﺓ ﺃﻜﺜﺭ ﻤﻥ Tablespace Undo ﻟﻜﻥ ﻻ ﻴﻤﻜﻥ ﺃﻥ ﻴﻌﻤل ﻓﻲ ﺍﻟﻠﺤﻅﺔ ﺍﻟﻭﺍﺤﺩﺓ ﺃﻜﺜﺭ ﻤﻥ Tablespace Undo ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻋﻤل ﺍلUndo Tablespace
ﻓﻲ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ Undo_Tablespace.
SHOW PARAMETER UNDO_TABLESPACE; |
ﻹﻨﺸﺎﺀ Undo Tablespace ﺠﺩﻴﺩ.
CREATE UNDO TABLESPACE ORCLUNDO DATAFILE 'D:\oracle\product\01.1.0\oradata\ORCL\ORCLUNDO. DBF' SIZE 200M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; |
ﺍﻵﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺤﺘﻭﻯ ﻋﻠﻰ ﺍﺜﻨﻴﻥ ﻤﻥ ﺍلUndo Tablespace ﻭﻟﻜﻥ ﻴﻌﻤل ﻭﺍﺤﺩ ﻓﻘﻁ ﻫﻭ UNDOTBS1 ﻜﻤﺎ ﻤﻭﻀﺢ ﺃﻋﻼﻩ .
ﻭﻟﻜﻥ ﻴﻤﻜﻥ ﺘﻐﻴﻴﺭ ﺍلUndo Tablespace ﺍﻟﺫﻱ ﻴﻌﻤل ﻓﻲ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ UNDOTBS1 إلي ORCLUNDO.
ALTER SYSTEM SET UNDO_TABLESPACE='ORCLUNDO' SCOPE=BOTH; |
ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭﺭﻜل Oracle Database 10g ﺘﺘﻴﺢ ﺨﻴﺎﺭ ﺇﺩﺍﺭﺓ ﺁﻟﻲ ﻟلUndo Tablespace ﻭﻫﻭ Automatic Undo Management ﻭﻴﺘﻡ ﺘﻬﻴﺌﺘﻪ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ
UNDO_MANAGEMENT ﺒﺤﻴﺙ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻤﺔ AUTO، ﺃﻤﺎ ﺨﻴﺎﺭ ﺍﻹﺩﺍﺭﺓ ﺍﻟﻴﺩﻭﻱ Manual Undo Magamenet ﻓﻬﻭ ﺨﻴﺎﺭ ﻤﻜﻠﻑ ﻭﻴﺤﺘﺎﺝ ﻟﻌﻤل ﺃﻜﺜﺭ ﻤﻥ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ.
ﺃﻤﺎ ﺨﻴﺎﺭ ﺍﻹﺩﺍﺭﺓ Automatic Undo Management ﻓﻬﻭ ﻴﻘﻠل ﺍﻟﻌﺏﺀ ﻋﻠﻲ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺤﻴﺙ ﺘﻜﻭﻥ ﺇﺩﺍﺭﺘﻪ ﻓﻘﻁ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﺍلTablespace.
ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﻨﺘﻅﺭﻩ ﺘﻬﻴﺌﺔ ﺍﻟﻤﺴﺎﺤﺔ ﺍﻟﻤﻨﺎﺴﺒﺔ ﻟلUndo Tablespace ﻭﺫﻟﻙ ﺤﺴﺏ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ
ﺍﻟﺘﻲ ﺴﻴﺘﻡ ﺘﺨﺯﻴﻨﻬﺎ، ﻜﺫﻟﻙ ﻻﺒﺩ ﻤﻥ ﺘﻬﻴﺌﺔ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ Undo Retention ﻟﻠﺒﻴﺎﻨﺎﺕ ﻓﻲ ﺍل Undo Segment ﻭﺫﻟﻙ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ UNDO_RETENTION
ﺍﻟﺫﻱ ﻴﺄﺨﺫ ﻗﻴﻤﺔ ﻫﻲ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺒﺎﻟﺜﻭﺍﻨﻲ.
ﺍﻷﺼل ﻓﻲ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻫﻭ ﺃﻥ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻤﺔ 0 ﻭﻫﻰ ﺘﻌﻨﻰ Automatic ﺃﻱ ﻴﻌﻨﻰ ﻤﺤﺎﻭﻟﺔ ﺍﻻﺤﺘﻔﺎﻅ
ﺒﺎﻟﻤﻌﻠﻭﻤﺎﺕ ﺤﺘﻰ ﺘﻨﺘﻬﻲ، ﻋﻠﻰ ﺃﻥ ﻴﺘﻡ ﺍﻻﺤﺘﻔﺎﻅ ﺒﺎﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻠﻰ ﺍﻷﻗل 15 ﺩﻗﻴﻘﺔ، ﻟﻜﻥ ﻴﻤﻜﻥ ﺘﺤﺩﻴﺩ ﻗﻴﻤﺔ
ﺃﺨﺭﻯ ﻫﻲ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺒﺎﻟﺜﻭﺍﻨﻲ ﻭﺃﻗﺼﻰ ﻗﻴﻤﺔ ﻫﻲ 322.
SHOW PARAMETER UNDO_RETENTION; |
ﻭﻋﻤﻭﻤﹰﺎ Undo information ﺃﻱ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍلUndo Segments ﺘﻨﻘﺴﻡ ﺇﻟﻰ ﺜﻼﺙ ﺤﺎﻻﺕ:-
1- Uncommitted Undo Information: ﻭﻫﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺘﻲ ﻟﻡ ﻴﺘﻡ ﺘﺜﺒﻴﺘﻬﺎ ﺇﻟﻰ ﺍﻵﻥ ﻭﺫﻟﻙ ﻷﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻤﺎﺯﺍﻟﺕ ﻤﺴﺘﻤﺭﺓ، ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻻ ﻴﻤﻜﻥ ﺤﺫﻓﻬﺎ ﻭﺇﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻬﺎ.
2 - Committed Undo Information: ﻭﻫﻰ ﻻ ﻨﺤﺘﺎﺠﻬﺎ ﻟﻌﻤﻠﻴﺎﺕ ﻤﺴﺘﻤﺭﺓ، ﻭﻟﻜﻥ ﻷﻥ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﻟﻡ ﺘﻨﺘﻬﻲ ﺒﻌﺩ "Unexpired"، ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻨﺤﺘﻔﻅ ﺒﻪ ﻗﺩﺭ ﺍﻹﻤﻜﺎﻥ
ﻤﺎ ﻟﻡ ﻴﺅﺩﻯ ﺫﻟﻙ ﻟﻔﺸل ﺒﻌﺽ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻨﺘﻴﺠﺔ ﻋﺩﻡ ﻭﺠﻭﺩ ﻤﺴﺎﺤﺔ ﻓﻲ ﺍلTablespace Undo، ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﺘﻡ ﺇﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻲ ﻫﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ،
ﻭﻟﻜﻥ ﻗﺩ ﻴﻘﻭﻡ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺘﻬﻴﺌﺔ ﺍلUndo Tablespace. ﺒﺤﻴﺙ ﻨﻀﻤﻥ ﻋﺩﻡ ﻤﺴﺢ ﻭﺇﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻬﺎ ﻭﺫﻟﻙ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺨﻴﺎﺭ Guaranteeing Undo Retention .
ALTER TABLESPACE ORCLUNDO RETENTION GUARANTEE; |
ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﺒﺎﻟﻁﺒﻊ ﻏﻴﺭ ﻤﺘﺎﺡ ﺇﻻ ﻟلUndo Tablespace .
ﻫﻜﺫﺍ ﻨﻀﻤﻥ ﻋﺩﻡ ﺤﺫﻑ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺘﻲ ﻟﻡ ﺘﻨﺘﻬﻲ ﻓﺘﺭﺓ ﺍﺤﺘﻔﺎﻅﻬﺎ ﺤﺘﻰ ﻟﻭ ﺃﺩﻯ ﺫﻟﻙ ﻟﻔﺸل ﺒﻌﺽ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻟﻌﺩﻡ ﻭﺠﻭﺩ ﻤﺴﺎﺤﺔ ﻓﻲ ﺍلUndo Tablespace .
3 - Expired Undo Information: ﻭﻫﻰ ﻻ ﻨﺤﺘﺎﺠﻬﺎ ﻟﻌﻤﻠﻴﺎﺕ ﻤﺴﺘﻤﺭﺓ، ﻭﻜﺫﻟﻙ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺒﻬﺎ ﺍﻨﺘﻬﺕ ﻓﻴﻤﻜﻥ ﺇﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻬﺎ ﻤﺘﻰ ﻤﺎ ﺍﺤﺘﺠﻨﺎ ﻟﻤﺴﺎﺤﺔ ﻓﻲ ﺍلUndo Tablespace .
ﻤﻥ ﺍﻟﻤﺸﺎﻜل ﺍﻟﺘﻲ ﺘﺤﺩﺙ ﻜﺜﻴﺭﺍﹰ ﻭﺍﻟﺘﻲ ﻴﺠﺏ ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﺭﺍﻋﺎﺘﻬﺎ :-
1- ﻤﺸﻜﻠﺔ ﺍﻟﻤﺴﺎﺤﺔ Undo Tablespace Space Error: ﻭﻴﺠﺏ ﻋﻠﻰ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﺭﺍﻗﺒﺔ ﻤﺴﺎﺤﺔ ﺍلUndo Tablespace ﻓﺎﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺘﻲ ﻻ ﺘﺠﺩ ﻤﺴﺎﺤﺔ ﻓﻲ ﺍلUndo Tablespace
ﺘﻌﻁﻰ ﺭﺴﺎﻟﺔ ﺍﻟﺨﻁﺄ (ORA-01650: unable to extend rollback segment) .
2- Snapshot too old Error : ﻭﻫﺫﺍ ﺍﻟﺨﻁﺄ ﻴﻅﻬﺭ ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺍﺴﺘﻌﻼﻡ ﻴﺤﺘﺎﺝ ﻟﻤﻌﻠﻭﻤﺎﺕ Undo Information ﻗﺩ ﺘﻡ ﻤﺴﺤﻬﺎ ﻭﺇﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻬﺎ،
ﻟﺫﺍ ﻴﺠﺏ ﻋﻠﻰ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﺭﺍﻋﺎﺓ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺍﻟﻤﻨﺎﺴﺒﺔ UNDO_RETENTION ﻭﻜﺫﻟﻙ ﺍﻟﻤﺴﺎﺤﺔ ﺍﻟﻤﻨﺎﺴﺒﺔ ﻤﻊ ﻤﺭﺍﻋﺎﺓ Guaranteeing Undo Retention .
ﻴﻤﻜﻥ ﺍﻻﺴﺘﻌﻼﻡ ﻋﻥ ﺍلUNDO ﺒﻭﺍﺴﻁﺔ:
DBA_UNDO_EXTENT
V$UNDOSTAT
-------------------------------