You are on page 1of 190

‫ﺒﺴﻡ ﺍﷲ ﺍﻟﺭﺤﻤﻥ ﺍﻟﺭﺤﻴﻡ‬

‫ﺍﻟﺠﺯﺀ ﺍﻟﺜﺎﻨﻰ‬

Obay Salah Mirgani (Oracle 10g DBA OCP)

obaysalah@hotmail.com

1
‫ﺍﻟﻔﻬﺭﺱ‬

‫اﻟﺼﻔﺤﺔ‬ ‫اﻟﻤﻮﺿﻮع‬ ‫اﻟﻤﺴﻠﺴﻞ‬

3 ‫اﻟﻤﻘﺪﻣﺔ‬ 2
Managing Shared
5 Servers 3

Logical Backup 4
21 & Recovery

73 Physical Backup 5
& Recovery

119 Recovery Manager 6


(RMAN)

2
‫ﺍﻟﻤﻘﺩﻤﺔ‬

‫ﺍﻟﻴﻜﻡ ﺍﻴﻬﺎ ﺍﻟﻔﻀﻼﺀ ﺍﻟﺠﺯﺀ ﺍﻟﺜﺎﻨﻰ ﻤﻥ ﺍﻟﻜﺘﺎﺏ ﺍﻟﻌﺭﺒﻰ ﻹﺩﺍﺭﺓ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭﺭﻜل ﻭﺍﻟﺫﻯ‬
‫ﻨﺎﻗﺸﺕ ﻓﻴﻪ ﺍﻟﻤﻭﺍﻀﻴﻊ ﺍﻻﻜﺜﺭ ﺤﺴﺎﺴﻴﺔ ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻟﺘﻰ ﺘﺘﻌﻠﻕ ﺒﺎﻟﺤﻔﺎﻅ ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﺍﺘﺒﻌﺕ ﻓﻴﻪ ﺍﺴﻠﻭﺏ ﺍﻟﺘﺒﺴﻴﻁ ﻜﻤﺎ ﻓﻌﻠﺕ ﻓﻰ ﺍﻟﺠﺯﺀ ﺍﻻﻭل ‪ ،‬ﻭﺤﺎﻭﻟﺕ ﺍﻴﻀﹰﺎ ﺃﻥ ﺍﺭﻜﺯ ﻋﻠﻰ ﺍﻟﺠﺎﻨﺏ‬
‫ﺍﻟﻌﻤﻠﻰ ﺤﺘﻰ ﺘﺜﺒﺕ ﺍﻟﻔﻜﺭﺓ ﺍﻜﺜﺭ ﻭﺍﻋﻤﻕ‪.‬‬

‫ﻫﺫﺍ ﺍﻟﺠﺯﺀ ﻫﻭ ﻋﺼﺎﺭﺓ ﻓﺼﻭل ﻜﺜﻴﺭﺓ ﻭﻤﺘﻔﺭﻗﺔ ‪ ،‬ﺍﺜﺭﺕ ﺃﻥ ﺍﺠﻤﻌﻬﺎ ﻟﻙ ﻓﻰ ﻫﺫﻩ ﺍﻟﻔﺼﻭل ﺍﻟﻤﻌﺩﻭﺩﺓ‬
‫ﻼ ﺍﻥ ﺘﺼﻠﻙ ﺍﻟﻔﻜﺭﺓ ﺒﺎﺴﻬل ﻁﺭﻕ ﻭﺩﻭﻥ ﺘﻌﻘﻴﺩ‪.‬‬
‫ﻭﺍﻟﻭﺭﻗﺎﺕ ﺍﻟﻤﺤﺩﻭﺩﺓ ﺍﻤ ﹰ‬

‫ﻭﻨﺼﻴﺤﺘﻰ ﻟﻙ ﺍﻟﻌﻤل ﺜﻡ ﺍﻟﻌﻤل ﺜﻡ ﺍﻟﻌﻤل ‪ ،‬ﻓﺎﻟﻘﺭﺍﺀﺓ ﻭﺤﺩﻫﺎ ﻻ ﺘﻜﻔﻰ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺠﺎل ﻓﻴﺠﺏ ﺃﻥ ﺘﻁﺒﻕ‬
‫ﻜل ﺤﺭﻑ ﻗﺭﺃﺘﻪ ‪ ،‬ﺤﻴﻨﻬﺎ ﻓﻘﻁ ﺘﻅل ﺍﻟﻤﻌﻠﻭﻤﺔ ﻤﺤﻔﻭﺭﺓ ﻓﻰ ﺫﺍﻜﺭﺘﻙ‪.‬‬

‫ﻭﺍﺨﻴﺭﹰﺍ ﻻ ﺒﺩ ﻤﻥ ﺍﻟﺸﻜﺭ ﻟﻜل ﻤﻥ ﺘﻭﺍﺼل ﻤﻌﻰ ﺤﺘﻰ ﺍﻜﻤﻠﺕ ﻫﺫﻩ ﺍﻟﻭﺭﻗﺎﺕ ‪ ،‬ﻭﺍﺨﺹ ﺒﺎﻟﺸﻜﺭ‬
‫ﺍﻋﻀﺎﺀ ﻜﺭﺍﻡ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﻤﺴﺘﺨﺩﻤﻰ ﻋﺭﺏ ﺍﻭﺭﺍﻜل ‪ ،‬ﻜﺎﻨﻭﺍ ﻋﻠﻰ ﺘﻭﺍﺼل ﻤﻌﻰ ﺤﺘﻰ ﺨﺭﺠﺕ ﻫﺫﻩ ﺍﻟﻤﺎﺩﺓ ‪،‬‬
‫ﻓﺎﺭﺠﻭ ﺍﻥ ﻨﻜﻭﻥ ﻋﻨﺩ ﺤﺴﻥ ﺍﻟﻅﻥ ﻭﺍﻥ ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻤﺎﺩﺓ ﻨﺎﻓﻌﺔ ﺒﺈﺫﻥ ﺍﷲ‪.‬‬

‫) ﻭﻻ ﺘﻨﺴﻭﻨﺎ ﻤﻥ ﺼﺎﻟﺢ ﺍﻟﺩﻋﺎﺀ (‬

‫ﻜﺘﺒﻪ ﺃﺒﻰ ﺼﻼﺡ ﻤﻴﺭﻏﻨﻰ )ﻟﺒﺎﺸﺎ(‬

‫‪3‬‬
4
5
‫ﻓﻰ ﺍﻻﺼل ﻓﺈﻨﻪ ﻋﻨﺩﻤﺎ ﻴﻁﻠﺏ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ User Process‬ﺒﺎل‪ Instance‬ﻓﺈﻥ ﺍل‪ Oracle‬ﻴﻘﻭﻡ‬
‫ﺒﺈﻨﺸﺎﺀ ‪ Server Process‬ﻤﻬﻤﺘﻪ ﺨﺩﻤﺔ ﻁﻠﺒﺎﺕ ﺫﻟﻙ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻭﻴﻅل ﻫﺫﺍ ﺍل‪ Server Process‬ﻤﻭﺠﻭﺩ‬
‫ﻤﺎﺩﺍﻡ ﺍل‪ Session‬ﻤﻔﺘﻭﺤﺔ ‪ ،‬ﻭﻴﺴﺘﻁﻴﻊ ﺍﻻﻭﺭﻜل ﺇﻨﺸﺎﺀ ‪ Server Process‬ﻟﻜل ‪ User Process‬ﻴﻁﻠﺏ‬
‫ﺍﻹﺘﺼﺎل ﺒﺎل‪ ، Instance‬ﻭﻫﺫﺍ ﻤﺎ ﻴﺴﻤﻰ ﺒﺎل‪.Dedicated Server‬‬
‫ﻭﺍﻻﻭﺭﻜل ﻟﻴﺱ ﻟﺩﻴﻪ ﻤﺸﻜﻠﺔ ﻓﻰ ﺇﻨﺸﺎﺀ ﺍﻜﺒﺭ ﻋﺩﺩ ﻤﻥ ﺍل‪ Server Processes‬ﻟﺨﺩﻤﺔ ﺍل ‪User‬‬
‫‪ Processes‬ﺒﺤﻴﺙ ﻴﻜﻭﻥ ‪ User Process‬ﻟﻜل ‪ ، Server Process‬ﻟﻠﻜﻥ ﺒﺎﻟﻁﺒﻊ ﻗﺩ ﻴﻜﻭﻥ ﻫﻨﺎﻙ ﺤﺩﻭﺩ‬
‫ﻟﺴﺭﻋﺔ ﺍل‪ Server Processes‬ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺃﻥ ﺘﻌﻤل ﻓﻰ ﻨﻔﺱ ﺍﻟﻠﺤﻅﺔ‪.‬‬

‫ﻭﻴﻤﻜﻥ ﺍﻟﻘﻭل ﺃﻨﻪ ﻜﻠﻤﺎ ﻗﺎﻡ ﻤﺴﺘﺨﺩﻡ ﺒﺎل‪ Instance‬ﻓﺈﻥ ﺍﻟﻤﺴﺘﻤﻊ ‪ Listener‬ﺒﺈﻨﺸﺎﺀ ‪Server‬‬
‫‪ ، Process‬ﺍﻤﺎ ﺇﺫﺍ ﻜﺜﺭ ﻋﺩﺩ ﺍل‪ Server process‬ﻓﺈﻥ ﺍﻟﻤﺴﺘﻤﻊ ﻴﺠﻌل ﻟﻬﻡ ﺼﻔﹰﺎ ‪ ،‬ﻋﻤﻭﻤﹰﺎ ﻴﻤﻜﻥ ﺘﻔﺎﺩﻯ ﻫﺫﻩ‬
‫ﺍﻟﻤﺸﻜﻠﺔ ﺒﺈﻨﺸﺎﺀ ﻤﺴﺘﻤﻊ ﺍﺨﺭ ‪ Listener‬ﻴﻌﻤل ﻋﻠﻰ ﺒﻭﺭﺕ ﺍﺨﺭ ﻟﺘﻭﺯﻴﻊ ﺍﻟﻌﻤل ﺒﻴﻨﻬﻡ‪.‬‬

‫ﻟﻜﻥ ﻟﻴﺴﺕ ﺍﻟﻤﺸﻜﻠﺔ ﻓﻰ ﺍﻻﻭﺭﻜل ﻭﺤﺩﻩ ﻓﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﺍﻟﺘﻰ ﺘﻌﻤل ﻋﻠﻴﻪ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻜﺫﻟﻙ‬
‫ﺍﻟﻤﺎﻜﻴﻨﺔ ﺍﻟﺘﻰ ﺘﻌﻤل ﻋﻠﻴﻬﺎ؛ ﻜل ﺫﻟﻙ ﺘﺠﻌل ﻟﻙ ﺤﺩﻭﺩ ﻓﻰ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﻋﺩﺩ ﻜﺒﻴﺭ ﻤﻥ ﺍل‪Server Process‬‬
‫ﻓﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﺤﺠﻡ ﺍﻟﺫﺍﻜﺭﺓ ﻭﺴﺭﻋﺔ ﺍﻟﻤﻌﺎﻟﺞ ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺤﺩ ﻤﻥ ﺇﻤﻜﺎﻨﻴﺔ ﻋﺩﺩ ﻻ ﻤﻨﺘﺎﻫﻰ‬
‫ﻤﻥ ﺍل‪ Server Process‬ﺠﻌﻠﺕ ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﺘﻔﻜﺭ ﻓﻰ ﻤﻭﻀﻭﻉ ﺍل‪ Shared Server‬ﻭﻫﻭ ﺒﺈﺨﺘﺼﺎﺭ‬
‫ﺇﻨﺸﺎﺀ ‪ Shared server‬ﻟﺨﺩﻤﺔ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍل‪ User Process‬ﺒﺩل ﻤﻥ ﺇﻨﺸﺎﺀ ‪ Server Process‬ﻟﻜل‬
‫‪ User Process‬ﻤﻤﺎ ﺠﻌل ﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﻔﻭﺍﺌﺩ‪:‬‬
‫‪ -1‬ﺘﻘﻠﻴل ﻋﺩﺩ ﺍل‪ Server Process‬ﺍﻟﻤﺘﺼﻠﺔ ﺒﺎل‪.Instance‬‬
‫‪ -2‬ﺯﻴﺎﺩﺓ ﻋﺩﺩ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﺍﻟﻤﺘﺼﻠﻴﻥ ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺇﺫ ﻻ ﻴﺘﻡ ﺇﺸﺎﺀ ‪ Server Process‬ﻟﻜل ﻤﺴﺘﺨﺩﻡ‪.‬‬
‫‪ -3‬ﺘﻘﻠﻴل ﻋﺩﺩ ﺍل‪ Server processes‬ﺍﻟﻌﺎﻁﻠﺔ ﻋﻥ ﺍﻟﻌﻤل‪.‬‬
‫‪ -4‬ﺘﻘﻠﻴل ﺤﺠﻡ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻓﻰ ﺍﻟﻌﻤل ﻭﻜﺫﻟﻙ ﺍﻟﻤﻭﺍﺭﺩ ﺍﻻﺨﺭﻯ‪.‬‬

‫‪6‬‬
‫‪:Dedicated Server‬‬

‫ﻭﻫﺫﺍ ﺍﻟﻨﻤﻁ ﺍﻟﺫﻯ ﺘﻌﻤل ﺒﻪ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻻﺼل ﺒﺤﻴﺙ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ‪ Server Processes‬ﻟﻜل‬
‫‪ User Processes‬ﻴﻁﻠﺏ ﺍﻹﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﺒﺤﻴﺙ ﻴﺴﺘﻁﻴﻊ ﺍل‪ Server Process‬ﺍﻹﺘﺼﺎل ‪ ،‬ﺍﻨﺕ‬
‫ﻤﻥ ﺨﻼل ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﺘﺴﺘﻁﻴﻊ ﻤﺭﺍﻗﺒﺔ ﻋﺩﺩ ﺍل‪ Server Process‬ﺍﻟﺘﻰ ﺘﻌﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻓﻔﻰ ﻨﻅﺎﻡ‬
‫ﺍﻟﺘﺸﻐﻴل ﻭﺒﻨﺩﻭﺯ ﺘﺴﺘﻁﻴﻊ ﻤﺘﺎﺒﻌﺔ ﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ ، Task Manager‬ﻭﻫﻰ ﻓﻰ ﺍﻟﺤﻘﻴﻘﺔ ﻟﻴﺴﺕ‬
‫‪ Opreting system Processes‬ﻭﺇﻨﻤﺎ ﺘﻅﻬﺭ ﻙ‪ Single Oracle.exe Process‬ﻭﻟﻜﻥ ﺃﻨﺕ ﺘﺴﺘﻁﻴﻊ‬
‫ﻤﻌﺭﻓﺔ ﻋﺩﺩ ﺍل‪ Process‬ﻋﻥ ﻁﺭﻴﻕ ‪ Thread count‬ﻓﻰ ﺍل‪.Task Manager‬‬

‫‪7‬‬
‫ﺒﺎﻟﻁﺒﻊ ﺘﺴﺘﻁﻴﻊ ﺇﻨﻬﺎﺀ ﺠﻤﻴﻊ ﺍل‪ Server Processes‬ﻋﻥ ﻁﺭﻴﻕ ﺍل‪.End Process‬‬

‫‪8‬‬
‫‪:Shared Server Architecture‬‬
‫ﻋﻨﺩﻤﺎ ﻴﺘﻡ ﺘﻬﻴﺌﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﺘﻌﻤل ﺒﺎﻟﻨﻤﻁ ‪ Shared Serrver‬ﻓﺈﻥ ﻫﺘﺎﻙ ﻨﻭﻋﺎﻥ ﻤﻥ ﺍل‪Prcess‬‬
‫‪ ،‬ﺍﻴﻀﹰﺎ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ﻋﺩﺩ ﻤﻥ ﺍﻟﺼﻔﻭﻑ ﻋﻠﻰ‬ ‫ﻴﺘﻡ ﺇﻨﺸﺎﺀﻫﻡ ) ‪(Dispatchers & Shared servers‬‬
‫ﺍﻟﺫﺍﻜﺭﺓ ‪ ، SGA‬ﻜﻤﺎ ﻴﺘﻡ ﺘﻌﺩﻴل ﺴﻠﻭﻙ ﺍﻟﻤﺴﺘﻤﻊ )‪ (Listener‬ﻟﻜﻰ ﻴﻌﻤل ﻤﻊ ﺍل‪، Shared Server‬‬
‫ﻭﺍل‪ Dispatcher‬ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ‪ Process‬ﻴﻌﻤل ﻋﻠﻰ ‪ TCP PORT‬ﻭﻴﺘﻡ ﺘﺴﺠﻴﻠﻪ ﻟﺩﻯ ﺍل‪Listener‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﺨﻁﻭﺍﺕ ﻋﻤل ﺍل‪ Shared Server Process‬ﻓﻌﻨﺩﻤﺎ ﻴﻁﻠﺏ ﺍل‪User Process‬‬
‫ﺍﻹﺘﺼﺎل ﺒﺎل‪ Instance‬ﻻ ﻴﻘﻭﻡ ﺍﻟﻤﺴﺘﻤﻊ ﺒﺈﻨﺸﺎﺀ ‪ Server Process‬ﻜﻤﺎ ﻜﺎﻥ ﺍﻟﺤﺎل ﻓﻰ ﺍل ‪Dedicate‬‬
‫‪ Server‬ﻭﻟﻜﻥ ﻴﻘﻭﻡ ﺍﻟﻤﺴﺘﻤﻊ ﺒﺈﺒﻘﺎﺀ ﻗﺎﺌﻤﺔ ﺍل‪ Dispatchers‬ﺍﻟﻤﺘﺎﺤﺔ ﺍﻟﺘﻰ ﻴﻘﻭﻡ ﺍﺤﺩﻫﺎ ﺒﺈﺴﺘﻘﺒﺎل ﺫﻟﻙ ﺍﻟﻁﻠﺏ‬
‫ﻭﺘﻤﺭﻴﺭﻩ ﺇﻟﻰ ﺍل‪ Request Queue‬ﻤﻊ ﺍﻟﻌﻠﻡ ﺃﻥ ﻫﺫﺍ ﺍﻟﺼﻑ ﻴﺤﻭﻯ ﺠﻤﻴﻊ ﺍﻟﻁﻠﺒﺎﺕ ﺍﻟﺘﻰ ﺍﺴﺘﻘﺒﻠﺘﻬﺎ ﺠﻤﻴﻊ‬
‫ﺍل‪ ، Dispatchers‬ﻤﻊ ﺍﻟﻌﻠﻡ ﺃﻥ ﻫﺫﺍ ﺍﻟﺼﻑ ﻴﺘﻡ ﺘﻜﻭﻴﻨﻪ ﺍﻟﻴﹰﺎ ﻋﻨﺩ ﺘﻬﻴﺌﺔ ﺍل‪ Instance‬ﻓﻰ ﺍﻟﻨﻤﻁ ‪Shared‬‬
‫‪ Server‬ﻭﺍﻴﻀﹰﺎ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍل‪ Dispatchers‬ﺍﻟﺘﻰ ﻴﺘﻡ ﺍﻨﺸﺎﺅﻫﺎ‪.‬‬

‫‪9‬‬
‫ﺒﻌﺩﻤﺎ ﺘﺼل ﺍﻟﻁﻠﺒﺎﺕ ﺇﻟﻰ ﺍل‪ Request Queue‬ﺘﻅل ﺠﻤﻴﻊ ﺍل‪ Shared Servers‬ﺘﺭﺍﻗﺏ‬
‫ﻫﺫﺍ ﺍﻟﺼﻑ ﺍﻟﺫﻯ ﻴﺤﻭﻯ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﻁﻠﺒﺎﺕ ‪ ،‬ﻓﻠﺤﻅﺔ ﺇﻨﺘﻬﺎﺀ ﺃﺤﺩ ﺍل‪ Shared Server‬ﻤﻥ ﺨﺩﻤﺔ ﺍﺤﺩ‬
‫ﺍﻟﻁﻠﺒﺎﺕ ﻴﺘﻡ ﺘﺭﺸﻴﺢ ﻁﻠﺏ ﺍﺨﺭ ﻤﻥ ﺍل‪ Request Queue‬ﺇﻟﻰ ﺫﻟﻙ ﺍل‪ ، Shared Server Process‬ﺒﻌﺩﻤﺎ‬
‫ﻴﻔﺭﻕ ﺍل‪ Shared server Process‬ﻤﻥ ﻤﻌﺎﻟﺠﺔ ﺍﻟﻁﻠﺏ ﻴﻘﻭﻡ ﺒﺘﻤﺭﻴﺭﻩ ﺇﻟﻰ ﺍل‪، Response Queue‬‬
‫ﻭﺍﻟﺤﻘﻴﻘﺔ ﺃﻥ ﻫﻨﺎﻙ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍل ‪ Response Queue‬ﺒﻤﻌﺩل ﺼﻑ ﻟﻜل ‪ Dispatcher‬ﻓﻴﻘﻭﻡ‬
‫ﺍل‪ Shared Server‬ﺒﺘﻤﺭﻴﺭ ﺍﻟﻨﺘﻴﺠﺔ ﺇﻟﻰ ﺍل‪ Response Queue‬ﺍﻟﺨﺎﺹ ﺒﺎل‪ Dispatcher‬ﺍﻟﺫﻯ ﻗﺎﻡ‬
‫ﻻ ‪ ،‬ﺒﻌﺩ ﺫﻟﻙ ﻴﺘﻡ ﺘﻤﺭﻴﺭ ﺍﻟﺭﺩ ﺍﻭ ﺍﻟﻨﺘﻴﺠﺔ ﻤﻥ ﺍل‪ Response Queue‬ﺇﻟﻰ‬
‫ﺒﺈﺴﺘﻘﺒﺎل ﺍﻟﻁﻠﺏ ﺍﻭ ﹰ‬
‫ﺍل‪ Dispatcher‬ﺍﻟﺫﻯ ﺒﺩﻭﺭﻩ ﻴﻘﻭﻡ ﺒﺈﺭﺴﺎل ﺍﻟﺭﺩ ﺇﻟﻰ ﺍل‪User Process‬‬

‫‪10‬‬
‫‪:The SGA and PGA‬‬

‫‪Dedicated Server‬‬

‫‪Shared Server‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﺍﻟﻔﺭﻕ ﻓﻰ ﺘﻜﻭﻴﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﻟﻜل ﻤﻥ ﺍل‪ Dedicated Server‬ﻭﺍل‪، Shared Server‬‬
‫ﻟﻤﺎ ﻜﺎﻥ ﻟﻜل ‪ User Process‬ﻴﺘﺼل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ Server process‬ﺨﺎﺹ ﺒﻪ ﻜﻤﺎ ﻫﻭ ﺍﻟﺤﺎل ﻓﻰ‬
‫ﺍل‪ Dedicated Server‬ﺤﻴﺙ ﻴﺘﻡ ﺘﺨﺯﻴﻥ ﺍل‪ User Session Data‬ﻭﻫﻰ ﺍﻤﻥ ﻭﻤﺼﺎﺩﺭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ‬
‫ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻓﻰ ﺍل‪ PGA‬ﻭﻫﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺼﺔ ﺒﻜل ‪ Server Process‬ﻭﺍﻴﻀﹰﺎ ‪ Cursor state‬ﻭﻟﻜﻥ ﻟﻤﺎ‬
‫ﻜﺎﻥ ﺍﻻﻤﺭ ﻋﻠﻰ ﺨﻼﻑ ﺫﻟﻙ ﻓﻰ ﺍل‪ Shared Server‬ﺘﻡ ﺘﺨﺯﻴﻥ ﻫﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻰ ﺍل‪ SGA‬ﻭﻫﻰ ﺍﻟﺫﺍﻜﺭﺓ‬
‫ﺍﻟﻌﺎﻤﺔ ﺤﻴﺙ ﺘﺘﻡ ﻓﻴﻬﺎ ﺍﻟﻤﺸﺎﺭﻜﺔ ‪ ،‬ﻟﻜﻥ ﻻﺤﻅ ﺃﻥ ﻤﻌﻠﻭﻤﺎﺕ ﺍل‪ Stack Space‬ﻓﻰ ﻜﻼ ﺍﻟﺤﺎﻟﻴﻥ ﻴﺘﻡ ﺘﺨﺯﻴﻨﻬﺎ‬
‫ﻓﻰ ﺍل‪ PGA‬ﻭﺫﻟﻙ ﻷﻨﻬﺎ ﺘﺤﻭﻯ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﻤﺤﻠﻴﺔ ﻟل‪.Process‬‬

‫‪11‬‬
‫‪:Configure Oracle Shared Server‬‬
‫ﻟﺘﻬﻴﺌﺔ ﺍل‪ Instance‬ﻟﺘﻌﻤل ﻋﻠﻰ ﺍﻟﻨﻤﻁ ‪ Shared Server‬ﻓﻘﻁ ﻴﻠﺯﻤﻨﺎ ﺘﻬﻴﺌﺔ ﺒﻌﺽ‬
‫ﺍﻟﺘﻐﻴﺭﺍﺕ ﻋﻠﻰ ﻤﻠﻑ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ‪ ، Prameter File‬ﺍﻤﺎ ﺍل‪ Listener‬ﻓﻴﺘﻡ ﺘﻬﻴﺌﺘﻬﺎ ﺍﻟﻴﹰﺎ ﺨﻼل ‪Dynamic‬‬
‫‪Instance Registration‬‬

‫ﻫﺫﻩ ﻫﻰ ﻤﺠﻤﻭﻋﺔ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺘﻌﻠﻕ ﺒﻤﻭﻀﻭﻉ ﺍل‪ Shared Server‬ﻭﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺘﻬﻴﺌﺘﻬﺎ ﺤﺘﻰ‬
‫ﺘﻌﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ Shared Server‬ﻭﻟﻜﻥ ﻻﺤﻅ ﻤﻌﻰ ﺃﻥ ﻫﻨﺎﻙ ﻤﺘﻐﻴﺭ ﻭﺍﺤﺩ ﻓﻘﻁ ﻻﺒﺩ ﻤﻥ‬
‫ﺘﻬﻴﺌﺘﻪ ﻭﻫﻭ ﺍﻟﻤﺘﻐﻴﺭ ‪ DISPATCHERS‬ﺍﻤﺎ ﺒﻘﻴﺔ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻓﻬﻰ ﺇﺨﺘﻴﺎﺭﻴﺔ‪.‬‬

‫‪12‬‬
‫‪:SHARED_SERVERS‬‬
‫ﻭﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍل‪ SHARED SERVER‬ﺍﻟﺘﻰ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ ﻟﺤﻅﺔ ﺘﺸﻐﻴل‬
‫ﺍل‪ Instance‬ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Shared server‬ﻭﻫﻭ ﻤﺘﻐﻴﺭ ﺍﹼﻟﻰ ﺒﻤﻌﻨﻰ ﺃﻨﻙ ﺘﺴﺘﻁﻴﻊ ﺘﻐﻴﻴﺭ ﻗﻴﻤﺘﻪ ﺩﻭﻥ ﺇﻏﻼﻕ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻴﺤﻤل ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻓﻰ ﺍﻻﺼل ﺍﻟﻘﻴﻤﺔ ‪ 0‬ﻤﺎﺩﺍﻡ ﺃﻥ ﺍل‪ Dispatcher‬ﻴﺴﺎﻭﻯ ‪.NULL‬‬

‫‪:DISPATCHERS‬‬
‫ﻭﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍل‪ Dispatcher‬ﺍﻟﺘﻰ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ ﻟﺤﻅﺔ ﺘﺸﻐﻴل ﺍل‪ Instance‬ﻓﻰ ﺍﻟﻨﻤﻁ‬
‫‪ Shared server‬ﺤﺴﺏ ﺍل‪ PROTOCOL‬ﺍﻟﻤﻌﻁﻰ ‪ ،‬ﻭﻴﺎﺨﺫ ﻓﻰ ﺍﻻﺼل ﺍﻟﻘﻴﻤﺔ ‪ NULL‬ﻭﻻﺒﺩ ﻤﻥ ﺘﻬﻴﺌﺔ‬
‫ﻫﺫﻩ ﺍﻟﻤﺘﻐﻴﺭ ﻟﺘﻌﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻨﻤﻁ ‪.Shared Server‬‬

‫‪:MAX_SHARED_SERVERS‬‬
‫‪ ،‬ﻭﻫﻭ ﻤﺘﻐﻴﺭ‬ ‫ﻭﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻟﺘﺤﺩﺩﻴﺩ ﺍﻗﺼﻰ ﻋﺩﺩ ﻤﻥ ﺍل‪ Shared Server‬ﻴﻤﻜﻥ ﺃﻥ ﻴﺘﻡ ﺘﺸﻐﻴﻠﻪ‬
‫ﺍﹼﻟﻰ ﻴﺴﻤﺢ ﻟل‪ Shared Server‬ﺒﺯﻴﺎﺩﺓ ﻋﺩﺩ ﺍل‪ Shared Server‬ﻋﻨﺩ ﺍﻟﺤﻭﺠﺔ ﺇﻟﻰ ﺫﻟﻙ‪.‬‬

‫‪:SHARED_SERVER_SESSION‬‬
‫ﻭﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍل‪ Sessions‬ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺃﻥ ﺘﻔﺘﺢ ﻓﻰ ﻨﻔﺱ ﺍﻟﻠﺤﻅﺔ ﻋﻠﻰ ﺍل ‪Shared‬‬
‫‪.Server‬‬

‫‪13‬‬
.Shared Server‫ ﺇﻟﻰ ﺍل‬Dedicated Server‫ﻭﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺍﻨﻨﺎ ﻨﺭﻴﺩ ﺘﻐﻴﻴﺭ ﻋﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍل‬

DISPATCHERS ‫ ﺘﻬﻴﺌﺔ ﺍﻟﻤﺘﻐﻴﺭ‬-1

RMAN> ALTER SYSTEM SET


DISPATCHERS='(PROTOCOL=TCP)(DISPATCHERS=15)'
scope=spfile;

‫ ﻭﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﺨﻴﺎﺭﻯ‬SHARED_SERVERS ‫ ﺘﻬﻴﺌﺔ ﺍﻟﻤﺘﻐﻴﺭ‬-2

SQL>ALTER SYSTEM SET SHARED_SERVERS=10


scope=spfile;

‫ ﺇﻏﻼﻕ ﻭﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬-3

SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP

14
SHARED SERVERS‫ ﻭﺍل‬DISPATCHERS‫ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﻋﻤل ﺍل‬-4

SQL>SELECT PROGRAM FROM V$PROCESS;

D014 ‫( ﻭﻫﻜﺫﺍ ﺤﺘﻰ‬D000,D001,D002,D003,D004) ‫ﻻﺤﻅ ﻤﻌﻰ‬

15
‫‪ -5‬ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺘﺴﺠﻴل ﺍل‪ DISPATCHERS‬ﻓﻰ ﺍل‪.LISTENER‬‬

‫‪C:\LSNRCTL SERVICE‬‬

‫ﻣﱴ ﻧﺴﺘﺨﺪم ال‪Shared Server‬؟‬


‫ﻓﻰ ﺍﻟﺤﻘﻴﻘﺔ ﻟﻥ ﺘﺠﺩ ﺠﻭﺍﺒﹰﺎ ﺸﺎﻓﻴﹰﺎ ﻟﻬﺫﺍ ﺍﻟﺴﺅﺍل ؟ ﺍﻯ ﻤﺘﻰ ﻴﺠﺏ ﺃﻥ ﺘﺴﺘﺨﺩﻡ ﺍل‪Shared Server‬‬
‫ﻭﺍﻴﻀﹰﺎ ﻜﻡ ﻋﺩﺩ ﺍل‪ Dispatchers‬ﻭﺍل‪ Shared Servers‬ﺍﻟﺘﻰ ﻴﺠﺏ ﺃﻥ ﺘﻌﻤل ﻓﻰ ﺤﺎل ﺘﻬﻴﺌﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻓﻰ ﺍﻟﻨﻤﻁ ‪Shared Server‬‬

‫ﺃﻨﺕ ﻜﻤﺩﻴﺭ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺤﺘﺎﺝ ﻟﻭﻀﻊ ﻤﻭﺍﺯﺍﻨﺎﺕ ﻹﺘﺨﺎﺫ ﺍﻟﻘﺭﺍﺭ ﺍﻟﻤﻨﺎﺴﺏ ﻓﺈﻨﺕ ﻤﺤﻜﻭﻡ ﺒﺤﺠﻡ‬
‫ﻤﻌﻴﻥ ﻤﻥ ﺍﻟﻤﻭﺍﺭﺩ ﻭﻓﻰ ﻨﻔﺱ ﺍﻟﻠﺤﻅﺔ ﺍﻨﺕ ﻤﻁﺎﻟﺏ ﺒﺘﻭﻓﻴﺭ ﺇﻤﻜﺎﻨﻴﺔ ﻭﺼﻭل ﻋﺩﺩ ﻤﻌﻴﻥ ﻤﻥ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﺩﻭﻥ‬
‫ﺘﺄﺨﻴﺭ ‪ ،‬ﻋﻤﻭﻤﹰﺎ ﻴﺠﺏ ﻋﻠﻰ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻨﺴﻴﻕ ﻤﻊ ﻤﺩﻴﺭ ﺍﻟﻨﻅﺎﻡ ﻹﺘﺨﺎﺫ ﺍﻟﻘﺭﺍﺭ ﺍﻟﻤﻨﺎﺴﺏ‪.‬‬

‫‪16‬‬
‫ﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺃﻨﻙ ﻗﻤﺕ ﺒﺘﺸﻐﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ Shared Server‬ﻓﻴﻤﻜﻨﻙ ﺘﺠﺎﻭﺯ‬
‫ﺍﻹﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺨﻼل ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﺍﻭ ﺇﻥ ﺸﺌﺕ ﻓﻘل ﻤﻥ ﺨﻼل ﺍل‪ Dedicated Server‬ﻭﺫﻟﻙ‬
‫ﻤﻥ ﺨﻼل ﺍﻹﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ Locally‬ﻤﻥ ﻨﻔﺱ ﺍﻟﻤﺎﻜﻴﻨﺔ ﺍﻟﺘﻰ ﺒﻬﺎ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺃﻯ ﺩﻭﻥ ﺍﻟﻤﺭﻭﺭ‬
‫ﺒﺎل‪ Listener‬ﻭﺫﻟﻙ ﻷﻥ ﺍﻹﺘﺼﺎل ﻴﺘﻡ ﻤﺒﺎﺸﺭﺓ ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺩﻭﻥ ﺇﺴﺘﺨﺩﺍﻡ ﺍل‪ tnsnames.ora‬ﺍﻟﺘﻰ‬
‫ﺘﺤﻭﻟﻙ ﺇﻟﻰ ﺍﻟﻤﺴﺘﻤﻊ ﺍﻟﺫﻯ ﻴﻌﻤل ﻋﻠﻰ ﺍل‪Shared Server‬‬

‫‪SQL> CONN SYS/SYS AS SYSDBA‬‬

‫ﺍﻴﻀﹰﺎ ﻴﻤﻜﻨﻙ ﺍﻹﺘﺼﺎل ﺒﻘﺎﻋﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻙ‪ Dedicated Server‬ﺤﺘﻰ ﻭﻟﻭ ﻜﺎﻨﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ‬
‫ﺍﻟﻨﻤﻁ ‪ Shared Server‬ﻭﺫﻟﻙ ﻤﻥ ﺨﻼل ﺘﻬﻴﺌﺔ ﻤﻠﻑ ﺍل‪tnsnames‬‬

‫ﺇﺫﺍ ﺘﻡ ﺍﻹﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺨﻼل ﺍﻻﺴﻡ ﺍﻟﻤﺴﺘﻌﺎﺭ ‪ ORCL‬ﻓﺈﻨﻙ ﺍﻹﺘﺼﺎل ﺴﻭﻑ ﻴﺘﻡ ﻤﻥ ﺨﻼل‬
‫‪Dedicated Server‬‬

‫‪SQL> CONN SYSTEM/SYS@ORCL‬‬

‫‪17‬‬
‫ﺍﻤﺎ ﺇﺫﺍ ﺘﻡ ﺍﻹﺘﺼﺎل ﻤﻥ ﺨﻼل ﺍﻹﺴﻡ ﺍﻟﻤﺴﺘﻌﺎﺭ ‪ TEST‬ﻓﺈﻥ ﺍﻹﺘﺼﺎل ﺴﻭﻑ ﻴﺘﻡ ﻤﻥ ﺨﻼل ﺍل ‪Shared‬‬
‫‪.Server‬‬

‫‪SQL> CONN SYSTEM/SYS@TEST‬‬

‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺇﺭﺠﺎﻉ ﺍل‪ Instance‬ﻟﺘﻌﻤل ﻋﻠﻰ ﺍﻟﻨﻤﻁ ‪ Dedicated Server‬ﻤﺭﺓ ﺍﺨﺭﻯ ﻭﺫﻟﻙ ﻤﻥ‬
‫ﺨﻼل ﺍﻻﺘﻰ‪:‬‬

‫>‪SQL‬‬ ‫‪ALTER‬‬ ‫‪SYSTEM‬‬ ‫‪SET‬‬ ‫''=‪DISPATCHERS‬‬


‫;‪scope=spfile‬‬

‫‪SQL> ALTER SYSTEM SET SHARED_SERVERS=0‬‬


‫;‪scope=spfile‬‬

‫ﻴﻤﻜﻨﻙ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﺭﺠﻭﻉ ﺇﻟﻰ ﺍل‪ Dedicated Server‬ﻤﻥ ﺨﻼل ﺍﻹﺴﺘﻌﻼﻤﺎﺕ ﺍﻟﺘﻰ ﺍﺴﺘﺨﺩﻤﻨﺎﻫﺎ ﺴﺎﺒﻘ ﹰﺎ‪.‬‬

‫‪18‬‬
:‫ﻟﻺﺳﺘﻌﻼم‬
V$CIRCUIT
V$DISPATCHERS
V$SHARED_SERVER
V$SHARED_SERVER_MONITOR

19
20
21
‫ﺍﺤﺴﻨﺕ ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﺇﺫ ﺩﻋﻤﺕ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ‪Logical‬‬
‫‪ Backup & Recovery‬ﻓﻬﻭ ﺍﺴﻬل ﺍﻻﻨﻭﺍﻉ ﻋﻠﻰ ﺍﻻﻁﻼﻕ ‪.‬‬

‫ﻭﺘﺄﺘﻰ ﻜﻠﻤﺔ ﻤﻨﻁﻘﻰ ‪ Logical‬ﻤﻥ ﻜﻭﻥ ﺃﻥ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﺘﻰ ﻴﺘﻡ ﺘﺼﺩﻴﺭﻫﺎ ﺒﻬﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﻻ ﻴﻤﻜﻥ‬
‫ﺍﻟﺘﻌﺎﻤل ﻤﻌﻬﺎ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﻋﻥ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﻨﻅﺎﻡ ﺍﻟﻨﺸﻐﻴل ﻓﻤﻥ ﺍﻟﻤﺴﺘﺤﻴل ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﻜﺎﺌﻨﺎﺕ ﻤﺜل ﺍﻟﺠﺩﺍﻭل‬
‫‪ Tables‬ﻭﺍﻟﻤﻨﺎﻅﻴﺭ ‪ Views‬ﻭﺍل‪ Tablespaces‬ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﺍﻟﻜﺎﺌﻨﺎﺕ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ‪.‬‬

‫‪22‬‬
‫ﻫﺫﻩ ﻫﻰ ﺍﻨﻭﺍﻉ ﺍل‪ Backup‬ﺍﻟﺘﻰ ﺘﺩﻋﻤﻬﺎ ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﻭﺴﻨﺘﻔﺼل ﻓﻰ ﺍﻟﺤﺩﻴﺙ ﻋﻥ ﺠﻤﻴﻊ ﺍﻷﻨﻭﺍﻉ ﻻﺤﻘﹰﺎ ﻟﻜﻥ‬
‫ﻤﺎ ﻴﻬﻤﻨﺎ ﻓﻰ ﻫﺫﺍ ﺍﻟﻔﺼل ﻫﻭ ﺍل‪. Logical Backup‬‬

‫ﺴﻨﻨﺎﻗﺵ ﻓﻰ ﻫﺫﺍ ﺍﻟﻔﺼل ﻜل ﻤﻥ ‪-:‬‬


‫‪Use Export Utilities to Export Data‬‬ ‫‪-1‬‬
‫‪Use Import Utilities to Import Data‬‬ ‫‪-2‬‬
‫‪Use Data Pump to Export Data‬‬ ‫‪-3‬‬
‫‪Use Data Pump to Import Data‬‬ ‫‪-4‬‬

‫‪:Use Export Utilities to Export Data -1‬‬


‫ﺩﻋﻡ ﺍﻭﺭﻜل ﻟﻬﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﺘﺼﺩﻴﺭ ﻟﻴﺱ ﺤﺩﻴﺜﹰﺎ ﻭﻟﻜﻥ ﻤﺎ ﺯﺍل ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
‫ﻤﺘﺎﺤﹰﺎ ﻓﻰ ﺍﻹﺼﺩﺍﺭ ‪ ، Oracle10g‬ﺒﺤﻴﺙ ﻨﺴﺘﻁﻴﻊ ﻤﻥ ﺨﻼﻟﻪ ﺘﺼﺩﻴﺭ‪:‬‬
‫‪ -1‬ﺒﻴﺎﻨﺎﺕ ﻤﺴﺘﺨﺩﻡ ﻻﺨﺭ ﻓﻰ ﻨﻔﺱ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ -2‬ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﻻﺨﺭﻯ‪.‬‬
‫‪ -3‬ﺍﺼﺩﺍﺭ ﺍﻟﻰ ﺍﺨﺭ‪.‬‬

‫ﻭﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ ﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪:‬‬


‫‪ -1‬ﺘﺼﺩﻴﺭ ﺠﺩﺍﻭل ﻤﻌﻴﻨﺔ‪.‬‬
‫‪ -2‬ﺘﺼﺩﻴﺭ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﻤﺴﺘﺨﺩﻡ‪.‬‬
‫‪ -3‬ﺘﺼﺩﻴﺭ ‪Tablespace‬‬
‫‪ -3‬ﻨﺼﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺄﻜﻤﻠﻬﺎ ﻤﻊ ﻤﺭﺍﻋﺎﺓ ﺍﻻﺘﻰ‪-:‬‬
‫‪ -1‬ﻻ ﻴﺘﻡ ﺘﺼﺩﻴﺭ ﺍل‪. Base Tables‬‬
‫‪ -2‬ﻻ ﻴﺘﻡ ﺘﺼﺩﻴﺭ ﺍل‪.Temporary Tablespace‬‬
‫‪ -3‬ﻻ ﻴﺘﻡ ﺘﺼﺩﻴﺭ ﺍل‪.Undo Segment‬‬
‫‪ -4‬ﻻ ﻴﺘﻡ ﺘﺼﺩﻴﺭ ﺍل‪ Physiacl File‬ﻤﺜل )‪.(Control files & Redo Log Files‬‬

‫‪23‬‬
‫ﻭﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ ﺍﻴﻀﹰﺎ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ‪-:‬‬
‫‪ :Rows= [Y||N] -1‬ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻴﻌﻨﻰ ﻫل ﺘﺭﻴﺩ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﻭل ﻜﻬﻴﻜﻠﺔ ﺩﻭﻥ ﺒﻴﺎﻨﺎﺕ ﺃﻡ ﺍﻨﻙ ﺘﺭﻴﺩ ﺘﺼﺩﻴﺭ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻌﻪ ‪ ،‬ﺍﻻﺼل ﻫﻭ ﺍﻟﺨﻴﺎﺭ ‪ Y‬ﺒﻤﻌﻨﻰ ﺘﺼﺩﻴﺭ ﺍﻟﻬﻴﻜل ﻭﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ :Indexes= [Y||N] -2‬ﻫل ﻨﻘﻭﻡ ﺒﺘﺼﺩﻴﺭ ﺍﻟﻤﺭﺍﺠﻊ ﺍﻟﺘﺎﺒﻌﺔ ﻟﻠﺠﺩﺍﻭل ﺍﺜﻨﺎﺀ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﺍﻭل ﺃﻡ ﻻ ‪،‬‬
‫ﺍﻻﺼل ‪.Y‬‬
‫‪ :Grants= [Y||N] -3‬ﻫل ﺘﺭﻏﺏ ﻓﻰ ﺘﺼﺩﻴﺭ ﺍﻟﺼﻼﺤﻴﺎﺕ ﺍﻴﻀﹰﺎ ﻋﻨﺩ ﺘﺼﺩﻴﺭ ﺍﻟﻜﺎﺌﻨﺎﺕ ﻭﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ‪،‬‬
‫ﺍﻻﺼل ‪.Y‬‬
‫‪ :File -4‬ﻟﺘﺤﺩﻴﺩ ﻤﻜﺎﻥ ﺇﻨﺸﺎﺀ ﺍﻟﻤﻠﻑ ﺍﻟﺫﻯ ﻴﺤﻭﻯ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺼﺩﺭﺓ‪.‬‬
‫‪ :Log -5‬ﻟﺘﺤﺩﻴﺩ ﻤﻜﺎﻥ ﺇﻨﺸﺎﺀ ﺍﻟﻤﻠﻑ ﺍل‪ Log File‬ﺍﻟﺫﻯ ﺴﻴﺤﻭﻯ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ‪.‬‬
‫‪ :Constraints= [Y||N] -6‬ﻫل ﺘﺭﻏﺏ ﻓﻰ ﺘﺼﺩﻴﺭ ﺍﻟﻘﻴﻭﺩ ‪ Constraints‬ﺍﺜﻨﺎﺀ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﺍﻭل‪.‬‬
‫‪ :Compress= [Y||N] -7‬ﻫل ﺘﺭﻴﺩ ﻀﻐﻁ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺤﺘﻰ ﻨﻘﻠل ﻤﻥ ﺤﺠﻡ ﺍﻟﻤﻠﻑ ‪ ،‬ﺍﻻﺼل ‪.Y‬‬
‫‪ Buffer=256k -8‬ﻫﻨﺎ ﻨﺤﺩﺩ ﺤﺠﻡ ﺍل‪ ، Buffer‬ﺍﻻﺼل ‪.256k‬‬
‫‪ :Tables -9‬ﻟﺘﺤﺩﻴﺩ ﺍﻟﺠﺩﺍﻭل ﺍﻟﺘﻰ ﺍﺭﻴﺩ ﺘﺼﺩﻴﺭﻫﺎ‪.‬‬
‫‪ :Inctype=[Incremental||Cumulative||Complete] -10‬ﻟﺘﺤﺩﻴﺩ ﻨﻭﻉ ﺍﻟﺘﺼﺩﻴﺭ‪-:‬‬
‫‪ :Complete -1‬ﻟﺘﺼﺩﻴﺭ ﺠﻤﻴﻊ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ : Incremental -2‬ﺍﻟﻨﺴﺨﺔ ﺍﻟﺘﺯﺍﻴﺩﻴﺔ ﻭﻫﻰ ﺘﻌﻨﻰ ﻋﻤل ﺘﺼﺩﻴﺭ ﻟﻠﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻐﻴﺭﺕ ﺒﻌﺩ ﺍﺨﺭ‬
‫ﻋﻤﻠﻴﺔ ﺘﺼﺩﻴﺭ‪.‬‬
‫‪ : Cumulative -3‬ﺍﻟﻨﺴﺨﺔ ﺍﻟﺘﺭﺍﻜﻤﻴﺔ ﻭﻫﻰ ﺘﻌﻨﻰ ﻋﻤل ﺘﺼﺩﻴﺭ ﻟﻠﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻐﻴﺭﺕ ﺒﻌﺩ ﺍﺨﺭ‬
‫ﻋﻤﻠﻴﺔ ﺘﺼﺩﻴﺭ ﺘﺭﺍﻜﻤﻴﺔ )‪ (Cumulative‬ﺃﻭ ﺘﻜﺎﻤﻠﻴﺔ )‪.(Complete‬‬

‫‪ :Owner -11‬ﺇﺴﻡ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺍﻟﺫﻯ ﻨﺭﻴﺩ ﻋﻤل ﺘﺼﺩﻴﺭ ﻟﺒﻴﺎﻨﺎﺘﻪ‪.‬‬


‫‪ :Triggers= [Y||N] -12‬ﻫل ﺘﺭﻏﺏ ﻓﻰ ﺘﺼﺩﻴﺭ ﺍل‪ Trigger‬ﺃﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ ‪ ،‬ﺍﻻﺼل ﻫﻭ ﺍﻟﺨﻴﺎﺭ‬
‫‪.Y‬‬
‫‪ :Filesize -13‬ﻟﺘﺤﺩﻴﺩ ﺍﻗﺼﻰ ﺤﺠﻡ ﻟﻤﻑ ﺍل‪.Dump File‬‬

‫ﻭﻋﻤﻭﻤﹰﺎ ﻴﻤﻜﻥ ﻤﺭﺍﺠﻌﺔ ﺨﻴﺎﺭﺍﺕ ﺍﻟﺘﺼﺩﻴﺭ ﺒﻭﺍﺴﻁﺔ ‪EXP HELP=Y‬‬

‫‪24‬‬
‫ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ ﺘﺘﻡ ﻤﻥ ﺨﻼل ‪ Export Utilities‬ﺒﺤﻴﺙ ﻴﺘﻡ ﺍﻻﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻥ ﻁﺭﻴﻕ‬
‫ﺍل‪ Server Process‬ﻭﻤﻥ ﺜﻡ ﻋﻤل ‪ Select Statements‬ﻟﻠﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﻁﻠﻭﺒﺔ ﻭﻤﻥ ﺜﻡ ﻴﻘﻭﻡ ﺒﻌﻤل ﺘﻤﺭﻴﺭ‬
‫ﻟﻠﺒﻴﺎﻨﺎﺕ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ Server Process‬ﺇﻟﻰ ‪.Export User Process‬‬
‫ﺒﺎﻟﻤﻨﺎﺴﺒﺔ ﻴﻤﻜﻥ ﺘﺠﺎﻫل ﺍﻻﺠﺭﺍﺀﺍﺕ ﺍﻋﻼﻩ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ ‪ Dirct=y‬ﺒﺤﻴﺙ ﻴﺘﻡ ﻗﺭﺍﺀﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ‬
‫ﺍﻟﺩﻴﺴﻙ ﺍﻟﻰ ﺍل‪ Buffer Cach‬ﻭﻤﻥ ﺜﻡ ﺍﺭﺠﺎﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ‪ Export Client‬ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﻴﻤﻜﻥ ﺘﺤﺴﻥ‬
‫ﺍﻻﺩﺍﺀ‪.‬‬

‫‪25‬‬
‫‪:TABLES EXPORT‬‬
‫ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﺍﻭل ﺍﻟﺘﻰ ﻴﻤﻠﻜﻬﺎ ﻭﻜﺫﻟﻙ ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺼﺩﻴﺭ ﺠﻤﻴﻊ ﺍﻟﺠﺩﺍﻭل‬
‫ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻴﻀﹰﺎ ﻜل ﻤﻥ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪ EXP_FULL_DATABASE‬ﻴﺴﺘﻁﻴﻊ ﺘﺼﺩﻴﺭ‬
‫ﺠﺩﺍﻭل ﻤﺴﺘﺨﺩﻡ ﺍﺨﺭ ‪ ،‬ﺍﻤﺎ ﺒﺩﻭﻥ ﻫﺫﻩ ﺍﻟﺼﻼﺤﻴﺔ ﻓﻼ ﻴﺴﺘﻁﻴﻊ ﺘﺼﺩﻴﺭ ﺠﺩﻭل ﻻ ﻴﻤﻠﻜﻪ‪.‬‬

‫‪ -A‬ﻜﻴﻑ ﻴﺼًﺩﺭ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﺍﻟﺫﻯ ﻴﻤﻠﻜﻪ‪.‬‬

‫‪C:\>EXP VBS/VBS FILE=D:\EXPORT\EMPLOYEE.DMP‬‬


‫‪TABLES=EMPLOYEE‬‬

‫ﻴﻤﻜﻥ ﺼﻴﺎﻏﺔ ﺍﻤﺭ ﺍﻟﺘﺼﺩﻴﺭ ﺍﻋﻼﻩ ﺒﺎﻟﻁﺭﻴﻘﺔ ﺍﻟﺘﺎﻟﻴﺔ‬

‫‪C:\>EXP VBS/VBS FILE=D:\EXPORT\EMPLOYEE.DMP‬‬


‫‪TABLES=EMPLOYEE ROWS=Y TRIGGERS=Y IN‬‬
‫‪DEXES=Y GRANTS=Y CONSTRAINTS=Y COMPRESS=Y‬‬
‫‪BUFFER=256‬‬

‫‪26‬‬
‫ﺍﺨﺘﻠﻔﺕ ﺍﻟﺼﻴﺎﻏﺔ ﻭﻟﻜﻥ ﺍﻟﻨﺘﻴﺠﺔ ﻭﺍﺤﺩﺓ ‪ ،‬ﻟﺫﺍ ﻓﻤﻥ ﺍﻻﻓﻀل ﻋﺩﻡ ﻜﺘﺎﺒﺔ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺇﻻ ﺇﺫﺍ ﺍﺭﺩﻨﺎ ﺃﻥ ﻨﺴﺘﻌﻤﻠﻬﺎ ﻓﻰ‬
‫ﻏﻴﺭ ﻭﻀﻌﻬﺎ ﺍﻻﺼﻠﻰ ‪ ،‬ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ﻟﻭ ﺍﺭﺩﻨﺎ ﺍﻥ ﻨﺼﺩﺭ ﺍﻟﺠﺩﻭل ﺒﻤﺎ ﻓﻴﻪ ﺍﻟﻘﻴﻭﺩ ‪ Constraints‬ﻓﻤﻥ‬
‫ﺍﻻﻓﻀل ﻋﺩﻡ ﻜﺘﺎﺒﺔ ﺍﻟﺨﻴﺎﺭ ‪ Constraints=Y‬ﻭﺫﻟﻙ ﻷﻨﻙ ﺇﺫﺍ ﻟﻡ ﺘﻜﺘﺒﻪ ﺼﺭﺍﺤﺔ ﻓﺈﻥ ﺍﻟﺼﻴﻐﺔ ﺘﺤﺘﻭﻴﻪ ﻀﻤﻨﻴﹰﺎ‬
‫‪ ،‬ﺃﻤﺎ ﺇﺫﺍ ﻟﻡ ﺘﺭﻏﺏ ﻓﻰ ﺘﺼﺩﻴﺭ ﺍﻟﻘﻴﻭﺩ ﻤﻊ ﺍﻟﺠﺩﻭل ﻓﺎﻟﻭﺍﺠﺏ ﻜﺘﺎﺒﺔ ﺍﻟﺨﻴﺎﺭ ‪ Constraints=N‬ﻓﻰ ﺼﻴﺎﻏﺔ‬
‫ﺍﻤﺭ ﺍﻟﺘﺼﺩﻴﺭ‪ .‬ﻭﻫﻜﺫﺍ ﺒﻘﻴﺔ ﺍﻟﺨﻴﺎﺭﺍﺕ‪.‬‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺍﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻴﺭﻏﺏ ﻓﻰ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﺍﻟﺫﻯ ﻴﻤﺘﻜﻠﻪ ﻭﻟﻜﻥ ﺩﻭﻥ‬
‫ﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪C:\>EXP VBS/VBS FILE=D:\EXPORT\EMPLOYEE.DMP‬‬


‫‪LOG=D:\EXPORT\EMPLOYEE.LOG TABLES=EMPLOYEE‬‬
‫‪ROWS=N‬‬

‫‪27‬‬
‫ ﺍﻟﺠﺩﻭل‬EXP_FULL_DATABASE ‫ ﻜﻴﻑ ﻴﺼﺩﺭ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺃﻭ ﻤﻥ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ‬-B
.VBS ‫ ﺍﻟﻤﻤﻠﻭﻙ ﻟﻠﻤﺴﺘﺨﺩﻡ‬Employee

C:\>EXP SYSTEM/SYS FILE=D:\EXPORT\EMPLOYEE1.DMP


LOG=D:\EXPORT\EMPLOYEE1.LOG TABLES=VBS.EMPLOYEE

28
‫ﻻﺤﻅ ﻤﻌﻰ ﺍﺴﻡ ﺍﻟﺠﺩﻭل ﻤﺴﺒﻭﻗﹰﺎ ﺒﻤﻥ ﻴﻤﺘﻠﻜﻪ‪.‬‬

‫ﺍﻻﻥ ﻟﻭ ﺤﺎﻭل ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ PENAT‬ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﺍﻟﻤﻤﻠﻭﻙ ﻟﻠﻤﺴﺘﺨﺩﻡ ‪VBS‬‬


‫ﻤﻊ ﺍﻟﻌﻠﻡ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ PENTA‬ﻻ ﻴﻤﻠﻙ ﻫﺫﻩ ﺍﻟﺼﻼﺤﻴﺔ‪ .‬ﻓﻤﺎﺫﺍ ﺘﺘﻭﻗﻊ ﺃﻥ ﺘﻜﻭﻥ ﺍﻟﻨﺘﻴﺠﺔ؟ ﺍﻟﻨﺘﻴﺠﺔ ﻫﻰ‬
‫‪ EXP-00009: no privilege to export VBS's table EMPLOYEE‬ﻟﻴﺱ ﻟﺩﻴﻙ ﻫﺫﻩ ﺍﻟﺼﻼﺤﻴﺔ‬
‫ﻟﺫﺍ ﻓﺸﻠﺕ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ‪.‬‬

‫‪C:\>EXP PENTA/PENTA FILE=D:\EXPORT\EMPLOYEE.DMP‬‬


‫‪TABLES=VBS.EMPLOYEE‬‬

‫ﺒﺎﻟﻤﻨﺎﺴﺒﺔ ﻟﻭ ﻭﺠﺩ ﺍﻻﻭﺭﻜل ﻓﻰ ﺍﻟﻤﺴﺎﺭ ﺍﻟﻤﺤﺩﺩ ﻹﻨﺸﺎﺀ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ‪ FILE.DMP‬ﻤﻠﻑ ﻤﻭﺠﻭﺩﹰﺍ ﺒﻨﻔﺱ‬
‫ﺍﻹﺴﻡ ﻓﺎﻨﻪ ﻴﻘﻭﻡ ﺒﺈﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻪ‪.‬‬

‫ﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻴﺭﻴﺩ ﺃﻥ ﻴﺼﺩﺭ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﺍﻟﺫﻯ ﻴﻤﺘﻠﻜﻪ ﻭﺒﻜﻥ ﻴﺭﻴﺩ ﺃﻥ‬
‫ﻼ ‪ ، WHERE EMP_NO=2‬ﻫﻨﺎ ﻨﺴﺘﺨﺩﻡ ﺍﻟﺨﻴﺎﺭ ‪.Query‬‬
‫ﻴﺼﺩﺭ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺸﺭﻁ ﻤﻌﻴﻥ ﻤﺜ ﹰ‬

‫‪29‬‬
C:\>EXP PENTA/PENTA FILE=D:\EXPORT\EMPLOYEE.DMP
TABLES=VBS.EMPLOYEE

30
‫‪:SCHEMAS EXPORT‬‬
‫ﻭﻫﻰ ﺘﺼﺩﻴﺭ ﻟﺠﻤﻴﻊ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ‪ schema‬ﻤﻌﻴﻨﺔ ﺃﻭ ﻤﺠﻤﻭﻋﺔ ‪ schemas‬ﺒﺤﻴﺙ ﻻ‬
‫ﻴﺘﺴﺘﻁﻴﻊ ﻤﺴﺘﺨﺩﻡ ﺘﺼﺩﻴﺭ ‪ schema‬ﺍﺨﺭﻯ ﻤﺎ ﻟﻡ ﻴﻜﻥ ﻟﺩﻴﻪ ﺍﻟﺼﻼﺤﻴﺔ ‪، FULL_EXP_DATABASE‬‬
‫ﻭﺍل‪ SCHEMA‬ﻫﻰ ﺒﺒﺴﺎﻁﺔ ﻤﺠﻭﻋﺔ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻨﺘﻤﻰ ﻟﻤﺴﺘﺨﺩﻡ ﻤﻌﻴﻥ‪.‬‬

‫‪ -A‬ﻜﻴﻑ ﻴﺼﺩﺭ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪.VBS SCHEMA‬‬

‫‪C:\>EXP VBS/VBS FILE=D:\EXPORT\EMPLOYEE.DMP‬‬


‫‪LOG=D:\EXPORT\EMPLOYEE.LOG TABLES=EMPLOYEE‬‬
‫‪ROWS=N‬‬
‫‪PLOYEE‬‬

‫‪31‬‬
‫ﻻﺤﻅ ﻤﻌﻰ ﺃﻨﻪ ﺍﺜﻨﺎﺀ ﺘﺼﺩﻴﺭ ‪ VBS SCHEMA‬ﺘﻡ ﺘﺼﺩﻴﺭ ﺍل‪ Triggers‬ﻭﺍل‪ Indesxs‬ﻭﻜﺫﻟﻙ ﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﺠﺩﺍﻭل ‪ ،‬ﻭﻟﻜﻥ ﻴﻤﻜﻥ ﺘﺠﺎﻫل ﺫﻟﻙ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭﺍﺕ & ‪TRIGGERS=N & INDEXES=N‬‬
‫‪ .ROWS=N‬ﻭﻜﺫﻟﻙ ﺍﺨﺘﺭﻨﺎ ﺍﻟﺨﻴﺎﺭ ‪ OWNER‬ﻟﺘﺤﺩﻴﺩ ﺍل‪ SCHEMA‬ﺍﻟﺘﻰ ﻨﺭﻴﺩ ﺘﺼﺩﻴﺭﻫﺎ ‪ ،‬ﺒﺎﻟﻁﺒﻊ‬
‫ﻴﻤﻜﻥ ﺘﺤﺩﻴﺩ ﺍﻜﺜﺭ ﻤﻥ ‪ SCHEMA‬ﻓﻰ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻭﺍﺤﺩﺓ‪.‬‬

‫‪ -B‬ﻜﻴﻑ ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﺘﺼﺩﻴﺭ ‪ VBS SCHEMA‬ﺍﻭ ﺒﻤﻌﻨﻰ ﺍﺨﺭ ﻜﻴﻑ ﻴﺼﺩﺭ ﺍﻟﻤﺴﺘﺨﺩﻡ‬
‫‪ VBS‬ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﺘﻰ ﻴﻤﻠﻜﻬﺎ‪.‬‬

‫‪C:\>EXP VBS/VBS FILE=D:\EXPORT\VBS.DMP‬‬


‫‪LOG=D:\EXPORT\VBS.LOGPLOYEE‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﻫﻨﺎ ﻻ ﻨﻠﺠﺄ ﻟﻠﺨﻴﺎﺭ ‪ OWNER‬ﻭﺫﻟﻙ ﻷﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻫﻨﺎ ﻴﺭﻴﺩ ﺃﻥ ﻴﺼﺩﺭ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﺘﻰ‬
‫ﻴﻤﻠﻜﻬﺎ‪.‬‬

‫‪32‬‬
‫ﻻ ﻴﺴﺘﻁﻴﻊ ﺍﻯ ﻤﺴﺘﺨﺩﻡ ﻻ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪ EXP_FULL_DATABASE‬ﻤﻥ ﺘﺼﺩﻴﺭ ﺍﻯ‬
‫‪ SCHEMA‬ﺍﺨﺭﻯ‪.‬‬

‫‪33‬‬
‫‪:TABLESPACE EXPORT‬‬
‫ﻫل ﻴﻤﻜﻥ ﺘﺼﺩﻴﺭ ‪ Tablespace‬ﻤﻥ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺍﺨﺭﻯ ؟ ﺍﻟﻠﻬﻡ ﻨﻌﻡ ‪ ،‬ﻭﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺃﻥ‬
‫ﻟﺩﻴﻨﺎ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺘﺴﻤﻰ ‪ ORCL‬ﺘﺤﺘﻭﻯ ﻋﻠﻰ ‪ Tablespace‬ﻴﺴﻤﻰ ‪ TEST‬ﻨﺭﻴﺩ ﺃﻥ ﻨﻨﻘﻠﻪ ﺍﻟﻰ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻻﺨﺭﻯ ﻭﺍﻟﺘﻰ ﺘﺴﻤﻰ ‪.OBAY‬‬
‫ﺍﻟﺨﻁﻭﺍﺕ‪-:‬‬
‫‪ -1‬ﻭﻀﻊ ‪ TEST TABLESPACE‬ﻓﻰ ﺍﻟﻭﻀﻊ ‪ READ ONLY‬ﺤﺘﻰ ﻨﻀﻤﻥ ﻋﺩﻡ ﺘﻌﺩﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ‪.‬‬

‫;‪ALTER TABLESPACE TEST READ ONLY‬‬

‫‪ -2‬ﺘﺼﺩﻴﺭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎل‪ TEST TABLESPACE‬ﻭﻫﻰ )‪ (Metadata‬ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬


‫‪TRANSPORT_TABLESPACE=Y‬‬

‫'‪C:\>EXP 'SYSTEM/SYS AS SYSDBA‬‬


‫‪FILE=D:\EXPORT\TEST.DMP TABLESPACES=TEST‬‬

‫‪34‬‬
‫‪ -3‬ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﻟﻤﻠﻑ ﺍﻭ ﻤﻠﻔﺎﺕ ﺍل‪ Datafiles‬ﺍﻟﺘﻰ ﺘﻨﺘﻤﻰ ﻟل ‪TEST‬‬
‫‪ Tablespace‬ﻭﻫﻰ ﻫﻨﺎ ﻤﻠﻑ ﻭﺍﺤﺩ ﻴﺴﻤﻰ ‪ TEST‬ﻤﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ORCL‬ﺍﻟﻰ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺠﺩﻴﺩ‬
‫ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ OBAY‬ﻭﺫﻟﻡ ﻻﻥ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ ﻻ ﺘﺼﺩﺭ ﻤﻠﻔﺎﺕ ﺍل‪.Datafiles‬‬

‫‪C:\>COPY‬‬
‫‪D:\oracle\product\10.1.0\oradata\ORCL\TEST.DBF‬‬
‫‪D:\oracle\product\10.1.0\oradata\OBAY\TEST.DBF‬‬

‫‪35‬‬
‫‪ -4‬ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺼﺩﺭﻨﺎﻫﺎ ﺴﺎﺒﻘﹰﺎ‪.‬‬

‫'‪C:\>IMP 'SYSTEM/SYS AS SYSDBA‬‬


‫‪FILE=D:\EXPORT\TEST.DMP TABLESPACES=TEST‬‬
‫‪TRANSPOR‬‬
‫‪T_TABLESPACE=Y‬‬

‫‪ -5‬ﻴﻤﻜﻥ ﺍﺭﺠﺎﻉ ‪ TEST TABLESPACE‬ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ORCL‬ﺍﻟﻰ ﺍﻟﻭﻀﻊ ‪READ WRITE‬‬


‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻹﺴﺘﻌﻼﻡ ﻋﻥ ﺍل‪ TEST TABLESPACE‬ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ OBAY‬ﻟﻠﺘﺄﻜﺩ ﻤﻥ ﺍﺴﺘﻴﺭﺍﺩﻩ‪.‬‬

‫‪36‬‬
37
‫‪:DATABASE EXPORT‬‬
‫ﻭﻴﺴﻤﻰ ﺍﻴﻀﹰﺎ ‪ FULL EXPORT‬ﻭﺍﻟﻤﻘﺼﻭﺩ ﺒﻪ ﻋﻤل ﺘﺼﺩﻴﺭ ﻟﻜل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻴﺤﺘﺎﺝ ﻫﺫﺍ‬
‫ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﺘﺼﺩﻴﺭ ﻟﻠﺼﻼﺤﻴﺔ ‪ .EXP_FULL_DATABASE‬ﻭﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﺘﺼﺩﻴﺭ ﻴﻤﻜﻥ‬
‫ﺘﻁﺒﻴﻕ ﺍﻟﺨﻴﺎﺭ ‪.INCTYPE‬‬

‫‪C:\>EXP SYSTEM/SYS FILE=D:\EXPORT\FULL.DMP‬‬


‫‪FULL=Y INCTYPE=COMPLETE‬‬

‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﻌﻤل ﺘﺼﺩﻴﺭ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺨﻴﺎﺭ ‪ ، COMPLETE‬ﺍﻻﻥ ﻴﻤﻜﻥ ﺍﺇﻨﺸﺎﺀ ﻨﺴﺨﺔ‬
‫ﺘﺭﺍﻜﻤﻴﺔ ﺍﻭ ﺘﺯﺍﻴﺩﻴﺔ )‪ (Cumulative & Incremental‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪ ، .‬ﻭﻤﺘﺎﺒﻌﺔ ﺫﻟﻙ ﺒﻭﺍﺴﻁﺔ‬
‫‪.DBA_EXP_FILES‬‬

‫;‪SELECT FILE_NAME FROM DBA_EXP_FILE‬‬

‫‪38‬‬
.‫ﺍﻻﻥ ﺴﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺨﺔ ﺘﺭﺍﻜﻤﻴﺔ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬

C:\>EXP SYSTEM/SYS FILE=D:\EXPORT\FULL1.DMP


FULL=Y INCTYPE=CUMULATIVE

39
‫ﻟﻼﺴﺘﻌﻼﻡ‬

‫;‪SELECT FILE_NAME,EXP_TYPE FROM DBA_EXP_FILES‬‬

‫ﻭﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻰ ﻴﻭﻀﺢ ﺍﻫﻡ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺴﺘﺨﺩﻡ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ ﻭﺍﻹﺴﺘﻴﺭﺍﺩ ‪.‬‬

‫ﺍﻻﺴﺘﺨﺩﺍﻡ‬ ‫ﺍﻟﻭﺼﻑ‬ ‫ﺍﻟﻤﺘﻐﻴﺭ‬

‫‪EXP & IMP‬‬ ‫ﻟﻌﺭﺽ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ ﻟﻭﺴﻴﻠﺔ‬ ‫‪HELP‬‬


‫ﺍﻟﺘﺼﺩﻴﺭ ﺍﻭ ﺍﻹﺴﺘﻴﺭﺍﺩ ﻤﻊ ﺘﻭﻀﻴﺢ‬
‫ﻤﺨﺘﺼﺭ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪EXP & IMP‬‬ ‫ﻭﺘﺸﻤل ﺍﺴﻡ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻭﻜﻠﻤﺔ ﺍﻟﻤﺭﻭﺭ‬ ‫‪USERID‬‬
‫ﻟﻺﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻤﻜﺎﻥ ﺍﻟﻤﻠﻑ ﻟﺘﺼﺩﻴﺭ ﺍﻭ ﺍﺴﺘﻴﺭﺍﺩ‬ ‫‪FILE‬‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫‪EXP & IMP‬‬ ‫ﻹﻨﺸﺎﺀ ﻤﻠﻑ ﻴﺤﻭﻯ ﺘﻔﺎﺼﻴل ﻋﻤﻠﻴﺔ‬ ‫‪LOG‬‬
‫ﺍﻟﺘﺼﺩﻴﺭ ﺍﻭ ﺍﻻﺴﺘﻴﺭﺍﺩ‬
‫‪EXP & IMP‬‬ ‫ﺍﻟﻤﺴﺎﺤﺔ ﺍﻟﻤﺨﺼﺼﺔ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺅﻗﺘﺔ‬ ‫‪BUFFER‬‬
‫ﻭﺍﻟﺘﻰ ﺘﺴﺘﺨﺩﻡ ﻟﻭﻀﻊ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺼﺩﺭﺓ‬

‫‪40‬‬
‫ﻤﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺍﻟﻤﻠﻑ ﺍﻭ‬
‫ﺍﻟﻤﺴﺘﻭﺭﺩﺓ ﻤﻥ ﺍﻟﻤﻠﻑ ﺍﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫‪EXP‬‬ ‫ﺍﻗﺼﻰ ﺤﺠﻡ ﻟﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ‬ ‫‪FILESIZE‬‬

‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻗﺎﺌﻤﺔ ﺍﻟﺠﺩﺍﻭل ﺍﻟﻤﺭﺍﺩ ﺘﺼﺩﻴﺭﻫﺎ ﺃﻭ‬ ‫‪TABLES‬‬
‫ﺍﺴﺘﻴﺭﺍﺩﻫﺎ‬
‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻤﺎ ﺇﺫﺍ ﻜﻨﺎ ﻨﺭﻴﺩ ﺘﺼﺩﻴﺭ ﺍﻭ ﺍﺴﺘﻴﺭﺍﺩ‬ ‫‪ROWS‬‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻊ ﺍﻟﺠﻭل ﺍﻡ ﻻ‬
‫‪EXP‬‬ ‫ﻟﻭﻀﻊ ﺸﺭﻭﻁ ﺍﺜﻨﺎﺀ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﺍﻭل‬ ‫‪QUERY‬‬

‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻤﺎ ﺇﺫﺍ ﻜﻨﺎ ﻨﺭﻏﺏ ﻓﻰ ﺘﺼﺩﻴﺭ ﺍﻭ‬ ‫‪INDEXES‬‬
‫ﺍﺴﺘﻴﺭﺍﺩ ﺍﻟﻔﻬﺎﺭﺱ ﺍﻡ ﻻ‬
‫‪EXP & IMP‬‬ ‫ﻟﺩﻤﺞ ﺍﻻﻤﺘﺩﺍﺩﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎﻟﺠﺩﻭل ﺍﻟﻰ‬ ‫‪COMPRESS‬‬
‫ﻭﺍﺤﺩ ﻓﻘﻁ‬
‫‪EXP‬‬ ‫ﻟﻌﻤل ﺍﺤﺼﺎﺌﻴﺎﺕ ﻋﻥ ﺍﻟﺠﺩﺍﻭل ﻭﺍﻟﻔﻬﺎﺭﺱ‬ ‫‪STATISTICS‬‬
‫ﺍﻟﻤﺭﺍﺩ ﺘﺼﺩﻴﺭﻫﺎ‬
‫‪EXP‬‬ ‫ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻟﻀﻤﺎﻥ ﻋﻤل ﺘﺼﺩﻴﺭ‬ ‫‪CONSISTENT‬‬
‫ﻟﻠﻜﺎﺌﻨﺎﺕ ﺩﻭﻥ ﺤﺩﻭﺙ ﺘﻐﻴﻴﺭ ﻓﻰ ﺍﻟﻜﺎﺌﻨﺎﺕ‬
‫ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﺘﺼﺩﻴﺭ ‪ ،‬ﻭﻫﻭ ﻴﺸﺒﻪ ﻭﻀﻊ‬
‫ﺍﻟﻜﺎﺌﻨﺎﺕ ﻓﻰ ﺍﻟﻨﻤﻁ ‪READ ONLY‬‬
‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻤﻠﻑ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺫﻯ ﻴﺤﺘﻭﻯ ﻋﻠﻰ‬ ‫‪PARFILE‬‬
‫ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻓﻰ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ‬
‫‪EXP & IMP‬‬ ‫ﻫل ﺘﺭﻴﺩ ﺘﺼﺩﻴﺭ ﺍﻭ ﺍﺴﺘﻴﺭﺍﺩ ﺼﻼﺤﻴﺎﺕ‬ ‫‪GRANT‬‬
‫ﺍﻟﻜﺎﺌﻨﺎﺕ‬
‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﺍل‪ TABLESPACES‬ﺍﻟﻤﺭﺍﺩ‬ ‫‪TABLESPACE‬‬
‫ﺘﺼﺩﻴﺭﻫﺎ ﺍﻭ ﺍﺴﺘﻴﺭﺍﺩﻫﺎ‬
‫‪EXP‬‬ ‫ﻭﻫﻰ ﺘﺴﺘﺨﺩﻡ ﻓﻘﻁ ﻋﻨﺩ ﻋﻤﻠﻴﺔ ﺘﺼﺩﻴﺭ‬ ‫‪TRANSPORT_TABLESPACE‬‬
‫ﺍل‪ TABLESPACE‬ﻭﻴﺠﺏ ﺃﻥ ﺘﺄﺨﺫ‬
‫ﺍﻟﻘﻴﺔ ‪ Y‬ﻭﻫﻰ ﺘﺴﻤﺢ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ‬
‫ﻟﻠﺒﻴﺎﻨﺎﺕ ﻤﻥ ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ‬

‫‪41‬‬
‫‪EXP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻗﺎﺌﻤﺔ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﺍﻟﻤﺭﺍﺩ‬ ‫‪OWNER‬‬
‫ﺘﺼﺩﻴﺭﻫﻡ‬
‫‪EXP & IMP‬‬ ‫ﻭﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻟﻌﻤل ﺘﺼﺩﻴﺭ ﺍﻭ ﺍﺴﺘﻴﺭﺍﺩ‬ ‫‪FULL‬‬
‫ﻟﺠﻤﻴﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫‪EXP & IMP‬‬ ‫ﻭﻫﻭ ﻟﺘﺤﺩﻴﺩ ﻨﻭﻉ ﺍﻟﺘﺼﺩﻴﺭ ﺍﻭ ﺍﻹﺴﺘﻴﺭﺍﺩ‬ ‫‪INCTYPE‬‬
‫ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻨﺎﻙ ﺜﻼﺙ ﺍﻨﻭﺍﻉ ‪:‬‬
‫‪COMPLETE -1‬‬
‫‪INCREMENTAL -2‬‬
‫‪CUMULATIVE -3‬‬

‫‪EXP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻤﺎ ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﺘﺼﺩﻴﺭ ﺴﻴﺘﻡ ﺒﻭﺍﺴﻁﺔ‬ ‫‪DIRECT‬‬


‫ﺍﻻﺴﻠﻭﺏ ﺍﻟﻤﺒﺎﺸﺭ ﺍﻯ ﻋﻥ ﻁﺭﻴﻕ ﻨﻘل‬
‫‪BUFFER‬‬ ‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﻟﺩﻴﺴﻙ ﺍﻟﻰ‬
‫‪CACH‬‬
‫‪EXP & IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻋﺭﺽ ﺘﻔﺎﺼﻴل ﺍﻟﺘﺼﺩﻴﺭ‬ ‫‪FEEDBACK‬‬
‫ﻭﺍﻻﺴﺘﻴﺭﺍﺩ‬
‫‪IMP‬‬ ‫ﻓﻘﻁ ﻟﻌﺭﺽ ﻤﺎ ﺴﺘﻜﻭﻥ ﻋﻠﻴﻪ ﻋﻤﻠﻴﺔ‬ ‫‪SHOW‬‬
‫ﺍﻻﺴﺘﻴﺭﺍﺩ ﻭﻻ ﻴﺅﺩﻯ ﻟﻺﺴﺘﻴﺭﺍﺩ ﺍﻟﻔﻌﻠﻰ‬
‫‪IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﺍﺴﻡ ﺍﻭﻤﺠﻤﻭﻋﺔ‬ ‫‪FROMUSER‬‬
‫ﺍل‪ SECHEMA‬ﺍﻟﺘﻰ ﺘﻡ ﺘﺼﺩﻴﺭ ﺒﻴﺎﻨﺎﺘﻬﺎ‬
‫ﻭﻨﺭﻴﺩ ﺍﺴﺘﻴﺭﺍﺩ ﺒﻴﺎﻨﺎﺘﻬﺎ‬
‫‪IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﺍﺴﻡ ﺍﻭ ﻤﺠﻤﻭﻋﺔ ﺍل‪SCHEMA‬‬ ‫‪TOUSER‬‬
‫ﺍﻟﺘﻰ ﻨﺭﻴﺩ ﺘﻭﺭﻴﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻬﺎ‬
‫‪IMP‬‬ ‫ﻟﺘﺤﺩﻴﺩ ﻫل ﺘﺭﻴﺩ ﺘﺠﺎﻫل ﺍﻅﻬﺎﺭ ﺭﺴﺎﺌل‬
‫ﺍﻟﺨﻁﺄ ﺍﻟﺘﻰ ﺘﻔﻴﺩ ﻭﺠﻭﺩ ﻫﺫﺍ ﺍﻟﻜﺎﺌﻥ ﻤﺴﺒﻘﹰﺎ‬ ‫‪IGNORE‬‬
‫ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬

‫‪42‬‬
‫‪:Use Import Utilities to Import Data -2‬‬
‫ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﻴﺭﺍﺩ ﻫﻰ ﻋﻤﻠﻴﺔ ﻋﻜﺴﻴﺔ ﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ ﺒﺤﻴﺙ ﻨﺴﺘﻁﻴﻊ ﻤﻥ ﺨﻼﻟﻬﺎ ﺇﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻭﺍﻟﻜﺎﺌﻨﺎﺕ ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺇﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﻴﺭﺍﺩ‪:‬‬
‫‪ -1‬ﺍﺴﺘﻴﺭﺍﺩ ﺠﺩﺍﻭل‪.‬‬
‫‪ -2‬ﺇﺴﺘﻴﺭﺍﺩ ﺒﻴﺎﻨﺎﺕ ﻤﺴﺘﺨﺩﻡ‪.‬‬
‫‪ -3‬ﺇﺴﺘﻴﺭﺍﺩ ‪.Tablespaces‬‬
‫‪ -4‬ﺇﺴﺘﻴﺭﺍﺩ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﻭﻴﺠﺏ ﺍﻟﺘﻨﺒﻴﻪ ﺇﻟﻰ ﺃﻥ ﺃﻯ ﻤﺴﺘﺨﺩﻡ ﻻ ﻴﻤﻜﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪ IMP_FULL_DATABASE‬ﻻ‬


‫ﻴﺴﺘﻁﻴﻊ ﺍﺴﺘﻴﺭﺍﺩ ﺍﻯ ﻜﺎﺌﻥ ﺍﻭ ﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻴﻤﻜﻥ ﺘﻠﺨﻴﺹ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﺘﻰ ﺘﺘﻡ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﻴﺭﺍﺍﺩ ﺒﺎﻻﺘﻰ‪-:‬‬
‫‪ -1‬ﺇﻨﺸﺎﺀ ﺍﻟﺠﺩﺍﻭل‪.‬‬
‫‪ -2‬ﺇﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ -3‬ﺇﻨﺸﺎﺀ ﺍﻟﻔﻬﺎﺭﺱ‪.‬‬
‫‪ -4‬ﺇﺴﺘﻴﺭﺍﺩ ﺍل‪.TRIGGERS‬‬
‫‪ -5‬ﺘﻔﻌﻴل ﺍﻟﻘﻴﻭﺩ ﻋﻠﻰ ﺍﻟﺠﺩﺍﻭل‪.‬‬
‫‪ -6‬ﺒﻨﺎﺀ ﺍﻟﺩﻭﺍل‪.‬‬

‫‪43‬‬
‫‪:TABLES IMPORT‬‬
‫ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺃﻭ ﻤﻥ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪IMP_FULL_DATABASE‬‬
‫ﺇﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﺍﻭل ﺍﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻗﺩ ﻴﻜﻭﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﻋﺒﺎﺭﺓ ﺘﺼﺩﻴﺭ ﺠﺩﺍﻭل ﺃﻭ ﺘﺼﺩﻴﺭ‬
‫ﻤﺴﺘﺨﺩﻡ ﺍﻭ ﺘﺼﺩﻴﺭ ﻗﺎﻋﺩﺓ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺒﺄﻜﻤﻠﻬﺎ ‪.‬‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﻫﻨﺎ ﺃﻥ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﺭﻏﺏ ﻓﻰ ﺇﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﻤﻥ ﻤﻠﻑ‬
‫ﺍﻟﺘﺼﺩﻴﺭ ﺇﻟﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻤﻊ ﺍﻟﻌﻠﻡ ﺃﻥ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﺘﻡ ﺘﺼﺩﻴﺭﻩ ﻤﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ‬
‫‪.VBS‬‬

‫‪IMP SYSTEM/SYS FILE=C:\E\FULL.DMP‬‬


‫‪TABLES=EMPLOYEE FROMUSER=VBS TOUSER=VBS IGNORE=Y‬‬

‫ﺘﻡ ﺃﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﺍﻟﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﺒﻭﺍﺴﻁﺔ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻻﺤﻅ‬
‫ﻤﻌﻰ ﺃﻨﻨﺎ ﺍﺴﺘﺨﺩﻤﻨﺎ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ‪ FROMUSER & TOUSER‬ﻭﺫﻟﻙ ﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺍﻟﺫﻯ ﺼﺩﺭﻨﺎ ﻤﻨﻪ‬
‫ﻭﺘﺤﺩﻴﺩ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺍﻟﺫﻯ ﻭﺭﺩﻨﺎ ﺇﻟﻴﻪ ‪ ،‬ﻗﺩ ﻻ ﻴﻜﻭﻥ ﻀﺭﻭﺭﻴﹰﺎ ﻫﻨﺎ ﺇﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺘﻐﻴﺭ ‪ TOUSER‬ﻭﺫﻟﻙ ﻷﻥ‬

‫‪44‬‬
‫ﺍﻟﺠﺩﻭل ﺴﻴﺴﺘﻭﺭﺩ ﻟﻨﻔﺱ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺍﻟﺫﻯ ﺼ‪‬ﺩﺭ ﻤﻨﻪ ‪ ،‬ﻭﻟﻜﻥ ﻴﻜﻭﻥ ﻀﺭﻭﺭﻴﹰﺎ ﺇﺫﺍ ﺘﻐﻴﺭ ﺍﻟﻤﺼﺩﺭ ﻭﺍﻟﻬﺩﻑ‪ .‬ﻜﺫﻟﻙ‬
‫ﺍﺴﺘﺨﺩﻤﻨﺎ ﺍﻟﻤﺘﻐﻴﺭ ‪ IGNORE‬ﻭﺫﻟﻙ ﻟﺘﺠﺎﻫل ﺭﺴﺎﺌل ﺍﻟﺨﻁﺎ ﺍﻟﺘﻰ ﺘﻔﻴﺩ ﺃﻥ ﻫﺫﺍ ﺍﻟﺠﺩﻭل ﻤﻭﺠﻭﺩ ﻓﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ‪.‬‬

‫ﻼ ‪ ROWS=N‬ﻹﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﻭل ﺩﻭﻥ ﺒﻴﺎﻨﺎﺕ ‪،‬‬


‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺇﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻻﺨﺭﻯ ‪ ،‬ﻤﺜ ﹰ‬
‫ﻭﻏﻴﺭﻩ ﻤﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻭﺫﻟﻙ ﺤﺴﺏ ﺍﻟﻤﺘﻁﻠﺒﺎﺕ‪.‬‬

‫‪45‬‬
‫‪:SCHEMAS IMPORT‬‬
‫ﻭﺫﻟﻙ ﻹﺴﺘﻴﺭﺍﺩ ﻜﺎﺌﻨﺎﺕ ﻭﻴﺒﺎﻨﺎﺕ ﻤﺴﺘﺨﺩﻡ ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺍﻟﻰ ﻤﺴﺘﺨﺩﻡ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪،‬‬
‫ﻭﻟﻨﻔﺘﺭﺽ ﻫﻨﺎ ﺃﻨﻨﺎ ﻨﺭﻴﺩ ﺍﺴﺘﻴﺭﺍﺩ ﻜﺎﺌﻨﺎﺕ ﻭﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺇﻟﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ‬

‫‪IMP SYSTEM/SYS FILE=C:\E\FULL.DMP FROMUSER=VBS‬‬


‫‪TOUSER=SYNC‬‬

‫ﻫﻜﺫﺍ ﻭﺭﺩﻨﺎ ﻜﺎﺌﻨﺎﺕ ﻭﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺍﻟﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ SYNC‬ﻓﻰ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻴﻤﻜﻥ ﺍﻻﻥ ﺍﻟﺘﺎﻜﺩ ﻤﻥ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﻴﺭﺍﺩ ﺒﻭﺍﺴﻁﺔ ﻋﻤل ﺍﺴﺘﻌﻼﻡ ﻋﻥ ﺍﻟﺠﺩﺍﻭل ﻓﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ‬
‫‪.SYNC‬‬

‫‪46‬‬
‫‪:DATABASE IMPORT‬‬

‫ﻨﺴﺘﻁﻴﻊ ﺍﺴﺘﻴﺭﺍﺩ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺒﺎﻜﻤﻠﻬﺎ ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺍﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺫﻟﻙ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬
‫‪ ، FULL=Y‬ﻭﻗﺩ ﻴﻜﻭﻥ ﻤﻠﻔﺎﺕ ﺍﻟﺘﺼﺩﻴﺭ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻫﻰ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﻨﺴﺦ ﺘﺤﺘﻭﻯ ﻋﻠﻰ ﻤﺨﺘﻠﻑ‬
‫ﻼ )‪ ، (Complete & Cumulative & Incremental‬ﻓﺎﻟﻁﺭﻴﻘﺔ ﺍﻻﻓﻀل ﻫﻰ ﻋﻤل ﺍﺴﺘﻴﺭﺍﺩ‬
‫ﺍﻻﻨﻭﺍﻉ ﻤﺜ ﹰ‬
‫‪ Import‬ﻻﺨﺭ ﻨﺴﺨﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ Incremental‬ﺒﺤﻴﺙ ﺍﻨﻬﺎ ﺘﺤﻭﻯ ﻋﻠﻰ ﺍﻟﻬﻴﻜﻠﺔ ﺍﻟﻨﻬﺎﺌﻴﺔ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻭﻴﺘﻡ ﺍﻹﺴﺘﻴﺭﺍﺩ ﻋﻥ ﻁﺭﻴﻕ ﺍﻟﺨﻴﺎﺭ ‪ INCTYPE=SYSTEM‬ﺤﻴﺙ ﺘﻌﻨﻰ ﺍﻟﻘﻴﻤﺔ ‪ SYSTEM‬ﺃﻥ ﻴﺘﻡ‬
‫ﺍﺴﺘﻴﺭﺍﺩ ﺍﻟﻬﻴﻜﻠﺔ ﺩﻭﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﺜﻡ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ ‪INCTYPE=RESTORE‬‬
‫ﻹﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﻟﻨﺴﺨﺔ ﺍﻟﺘﻜﺎﻤﻠﻴﺔ ‪ COMPLETE‬ﻤﻥ ﻤﻠﻔﺎﺕ ﺍﻟﺘﺼﺩﻴﺭ ‪ ،‬ﺜﻡ ﻨﻘﻭﻡ ﺒﻌﺩ ﺫﻟﻙ ﺒﻌﻤل‬
‫ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﻨﺴﺨﺔ ﺍﻟﺘﺭﺍﻜﻤﻴﺔ ‪ CUMULATIVE‬ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬
‫‪ INCTYPE=RESTORE‬ﻹﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﻟﻨﺴﺨﺔ ﺍﻟﺘﻜﺎﻤﻠﻴﺔ ﻭﻤﻥ ﺜﻡ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﺒﻭﺍﺴﻁﺔ‬
‫ﺍﻟﺨﻴﺎﺭ ‪ INCTYPE=RESTORE‬ﻟﻠﻨﺴﺦ ﺍﻟﺘﺯﺍﻴﺩﻴﺔ ‪ Incremental‬ﻤﻥ ﻤﻠﻔﺎﺕ ﺍﻟﺘﺼﺩﻴﺭ ﻹﺴﺘﻴﺭﺍﺩ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﺃﻥ ﻟﺩﻴﻨﺎ ﺜﻼﺙ ﻤﻠﻔﺎﺕ ﺘﺼﺩﻴﺭ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﻤﺎﺫﺍ ﻟﻭ ﺍﺭﺩﻨﺎ ﻋﻤل ﺍﺴﺘﻴﺭﺍﺩ ‪ IMPORT‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ؟ ﻨﻘﻭﻡ ﺒﺎﻟﺨﻁﻭﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪-:‬‬

‫‪47‬‬
‫ ﺍﻻﺨﻴﺭﺓ ﻭﺍﻟﺘﻰ ﻫﻰ ﻫﻨﺎ‬Incremental ‫ ﻋﻤل ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﻨﺴﺨﺔ ﺍﻟﺘﺯﺍﻴﺩﻴﺔ‬-1
‫ ﻭﺫﻟﻙ ﻹﺴﺘﻴﺭﺍﺩ ﺍﻟﻬﻴﻜﻠﺔ‬INCTYPE=SYSTEM ‫ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬D:\EXPORT\FULL2.DMP
. ‫ﺍﻻﺨﻴﺭﺓ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬

IMP SYSTEM/SYS FILE=D:\EXPORT\FULL2.DMP FULL=Y


INCTYPE=SYSTEM

‫ ﻭﺍﻟﺘﻰ ﻫﻰ ﻫﻨﺎ‬COMPLETE ‫ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﻨﺴﺨﺔ ﺍﻟﺘﻜﺎﻤﻠﻴﺔ ﺍﻻﺨﻴﺭﺓ‬-2


. ‫ ﻭﺫﻟﻙ ﻻﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‬INCTYPE=RESTORE ‫ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬D:\EXPORT\FULL.DMP

IMP SYSTEM/SYS FILE=D:\EXPORT\FULL.DMP FULL=Y


INCTYPE=RESTORE

‫ ﻭﺍﻟﺘﻰ ﻫﻰ ﻫﻨﺎ‬CUMULATIVE ‫ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﻨﺴﺨﺔ ﺍﻟﺘﺭﺍﻜﻤﻴﺔ‬-3


.‫ ﻭﺫﻟﻙ ﻻﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‬INCTYPE=RESTORE ‫ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬D:\EXPORT\FULL1.DMP

IMP SYSTEM/SYS FILE=D:\EXPORT\FULL1.DMP FULL=Y


INCTYPE=RESTORE

48
‫ ﻭﺍﻟﺘﻰ ﻫﻰ ﻫﻨﺎ‬INCREMENTAL ‫ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﻨﺴﺦ ﺍﻟﺘﺯﺍﻴﺩﻴﺔ‬-4
.‫ ﻭﺫﻟﻙ ﻻﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‬INCTYPE=RESTORE ‫ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬D:\EXPORT\FULL2.DMP

IMP SYSTEM/SYS FILE=D:\EXPORT\FULL2.DMP FULL=Y


INCTYPE=RESTORE

‫ﻴﻤﻜﻥ ﺍﻻﺴﺘﻌﻼﻡ ﻋﻥ ﺍﻟﺘﺼﺩﻴﺭ ﻴﻭﺍﺴﻁﺔ‬


DBA_EXP_FILES
DBA_EXP_OBJECTS

49
‫‪:Data Pump‬‬
‫ﻭﻫﻰ ﻭﺴﻴﻠﺔ ﺍﺴﺘﺤﺩﺜﺘﻬﺎ ﺍﻭﺭﻜل ﻓﻰ ﺍﻹﺼﺩﺍﺭ ‪ Oracle 10g‬ﻟﺘﺼﺩﻴﺭ ﻭﺍﺴﺘﻴﺭﺍﺩ ﺍﻟﻜﺎﺌﻨﺎﺕ ﻭﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻤﻥ ﻭﺇﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻫﻰ ﺘﺸﺒﻪ ﺍﻟﻰ ﺤﺩ ﻤﺎ ﺍﻻﺩﺍﺓ ‪ Export/Import utilities‬ﻤﻥ ﺤﻴﺙ ﺍﻟﻨﺘﻴﺠﺔ‬
‫ﻭﻟﻜﻥ ﻓﻰ ﺍﻟﺘﻁﺒﻴﻕ ﻓﺈﻨﻬﺎ ﺘﺨﺘﻠﻑ ﻜﺜﻴﺭﹰﺍ‪.‬‬
‫ﺍﻟﻭﺴﻴﻠﺔ ‪ Data Pump‬ﺘﻨﺠﺯ ﺃﻋﻤﺎﻟﻬﺎ ﻓﻰ ﺍﻟﻤﺨﺩﻡ ﻭﻟﻜﻥ ﺒﺎﻟﻁﺒﻊ ﻴﺒﺩﺃ ﻋﻤﻠﻬﺎ ﺒﺎل‪User process‬‬
‫ﺒﺤﻴﺙ ﻴﺘﺼل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺄﺤﺩ ﺍﺩﻭﺍﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻤﻥ ﺜﻡ ﻴﺘﻡ ﺠﻤﻴﻊ ﺍﻟﻌﻤل ﻋﻥ ﻁﺭﻴﻕ ﺍل ‪Server‬‬
‫‪ Process‬ﻓﻰ ﺍﻟﻤﺨﺩﻡ )‪ ، (Server‬ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﺘﺤﺴﻥ ﺍﻷﺩﺍﺓ ﺒﺸﻜل ﻤﺜﻴﺭ ﻤﻘﺎﺭﻨﺔ ﻤﻊ ﺍل ‪Export/Import‬‬
‫‪ utilities‬ﻭﺫﻟﻙ ﻻﻨﻪ ﻴﻌﻤل ﻋﻠﻰ ﺍﻟﻤﺨﺩﻡ ﻭﻴﺘﺼل ﻤﺒﺎﺸﺭﺓ ﺍﻟﻰ ﺍل‪ Datafiles‬ﻭﺍل‪.SGA‬‬
‫ﻟﺤﻅﺔ ﺇﻨﻁﻼﻕ ﺍل‪ Data Pump Job‬ﻫﻨﺎﻙ ﻋﻠﻰ ﺍﻻﻗل ﺍﺜﻨﻴﻥ ﻤﻥ ﺍل‪Background Processes‬‬
‫ﺘﺒﺩﺃ ﺍﻟﻌﻤل ‪ ،‬ﺍﻻﻭل )‪ Data Pump Master Process (DMnn‬ﻭﺫﻟﻙ ﻟﻠﺘﺤﻜﻡ ﻓﻰ ﻋﻤل ﺍل‪ ، Job‬ﻭﺍﻟﺜﺎﻨﻰ‬
‫)‪ ، Worker Processes (DWnn‬ﻓﺈﺫﺍ ﻜﺎﻥ ﻫﻨﺎﻙ ﺍﻜﺜﺭ ﻤﻥ ‪ Jobs‬ﺘﻌﻤل ﻓﻰ ﻨﻔﺱ ﺍﻟﻠﺤﻅﺔ ﻓﺈﻥ ﻜل ‪Job‬‬
‫ﺘﻤﻠﻙ ‪ DMnn‬ﻭ ‪ DWnn‬ﺒﺄﺴﻤﺎﺀ ﺘﺩل ﻋﻠﻴﻬﺎ‪ .‬ﺃﻤﺎ ﺇﺫﺍ ﻜﺎﻨﺕ ﺍل‪ Job‬ﺘﻌﻤل ﻋﻠﻰ ﺍﻟﺘﻭﺍﺯﻯ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ‬
‫‪ Parallelism‬ﻓﺎﻥ ﺍل‪ DWnn‬ﻴﻘﻭﻡ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﺜﻨﻴﻥ ﺃﻭ ﺍﻜﺜﺭ ﻤﻥ ‪Parallel Execution Servers‬‬
‫)‪.(Pnnn‬‬
‫ﻜﺫﻟﻙ ﻋﻨﺩ ﻋﻤل ﺍل‪ Job‬ﻓﺈﻥ ﻫﻨﺎﻙ ﺍﺜﻨﻴﻥ ﻤﻥ ﺍﻟﺼﻔﻭﻑ ﻴﺘﻡ ﺘﻜﻭﻴﻨﻬﺎ ‪ ،‬ﺍﻻﻭل ‪، Control Queue‬‬
‫ﻭﺍﻟﺜﺎﻨﻰ ‪. Status Queue‬‬
‫ﺍﻴﻀﹰﺎ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻨﺎﺘﺠﺔ ﻤﻥ ﺍل‪ Data Pump‬ﺘﺤﺘﻭﻯ ﻋﻠﻰ ﺜﻼﺜﺔ ﺍﺸﻜﺎل ‪ ،‬ﺍﻻﻭل ‪ SQL File‬ﻭﻫﻭ‬
‫ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﻋﺒﺎﺭﺍﺕ ﻹﻨﺸﺎﺀ ﺍﻟﻜﺎﺌﻨﺎﺕ ‪ ،DDL Statements‬ﻭﺍﻟﺜﺎﻨﻰ ‪ Dump File‬ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﻤﺼﺩﺭﺓ ‪ ،‬ﻭﺍﻟﺜﺎﻟﺙ ‪ Log File‬ﻴﻭﻀﺢ ﺘﻔﺎﺼﻴل ﻋﻤل ﺍل‪.Job‬‬

‫‪50‬‬
‫‪:Directories‬‬
‫ﻭﻫﻨﺎ ﻻ ﺒﺩ ﻤﻥ ﺍﻟﺤﺩﻴﺙ ﻋﻥ ﻫﺫﺍ ﺍﻟﻤﻌﻨﻰ ﻓﻰ ﻫﺫﻩ ﺍﻟﻤﺭﺤﻠﺔ ‪ ،‬ﻭﺫﻟﻙ ﻷﻥ ﺍل‪ Data Pump‬ﺘﻘﺭﺃ‬
‫ﻭﺘﻜﺘﺏ ﺍﻟﻤﻠﻔﺎﺕ ﻓﻰ ﺍل‪ ، Oracle Directory‬ﻭﻋﻤﻭﻤﹰﺎ ﻓﺈﻥ ﺍل ‪Oracle Server‬‬
‫ﻟﻜﻰ ﻴﺴﺘﻁﻴﻊ ﻗﺭﺍﺀﺓ ﻭﻜﺘﺎﺒﺔ ﺍﻟﻤﻠﻔﺎﺕ ﻋﻠﻰ ﻤﺴﺎﺭﺍﺕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻴﺠﺏ ﺃﻥ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ﺍل‪Oracle Directory‬‬
‫‪ ،‬ﺇﺫﹰﺍ ﻓﺎل‪ Oracle Directory‬ﻴﺴﻤﺢ ﻟل‪ Oracle Server‬ﺒﺎﻟﺘﻌﺎﻤل ﻤﻊ ﺍﻟﻤﻠﻔﺎﺕ ﻋﻠﻰ ﻨﻅﺎﻡ ﻟﺘﺸﻐﻴل‪.‬‬
‫ﻤﻥ ﻴﻤﻠﻙ ﺍل‪ Oracle Directories‬ﺩﺍﺌﻤﹰﺎ ﻫﻭ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ SYS‬ﻭﻟﻜﻰ ﻴﻘﻭﻡ ﻤﺴﺘﺨﺩﻡ ﺒﺈﻨﺸﺎﺀ‬
‫‪ Oracle Directory‬ﻴﺠﺏ ﺃﻥ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪.CREATE DIRECTORY‬‬
‫ﻋﻤﻭﻤﹰﺎ ﺍل‪ Oracle Server‬ﻻ ﻴﻘﻭﻡ ﺒﺎﻟﺘﺄﻜﺩ ﻤﻥ ﺼﺤﺔ ﺍﻟﻤﺴﺎﺭ ﻋﻠﻰ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻋﻨﺩ ﺇﻨﺸﺎﺀ‬
‫ﺍل‪ ، Directory‬ﻓﺈﺫﺍ ﻜﺎﻥ ﺍﻟﻤﺴﺎﺭ ﺨﻁﺄ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻋﻨﺩ ﺇﻨﺸﺎﺀ ﺍل‪Directory‬‬
‫ﺍﻭ ﺃﻥ ﻤﺴﺘﺨﺩﻡ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻻ ﻴﻤﻠﻙ ﺼﺎﻟﺤﻴﺔ ﺍﻟﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﻤﺴﺎﺭ ﻓﺈﻥ ﺭﺴﺎﺌل ﺍﻟﺨﻁﺄ ﺴﺘﻅﻬﺭ‬
‫ﻋﻨﺩ ﻤﺤﺎﻭﻟﺔ ﺍﺴﺘﺨﺩﺍﻡ ﻫﺫﺍ ﺍل‪.Directory‬‬
‫ﺍﻟﻤﺘﻐﻴﺭ ‪ UTL_FILE_DIR‬ﻴﺴﻤﺢ ﻟل‪ Oracle‬ﻤﻥ ﺨﻼل ‪PL/SQL PROCEDURES‬‬
‫ﺒﺎﻟﻜﺘﺎﺒﺔ ﻓﻰ ﺍل‪. File System‬‬
‫ﺍﻻﻥ ﻟﻨﻔﺘﺭﺽ ﺃﻥ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﺭﻴﺩ ﻤﻨﺢ ﺍﻟﺼﻼﺤﻴﺔ ‪CREATE ANY‬‬
‫‪ DIRECTORY‬ﻟﻠﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﺤﺘﻰ ﻴﺴﺘﻁﻴﻊ ﻫﺫﺍ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺇﻨﺸﺎﺀ ‪ Oracle Directories‬ﻟﺘﺼﺩﻴﺭ‬
‫ﻭﺇﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ ﺍل‪.Data Pump‬‬

‫‪51‬‬
‫ﺍﻻﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻗﺎﻡ ﺒﺈﻨﺸﺎﺀ ‪ Directory‬ﺍﺴﻤﻪ ‪ ، DIRECT‬ﻭﺫﻟﻙ ﺒﻌﺩﻤﺎ ﻤﻨﺤﻪ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﺼﻼﺤﻴﺔ ﻟﺫﻟﻙ‪.‬‬
‫ﻴﺠﺏ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﻤﺴﺎﺭ ﻋﻠﻰ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‪.‬‬

‫‪52‬‬
‫‪Use Data Pump to Export Data -3‬‬
‫ﺴﻨﺴﺘﺨﺩﻡ ﻫﻨﺎ ﺍل‪ Data Pump‬ﻟﺘﺼﺩﻴﺭ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻟﻜﺎﺌﻨﺎﺕ ‪ ،‬ﻭﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ‪:‬‬
‫‪ -1‬ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﺍﻭل‪.‬‬
‫‪ -2‬ﺘﺼﺩﻴﺭ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ‪.‬‬
‫‪ -3‬ﺘﺼﺩﻴﺭ ‪.Tablespace‬‬
‫‪ -4‬ﺘﺼﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪: TABLES EXPORT‬‬


‫ﻭﻟﻨﻔﺘﺭﺽ ﻫﻨﺎ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻴﺭﻴﺩ ﺍﻥ ﻴﺼﺩﺭ ﺍﻟﺠﺩﺍﻭل ‪ EMPLOYEE & DEPT & JOBS‬ﺍﻟﺘﻰ‬
‫ﻴﻤﻠﻜﻬﺎ‪.‬‬

‫‪Expdp vbs/vbs dumpfile=tables.dmp‬‬


‫‪directory=direct tables=employee,dept,jobs‬‬

‫‪53‬‬
‫ﻫﻜﺫﺍ ﺘﻡ ﺘﺼﺩﻴﺭ ﺍﻟﺠﺩﺍﻭل ﺍﻟﺜﻼﺙ ﻭﺫﻟﻙ ﺒﻭﺍﺴﻁﺔ ‪ JOB‬ﻗﺎﻤﺕ ﺒﺈﻨﺠﺎﺯ ﺍﻟﻤﻬﻤﺔ ‪ ،‬ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺍﻟﺘﺤﻜﻡ‬
‫ﻭﺍﻹﺴﺘﻌﻼﻡ ﻋﻥ ﻫﺫﻩ ﺍل‪ JOB‬ﻭﻏﻴﺭﻫﺎ ‪ ،‬ﻭﻟﻜﻥ ﺴﻨﺘﺤﺩﺙ ﻋﻥ ﺫﻟﻙ ﻻﺤﻘﺎ ‪.‬‬
‫ﻋﻤﻭﻤﺎ ﺍﻻﻥ ﺘﻡ ﺇﻨﺸﺎﺀ ﻤﻠﻑ ﺍﺴﻤﻪ ‪ TABLES.DMP‬ﻤﻭﺠﻭﺩ ﻓﻰ ‪ DIRECTORY‬ﻴﺴﻤﻰ ‪.DIRECT‬‬

‫‪:SCHEMAS EXPORT‬‬
‫‪:‬‬
‫ﻭﻟﻨﻔﺘﺭﺽ ﺃﻥ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﺭﻴﺩ ﺃﻥ ﻴﺼﺩﺭ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪VBS & MAIN‬‬

‫‪expdp SYSTEM/SYS dumpfile=VBSMAIN.dmp‬‬


‫‪directory=direct SCHEMAS=VBS,MAIN JOB_NAME=JB1‬‬

‫ﻟﻘﺩ ﺘﻡ ﺘﺼﺩﻴﺭ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ‪ VBS & MAIN‬ﺒﻭﺍﺴﻁﺔ ﺍل‪ JOB‬ﺍﻟﺘﻰ ﺘﺴﻤﻰ ‪.JB1‬‬

‫‪54‬‬
‫ﻭﻋﻤﻭﻤﹰﺎ ﻫﻨﺎﻙ ﻋﺩﺩ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ‪ ،‬ﻭﻟﻌﺭﺽ ﻫﺫﻩ ﺍﻟﺨﻴﺎﺭﺍﺕ ﻨﻜﺘﺏ ﺍﻻﻤﺭ –‬
‫‪HELP‬‬

‫‪55‬‬
‫‪DATABASE EXPORT‬‬

‫ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭ ﻤﻥ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪ EXP_FULL_DATABASE‬ﺘﺼﺩﻴﺭ ﻗﺎﻋﺩﺓ‬


‫ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪expdp SYSTEM/SYS dumpfile=FULL.dmp‬‬


‫‪directory=direct FULL=Y JOB_NAME=JB2‬‬

‫ﻻﺤﻁ ﻤﻌﻰ ﺃﻨﻨﺎ ﺍﺴﺘﺨﺩﻤﻨﺎ ﺍﻟﺨﻴﺎﺭ ‪ FULL=Y‬ﻟﺘﺼﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺫﻟﻙ ﺒﺈﺴﺘﺨﺩﺍﻡ ﺍل‪ JOB‬ﺍﻟﺘﻰ ﺘﺴﻤﻰ‬
‫‪.JB2‬‬

‫ﻴﻤﻜﻨﻙ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﺍل‪ JOB‬ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﻔﺘﺎﺡ ‪CTRL+C‬‬


‫ﺒﻌﺩ ﺫﻟﻙ ﻴﻤﻜﻥ ﻜﺘﺎﺒﺔ ﺍﻻﻤﺭ ﻟﻌﺭﺽ ﺤﺎﻟﺔ ﺍل‪.JOB‬‬
‫ﻭﻜﺫﻟﻙ ﺍﻻﻤﺭ ‪ STOP_JOB‬ﻹﻴﻘﺎﻑ ﺍل‪.JOB‬‬
‫ﻭﺍﻴﻀﹰﺎ ﺍﻻﻤﺭ ‪ START_JOB‬ﻟﻌﻤل ﺍل‪.JOB‬‬
‫ﻓﻰ ﺍﻟﺸﺎﺸﺔ ﺍﻋﻼﻩ ﻗﻤﻨﺎ ﺒﻜﺘﺎﺒﺔ ﺍﻻﻤﺭ ‪ STATUS‬ﻓﻌﺭﺽ ﻟﻨﺎ ﺤﺎﻟﺔ ﺍل‪.JOB‬‬

‫‪56‬‬
‫ﻫﻨﺎ ﻗﻤﻨﺎ ﺒﺈﻴﻘﺎﻕ ﺍل‪ JOB‬ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪ ، STOP_JOB‬ﻻﺤﻅ ﻤﻌﻰ ﺒﻌﺩ ﺫﻟﻙ ﻗﻤﻨﺎ ﺒﺈﻋﺎﺩﺓ ﺍل‪JOB‬‬
‫ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ ‪ ATTACH‬ﻓﻘﺎﻡ ﺒﻌﺭﺽ ﺍل‪ ، JOB‬ﺍﻻﻥ ﻴﻤﻜﻥ ﺘﺸﻐﻴل ﺍل‪ JOB‬ﻤﻥ ﺠﺩﻴﺩ ﻹﻜﻤﺎل ﻋﻤﻠﻴﺔ‬
‫ﺍﻟﺘﺼﺩﻴﺭ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪ START_JOB‬ﻜﻤﺎ ﺴﻨﺸﺎﻫﺩ ﻓﻰ ﺍﻟﺸﻜل ﺍﺩﻨﺎﻩ‪.‬‬

‫ﺍﻻﻥ ﺍل‪ JOB‬ﺘﻌﻤل ﺒﻌﺩﻤﺎ ﺘﻡ ﺍﻴﻘﺎﻓﻬﺎ ﻤﻥ ﻗﺒل ﻭﻴﻤﻜﻥ ﺍﻻﻥ ﻤﻌﺭﻓﺔ ﺤﺎﻟﺔ ﺍل‪ JOB‬ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪.STATUS‬‬

‫ﻻ ﺸﻙ ﺃﻥ ﺍﻨﻙ ﻋﺭﻓﺕ ﺍﻻﻥ ﻤﺩﻯ ﺍﻟﻤﺭﻭﻨﺔ ﺍﻟﺘﻰ ﺘﻭﻓﺭﻫﺎ ﻟﻨﺎ ﺍﻟﻭﺴﻴﻠﺔ ‪ .DATA PUMP‬ﻜﻤﺎ ﻴﻤﻜﻥ‬
‫ﻼ ﺍﻻﻤﺭ ‪ PARALLEL ,‬ﻭﺫﻟﻙ‬
‫ﺍﺴﺘﺨﺩﺍﻡ ﺍﻭﺍﻤﺭ ﺍﺨﺭﻯ ﻴﻤﻜﻥ ﻋﺭﻀﻬﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻟﺨﻴﺎﺭ ‪ .–HELP‬ﻤﺜ ﹰ‬
‫ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻘﻨﻭﺍﺕ ﺍﻟﻠﺘﻰ ﺘﻌﻤل ﻋﻠﻰ ﺍﻟﺘﻭﺍﺯﻯ ﻓﻰ ﺘﻔﺱ ﺍل‪ JOB‬ﻭﻏﻴﺭﻩ ﺍﻟﻜﺜﻴﺭ ﻤﻥ ﺍﻻﻭﺍﻤﺭ‪.‬‬

‫‪57‬‬
‫‪Use Data Pump to Import Data -4‬‬
‫ﺴﻨﺴﺘﺨﺩﻡ ﻫﻨﺎ ﺍل‪ Data Pump‬ﻹﺴﺘﻴﺭﺍﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻟﻜﺎﺌﻨﺎﺕ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪ .‬ﻭﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ‬
‫ﺍﻟﻤﺘﺎﺤﺔ‪-:‬‬
‫‪ -1‬ﺍﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﺍﻭل‪.‬‬
‫‪ -2‬ﺍﺴﺘﻴﺭﺍﺩ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ‪.‬‬
‫‪ -3‬ﺍﺴﺘﻴﺭﺍﺩ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﻭﻗﺒل ﺍﻟﺒﺩﺀ ﻓﻰ ﻤﻨﺎﻗﺸﺔ ﻫﺫﻩ ﺍﻟﺨﻴﺎﺭﺍﺕ ﻴﺠﺏ ﺍﻟﺘﻨﺒﻴﻪ ﺇﻟﻰ ﺃﻥ ﺠﻤﻴﻊ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ ﻓﻰ ﺍﻻﺴﺘﻴﺭﺍﺩ ﻴﻤﻜﻨﻙ‬
‫ﻤﺸﺎﻫﺩﺘﻬﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪.–HELP‬‬

‫‪58‬‬
‫‪TABLES IMPORT‬‬
‫ﻭﻟﻨﻔﺘﺭﺽ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻓﻘﺩ ﺍﻟﺠﺩﻭل ‪ EMPLOYEE‬ﻭﻴﺭﻴﺩ ﺍﺴﺘﻴﺭﺍﺩﻩ ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ‪.‬‬

‫‪impdp VBS/VBS dumpfile=tables.dmp‬‬


‫‪directory=direct tables=employee‬‬

‫ﻗﻤﻨﺎ ﺒﻌﻤل ﺍﺴﺘﻴﺭﺍﺩ ﻟﻠﺠﺩﻭل ‪ EMPLOYEE‬ﻴﻤﻜﻥ ﺍﻟﺘﺄﻜﺩ ﺒﻌﻤل ﺇﺴﺘﻌﻼﻡ ﻟﺠﺩﺍﻭل ﺍﻟﻤﺴﺘﺨﺩﻡ ‪.VBS‬‬

‫‪59‬‬
‫‪SCHEMA IMPORT‬‬
‫ﻭﻟﻨﻔﺘﺭﺽ ﺍﻥ ﻟﺩﻴﻨﺎ ﻤﺴﺘﺨﺩﻡ ﺠﺩﻴﺩ ﻴﺴﻤﻰ ‪ ، NEW‬ﻭﻨﺭﻴﺩ ﺍﺴﺘﻴﺭﺍﺩ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪VBS‬‬
‫ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﻟﻠﻤﺴﺘﺨﺩﻡ ‪.NEW‬‬

‫‪impdp NEW/NEW dumpfile=VBSMAIN.dmp‬‬


‫‪directory=direct SCHEMAS=VBS JOB_NAME=JB1‬‬

‫ﻗﻤﻨﺎ ﺒﺈﺘﺴﻴﺭﺍﺩ ﺒﻴﺎﻨﺎﺕ ﻭﻜﺎﺌﻨﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ VBS‬ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ﺇﻟﻰ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪.NEW‬‬
‫ﻜﺫﻟﻙ ﻴﻤﻜﻥ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﺍل‪ JOB‬ﺒﻭﺍﺴﻁﺔ ﺍﻻﻭﺍﻤﺭ ‪STATUS AND START_JOB AND‬‬
‫‪.STOP_JOB‬‬

‫‪60‬‬
‫‪DATABASE IMPORT‬‬
‫ﻴﻤﻜﻥ ﺍﺴﺘﻴﺭﺍﺩ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ ﺍل‪ Data Pump‬ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ‬

‫‪impdp SYSTEM/SYS dumpfile=FULL1.dmp‬‬


‫‪directory=direct FULL=Y‬‬

‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﺈﺴﺘﻴﺭﺍﺩ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﺍل‪ JOB‬ﻜﻤﺎ ﻓﻌﻠﻨﺎ ﻋﻨﺩ ﺘﺼﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺒﻭﺍﺴﻁﺔ ﺍل‪.Data Pump‬‬
‫ﺍﻴﻀﹰﺎ ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻭﺍﻤﺭ ﺍﺨﺭﻯ ﻤﺘﺎﺤﺔ ﻴﻤﻜﻥ ﻤﺭﺍﺠﻌﺘﻬﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪.Help‬‬

‫‪:‬‬

‫‪61‬‬
‫ﻣﻴﺰات وﳏﺎﺳﻦ ال‪:Data Pump‬‬
‫ﻤﻥ ﺍﻫﻡ ﻤﻴﺯﺍﺕ ﺍل‪ Data Pump‬ﻤﻘﺎﺭﻥ ﺒﺎﻟﻁﺭﻴﻘﺔ ﺍﻟﻌﺎﺩﻴﺔ ﻫﻰ ﺍﻟﺴﺭﻋﺔ ‪ ،‬ﻓﻬﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﺍﺴﺭﻉ ﻤﻥ‬
‫ﺍﻟﻁﺭﻴﻕ ﺍﻟﻌﺎﺩﻴﺔ ﺒﺤﻭﺍﻟﻰ ‪ 10‬ﺍﻟﻰ ‪ 15‬ﻤﺭﺓ ‪.‬‬
‫ﻜﻤﺎ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ‪ Job‬ﻟﻌﻤل ﺍﻟﺘﺼﺩﻴﺭ ﺃﻭ ﺍﻻﺴﺘﻴﺭﺍﺩ ﻤﻤﺎ ﻴﺴﻬل ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﺩﻴﺭ‬
‫ﻭﺫﻟﻙ ﺒﻭﺍﺴﻁﻭ ﺍﻭﻤﺭ ﻴﻤﻜﻥ ﻤﻥ ﺨﻼﻟﻬﺎ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﺍل‪ Jobs‬ﺒﺤﻴﺙ ﻴﻤﻜﻥ ﺘﻭﻗﻴﻑ ﺍل‪ Job‬ﺇﺫﺍ ﻜﺎﻥ ﻫﻨﺎﻙ‬
‫ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍل‪ Processes‬ﺘﻌﻤل ﻭﺘﺸﻐﻴﻠﻬﺎ ﻓﻰ ﺍﻟﻭﻗﺕ ﺍﻟﻤﻨﺎﺴﺏ‪.‬‬

‫ﻴﻤﻜﻥ ﺍﻹﺴﺘﻌﻼﻡ ﺒﻭﺍﺴﻁﺔ‬


‫‪DBA_DATAPUMP_JOBS‬‬
‫‪DBA_DATABPUMP_SESSIONS‬‬

‫‪62‬‬
‫‪:SQL*Loader‬‬
‫ﺍﺴﺘﺨﺩﻤﻨﺎ ﺍل‪ Data Pump‬ﻟﻘﺭﺍﺀﺓ ﻭﻜﺘﺎﺒﺔ ﻭﺍﺭﺴﺎل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺍﺨﺭﻯ ﻭﻟﻜﻥ‬
‫ﺠﻤﻴﻊ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻡ ﺍﻟﺘﻌﺎﻤل ﻤﻌﻬﺎ ﻜﺎﻨﺕ ﻓﻰ ﺍﻟﺤﻘﻴﻘﺔ ﻋﺒﺎﺭﺓ ﻋﻥ ‪ ، Oracle proprietary format‬ﻭﻟﻜﻥ‬
‫ﻤﺎﺫﺍ ﻟﻭ ﺍﺭﺩﻨﺎ ﻨﻘل ﺒﻴﺎﻨﺎﺕ ﺇﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭﺭﻜل ﻭﻫﺫﻩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﻠﻑ ﺍﻭ ﻤﻠﻔﺎﺕ ﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ‬
‫ﺒﺎﻯ ﺒﺭﻨﺎﻤﺞ ﺍﺨﺭ ‪ ،‬ﻫﻨﺎ ﻻ ﻴﻤﻜﻥ ﺃﻥ ﻨﺴﺘﺨﺩﻡ ﺍل‪ Data Pump‬ﻭﺇﻨﻤﺎ ﻨﺴﺘﺨﺩﻡ ﺍل‪ SQL*Loader‬ﻓﻬﻰ ﺘﻘﻭﻡ‬
‫ﻴﺘﺤﻤﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﻤﻠﻔﺎﺕ ﺨﺎﺭﺠﻴﺔ ﺍﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﺍﻟﺸﻜل ﺍﻋﻼﻩ ﻴﻭﻀﺢ ﻤﻜﻭﻨﺎﺕ ﻋﻤل ﺍل‪: SQL*Loader‬‬

‫‪63‬‬
‫‪:Input Data Files -1‬‬
‫ﻭﻫﻭ ﺍﻟﻤﻠﻑ ﺍﻭ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﺘﺤﻭﻯ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻨﺭﻴﺩ ﻨﻘﻠﻬﺎ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ‬
‫ﺍل‪ .SQL*Loader‬ﻭﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻤﺴﺎﺭﻩ ﻓﻰ ﻤﻠﻑ ﺍل‪ Control File‬ﺍﻟﺫﻯ ﻴﺘﻡ ﺘﻬﻴﺌﺘﻪ‬
‫ﺒﻭﺍﺴﻁﺔ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻟﺫﻯ ﺴﻨﺘﺤﺩﺙ ﻋﻨﻪ ﻻﺤﻘﹰﺎ ‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻥ ﺘﻀﻤﻴﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺭﺍﺩ ﻨﻘﻠﻬﺎ‬
‫ﺇﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻤﻠﻑ ﺍل‪ Control File‬ﻭﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻻ ﻨﺤﺘﺎﺝ ﻟﻤﻠﻑ ﺍل‪.Input File‬‬
‫ﺸﻜل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﺍﺤﺩ ﺜﻼﺙ‪-:‬‬
‫‪:Fixed-record format -1‬‬
‫ﻭﻫﻰ ﺍﻥ ﺘﻜﻭﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﻰ ﺸﻜل ﺼﻔﻭﻑ ﻤﺘﺴﺎﻭﻴﺔ ﺍﻟﻁﻭل ‪،‬‬
‫ﻭﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻴﺭﻓﻊ ﺍﻻﺩﺍﺀﺓ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻤﻴل ﻭﻟﻜﻥ ﻗﻠﻴل ﺍﻟﻤﺭﻭﻨﺔ ‪.‬‬
‫ﻼ ﻫﺫﺍ ﺍﻟﻤﻠﻑ‪.‬‬
‫ﻭﺍﻟﻴﻙ ﻤﺜ ﹰ‬

‫‪Mohammed,ali‬‬
‫‪Ahmed,yousif‬‬
‫‪Mogahid,omer‬‬
‫ﻻﺤﻅﺕ ﻤﻌﻰ ﺍﻥ ﺠﻤﻴﻊ ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ‪ Input File‬ﻤﺘﺴﺎﻭﻴﺔ ﺍﻟﻁﻭل‬
‫ﻭﺍﻥ ﻁﻭل ﺠﻤﻴﻊ ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ‪ 12‬ﺤﺭﻑ‪.‬‬

‫‪:Variable-record format -2‬‬


‫ﻭﻫﻰ ﺃﻥ ﺘﻜﻭﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﻰ ﺸﻜل ﺼﻔﻭﻑ ﻏﻴﺭ ﻤﺘﺴﺎﻭﻴﺔ ﺍﻟﻁﻭل ‪،‬‬
‫ﻭﻟﻜﻥ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻁﻭل ﺍﻯ ﺼﻑ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺼﻑ ‪ ،‬ﺍﻯ ﻴﺘﻡ ﺘﺨﺼﻴﺹ ﺨﺎﻨﺎﺕ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻯ‬
‫ﺘﺤﺩﺩ ﻁﻭل ﺍﻟﺼﻑ ‪ ،‬ﻭﻫﺫﺍ ﺍﻟﻨﻭﻉ ﺍﻜﺜﺭ ﻤﺭﻭﻨﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ﺍﻟﺴﺎﺒﻕ ﻟﻜﻥ ﺍﻻﺩﺍﺀ ﻓﻴﻪ ﺍﻗل ﻤﻥ‬
‫ﺍﻟﻨﻭﻉ ﺍﻻﻭل‪.‬‬
‫ﻼ ﻫﺫﺍ ﺍﻟﻤﻠﻑ‬
‫ﻭﺍﻟﻴﻙ ﻤﺜ ﹰ‬

‫‪015Mohammed,ahmed‬‬
‫‪010Ahmed,ali‬‬
‫‪011telal,omer‬‬
‫ﻟﻘﺩ ﺘﻡ ﺤﺠﺯ ﺍﻭل ﺜﻼﺙ ﺨﺎﻨﺎﺕ ﻟﺘﺤﺩﻴﺩ ﻁﻭل ﺍﻟﺼﻑ‪.‬‬

‫‪64‬‬
‫‪:Stream-record format -3‬‬
‫ﻭﻫﻰ ﺃﻥ ﺘﻜﻭﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﻰ ﺸﻜل ﺼﻔﻭﻑ ﻏﻴﺭ ﻤﺘﺴﺎﻭﻴﺔ ﺍﻟﻁﻭل‬
‫ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻁﻭل ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺼﻔﻭﻑ ﻤﻤﺎ ﻴﺘﻁﻠﺏ ﻋﻤل ﻤﺴﺢ ﻜﺎﻤل‬ ‫ﻭﻻ‬
‫ﻟﻠﺼﻔﻭﻑ ﻗﺒل ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻤﻴل ﻟﺘﺤﺩﻴﺩ ﻁﻭل ﺍﻟﺼﻔﻭﻑ ‪ ،‬ﻟﺫﻟﻙ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﺍﻜﺜﺭ‬
‫ﻤﻥ ﺍﻟﻨﻭﻋﻴﻥ ﺍﻟﺴﺎﺒﻘﻴﻥ ﻟﻜﻥ ﺒﺎﻟﻁﺒﻊ ﻴﻘﻠل ﻤﻥ ﺍﻻﺩﺍﺀ‪.‬‬ ‫ﻤﺭﻭﻨﻪ‬
‫ﻼ ﻫﺫﺍ ﺍﻟﻤﻠﻑ‪.‬‬
‫ﻭﺍﻟﻴﻙ ﻤﺜ ﹰ‬

‫‪Mohammed,ahmed‬‬
‫‪Ahmed,ali‬‬
‫‪telal,omer‬‬

‫ﻟﻡ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻁﻭل ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺼﻔﻭﻑ ﻜﻤﺎ ﺍﻥ ﺍﻟﺼﻔﻭﻑ ﻏﻴﺭ ﻤﺘﺴﺎﻭﻴﺔ‪.‬‬

‫‪65‬‬
‫‪:Control File -2‬‬
‫ﻭﻫﻭ ﻤﻠﻑ ﻨﺼﻰ ﻴﺘﻡ ﻜﺘﺎﺒﺘﻪ ﻭﺘﻬﻴﺌﺘﻪ ﺒﻭﺍﺴﻁﺔ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻻﺒﺩ ﻤﻨﻪ‬
‫ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺘﺤﻤﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﺤﻴﺙ ﻴﺤﺘﻭﻯ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻋﻠﻰ ﻤﻜﺎﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ‬
‫ﻨﺭﻴﺩ ﺘﺤﻤﻴﻠﻬﺎ ﻤﻥ ﺨﻼل ﺘﺤﺩﻴﺩ ﻤﻠﻑ ﺍل‪ Input Data‬ﺍﻭ ﻤﻥ ﺨﻼل ﺍﺤﺘﻭﺍﺌﻪ ﻋﻠﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺭﺍﺩ‬
‫ﺘﺤﻤﻴﻠﻬﺎ ﻭﻜﺫﻟﻙ ﻴﺤﺩﺩ ﻜﻴﻔﻴﺔ ﺘﺤﻤﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻤﻜﺎﻥ ﺇﻨﺸﺎﺀ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻻﺨﺭﻯ ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ‬
‫ﺍﻟﻬﺎﻤﺔ‬

‫‪load data‬‬
‫"‪infile 'fixed.dat' "fix 15‬‬
‫‪inset into table names‬‬
‫'‪fields terminated by ',‬‬
‫)‪(first,last‬‬

‫ﻫﺫﺍ ﻨﻤﻭﺯﺝ ﻟﻤﻠﻑ ﺍل‪ Control File‬ﺤﻴﺙ ﺘﻡ ﻓﻴﻪ ﺘﺤﺩﻴﺩ ﻤﻠﻑ ﺍل‪ Input File‬ﻭﻜﺫﻟﻙ ﺸﻜل‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ fixed-record‬ﻭﺍﻥ ﻁﻭل ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﺍﻟﻤﻠﻑ ﺍﻟﻤﺭﺍﺩ ﺘﺤﻤﻴﻠﻪ ‪ 15‬ﺤﺭﻑ ﻭﺍﻥ‬
‫ﺍﻟﻔﻭﺍﺼل ﺒﻴﻥ ﺍﻟﺤﻘﻭل ﺒﺎﻟﺤﺭﻑ'‪.',‬‬

‫ﻭﺍﻟﻴﻙ ﻨﻤﻭﺯﺝ ﺍﺨﺭ ﻟﻤﻠﻑ ﺍل‪.Control File‬‬

‫‪load data‬‬
‫"‪infile 'names.dat' "var 3‬‬
‫‪into table names‬‬
‫'‪fields terminated by ',‬‬
‫)‪(first,last‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﻫﻨﺎ ﺍﻨﻪ ﺘﻡ ﺘﺤﺩﻴﺩ ﺸﻜل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻴﺘﻡ ﺘﺤﻤﻴﻠﻬﺎ ﻓﻰ ﺸﻜل ‪Variable-record‬‬
‫ﻭﺘﻡ ﺘﺤﺩﻴﺩ ﺜﻼﺙ ﺨﺎﻨﺎﺕ ﻟﺘﺤﺩﻴﺩ ﻁﻭل ﺍﻟﺼﻔﻭﻑ ﻭﺍﻥ ﺍﻟﻔﻭﺍﺼل ﺒﻴﻥ ﺍﻟﺤﻘﻭل ﺒﺎﻟﺤﺭﻑ '‪.',‬‬

‫ﻭﺍﻟﻴﻙ ﻨﻤﻭﺯﺝ ﺍﺨﺭ ﻟﻤﻠﻑ ﺍل‪.Control File‬‬

‫‪66‬‬
‫‪load data‬‬
‫"'‪infile 'names.dat' "str '\n‬‬
‫‪into table names‬‬
‫'‪fields terminated by ',‬‬
‫)‪(first,last‬‬

‫ﻫﻨﺎ ﺘﻡ ﺘﺤﺩﻴﺩ ﺃﻥ ﺸﻜل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺭﺍﺩ ﺘﺤﻤﻴﻠﻬﺎ ﻫﻰ ﻓﻰ ﺸﻜل ‪ Stream-record‬ﻭﺃﻥ‬


‫ﺍﻟﺼﻔﻭﻑ ﺘﻨﺘﻬﻰ ﺒﻨﻬﺎﻴﺔ ﺍﻟﺼﻑ ﻭﺒﺩﺍﻴﺔ ﺍﻟﺼﻑ ﺍﻟﺠﺩﻴﺩ ﻭﺍﻥ ﺍﻟﻔﺎﺼل ﺒﻴﻥ ﺍﻟﺤﻘﻭل ﻴﻜﻭﻥ‬
‫ﺒﺎﻟﺤﺭﻑ '‪.',‬‬

‫‪:Log File -3‬‬


‫ﻭﻫﻭ ﻤﻠﻑ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻩ ﺃﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺘﻨﻔﻴﺫ ﺍﻟﺘﺤﻤﻴل ﺒﻭﺍﺴﻁﺔ ﺍل‪ ، SQL Loader‬ﻭﺇﺫﺍ ﻓﺸﻠﺕ‬
‫ﻋﻤﻠﻴﺔ ﺇﻨﺸﺎﺀ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﺈﻥ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻤﻴل ﺴﺘﺘﻭﻗﻑ ‪ ،‬ﻭﻴﺤﺘﻭﻯ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻋﻠﻰ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﻋﻤﻠﻴﺔ‬
‫ﺍﻟﺘﺤﻤﻴل ﻭﺍﻻﺨﻁﺎﺀ ﺍﻟﺘﻰ ﺤﺩﺜﺕ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻤﻴل‪.‬‬

‫‪:Bad File -4‬‬


‫ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺍﻟﺴﺠﻼﺕ ﺍﻟﺘﻰ ﺘﻡ ﺭﻓﻀﻬﺎ ﻭﺫﻟﻙ ﻷﻥ ﺸﻜﻠﻬﺎ ﻏﻴﺭ ﻤﺘﻭﺍﻓﻕ ﻤﻊ ﺤﻘﻭل‬
‫ﺍﻟﺠﺩﻭل ‪ ،‬ﻓﺎﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻤﻴل ﻭﻋﻨﺩ ﻋﻤﻠﻴﺔ ﺍﻀﺎﻓﺔ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺍﻟﺠﺩﻭﺍل ﺘﻜﻭﻥ ﻫﻨﺎﻙ ﺒﻌﺽ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻏﻴﺭ ﻤﺘﻭﺍﻓﻘﺔ‬
‫ﻤﻊ ﺍﻟﺤﻘﻭل ﻓﻴﺘﻡ ﺭﻓﻀﻬﺎ ﻭﺘﺨﺯﻴﻨﻬﺎ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ‪.‬‬

‫‪:Discard File -5‬‬


‫ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻩ ﻓﻘﻁ ﻋﻨﺩﻤﺎ ﻨﺭﻴﺩ ﺫﻟﻙ ‪ ،‬ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩﻩ ﻓﻰ ﻤﻠﻑ ﺍل‪، Control File‬‬
‫ﻭﻤﻬﻤﺔ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﺃﻨﻪ ﻴﺤﻭﻯ ﺍﻟﺴﺠﻼﺕ ﺍﻟﺘﻰ ﺘﻡ ﺭﻓﻀﻬﺎ ﻨﺘﻴﺠﺔ ﻻﻨﻬﺎ ﻏﻴﺭ ﻤﺘﻭﺍﻓﻘﺔ ﻤﻊ ﺸﺭﻭﻁ ﺍﻟﺘﺤﻤﻴل ‪.‬‬

‫‪67‬‬
‫ﻁﺭﻴﻘﺔ ﺍﻟﺘﺤﻤﻴل‪:‬‬
‫ﻫﻨﺎﻙ ﻁﺭﻴﻘﺘﻴﻥ ﻟﻌﻤﻠﻴﺔ ﺘﺤﻤﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ ﺍل‪:SQL*Loader‬‬
‫‪:Conventional Path Load -1‬‬
‫ﻓﻰ ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﻴﺘﻡ ﺒﻨﺎﺀ ﻤﺼﻔﻭﻓﺔ ﻤﻥ ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﺍﻟﺯﺍﻜﺭﺓ ﻭﻤﻥ ﺜﻡ ﻴﺘﻡ ﺍﻀﺎﻓﺘﻬﺎ‬
‫ﻟﻠﺠﺩﺍﻭل ﺒﻭﺍﺴﻁﺔ ‪ SQL INSERT statement‬ﻟﺘﺤﻤﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻘﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪:Direct Path Load‬‬ ‫‪-2‬‬


‫ﻓﻰ ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﻴﺘﻡ ﺒﻨﺎﺀ ﻜﺘل)‪ (Blocks‬ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻤﻥ ﺜﻡ ﺤﻔﻅﻬﺎ ﻤﺒﺎﺸﺭﺓ‬
‫ﻓﻰ ﺍل‪ Extent‬ﺍﻟﺫﻯ ﻴﺤﻭﻯ ﺍﻟﺠﺩﻭل ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪.‬‬

‫‪68‬‬
‫ﻭﺍﻻﻥ ﻟﻨﻘﻭﻡ ﺒﻤﺘﺎﺒﻌﺔ ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻰ ﺍﻟﺫﻯ ﻴﻭﻀﺢ ﻋﻤﻠﻴﺔ ﺘﺤﻤﻴل ﻤﻠﻑ ﻨﺼﻰ ﺍﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭﺭﻜل ﺒﻭﺍﺴﻁﺔ‬
‫ﺍل‪.SQL*Loader‬‬

‫ﻟﻨﻔﺘﺭﺽ ﺍﻨﻨﺎ ﻨﺭﻴﺩ ﺘﺤﻤﻴل ﺍﻟﻤﻠﻑ ﺍﻟﻨﺼﻰ ﺍﻟﺘﺎﻟﻰ ﻭﺍﺴﻤﻪ ‪c:\name.txt‬‬


‫ﻻﺤﻅﻰ ﻤﻌﻰ ﻴﺤﺘﻭﻯ ﺍﻟﻤﻠﻑ ﻋﻠﻰ ﺴﺘﺔ ﺼﻔﻭﻑ ﻭﺍﻥ ﻁﻭل ﺍﻟﺼﻔﻭﻑ ﻏﻴﺭ ﻤﺘﺎﺴﻭﻯ ﻭﻟﻡ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻁﻭل‬
‫ﺍﻟﺼﻔﻭﻑ ﻓﻰ ﺒﺩﺍﻴﺘﻬﺎ ﺇﺫﺍ ﺸﻜل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻋﻠﻰ ﺸﻜل ‪ ، Stream-record‬ﻭﻨﺭﻴﺩ ﺘﺤﻤﻴل ﻫﺫﻩ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﺠﺩﻭل ‪ tname‬ﺍﻟﺘﺎﺒﻊ ﻟﻠﻤﺴﺘﺨﺩﻡ ‪.test‬‬

‫ﺍﻟﺨﻁﻭﺓ ﺍﻻﻭﻟﻰ‪ :‬ﻨﻘﻭﻡ ﺒﺎﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﺠﺩﻭل ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪.‬‬

‫ﺍﻟﺠﺩﻭل ﺇﺫﹰﺍ ﻻ ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﺍﻟﺨﻁﻭﺓ ﺍﻟﺜﺎﻨﻴﺔ‪ :‬ﻨﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﺍل‪.Control File‬‬

‫‪69‬‬
‫ﻻﺤﻅ ﻤﻌﻰ ﺍﻨﻰ ﺍﺴﺘﺨﺩﻤﺕ ﺍﻻﻤﺭ ‪ INSERT‬ﻭﺫﻟﻙ ﻻﻥ ﺍﻟﺠﺩﻭل ﻻ ﻴﺤﻭﻯ ﺒﻴﺎﻨﺎﺕ ‪ ،‬ﺍﻤﺎ ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﺠﺩﻭل‬
‫ﻴﺤﻭﻯ ﺒﻴﺎﻨﺎﺕ ﻭﻨﺭﻴﺩ ﺃﻥ ﻨﻀﻴﻑ ﺍﻟﻴﻪ ﺒﻴﺎﻨﺎﺕ ﺠﺩﻴﺩﻴﺔ ﻓﻨﺴﺘﺨﺩﻡ ﺍﻻﻤﺭ ‪ APPEND‬ﺍﻤﺎ ﺇﺫﺍ ﻜﻨﺎ ﻨﺭﻴﺩ ﻤﺴﺢ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻘﺩﻴﻤﺔ ﻭﺇﻀﺎﻓﺔ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺠﺩﻴﺩﺓ ﻓﻨﺴﺘﺨﺩﻡ ﺍﻻﻤﺭ ‪.TRUNCATE‬‬

‫ﺍﻟﺨﻁﻭﺓ ﺍﻟﺜﺎﻟﺜﺔ‪ :‬ﻨﻘﻭﻡ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍل‪ SQL*Loader‬ﻟﺘﻨﻔﻴﺫ ﺍل‪.Control File‬‬

‫ﺍﻟﺨﻁﻭﺓ ﺍﻟﺭﺍﺒﻌﺔ‪:‬ﻨﻘﻭﻡ ﺒﻌﻤل ﺇﺴﺘﻌﻼﻡ ﻋﻠﻰ ﺍﻟﺠﺩﻭل ﻟﻠﺘﺄﻜﺩ ﻤﻥ ﺘﺤﻤﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﺇﺫﹰﺍ ﺠﻤﻴﻊ ﺍﻟﺼﻔﻭﻑ ﺘﻡ ﺘﺤﻤﻴﻠﻬﺎ ﺒﺴﻼﻡ ﻜﻤﺎ ﻴﻤﻜﻥ ﻤﺭﺍﺠﻌﺔ ﻤﻠﻑ ﺍل‪Log file‬‬
‫لٍ‪ SQL*Loader‬ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻤﺭ ?‪.sqlldr -‬‬
‫ﻋﻤﻭﻤﹰﺎ ﻴﻤﻜﻥ ﻤﺭﺍﺠﻌﺔ ﺠﻤﻴﻊ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﻤﺘﺎﺤﺔ ﻟ َ‬

‫‪70‬‬
71
72
73
74
‫ﺍﻟﺸﻜل ﺍﻋﻼﻩ ﻴﻭﻀﺢ ﺍﻨﻭﺍﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭﺭﻜل ) & ‪Logical & Physical‬‬
‫‪ (RMAN‬ﻭﻟﻘﺩ ﺘﺤﺩﺜﻨﺎ ﻓﻰ ﺍﻟﻔﺼل ﺍﻟﺴﺎﺒﻕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻤﻨﻁﻘﻰ )‪ (Logical Backup‬ﻭﺴﻨﺘﺤﺩﺙ‬
‫ﻓﻰ ﻫﺫﺍ ﺍﻟﻔﺼل ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ )‪ (Physical Backup‬ﻭﻜﺫﻟﻙ ﺍﻹﺴﺘﺭﺠﺎﻉ ‪ ،‬ﻭﻟﻘﺩ ﻗﺒل‬
‫ﺍﻟﺘﻔﺼﻴل ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻭﻀﻭﻉ ﻻﺒﺩ ﻤﻥ ﺇﺸﺎﺭﺍﺕ ﺴﺭﻴﻌﺔ‪.‬‬

‫ﻤﺎﻫﻭ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ )‪ :(Physical Backup‬ﻫﻭ ﻨﺴﺦ ﻟﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻠﻰ ﻁﺭﻴﻕ‬
‫ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﻴﻜﻭﻥ ﺍﻟﻨﺴﺦ ﻟﻠﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﻤﺸﺎﻫﺩﺘﻬﺎ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ‪ ،‬ﻓﻔﻰ ﺍﻟﻨﺴﺦ‬
‫ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻤﻨﻁﻘﻰ ﻜﻨﺎ ﻨﺴﺘﺨﺩﻡ ﻭﺴﻴﻠﺔ ﺘﺼﺩﻴﺭ ﻤﻥ ﺇﺼﺩﺍﺭ ﺍﻭﺭﻜل ﻤﺜل ‪ Export Utilities‬ﻭﻟﻴﺱ ﻓﻘﻁ ﻋﻥ‬
‫ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﺫﻟﻙ ﻻﻥ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﺘﻰ ﻜﻨﺎ ﻨﺼﺩﺭﻫﺎ ﻓﻰ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻤﻨﻁﻘﻰ ) ‪Logical‬‬
‫‪ (Backup‬ﻜﺎﻨﺕ ﻻ ﻴﻤﻜﻥ ﻤﺸﺎﻫﺩﺘﻬﺎ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻤﺜل ﺍﻟﺠﺩﺍﻭل ﻭﺍﻟﻤﻨﺎﻅﻴﺭ ﻭﺍﻹﺠﺭﺍﺀﺍﺕ ﻭﻤﻥ‬
‫ﻫﻨﺎ ﺍﺘﺕ ﺘﺴﻤﻴﺔ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻤﻨﻁﻘﻰ ‪ ،‬ﺍﻤﺎ ﻓﻰ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ )‪ (Physical Backup‬ﻓﺠﻤﻴﻊ‬
‫ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﻴﺘﻡ ﻨﺴﺨﻬﺎ ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ‪.OS File‬‬

‫ﺍﻨﻭﺍﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ )‪:(Physical Backup‬‬

‫‪ :Cold‬ﻭﻫﻭ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ ﺍﻟﺒﺎﺭﺩ ‪ ،‬ﻭﺘﺄﺘﻰ ﻜﻠﻤﺔ ﺒﺎﺭﺩ ﻤﻥ ﺃﻥ ﺍﻟﻨﺴﺦ ﻴﻜﻭﻥ‬ ‫‪-1‬‬
‫ﺒﻌﺩ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺴﻨﺘﺤﺩﺙ ﻋﻨﻪ ﻻﺤﻘﹰﺎ ﺒﻨﻭﻉ ﻤﻥ ﺍﻟﺘﻔﺼﻴل‪.‬‬
‫‪ :Hot‬ﻭﻫﻭ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ ﺍﻟﺴﺎﺨﻥ ‪ ،‬ﻭﻫﻭ ﻨﺴﺦ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺩﻭﻥ ﺍﻏﻼﻗﻬﺎ ‪،‬‬ ‫‪-2‬‬
‫ﻭﺴﻨﺘﺤﺩﺙ ﻋﻨﻪ ﺍﻴﻀﹰﺎ ﻻﺤﻘﹰﺎ‪.‬‬

‫‪75‬‬
‫ﻤﺎﻫﻰ ﺍﻨﻭﺍﻉ ﺍﻟﻔﺸل ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺃﻥ ﺘﺤﺩﺙ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ؟‬

‫‪76‬‬
‫‪:Archivelog Files Management‬‬
‫ﻭﻗﺒل ﺍﻟﺘﻔﺼﻴل ﻓﻰ ﻤﻭﻀﻭﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻰ ﻻﺒﺩ ﻤﻥ ﺍﻟﺤﺩﻴﺙ ﻋﻥ ﻫﺫﺍ ﺍﻟﻤﻭﻀﻭﻉ ﺒﻨﻭﻉ‬
‫ﻤﻥ ﺍﻟﺘﻔﺼﻴل‪.‬‬

‫ﺍﻨﻤﺎﻁ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪:‬‬


‫‪.NOARCHIVELOG (Default) -1‬‬
‫‪.ARCHIVELOG (Optional) -2‬‬

‫‪77‬‬
‫ﺫﻜﺭﺕ ﻓﻰ ﺍﻟﻔﺼل ﺍﻟﺨﺎﻤﺱ ﻤﻥ ﺍﻟﺠﺯﺀ ﺍﻻﻭل ﻤﻥ ﺍﻟﻜﺘﺎﺏ ﺃﻥ ﺍل‪ Redo Log File‬ﻴﺴﺘﺨﺩﻡ‬
‫ﻟﺘﺴﺠﻴل ﺍﻟﺘﻐﻴﻴﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺤﺼل ﻋﻠﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺤﻴﺙ ﻴﺘﻡ ﺘﺴﺠﻴل ﺍﻟﺘﻐﻴﻴﺭﺍﺕ ﺍﻟﺘﻰ ﺘﻡ ﺘﺜﺒﻴﺘﻬﺎ ﺍﻭ ﻻ ‪ ،‬ﻨﺴﺘﻔﻴﺩ ﻤﻥ‬
‫ﻫﺫﺍ ﺍﻟﻤﻠﻔﺎﺕ ﻓﻰ ﺍﺴﺘﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺤﺎل ﺤﺩﻭﺙ ﻓﺸل ‪ .‬ﺒﺤﻴﺙ ﺘﻜﻭﻥ ﻫﻨﺎﻙ ﺒﻌﺽ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻡ‬
‫ﺘﻜﺘﺏ ﻓﻰ ﺍل‪ Data Files‬ﺒﻴﻨﻤﺎ ﻜﺘﺒﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻔﺎﺕ ‪.‬‬

‫ﻭﺫﻜﺭﺕ ﻜﺫﻟﻙ ﺒﺄﻥ ﺍل‪ Redo Log File‬ﻴﻜﻭﻥ ﻓﻰ ﺸﻜل ‪ GROUP‬ﺒﺤﻴﺙ ﺘﻌﻤل ﻜل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻋﻠﻰ ﻋﻠﻰ ﺍﻻﻗل ﺒﺎﺜﻨﻴﻥ ﻤﻥ ﺍل‪. Groups‬‬

‫ﺇﺫﹰﺍ ﻴﺴﺘﺨﺩﻡ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﺍﺴﺎﺴﹰﺎ ﻟﻌﻤﻠﻴﺔ ﺍﻻﺴﺘﺭﺠﺎﻉ ﻓﻰ ﺤﺎﻟﺔ ﺤﺩﻭﺙ ﺨﻁﹰﺎ ﺇﺫ ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺍﻟﺘﻐﻴﻴﺭﺍﺕ ﺍﻟﺘﻰ‬
‫ﺘﺤﺼل ﻋﻠﻰ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪.‬‬

‫ﻭﻟﻀﻤﺎﻥ ﺍﻟﺤﻔﺎﻅ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﺈﻥ ﻜل ‪ Group‬ﻴﻨﺘﻅﻡ ﻓﻰ ﺸﻜل ‪ Members‬ﻭﻜل ﺍل ‪Member‬‬
‫ﺩﺍﺨل ﺍل‪ Group‬ﻫﻰ ﻨﺴﺨﺔ ﻁﺒﻕ ﺍﻻﺼل ﺍﻟﻬﺩﻑ ﻤﻨﻬﺎ ﺘﻘﻠﻴل ﻨﺴﺒﺔ ﺨﻁﺭ ﺍﻟﻔﻘﺩﺍﻥ ‪.‬‬

‫‪ LGWR Background Process‬ﻴﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﻭﺠﻭﺩ ﺍل‪ Redo log Buffer‬ﺍﻟﻰ ﺍل ‪Redo‬‬
‫‪.Log Files‬‬

‫ﻟﺤﻅﺔ ﻤﻠﺊ ﺍل‪ Redo Log File‬ﻓﺎﻥ ﺍل‪ LGWR‬ﻴﻘﻭﻡ ﺒﺎﻟﺘﺤﻭل ﻟل‪ Redo Log File‬ﺍﻻﺨﺭﻯ ﻓﻰ ﻋﻤﻠﻴﺔ‬
‫ﺘﻌﺭﻑ ﺒﺎل‪ ، Log Switch‬ﺜﻡ ﻴﻘﻭﻡ ﺒﺎﻟﺘﺤﻭل ﻤﺭﺓ ﺍﺨﺭﻯ ﺍﻟﻰ ﺍل‪ Redo Log File‬ﺍﻻﻭل ﻓﻰ ﻋﻤﻠﻴﺔ‬
‫ﺩﺍﺌﺭﻴﺔ ﻓﻴﻘﻭﻡ ﺒﻤﺴﺢ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻪ ﻤﺭﺓ ﺍﺨﺭﻯ ‪ ،‬ﺍﻯ ﺃﻨﻨﺎ ﻨﻔﻘﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻜﻭﻥ ﻤﻭﺠﻭﺩﺓ ﻓﻴﻪ ‪،‬‬
‫ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﻟﺘﻐﻴﻴﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺤﺩﺙ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ‬
‫‪.Recovery‬‬

‫ﻼ ﺃﻨﻙ ﻗﻤﺕ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ )‪ (Backup‬ﻴﻭﻡ ﺍﻻﺤﺩ ﺼﺒﺎﺤﹰﺎ ﻭﺤﺼل ﻓﺸل ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻟﻨﻔﺘﺭﺽ ﻤﺜ ﹰ‬
‫ﻴﻭﻡ ﺍﻟﺜﻼﺜﺎﺀ ﻭﻨﺤﺘﺎﺝ ﻟﻌﻤل ﺍﺴﺘﺭﺠﺎﻉ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺘﺴﺘﻁﻴﻊ ﺍﺴﺘﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻘﻁ‬
‫ﺍﻟﻰ ﺍﺨﺭ ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻭﻫﻭ ﻴﻭﻡ ﺍﻻﺤﺩ ‪ ،‬ﻭﻻ ﻨﺴﺘﻁﻴﻊ ﻋﻤل ‪ Recovery‬ﺍﻟﻰ ﻤﺎ ﺒﻌﺩ ﺫﻟﻙ ﻭﺫﻟﻙ ﻷﻨﻨﺎ ﻓﻘﺩﻨﺎ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍل‪ Recovery‬ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍل‪ Redo Log File‬ﻨﺘﻴﺠﺔ ﻹﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ‬
‫ﻓﻰ ﺍل‪.Redo Log File‬‬

‫‪78‬‬
‫ﻤﺎﻟﺤل ﺇﺫﺍﹰ؟‬
‫ﺍﻟﺤل ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﺭﺸﻴﻴﻑ ﻨﺤﺘﻔﻅ ﻓﻴﻪ ﺒﻨﺴﺦ ﻤﻥ ﺍل‪ Redo Log File‬ﻗﺒل ﺍﻋﺎﺩﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻴﻪ ‪ ،‬ﺍﻯ ﺒﻤﻌﻨﻰ‬
‫ﺍﺨﺭ ﻨﻘﻭﻡ ﺒﺘﺸﻐﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻨﻤﻁ ‪.Archivelog Mode‬‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻻﺼل ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ NOARCHIVELOG‬ﺍﻯ ﺃﻥ ﻤﻠﻔﺎﺕ ﺍل‪ Redo Log File‬ﻻ‬
‫ﺘﺘﻡ ﺍﺭﺸﻔﺘﻬﺎ ‪ ،‬ﻟﺫﺍ ﻨﺴﺘﻁﻴﻊ ﺍﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻘﻁ ﺇﻟﻰ ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻓﻰ ﺤﺎﻟﺔ ﺤﺩﻭﺙ ﻓﺸل ﻟﻘﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﻜﻴﻑ ﻨﻬﻴﺊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ARCHIVELOG‬؟‬


‫‪ -1‬ﻗﻡ ﺒﺎﻟﺘﺄﻜﺩ ﻤﻥ ﺃﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ NOARCHIVELOG‬ﻭﺫﻟﻙ ﺒﻌﻤل ﺍﺴﺘﻌﻼﻡ ﻋﻠﻰ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪ARCHIVE LOG LIST‬‬

‫ﺍﻭ‬

‫;‪SELECT LOG_MODE FROM V$DATABASE‬‬

‫ﺍﻭ‬

‫;‪SELECT ARCHIVER FROM V$INSTANCE‬‬

‫‪79‬‬
‫‪ -2‬ﻗﻡ ﺒﺘﻬﻴﺌﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ LOG_ARCHIVE_DEST_1‬ﻭﻫﻭ ﻴﺤﺩﺩ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺫﻯ ﺴﻭﻑ ﻴﺘﻡ ﻓﻴﻪ ﺘﺨﺯﻴﻥ‬
‫ﺍﻻﺭﺸﻴﻑ ‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻥ ﺘﺤﺩﻴﺩ ‪ 10‬ﻤﺴﺎﺭﺍﺕ ﻭﺍﺘﺠﺎﻫﺎﺕ ﻤﺨﺘﻠﻔﺔ ﻟﺘﺨﺯﻴﻥ ﺍﻻﺭﺸﻴﻑ ﻭﺫﻟﻙ ﻤﻥ ﺨﻼل ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
‫‪ LOG_ARCHIVE_DEST_2‬ﺍﻟﻰ ‪LOG_ARCHIVE_DEST_10‬‬

‫ﻫﻨﺎ ﺴﻨﻘﻭﻡ ﺒﺘﻬﻴﺌﺔ ﻤﺴﺎﺭ ﻭﺍﺤﺩ ﻟﺘﺨﺯﻴﻥ ﺍﻻﺭﺸﻴﻑ ﻤﻥ ﺨﻼل ﺍﻟﻤﺘﻐﻴﺭ ‪LOG_ARCHIVE_DEST_1‬‬
‫ﻻ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺃﻥ ﺍﻟﻤﺴﺎﺭ ﺍﻟﻤﺤﺩﺩ ﺼﺤﻴﺤﹰﺎ ﻋﻠﻰ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‪.‬‬
‫ﻴﺠﺏ ﺍﻭ ﹰ‬

‫‪ALTER SYSTEM SET‬‬


‫'\‪LOG_ARCHIVE_DEST_1='LOCATION=D:\ARCHIVE‬‬

‫ﻟﻠﺘﺄﻜﺩ ﻤﻥ ﺍﻟﻤﺘﻐﻴﺭ ﺒﻌﺩ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻬﻴﺌﺔ‬

‫‪ -3‬ﻨﻘﻭﻡ ﺒﺈﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻓﺘﺤﻬﺎ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ MOUNT‬ﻭﺘﻨﻔﻴﺫ ﺍﻻﻤﺭ‬


‫‪ALTER DATABASE ARCHIVELOG‬‬

‫‪80‬‬
‫‪ALTER SYSTEM SET‬‬
‫'\‪LOG_ARCHIVE_DEST_1='LOCATION=D:\ARCHIVE‬‬
‫;‪SCOPE=BOTH‬‬

‫‪ -4‬ﻨﻘﻭﻡ ﺒﺎﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﺘﻬﻴﺌﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻹﺴﺘﻌﻼﻡ ﻋﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﺍﻻﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ِ‪.ARCHIVELOG‬‬

‫‪81‬‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﺍﻟﺒﺎﺭﺩ )‪:(COLD BACKUP‬‬

‫‪82‬‬
‫ﺍﻻﻥ ﺴﺄﻗﻭﻡ ﺒﺸﺭﺡ ﺍﻟﺸﻜل ﺍﻋﻼﻩ ﻭﺍﻟﺫﻯ ﻴﻭﻀﺢ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺒﺎﺭﺩ ﻭﻜﺫﻟﻙ‬
‫ﺍﻹﺴﺘﺭﺠﺎﻉ ‪:‬‬

‫‪ :Shutdown‬ﻜﻤﺎ ﺫﻜﺭﻨﺎ ﺴﺎﺒﻘﹰﺎ ﺃﻥ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺒﺎﺭﺩ )‪ (Cold Backup‬ﺘﺘﻡ ﺒﻌﺩ‬ ‫‪-1‬‬
‫ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ :Destination‬ﻭﻫﻭ ﺍﻹﺘﺠﺎﻩ ﺍﻟﺫﻯ ﺴﻭﻑ ﻴﺘﻡ ﻭﻀﻊ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻓﻴﻪ ﻭﻫﻭ ﺍﺤﺩ ﺜﻼﺙ‬ ‫‪-2‬‬
‫ﺨﻴﺎﺭﺍﺕ )‪.(Desk ,Tape,NFS‬‬
‫‪ :Operation System Level‬ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺒﺎﺭﺩ ﺘﺘﻡ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‬ ‫‪-3‬‬
‫‪ ،‬ﻓﺒﻌﺩ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﺘﻡ ﻋﻤل ﻨﺴﺦ ﻟﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ‬
‫ﺍﻟﺘﺸﻐﻴل‪.‬‬
‫‪ :Backup‬ﻭﺍﻗﺼﺩ ﺒﻪ ﻫﻨﺎ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﻴﺘﻡ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻬﺎ ) & ‪Datafiles‬‬ ‫‪-4‬‬
‫‪ ، (Controlfile & Redolog Files‬ﻫﻨﺎﻙ ﻤﻠﻔﺎﺕ ﺍﺨﺭﻯ ﻴﻤﻜﻥ ﻋﻤل ﻨﺴﺦ‬
‫ﺍﺤﺘﻴﺎﻁﻰ ﻟﻬﺎ ﻤﺜل ) ‪(Parameter File & Archivelog File‬‬
‫‪ :No Archivelog Mode‬ﺫﻜﺭﻨﺎ ﺃﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻻﺼل ﻓﻰ ﺍﻟﻨﻤﻁ ‪No‬‬ ‫‪-5‬‬
‫‪ Archive Mode‬ﻭﻫﻭ ﻨﻤﻁ ﻻ ﻴﺴﻤﺢ ﺒﻌﻤل ﺍﺭﺸﻴﻑ ﻟﻤﻠﻔﺎﺕ ﺍل ‪Redo Log‬‬
‫‪ ، File‬ﻭﻨﺴﺘﻁﻴﻊ ﻋﻤل ‪ Cold Backup‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺇﺫﺍ ﻜﺎﻨﺕ ﺘﻌﻤل ﻓﻰ ﻫﺫﺍ‬
‫ﺍﻟﻨﻤﻁ‪.‬‬
‫‪ :Archivelog Mode‬ﻓﻌﻨﺩ ﺘﻬﻴﺌﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﻓﺄﻨﻨﺎ ﻨﻀﻤﻥ ﻋﻤل ﺍﺭﺸﻴﻑ‬ ‫‪-6‬‬
‫ﻟﻤﻠﻔﺎﺕ ﺍل‪ Redo Log File‬ﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ )‪(Recovery‬‬
‫‪ :Simple restoring‬ﻫﻨﺎ ﻻﺒﺩ ﻤﻥ ﺍﻹﺸﺎﺭﺓ ﺇﻟﻰ ﺍﻟﻔﺭﻕ ﺒﻴﻥ )‪(Restore & Recovery‬‬ ‫‪-7‬‬
‫‪ :Restore‬ﻴﻌﻨﻰ ﻋﻤل ﺍﺴﺘﺭﺠﺎﻉ ﻟﻠﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﻓﻘﺩﻨﺎﻫﺎ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻭﺍﺴﺘﺭﺠﺎﻋﻬﺎ ﺍﻟﻰ ﻤﻜﺎﻨﻬﺎ ﺍﻻﺼﻠﻰ‪.‬‬
‫ﻟﺫﺍ ﺇﺫﺍ ﻜﺎﻨﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Noarchive Log‬ﻓﺈﻨﻨﺎ ﻻ ﻨﺴﺘﻁﻴﻊ‬
‫ﺴﻭﺍ ﺃﻥ ﻨﻘﻭﻡ ﺒﻌﻤل ‪ Restore‬ﻓﻰ ﺤﺎﻟﺔ ﺤﺩﻭﺙ ﻓﺸل ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪ :Recovery‬ﻭﻫﻰ ﺘﻌﻨﻰ ﻋﻤل ﺘﻁﺒﻴﻕ ﻟﻠﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﻤﻥ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ‬


‫‪ Archivelog Files‬ﻭﻤﻠﻔﺎﺕ ﺍل‪ Redolog Files‬ﺍﻟﺘﻰ ﻟﻡ ﺘﺘﻡ ﺍﺭﺸﻔﺘﻬﺎ ‪ ،‬ﻭﺘﺘﻡ‬
‫ﻋﻤﻠﻴﺔ ﺍل‪ Recovery‬ﺒﻌﺩ ﻋﻤﻠﻴﺔ ﺍل‪.Restore‬‬
‫ﻟﺫﻟﻙ ﻻ ﻨﺴﺘﻁﻴﻊ ﻋﻤل ‪ Recovery‬ﺇﺫﺍ ﻜﺎﻨﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ‬
‫‪ Noarchive Log‬ﻭﺫﻟﻙ ﻷﻨﻨﺎ ﻨﺤﺘﺎﺝ ﻟﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍل‪.Recovery‬‬

‫‪83‬‬
‫‪ :Restoring + Recovering‬ﻭﺫﻟﻙ ﻷﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Archivelog‬ﻜﻤﺎ‬ ‫‪-8‬‬
‫ﺫﻜﺭﻨﺎ ﺫﻟﻙ ﻓﻰ ﺍﻟﻔﻘﺭﺓ ﺍﻟﺴﺎﺒﻘﺔ‪.‬‬
‫‪ :Complete Recovery‬ﻭﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ‪ Recovery‬ﺘﻨﻘﺴﻡ ﺇﻟﻰ ﻗﺴﻤﻴﻥ ) ‪Complete‬‬ ‫‪-9‬‬
‫‪ (Recovery & Incomplete Recovery‬ﻭﻨﻌﻨﻰ ﺒﺎل‪Completer Recovery‬‬
‫ﺃﻨﻪ ﻨﺴﺘﻁﻴﻊ ﻋﻤل ﺇﺴﺘﺭﺠﺎﻉ )‪ (Recovery‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺩﻭﻥ ﺃﻥ ﻨﻔﻘﺩ ﺍﻯ ﺒﻴﺎﻨﺎﺕ ‪،‬‬
‫ﺍﻭ ﺒﻤﻌﻨﻰ ﺍﺨﺭ ﺃﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﺇﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻠﺤﺎل ﺍﻟﺫﻯ ﻜﺎﻨﺕ ﻋﻠﻴﻪ ﻗﺒل ﺤﺩﻭﺙ‬
‫ﺍﻟﻔﺸل‪.‬‬
‫‪ :Possible If -10‬ﺃﻯ ﺃﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﻋﻤل ‪ Complete Recovery‬ﺇﺫﺍ ﻟﻡ ﻨﻔﻘﺩ ﺍل‪Control File‬‬
‫ﺍﻟﺤﺎﻟﻰ ﻭﺍل‪ Redo Log File‬ﺍﻟﺫﻯ ﻟﻡ ﺘﺘﻡ ﺃﺭﺸﻔﺘﻪ ﻭﺍل‪ Archive Log Files‬ﺍﻟﺫﻯ‬
‫ﻨﺤﺘﺎﺠﻪ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍل‪.Recovery‬‬
‫‪ :Type -11‬ﺃﻯ ﺃﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﺇﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍل‪ Complete Recovery‬ﺍﺤﻴﺎﻨ ﹰﺎ ﺩﻭﻥ ﺍﻟﺤﻭﺠﺔ ﻹﻏﻼﻕ‬
‫ﻼ ‪ ،‬ﻭﺍﺤﻴﺎﻨﹰﺎ ﻨﺤﺘﺎﺝ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺤﺎﻟﺔ ﻓﻘﺩﺍﻥ ‪ Non-System Data File‬ﻤﺜ ﹸ‬
‫ﻹﻨﺠﺎﺯ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺒﻌﺩ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺤﺎﻟﺔ ﻓﻘﺩﺍﻥ ‪، System datafile‬‬
‫ﺍﻯ ﻫﻨﺎﻙ ﻨﻭﻋﺎﻥ ﻹﻨﺠﺎﺯ ﺍل‪ Complete Recovery‬ﻭﻫﻤﺎ ) & ‪Online‬‬
‫‪.(Offline‬‬
‫‪ :Incomplete Recovery -12‬ﺃﻯ ﺃﻨﻨﺎ ﺴﻨﻔﻘﺩ ﺠﺯﺀ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻭﺫﻟﻙ‬
‫ﻷﻨﻨﺎ ﻗﺩ ﻨﻜﻭﻥ ﻓﻘﺩﻨﺎ ﺍل‪ Redo Log File‬ﺍﻟﺫﻯ ﻟﻡ ﻴﺘﻡ ﺃﺭﺸﻔﺘﻪ ﺃﻭ ﻤﻠﻔﺎﺕ‬
‫ﺍل‪ Archivelog File‬ﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍل‪ , Recovery‬ﻭﻫﻨﺎﻙ ﺜﻼﺜﺔ‬
‫ﺨﻴﺎﺭﺍﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍل‪Until Cancel & Until Time & ) Recovery‬‬
‫‪.(Until SCN‬‬
‫‪ :Offline -13‬ﻭﺫﻟﻙ ﻹﻨﻨﺎ ﻓﻘﺩ ﻨﻜﻭﻥ ﻓﻘﺩﻨﺎ ﻓﻘﺩﻨﺎ ﺍل‪ Control File‬ﺍﻟﺤﺎﻟﻰ ﺍﻭ ﺍل‪Redo Log File‬‬
‫ﺍﻟﺫﻯ ﻟﻡ ﻴﺘﻡ ﺃﺭﺸﻔﺘﻪ ﺃﻭ ﻤﻠﻔﺎﺕ ﺍل‪ Archivelog File‬ﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﻓﻰ ﻋﻤﻠﻴﺔ‬
‫ﺍل‪.Recovery‬‬

‫ﻤﻼﺤﻅﺔ‪ :‬ﻓﻰ ﺤﺎﻟﺔ ﺍل‪ Incomplete Recovery‬ﻴﺠﺏ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﺩ ﺍﻻﺴﺘﺭﺠﺎﻉ ﻓﻰ ﺍﻟﻭﻀﻊ‬
‫‪.Resetlogs‬‬

‫‪84‬‬
(Whenever we open database with ‘resetlogs’ option the
log sequence number set to (zero zero one) 001.

‫ ﻟﻡ ﻴﻌﺩ ﺼﺎﻟﺤﹰﺎ ﺍﻻﻥ ﻟﻌﻤل‬Resetlogs ‫ ﺘﻡ ﻭﻀﻌﻪ ﻗﺒل ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬Backup ‫ﻟﺫﻟﻙ ﺃﻯ‬
.(001) ‫ ﺘﻐﻴﺭ ﺍﻻﻥ ﺍﻟﻰ‬Log Sequence Number ‫ ﻭﺫﻟﻙ ﻻﻥ‬Recovery‫ﺍل‬
.Resetlogs ‫ ﺠﺩﻴﺩ ﺒﻌﺩ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬Backup ‫ﻟﺫﺍ ﻴﻨﺼﺢ ﺒﻭﻀﻊ‬

85
‫ﺴﻨﺎﺭﻴﻭﻫﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ) ‪Backup & Recovery‬‬
‫‪:(Scenarios‬‬
‫ﻴﺠﺏ ﺍﻟﺘﺫﻜﻴﺭ ﺃﻨﻨﺎ ﻨﺘﺤﺩﺙ ﻫﻨﺎ ﻋﻥ ﺍل‪ ، Cold Backup and Recovery‬ﻭﺃﻥ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ‬
‫ﺍﻹﺤﺘﻴﺎﻁﻰ ﺘﻜﻭﻥ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﺫﻟﻙ ﺒﻌﺩ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫ﻭﺍﻟﻴﻙ ﺨﻁﻭﺍﺕ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺒﺎﺭﺩ )‪:(Cold Backup‬‬
‫‪ -1‬ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪ -2‬ﻋﻤل ﻨﺴﺦ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻟﻤﻠﻔﺎﺕ ﺍل‪ Datafiles‬ﻭﺍل‪ Redolog Files‬ﻭﺍل ‪Control‬‬
‫‪.Files‬‬

‫ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Datafiles‬ﻭﺍل‪ Redolog Files‬ﻭﺍل‪ Control Files‬ﻟﻘﺎﻋﺩﺓ‬ ‫‪-3‬‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ORCL‬ﻭﻻﺤﻅ ﻤﻌﻰ ﺍﻥ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻭﺠﺩ ﻓﻰ ﺍﻟﻤﺴﺎﺭ‬
‫\‪ D:\oracle\product\10.1.0\oradata\orcl‬ﻭﻴﺠﺏ ﺍﻟﺘﺄﻜﺩ ﻜﺫﻟﻙ ﻤﻥ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺫﻯ ﺴﻴﺘﻡ ﻓﻴﻪ‬
‫ﻭﻀﻊ ﺍل‪ Backup‬ﻭﻫﻭ ﻜﻤﺎ ﻓﻰ ﺍﻟﺼﻭﺭﺓ \‪.D:\backup‬‬
‫ﻫﻜﺫﺍ ﻭﺒﻜل ﺒﺴﺎﻁﺔ ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺒﺎﺭﺩ )‪ (Cold Backup‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﻴﺎﻨﺎﺕ ‪ ، ORCL‬ﻜﻤﺎ ﻴﻤﻜﻥ‬
‫ﺘﻀﻤﻴﻥ ﻤﻠﻔﺎﺕ ﺍل‪ Parameter File‬ﻭﺍﻻﺭﺸﻴﻑ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬

‫‪86‬‬
‫ﻟﻨﻔﺘﺭﺽ ﺃﻥ ﻫﺫﺍ ﺍل‪ Backup‬ﻗﻤﻨﺎ ﺒﻪ ﻴﻭﻡ ﺍﻻﺤﺩ ﺼﺒﺎﺤﹰﺎ ‪ ،‬ﻭﺃﻥ ﺠﻤﻴﻊ ﺍﻟﺴﻨﺎﺭﻴﻭﻫﺎﺕ ﺍﻟﺘﻰ ﺴﻨﺫﻜﺭﻫﺎ ﻻﺤﻘ ﹰﺎ‬
‫ﻟﻌﻤﻠﻴﺎﺕ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺴﻨﺴﺘﺨﺩﻡ ﻓﻴﻬﺎ ﻫﺫﺍ ﺍل‪ ، Backup‬ﺇﺫﹰﺍ ﺴﻨﺴﺘﺼﺤﺏ ﻤﻌﻨﺎ ﻫﺫﺍ ﺍل‪ Backup‬ﻓﻰ ﺠﻤﻴﻊ‬
‫ﺍﻟﺴﻨﺎﺭﻴﻭﻫﺎﺕ‪.‬‬

‫ﻭﺠﻤﻴﻊ ﺍﻟﺴﻨﺎﺭﻴﻭﻫﺎﺕ ﺍﻟﺘﻰ ﺴﻨﺫﻜﺭﻫﺎ ﻫﻰ ﻟﻘﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Archivelog Mode‬ﻭﺫﻟﻙ ﻷﻥ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Noarchivelog Mode‬ﻟﺩﻴﻬﺎ ﺴﻨﺎﺭﻴﻭ ﻭﺍﺤﺩ ﻓﻘﻁ ﻭﻫﻭ ﻓﻰ ﺤﺎﻟﺔ‬
‫ﺤﺩﻭﺙ ﻓﺸل ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻤﻬﻤﺎ ﻜﺎﻥ ﺍﻟﻔﺸل ﻓﺈﻨﻨﺎ ﺴﻭﻑ ﻨﻘﻭﻡ ﺒﻌﻤل ‪ Restore‬ﻟﺠﻤﻴﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻭﻻ ﻨﺴﺘﻁﻴﻊ ﻋﻤل ‪ Recovery‬ﻟﻌﺩﻡ ﻭﺠﻭﺩ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ‪.‬‬
‫ﺇﺫﺍ ﻓﻰ ﺤﺎﻟﺔ ﺤﺩﻭﺙ ﻓﺸل ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻰ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Noarchivelog Mode‬ﻓﻘﻁ ﺴﻨﻘﻭﻡ‬
‫ﺒﺈﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻭﺭﹰﺍ ﻭﻤﻥ ﺜﻡ ﻋﻤل ﻨﺴﺦ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Backup‬ﻭﻭﻀﻌﻬﺎ ﻓﻰ ﻤﻭﻀﻌﻬﺎ ﺍﻻﺼﻠﻰ‪،‬‬
‫ﻭﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﺍل‪ Restore‬ﻟﺠﻤﻴﻊ ﺍﻟﻤﻠﻔﺎﺕ ‪.((Control Files + Redolog Files + Data Files‬‬
‫ﻭﻋﻠﻴﻪ ﻓﺈﻥ ﺠﻤﻴﻊ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻡ ﺘﺨﺯﻴﻨﻬﺎ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﺩ ﺍﺨﺭ ‪ Backup‬ﺴﺘﻜﻭﻥ ﻓﻘﺩﺕ ﻭﻴﺠﺏ‬
‫ﺇﺩﺨﺎﻟﻬﺎ ﻤﻥ ﺠﺩﻴﺩ‪.‬‬
‫ﻫﺫﺍ ﻫﻭ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻟﺠﻤﻴﻊ ﺤﺎﻟﺔ ﺍﻟﻔﺸل ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ No archivelog‬ﻭﻫﻭ ‪Simple‬‬
‫‪.Restore‬‬

‫‪87‬‬
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻻﻭل )‪:(Full Database Recovery‬‬
‫ﻓﻰ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻨﻔﺘﺭﺽ ﺍﻨﻨﺎ ﻓﻘﺩﻨﺎ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ) ‪Data Files & Redolog‬‬
‫‪ ، (Files & Control Files‬ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪.Archivelog Mode‬‬

‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻨﻙ ﻤﻌﺭﻓﺔ ﺍﻯ ﻤﺸﻜﻠﺔ ﺘﺤﺼل ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﻠﻑ ‪ Alert.log‬ﺍﻭ ﻤﻠﻔﺎﺕ ‪ file.trc‬ﺍﻭ‬
‫ﺒﻭﺍﺴﻁﺔ ﺍﻟﺭﺴﺎﺌل ﺍﻟﺘﻰ ﺘﺭﺴل ﺒﻭﺍﺴﻁﺔ ‪.Oracle Server‬‬

‫ﻓﻰ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﺘﻠﺯﻤﻨﺎ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪-:‬‬


‫‪ -1‬ﻋﻤل ‪ Restore‬ﻟﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﺨﺭ ‪ Backup‬ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﻟﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‪.‬‬

‫*‪D:\>COPY D:\BACKUP\*.‬‬
‫\‪D:\oracle\product\10.1.0\oradata\orcl‬‬

‫ﻫﻜﺫﺍ ﺍﻨﺠﺯﻨﺎ ﻋﻤﻠﻴﺔ ﺍل‪.Full Restore‬‬

‫‪88‬‬
.Mount ‫ ﺘﺸﻐﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬-2

D:\>STARTUP MOUNT

‫ ﻓﺈﻨﻨﺎ‬Current online Redolog File ‫ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻟﻜﻥ ﺒﻤﺎ ﺃﻨﻨﺎ ﻓﻘﺩﻨﺎ‬Recovery ‫ ﻋﻤل‬-3
Complete ‫ ﻜﻤﺎ ﺫﻜﺭﻨﺎ ﺴﺎﺒﻘﹰﺎ ﻭﺫﻟﻙ ﻷﻥ ﺍل‬Incomplete recovery ‫ﺴﻭﻑ ﻨﻘﻭﻡ ﺒﻌﻤل‬
.Current online Redolog File ‫ ﻴﺤﺘﺎﺝ ﺍﻟﻰ‬Recovery

ALTER DATABASE RECOVER AUTOMATIC USING BACKUP


CONTROLFILE UNTIL CANCEL;

.RESETLOGS ‫ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬-4

D:\>RECOVER CANCEL

89
‫ﻭﺫﻟﻙ ﻷﻨﻨﺎ ﻗﻤﻨﺎ ﺒﻌﻤل ‪ ، Incomplete Recovery‬ﻭﻻ ﻨﺴﺘﻁﻴﻊ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﺩ ﻋﻤﻠﻴﺔ ﺍل‬
‫‪ Incomplete Recovery‬ﺇﻻ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.RESETLOGS‬‬

‫;‪ALTER DATABASE OPEN RESETLOGS‬‬

‫ﻫﻜﺫﺍ ﺍﻨﺠﺯﻨﺎ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻭﻟﻜﻥ ﻴﺠﺏ ﻋﻠﻴﻙ ﺍﻻﻥ ﻭﻀﻊ ‪ Backup‬ﺠﺩﻴﺩ ﻭﺫﻟﻙ ﻻﻥ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺘﻰ ﺘﻡ ﻭﻀﻌﻬﺎ ﻗﺒل ﻋﻤﻠﻴﺔ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ RESETLOGS‬ﻟﻡ ﺘﻌﺩ‬
‫ﺫﺍﺕ ﺠﺩﻭﻯ ﻜﻤﺎ ﺫﻜﺭﻨﺎ ﺫﻟﻙ ﺴﺎﺒﻘﹰﺎ‪.‬‬

‫‪90‬‬
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺜﺎﻨﻰ )‪:(Loss of a Non-SYSTEM Data File‬‬
‫ﻟﺤﻅﺔ‬ ‫ﻭﻫﻭ ‪ Datafile‬ﻻ ﻴﻨﺘﻤﻰ ل‪ System Tablespace‬ﺍﻭ ‪، Undo Tablespace‬‬
‫ﻓﻘﺩﺍﻥ ‪ Non-SYSTEM datafile‬ﺍﻟﻤﺴﺘﺨﺩﻤﻭﻥ ﻴﺴﺘﻘﺒﻠﻭﻥ ﺭﺴﺎﺌل ﺨﻁﺄ ﺘﻔﻴﺩ ﺒﻔﻘﺩﺍﻥ ﺍل‪ Datafile‬ﻜﻤﺎ‬
‫ﻴﻤﻜﻥ ﺍﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺩﻭﻥ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ Online Recovery‬ﻭﻻ ﻴﺘﺎﺜﺭ ﺍﻟﻤﺴﺘﺨﺩﻤﻭﻥ‬
‫ﺍﻟﺫﻴﻥ ﻴﻌﻤﻠﻭﻥ ﻋﻠﻰ ﺍل‪ Tablespaces‬ﺍﻻﺨﺭﻯ ‪ ،‬ﻓﺴﻴﺴﺘﻤﺭﻭﻥ ﻓﻰ ﺍﻟﻌﻤل ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ‪.‬‬

‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺇﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ‪ Recovery‬ﺩﻭﻥ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻭ ﺒﻌﺩ ﺇﻏﻼﻗﻬﺎ‬
‫)‪ (Online or Offline‬ﻭﻟﻜﻥ ﺒﺎﻟﻁﺒﻊ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺩﻭﻥ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﺴﺘﺤﻴﻠﺔ ﺇﺫﺍ ﻓﻘﺩﻨﺎ‬
‫‪ Datafile‬ﻴﻨﺘﻤﻰ ﻟل‪.System Tablespace‬‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﻓﻰ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﺃﻨﻨﺎ ﻓﻘﺩﻨﺎ ﺍل‪ USERS01.DBF Datafile‬ﺍﻟﺫﻯ ﻴﻨﺘﻤﻰ ﺍﻟﻰ‬
‫‪.USERS TABLESPACE‬‬
‫ﻭﻹﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻟﻬﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻫﻨﺎﻙ ﻁﺭﻴﻘﺘﻴﻥ ‪-:‬‬

‫ﺍﻟﻁﺭﻴﻘﺔ ﺍﻻﻭﻟﻰ )‪-:(Data File Recovery‬‬


‫ﻫﻨﺎ ﻨﻘﻭﻡ ﺒﻌﺩﺓ ﺨﻁﻭﺍﺕ‪-:‬‬
‫‪ -1‬ﻋﻤل ‪ Restore‬ﻟل‪ USERS01.DBF DATAFILE‬ﻓﻘﻁ ﻤﻥ ﺍﺨﺭ ‪ ، Backup‬ﺍﻯ ﻋﻤل ﻨﺴﺦ‬
‫ﻟﻠﻤﻠﻑ ﻤﻥ ﺍﺨﺭ ‪ Backup‬ﺍﻟﻰ ﻤﻭﻀﻌﻪ ﺍﻻﺼﻠﻰ‪.‬‬
‫‪ -2‬ﻨﻘﻭﻡ ﺒﻭﻀﻊ ﺍل‪.USERS01.DBF DATAFILE OFLINE‬‬

‫‪ALTER DATABASE DATAFILE‬‬


‫‪'D:\oracle\product\10.1.0\oradata\orcl\USERS01.D‬‬
‫;‪BF' OFILNE‬‬

‫‪ -3‬ﻨﻘﻭﻡ ﺒﻌﻤل ‪ RECOVERY‬ﻟل‪. USERS01.DBF DATAFILE‬‬

‫‪alter database recover automatic datafile‬‬


‫‪'D:\oracle\product\10.1.0\oradata\orcl\USERS01.D‬‬
‫;'‪BF‬‬

‫‪91‬‬
. USERS01.DBF DATAFILE ONLINE‫ ﺜﻡ ﻨﻘﻭﻡ ﺒﻭﻀﻊ ﺍل‬-4

ALTER DATABASE DATAFILE


'D:\oracle\product\10.1.0\oradata\orcl\USERS01.D
BF' ONILNE;

92
-:(Tablespace Recovery) ‫ﺍﻟﻁﺭﻴﻘﺔ ﺍﻟﺜﺎﻨﻴﺔ‬
-:‫ﻫﻨﺎ ﻨﻘﻭﻡ ﺒﻌﺩﺓ ﺨﻁﻭﺍﺕ‬
‫ ﺍﻯ ﻋﻤل ﻨﺴﺦ ﻟﻠﻤﻠﻑ ﻤﻥ ﺍﺨﺭ‬، Backup ‫ ﻓﻘﻁ ﻤﻥ ﺍﺨﺭ‬USERS01.DBF‫ ﻟل‬Restore ‫ ﻋﻤل‬-1
.‫ ﺍﻟﻰ ﻤﻭﻀﻌﻪ ﺍﻻﺼﻠﻰ‬Backup
.USERS TABLESPACE OFFLINE‫ ﻨﻘﻭﻡ ﺒﻭﻀﻊ ﺍل‬-2

ALTER TABLESPACE USERS OFFLINE;

.USERS TABLESPACE‫ ﻟل‬RECOVERY ‫ ﻨﻘﻭﻡ ﺒﻌﻤل‬-3

RECOVER TABLESPACE USERS;

.USERS TABLESPACE ONLINE‫ ﻨﻘﻭﻡ ﺒﻭﻀﻊ ﺍل‬-4

ALTER TABLESPACE USERS ONLINE;

93
‫ﻴﻤﻜﻨﻙ ﺇﺴﺘﺨﺩﺍﻡ ﺍﻯ ﻤﻥ ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺘﻴﻥ ﻟﻤﻌﺎﻟﺠﺔ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ‪ ،‬ﻭﻟﻜﻥ ﻋﻤﻭﻤﹰﺎ ﻟﻥ ﺘﻔﻘﺩ ﺍﻯ ﻤﻥ‬
‫ﺒﻴﺎﻨﺎﺘﻙ ﻤﺎ ﺩﺍﻡ ﺍﻨﻙ ﻟﻡ ﺘﻔﻘﺩ ‪ Present Controlfile‬ﻭﺍل‪ ، Current Redo Logfile‬ﺍﻯ ﺍﻨﻨﺎ ﻓﻰ ﻜل‬
‫ﺍﻻﺤﻭﺍل ﺴﻨﻘﻭﻡ ﺒﻌﻤل ‪.Complete Recovery‬‬

‫‪94‬‬
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺜﺎﻟﺙ )‪:(Loss of a SYSTEM Data File‬‬
‫ﺘﺨﻴل ﻤﻌﻰ ﻓﻰ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻨﻙ ﻓﻘﺩﺕ ﺍل‪ SYSTEM01.DBF DATAFILE‬ﺍﻟﺫﻯ ﻴﻨﺘﻤﻰ‬
‫ﻟل‪ ، SYSTEM TABLESPACE‬ﻤﺎﻟﺫﻯ ﺘﺘﻭﻗﻊ ﺃﻥ ﻴﺤﺩﺙ ﺒﺎﻟﻁﺒﻊ ﺴﻭﻑ ﻴﺘﻡ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻴﹰﺎ‬
‫‪ ،‬ﺤﺘﻰ ﻟﻭ ﻅﻠﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻔﺘﻭﺤﺔ ﻴﺠﺏ ﺇﻏﻼﻗﻬﺎ ﻓﻭﺭﹰﺍ ‪ ، SHUT ABORT‬ﺇﺫ ﻻ ﻴﺘﺼﻭﺭ ﺍﻥ ﺘﻌﻤل‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺩﻭﻥ ﺍل‪ ، SYSTEM TABLESPACE‬ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻴﻨﻁﺒﻕ ﺍﻴﻀﹰﺎ ﺇﺫﺍ ﻓﻘﺩﻨﺎ‬
‫ﺍل‪.ACTIVE UNDO TABLEESPACE‬‬

‫ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﻼﺯﻤﺔ‪-:‬‬
‫‪ -1‬ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻭﺭﹰﺍ ﺇﺫﺍ ﻅﻠﺕ ﻤﻔﺘﻭﺤﺔ‪.‬‬

‫‪SHUT ABORT‬‬

‫‪ -2‬ﻋﻤل ‪ Restore‬ﻟل‪ SYSTEM01.DBF‬ﻤﻥ ﺍﺨﺭ ‪. Backup‬‬


‫‪ -3‬ﺘﺸﻐﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.MOUNT‬‬

‫‪STARTUP MOUNT‬‬

‫‪95‬‬
SYSTEM01.DBF DATAFILE‫ ﻟل‬RECOVERY ‫ ﻋﻤل‬-4

ALTER DATABASE RECOVER AUTOMATIC DATAFILE


'D:\oracle\product\10.1.0\oradata\orcl\SYSTEM01.

.‫ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬-5

ALTER DATABASE OPEN;

Recovery‫ﻻﺤﻅ ﻤﻌﻰ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻭﺍﻟﺫﻯ ﻗﺒﻠﻪ ﻫﻨﺎ ﻻﺒﺩ ﻤﻥ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻗﺒل ﻋﻤل ﺍل‬
.‫ﻋﻠﻰ ﻋﻜﺱ ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺫﻯ ﻗﺒﻠﻪ‬

96
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺭﺍﺒﻊ )‪:(Loss of an Un-archived Online Log Files‬‬
‫ﺘﺼﻭﺭ ﻤﻌﻰ ﺃﻨﻙ ﺘﻌﻤل ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺘﻙ ﻭﻓﺠﺎﺓ ﺤﺩﺙ ﻓﺸل ﻓﻰ ﺍﻟﺩﻴﺴﻙ ﻤﻤﺎ ﺘﺴﺒﺏ ﻓﻰ ﻓﻘﺩ ﺠﻤﻴﻊ‬
‫ﺍل‪ ، Online Log Files‬ﻤﻊ ﺍﻟﻌﻠﻡ ﺃﻨﻙ ﻟﻡ ﺘﻔﻘﺩ ﺍﻯ ﻤﻥ ﺍل‪ ، Control Files and data Files‬ﻟﻜﻥ ﻓﻰ‬
‫ﺍﻟﺤﻘﻴﻘﺔ ﺍﻨﻨﺎ ﻻ ﻨﺴﺘﻁﻴﻊ ﻋﻤل ‪ Recovery‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﺎﺩﺍﻡ ﺃﻨﻨﺎ ﻓﻘﺩﻨﺎ ‪ all online files‬ﻭﺫﻟﻙ ﻻﻨﻨﺎ‬
‫ﻨﺤﺘﺎﺝ ﺍﻟﻴﻪ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍل‪ ، Recovery‬ﻓﻤﺎ ﺍﻟﺤل ﺇﺫﹰﺍ ؟ ﺍﻟﻴﻙ ﺍﻟﺨﻁﻭﺍﺕ‪.‬‬

‫‪ -1‬ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪.SHUT ABORT‬‬


‫‪ -2‬ﻋﻤل ‪ Restore‬ﻟﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ Data Files‬ﻭﺍل‪ Control Files‬ﻤﻥ ﺍل‪ Full Backup‬ﺍﻟﺫﻯ‬
‫ﺘﺘﻭﻓﺭ ﻟﻪ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﺍﻟﻤﻁﻠﻭﺒﺔ ﻟﻌﻤﻠﻴﺎﺕ ﺍل‪.Recovery‬‬
‫‪ -3‬ﺜﻡ ﻨﻔﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.MOUNT‬‬

‫‪STARTUP MOUNT‬‬

‫‪ -4‬ﻨﻘﻭﻡ ﺒﻌﻤل ‪ INCOMPLETE RECOVERY‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪alter database recover automatic using backup‬‬


‫;‪controlfile until cancel‬‬

‫;‪Recover cancel‬‬

‫‪97‬‬
‫‪ -5‬ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.RESETLOGS‬‬

‫;‪ALTER DATABASE OPEN RESETLOGS‬‬

‫ﻋﻨﺩ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻨﻤﻁ ‪ RESTLOGS‬ﻴﻘﻭﻡ ﺍﻻﻭﺭﻜل ﺍﻟﻴﹰﺎ ﺒﺈﻨﺸﺎﺀ ‪ONLINE LOG FILES‬‬
‫ﻭﻴﻤﻜﻥ ﻤﺸﺎﻫﺩﺓ ﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﺍﻭ ﻤﻥ ﺨﻼل ﺍﻹﺴﺘﻌﻼﻡ ﺍﻻﺘﻰ‪:‬‬

‫ﻟﻜﻥ ﺘﺨﻴل ﻤﻌﻰ ﺃﻨﻪ ﻜﺎﻥ ﻟﺩﻴﻙ ‪ Multiplexing the log files‬ﻋﻠﻰ ﻋﺩﺩ ﻤﻥ ﺍﻟﺩﺴﻴﻙ ﻟﻜﻥ ﻓﻰ ﻏﻨﻰ ﻤﻥ ﻜل‬
‫ﻫﺫﺍ ﺍﻟﻤﺠﻬﻭﺩ ﻹﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻗﺩ ﺘﻜﻭﻥ ﻓﻘﺩﺕ ﺠﺯﺀ ﻤﻥ ﺒﻴﺎﻨﺎﺘﻙ‪.‬‬

‫‪98‬‬
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺨﺎﻤﺱ )‪:(Loss of Control Files‬‬
‫ﻓﻰ ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﺘﺼﻭﺭ ﻤﻌﻰ ﺃﻨﻙ ﻓﻘﺩ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ ، Control Files‬ﺒﺎﻟﻁﺒﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻻ‬
‫ﺘﻌﻤل ﺩﻭﻥ ﻭﺠﻭﺩ ﺍل‪ ، Control File‬ﻭﻟﻭ ﺃﻨﻙ ﻓﻘﺩﺕ ﺍﺤﺩ ﻤﻠﻔﺎﺕ ﺍل‪ Control File‬ﻟﻜﺎﻥ ﺍﻻﻤﺭ ﺴﻬل ؛‬
‫ﻓﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﻻﺤﺩ ﻤﻠﻔﺎﺕ ﺍل‪ Control Files‬ﺍﻟﻤﻭﺠﻭﺩﺓ ﻭﻨﻀﻌﻪ ﻤﻜﺎﻥ ﺍﻟﻤﻠﻑ ﺍﻟﻤﻔﻘﻭﺩ ﻭﻟﻜﻥ ﻫﻨﺎ‬
‫ﻓﻘﺩﻨﺎ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ ، Control Files‬ﺒﺎﻟﻁﺒﻊ ﺴﺘﺘﻭﻗﻑ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻥ ﺍﻟﻌﻤل ﻭﺇﺫﺍ ﻟﻡ ﺘﺘﻭﻗﻑ‬
‫ﻴﺠﺏ ﺇﻴﻘﺎﻓﻬﺎ ﻓﻭﺭﹰﺍ )‪ (Shut Abort‬ﺍﻟﻰ ﺤﻴﻥ ﻋﻤل ﺇﺠﺭﺍﺀ ﺴﺭﻴﻊ ﻹﻨﻘﺎﺫ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫ﻓﻰ ﻤﺜل ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻫﻨﺎﻙ ﺨﻴﺎﺭﻴﻥ ﻟﻺﻨﻘﺎﺫ‪-:‬‬
‫ﺍﻟﺨﻴﺎﺭ ﺍﻻﻭل ‪-:‬‬
‫ﻨﻘﻭﻡ ﺒﺈﻨﺸﺎﺀ ‪ Control File‬ﻤﻥ ﺠﺩﻴﺩ ﺒﺈﺴﺘﺨﺩﺍﻡ ﺍﻟﻜﻭﺩ ‪ ، Create Controlfile‬ﻭﺫﻟﻙ‬
‫ﺒﻤﺴﺎﻋﺩﺓ ﺍل‪ Trace Control File‬ﺇﻥ ﻭﺠﺩ ‪ ،‬ﻭﺍﻻﻓﻀل ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺃﻥ ﻴﻘﻭﻡ ﺒﻌﻤل ‪Backup‬‬
‫‪ Controlfile To trace‬ﻜل ﻤﺎ ﻗﺎﻡ ﺒﺘﻐﻴﺭ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺤﺘﻰ ﻴﺴﺘﻔﻴﺩ ﻤﻥ ﻤﻠﻑ ﺍل‪ Trace‬ﻓﻰ‬
‫ﺇﻨﺸﺎﺀ ﺍل‪ Control File‬ﻻﺤﻘﹰﺎ ﻓﻰ ﺤﺎل ﺍﻨﻨﺎ ﻓﻘﺩﻨﺎ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ .Control Files‬ﻭﻟﻜﻥ ﺤﺘﻰ ﻟﻭ ﻟﻡ‬
‫ﻴﻘﻡ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻬﺫﺍ ﺍﻹﺠﺭﺍﺀ ﻓﻴﻤﻜﻨﻪ ﺍﻟﻘﻴﺎﻡ ﺒﺈﻨﺸﺎﺀ ﻤﻠﻑ ﺍل‪ Control File‬ﻋﻥ ﻁﺭﻴﻕ ﻜﺘﺎﺒﺔ‬
‫ﺍﻟﻜﻭﺩ ﻴﺩﻭﻴﹰﺎ ﺤﺴﺏ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫ﻋﻤﻭﻤﹰﺎ ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻤل ‪.Backup Controlfile To Trace‬‬

‫;‪ALTER DATABASE BACKUP CONTROLFILE TO TRACE‬‬

‫ﻴﻨﺘﺞ ﻤﻥ ﻫﺫﺍ ﺍﻻﺠﺭﺍﺀ ‪ Trace File‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﻠﻑ ﻨﺼﻰ ﻴﺤﻭﻯ ﻜﻭﺩ ﺇﻨﺸﺎﺀ ﺍل‪Control File‬‬
‫ﻴﻤﻜﻥ ﺇﺴﺘﺨﺩﺍﻤﻪ ﻻﺤﻘﹰﺎ ﻹﻨﺸﺎﺀ ﺍل‪ Control File‬ﻋﻨﺩﻤﺎ ﻨﺤﺘﺎﺝ ﺇﻟﻰ ﺫﻟﻙ ‪ ،‬ﻭﻴﺠﺩ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﻰ ﺍﻟﻤﺴﺎﺭ‬
‫ﺍﻟﻤﺤﺩﺩ ﻋﻠﻰ ﺍﻟﻤﺘﻐﻴﺭ ‪.USER_DUMP_DEST‬‬

‫‪99‬‬
‫ﻭﺍﻟﻴﻙ ﺨﻁﻭﺍﺕ ﺇﻨﺸﺎﺀ ‪:Control File‬‬
‫‪ -1‬ﺘﺸﻐﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.NOMOUNT‬‬

‫‪STARTUP NOMOUNT‬‬

‫‪ -2‬ﻨﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﺍﻭ ﺘﺠﻬﻴﺯ ﻜﻭﺩ ﺇﻨﺸﺎﺀ ﺍل‪ Control File‬ﻤﻥ ﻤﻠﻑ ﺍل‪ Trace‬ﺇﻥ ﻭﺠﺩ ﺍﻭ ﻜﺘﺎﺒﺘﻪ‬
‫ﻼ ﻟﻤﻠﻑ ﻴﺤﻭﻯ ﻜﻭﺩ ﺇﻨﺸﺎﺀ ﺍل‪ Control File‬ﻗﻤﺕ ﺒﻨﺴﺨﻪ ﻤﻥ ﻤﻠﻑ‬
‫ﻴﺩﻭﻴﹰﺎ ‪ ،‬ﻭﺍﻟﻴﻙ ﻤﺜ ﹰ‬
‫ﺍل‪ Trace File‬ﻭﺤﻔﻅﺘﻪ ﻓﻰ ﻤﻠﻑ ﺴﻤﻴﺘﻪ ‪ CONT.SQL‬ﻤﻭﺠﻭﺩ ﻓﻰ ﺍل‪.C‬‬

‫‪ -3‬ﻨﻘﻭﻡ ﺒﺘﻨﻔﻴﺫ ﺍﻟﻜﻭﺩ ﺍﻋﻼﻩ ﻭﻨﺤﻥ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.NOMOUNT‬‬

‫‪100‬‬
@C:\CONT.SQL

.RESETLOGS ‫ ﺜﻡ ﻨﻔﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬-4

ALTER DATABASE OPEN RESETLOGS;

101
‫ﺍﻟﺨﻴﺎﺭ ﺍﻟﺜﺎﻨﻰ ‪-:‬‬
‫ﻫﻨﺎ ﻨﻘﻭﻡ ﺒﺈﺴﺘﺭﺠﺎﻉ ﻤﻠﻑ ﺍل‪ Control File‬ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬
‫ﻭﺍﻟﻴﻙ ﺍﻟﺨﻁﻭﺍﺕ‪-:‬‬
‫‪ -1‬ﻨﻘﻭﻡ ﺒﻌﻤل ‪ Restore‬ﻟﻤﻠﻔﺎﺕ ﺍل‪ Control File‬ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬
‫‪ -2‬ﺜﻡ ﻨﻔﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.MOUNT‬‬

‫‪STARTUP MOUNT‬‬

‫‪ -3‬ﺜﻡ ﻨﻘﻭﻡ ﺒﻌﻤل ‪. Recovery‬‬

‫‪RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL‬‬


‫;‪CANCCEL‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﺍﻨﻪ ﺒﻌﺩ ﺒﺩﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻗﺩ ﻨﺤﺘﺎﺝ ﻟﺘﺤﺩﻴﺩ ﺍل‪ Redolog Files‬ﻹﻜﻤﺎل‬
‫ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺍﻭ ﻨﻘﻭﻡ ﺒﻌﻤل ﺫﻟﻙ ﺍﻟﻴﹰﺎ ﺒﻜﺘﺎﺒﺔ ﺍﻟﺨﻴﺎﺭ ‪ ، AUTO‬ﻭﻫﻨﺎﻙ ﺨﻴﺎﺭ ﺍﺨﺭ‬
‫ﻫﻭ ‪ CANCEL‬ﻹﻨﻬﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ‪ ،‬ﻟﻜﻥ ﺇﺫﺍ ﻗﻤﺕ ﺒﻜﺘﺎﺒﺔ ‪ Redolog File‬ﻨﻘﻭﻡ‬
‫ﺒﺈﻋﺎﺩﺓ ﺍﻟﺨﻁﻭﺓ ﻤﺭﺓ ﺍﺨﺭﻯ ﺒﺘﺤﺩﻴﺩ ﺍل‪ Redolog Files‬ﺍﻻﺨﺭﻯ‪.‬‬
‫‪[Must be current redolog file , else repeat this‬‬
‫]‪steps with other redolog groups member‬‬

‫‪102‬‬
.RESETLOGS ‫ ﺍﺨﻴﺭﹰﺍ ﻨﻔﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬-4

ALTER DATABASE OPEN RESETLOGS;

103
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺴﺎﺩﺱ )‪:(Loss of unbackup Datafile‬‬
‫ﺘﺼﻭﺭ ﻤﻌﻰ ﺃﻨﻙ ﻗﻤﺕ ﺒﻌﻤل ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻴﻭﻡ ﺍﻻﺜﻨﻴﻥ ﻤﺴﺎﺀ ﺜﻡ ﻗﻤﺕ ﺒﺈﻨﺸﺎﺀ‬
‫‪ Tablespace‬ﺠﺩﻴﺩ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﻭﻡ ﺍﻟﺜﻼﺜﺎﺀ ‪ ،‬ﻭﻗﺒل ﺃﻥ ﺘﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺤﺩﺙ ﻓﺸل ﻓﻰ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻓﻘﺩﺕ ﻤﻠﻑ ﺍل‪ Datafile‬ﺍﻟﻤﻨﺘﻤﻰ ﻟل‪ Tablespace‬ﺍﻟﺠﺩﻴﺩ‬
‫ﻓﻤﺎ ﺍﻟﻌﻤل؟ ﻻ ﺸﻙ ﺃﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻻ ﻴﻔﻴﺩﻙ ﻜﺜﻴﺭﹰﺍ ﺇﺫ ﺃﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺘﻡ ﻭﻀﻌﻪ ﻗﺒل‬
‫ﺇﻨﺸﺎﺀ ﺍل‪ Tablespace‬ﺍﻟﺠﺩﻴﺩ ﻭﺍﻟﺫﻯ ﻨﺭﻴﺩ ﺇﺴﺘﺭﺠﺎﻋﻪ‪.‬‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﻫﻨﺎ ﺃﻨﻨﺎ ﻓﻘﺩﻨﺎ ‪ TEST.DBF DATAFILE‬ﻭﻫﻭ ﻴﻨﺘﻤﻰ ل‪ TEST TABLESPACE‬ﻭﻫﺫﺍ‬


‫ﺍل‪ DATAFILE‬ﺕ ﺇﻨﺸﺎﺅﻩ ﺒﻌﺩ ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ‪.‬‬
‫ﻭﺍﻟﻴﻙ ﺨﻁﻭﺍﺕ ﺍﻹﺴﺘﺭﺠﺎﻉ‪-:‬‬
‫‪ -1‬ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.MOUNT‬‬

‫‪ -2‬ﺇﻨﺸﺎﺀ ‪.TEST DATAFILE‬‬

‫‪ALTER DATABASE CREATE DATAFILE‬‬


‫'‪'D:\oracle\product\10.1.0\oradata\orcl\TEST.DBF‬‬

‫‪104‬‬
.Test Datafile‫ ﻟل‬Recovery ‫ ﻋﻤل‬-3

ALTER DATABASE RECOVER DATAFILE


'D:\oracle\product\10.1.0\oradata\orcl\TEST.DBF'

.‫ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬-4

105
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺴﺎﺒﻊ ) ‪:(damage Tempfile‬‬
‫ﻭﻟﻨﻔﺘﺭﺽ ﺃﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻨﺩﻙ ﺘﻌﻤل ﻋﻠﻰ ‪ Temporary Tablespace‬ﻴﺴﻤﻰ ‪ Temp‬ﻭﻴﺤﻭﻯ‬
‫‪ Tempfile‬ﻭﺍﺤﺩ ﻴﺴﻤﻰ ‪ . Temp02.dbf‬ﻭﻟﻨﻔﺘﺭﺽ ﺍﻨﻪ ﺤﺩﺙ ﻋﻁل ﻓﻰ ﻫﺫﺍ ﺍل‪ ، Datafile‬ﻤﺎﺫﺍ‬
‫ﺴﻴﺤﺩﺙ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ؟ ﺴﺘﻅل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻭﺫﻟﻙ ﻻﻥ ﻤﻬﻤﺔ ﻫﺫﺍ ﺍل‪ Datafile‬ﻫﻭ ﻟﺘﺨﺯﻴﻥ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺅﻗﺘﺔ ‪ ،‬ﻭﺍﻓﻀل ﺤل ﻟﻬﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻫﻭ ﺇﻨﺸﺎﺀ ‪ Datafile‬ﺠﺩﻴﺩ ﻟﻨﻔﺱ ﺍل‪.Tabespace‬‬
‫ﻭﺍﻟﻴﻙ ﺍﻟﺨﻁﻭﺍﺕ‪-:‬‬
‫‪ -1‬ﻗﻡ ﺒﻌﻤل ﺍﻹﺴﺘﻌﻼﻡ ﺍﻻﺘﻰ ﻟﺘﺤﺩﻴﺩ ﺍل‪ Temporary Tablespace‬ﺍﻟﺫﻯ ﻴﻌﻤل ﺍﻻﻥ ﻓﻰ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪SELECT PROPERTY_NAME,PROPERTY_VALUE FROM‬‬


‫‪DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE‬‬
‫;'‪'%DEFAULT_TEMP%‬‬

‫ﺇﺫﹰﺍ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻋﻠﻰ ‪.Temp Temporary Tablespace‬‬

‫‪ -2‬ﺇﻀﺎﻓﺔ ‪ Tempfile‬ﺠﺩﻴﺩ ﻟل‪.Temp tablespace‬‬

‫‪ALTER TABLESPACE TEMP ADD TEMPFILE‬‬


‫‪'D:\oracle\product\10.1.0\oradata\orcl\TEMP03.DB‬‬
‫;‪F' SIZE 20M‬‬

‫‪106‬‬
Tempfile‫ ﻭﻫﻭ ﺍل‬Offline ‫ ﻓﻰ ﺍﻟﻭﻀﻊ‬TEMP02.DBF DATAFILE ‫ ﺜﻡ ﻨﻘﻭﻡ ﺒﻭﻀﻊ ﺍل‬-3
.‫ﺍﻟﺫﻯ ﺤﺩﺙ ﻓﻴﻪ ﻋﻁل‬

ALTER DATABASE TEMPFILE


'D:\oracle\product\10.1.0\oradata\orcl\TEMP02.DB
F' OFFLINE;

.‫ ﺜﻡ ﻨﻘﻭﻡ ﺒﺤﺫﻓﻪ ﻤﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬-3

ALTER DATABASE TEMPFILE


'D:\oracle\product\10.1.0\oradata\orcl\TEMP02.DB
F'DROP;

.‫ ﻭﻜﺫﻟﻙ ﻴﻤﻜﻥ ﺤﺫﻓﻪ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‬Temp File‫ ﺍﺨﻴﺭﹰﺍ ﻴﻤﻜﻥ ﺍﻹﺴﺘﻌﻼﻡ ﻋﻥ ﺍل‬-4

SELECT FILE_NAME FROM DBA_TEMP_FILES;

107
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺜﺎﻤﻥ ) ‪:(damage Temporary Tablespace‬‬
‫ﻤﺎ ﻫﻭ ﺍﻓﻀل ﺍﻟﺤﻠﻭل ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺫﻯ ﺤﺩﺙ ﻟﻪ ﻋﻁل ﻓﻰ ﺍل ‪Temporary‬‬
‫‪ ، Tablespace‬ﺒﺎﻟﻤﻨﺎﺴﺒﺔ ﻗﺩ ﻴﻜﻭﻥ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻜﺜﺭ ﻤﻥ ‪ Temporary Tablespace‬ﻟﻜﻥ ﺍﻟﻨﺸﻁ‬
‫ﺤﻘﻴﻘﺘﹰﺎ ﻴﻜﻭﻥ ‪ Temporary Tablespace‬ﻭﺍﺤﺩ‪.‬‬
‫ﻟﻨﻔﺘﺭﺽ ﺃﻥ ﻋﻁل ﺤﺩﺙ ﻟل‪ Temp Temporary Tablespace‬ﺍﺜﻨﺎﺀ ﻋﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻓﻤﺎ ﻫﻰ‬
‫ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﺘﻰ ﻴﺠﺏ ﻋﻤﻠﻬﺎ ﻟﻠﺨﺭﻭﺝ ﻤﻥ ﻫﺫﺍ ﺍﻟﻤﻭﻗﻑ؟‬
‫‪ -1‬ﺇﻨﺸﺎﺀ ‪ Temporary Tablespace‬ﺠﺩﻴﺩ ﻭﻟﻨﺴﻤﻴﻪ ‪.Temp1‬‬

‫‪CREATE TEMPORARY TABLESPACE TEMP1 TEMPFILE‬‬


‫‪'D:\oracle\product\10.1.0\oradata\orcl\TEMPTEST.‬‬
‫;‪DBF' SIZE 20M‬‬

‫‪ -2‬ﻓﻰ ﺍﻟﺨﻁﻭﺓ ﺍﻟﺴﺎﺒﻘﺔ ﻗﻤﺕ ﺒﺈﻨﺸﺎﺀ ‪ Temporary Tablespace‬ﺠﺩﻴﺩ ﻭﻟﻜﻥ ﻓﻰ ﻫﺫﻩ ﺍﻟﺨﻁﻭﺓ ﻴﺠﺏ‬
‫ﻋﻤل ﺘﻨﺸﻴﻁ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺤﺘﻰ ﺘﻌﻤل ﻋﻠﻰ ﺍل‪ Temporary Tablespace‬ﺍﻟﺠﺩﻴﺩ ‪ ،‬ﺇﺫ ﺃﻥ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﻫﺫﻩ ﺍﻟﻠﺤﻅﺔ ﺘﻌﻤل ﻋﻠﻰ ﺍل‪ Temporary Tablespace‬ﺍﻟﻘﺩﻴﻡ‪.‬‬

‫‪ALTER DATABASE DEFAULT TEMPORARY TABLESPACE‬‬


‫;‪TEMP1‬‬

‫ﻫﻜﺫﺍ ﺘﻡ ﺘﻨﺸﻴﻁ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﺘﻌﻤل ﻋﻠﻰ ﺍل‪ Temp1 Temporary Tablespace‬ﻭﻴﻤﻜﻥ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺫﻟﻙ‬
‫ﺒﺈﺠﺭﺍﺀ ﺍﻹﺴﺘﻌﻼﻡ ﺍﻻﺘﻰ‬

‫‪108‬‬
.‫ ﻭﻫﻭ ﺍﻟﺫﻯ ﺤﺩﺙ ﻓﻴﻪ ﻓﺸل‬Temp Temporary Tablespace‫ ﺜﻡ ﻨﻘﻭﻡ ﺒﺤﺫﻑ ﺍل‬-3

DROP TABLESPACE TEMP INCLUDING CONTENTS AND


DATAFILES;

109
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺘﺎﺴﻊ ) ‪:(damage Online Logfile Member‬‬
‫ﺫﻜﺭﻨﺎ ﺴﺎﺒﻘﹰﺎ ﺃﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻋﻠﻰ ﺍﻻﻗل ﻋﻠﻰ ﺍﺜﻨﻴﻥ ﻤﻥ ﺍل‪ Redo logfile Groups‬ﻭﺍﻯ‬
‫‪ Group‬ﻴﺤﻭﻯ ﻋﻠﻰ ﺍﻻﻗل ‪.Member‬‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﺃﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﺩﻴﻙ ﺘﻌﻤل ﻋﻠﻰ ﺜﻼﺙ ‪ Redo Logfile Groups‬ﻭﻜل ‪Group‬‬
‫ﻴﺤﻭﻯ ‪.Tow Members‬‬

‫ﻟﻨﻔﺘﺭﺽ ﺍﻨﻪ ﺤﺩﺙ ﻤﺸﻜﻠﺔ ﻓﻰ ﺍل‪ Member‬ﺍﻻﺘﻰ‬


‫‪D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO11.LOG‬‬
‫ﻭﻫﻭ ﻴﻨﺘﻤﻰ ‪.Group1‬‬

‫‪110‬‬
‫ﺍﻟﻴﻙ ﺍﻟﺨﻁﻭﺍﺕ ﻟﺤل ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ‪:‬‬

‫ﻻ ﺒﺤﺫﻑ ﺍل‪ Member‬ﺍﻟﺫﻯ ﺒﻪ ﺍﻟﻤﺸﻜﻠﺔ ﻤﻥ ﺍل‪.Group‬‬


‫‪ -1‬ﻨﻘﻭﻡ ﺍﻭ ﹰ‬

‫‪ALTER DATABASE DROP LOGFILE MEMBER‬‬


‫‪'D:\oracle\product\10.1.0\oradata\orcl\REDO11.LO‬‬
‫;'‪G‬‬

‫ﺜﻡ ﻨﻘﻭﻡ ﺒﺤﺫﻓﻪ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‬

‫‪ -2‬ﺜﻡ ﻨﻘﻭﻡ ﺒﺈﻀﺎﻓﺔ ‪ Member‬ﺠﺩﻴﺩ ﻟل‪.Group‬‬

‫‪ALTER DATABASE ADD LOGFILE MEMBER‬‬


‫‪'D:\oracle\product\10.1.0\oradata\orcl\REDO11.LO‬‬
‫;‪G' TO GROUP 1‬‬

‫ﻴﻤﻜﻥ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺇﻨﺸﺎﺀ ﺍل‪ Member‬ﺒﺈﺠﺭﺍﺀ ﻫﺫﺍ ﺍﻻﺴﺘﻌﻼﻡ‬

‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‪.‬‬

‫‪111‬‬
‫ﺍﻟﺴﻨﺎﺭﻴﻭ ﺍﻟﺘﺎﺴﻊ ) ‪:(Point in Time Recovery‬‬
‫ﻟﻨﻔﺘﺭﺽ ﺍﻥ ﻟﺩﻴﻙ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺘﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ‪ Cold backup‬ﻟﻬﺎ ﻴﻭﻤﻴﹰﺎ ﺍﻟﺴﺎﻋﺔ‬
‫ﺍﻟﺨﺎﻤﺴﺔ ﻤﺴﺎﺀ ‪ ،‬ﻭﻓﻰ ﻴﻭﻡ ﺍﻟﺜﻼﺜﺎﺀ ﻓﻰ ﺘﻤﺎﻡ ﺍﻟﺴﺎﻋﺔ ‪ 12:30:20‬ﺼﺒﺎﺤﹰﺎ ﻗﺎﻡ ﺍﺤﺩ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﺒﺤﺫﻑ ﺠﻭل‬
‫ﺍﻟﻤﻭﻅﻔﻴﻥ ‪ Employee‬ﻋﻥ ﻁﺭﻴﻕ ﺍﻟﺨﻁﺄ ﻭﻟﻡ ﺘﻜﺘﺸﻑ ﺫﻟﻙ ﺍﻻ ﻴﻭﻡ ﺍﻟﺨﻤﻴﺱ ﺼﺒﺎﺤﹰﺎ ﻓﻤﺎ ﻫﻭ ﺍﻟﺤل ؟‬
‫‪ -1‬ﻗﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻓﻴﺯﻴﺎﺌﻰ ﺒﺎﺭﺩ ﻟﺠﻤﻴﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻻﻥ‪.‬‬
‫‪ -2‬ﺍﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺤﺎﻟﺘﻬﺎ ﻗﺒل ﺤﺫﻑ ﺍﻟﺠﺩﻭل )‪ (Point in Time Recovery‬ﻭﺫﻟﻙ ﺒﻌﻤل‬
‫‪ Restore‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺍﺨﺭ ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻗﺒل ﺤﺫﻑ ﺍﻟﺠﺩﻭل ‪ ،‬ﺍﻯ ﻨﺤﺘﺎﺝ ﻟﻌﻤل ﺍ‪ Restore‬ﻟﻘﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻴﻭﻡ ﺍﻻﺜﻨﻴﻥ ﻤﺴﺎﺀ ﻭﻤﻥ ﺜﻡ ﻋﻤل ‪ Recovery‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﻤﺎ ﻗﺒل‬
‫ﻼ‬
‫ﺤﺫﻑ ﺍﻟﺠﺩﻭل ﺒﺩﻗﻴﻘﺔ ﻤﺜ ﹸ‬

‫‪ALTER DATABASE RECOVER AUTOMATIC USING BACKUP‬‬


‫;‪CONTROLFILE UNTIL TIME '2008/12/20:12:29:20‬‬

‫‪ -3‬ﺜﻡ ﻨﻔﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.Resetogs‬‬

‫;‪ALTER DATABASE OPEN RESETLOGS‬‬

‫‪ -4‬ﺜﻡ ﻨﻘﻭﻡ ﺒﻌﻤل ﺘﺼﺩﻴﺭ ﻟﻠﺠﺩﻭل ﺍﻟﻤﻁﻠﻭﺏ ﺍﺴﺘﺭﺠﺎﻋﻪ‬

‫‪EXP USER/PASSWORD FILE=C:\EMP.DMP TBLES=EMPLOYEE‬‬

‫‪ -5‬ﺍﻻﻥ ﻨﻘﻭﻡ ﺒﻌﻤل ‪ Restore‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺫﻯ ﻗﻤﻨﺎ ﺒﻪ ﻓﻰ ﺍﻟﺨﻁﻭﺓ ﺍﻻﻭﻟﻰ ﻤﻥ‬
‫ﻫﺫﺍ ﺍﻟﺴﻨﺎﺭﻴﻭ ﻭﻤﻥ ﺜﻡ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ -6‬ﻭﺍﺨﻴﺭﹸﺍ ﻨﻘﻭﻡ ﺒﺈﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﻭل ‪ Employee‬ﻤﻥ ﻤﻠﻑ ﺍﻟﺘﺼﺩﻴﺭ ‪C:\emp.dmp‬‬

‫‪IMP USER/PASSWORD FILE=C:\EMP.DMP TABLES=EMPLOYEE‬‬


‫‪FROMUSER=USER TOUSER=USER‬‬

‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﺈﺴﺘﺭﺠﺎﻉ ﺍﻟﺠﺩﻭل ﺍﻟﻤﻁﻠﻭﺏ ‪ ،‬ﻭﻟﻜﻥ ﻴﺠﺏ ﻤﺭﺍﻋﺎﺓ ﺍﻻﺘﻰ‪-:‬‬

‫‪112‬‬
‫‪ -1‬ﺍﻥ ﺍﻟﺠﺩﻭل ﺘﻡ ﺤﺫﻓﻪ ﺍﻴﻀﹰﺎ ﻤﻥ ﺴﻠﺔ ﺍﻟﻤﻬﻤﻼﺕ‪.‬‬
‫‪ -2‬ﺍﻥ ﺍﻟﺠﺩﻭل ﻏﻴﺭ ﻤﻭﺠﻭﺩ ﻓﻰ ﺍل‪ Undo Tablespace‬ﻟﺫﺍ ﻻ ﻴﻤﻜﻥ ﻋﻤل ‪.Flashback‬‬
‫‪ -3‬ﺍﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﺫﺍ ﻟﻡ ﻴﻜﻥ ﻓﻰ ﺍﻻﻤﻜﺎﻥ ﺍﻏﻼﻗﻬﺎ ﻟﻅﺭﻭﻑ ﺍﻟﻌﻤل ﻴﺠﺏ ﺍﻥ ﺘﺘﻡ ﻋﻤﻠﻴﺔ ﺍﻻﺴﺘﺭﺠﺎﻉ‬
‫ﻓﻰ ﻤﻜﺎﻥ ﺍﺨﺭ ﺤﺘﻰ ﻴﺘﻡ ﺍﺴﺘﻴﺭﺍﺩ ﺍﻟﺠﺩﻭل ﺍﻟﻤﻁﻠﻭﺏ ﻭﻤﻥ ﺜﻡ ﺘﻭﺭﻴﺩﻩ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻻﺼﻠﻴﺔ ‪.‬‬
‫‪ -4‬ﻤﻌﺭﻓﺔ ﺯﻤﻥ ﺤﺫﻑ ﺍﻟﺠﺩﻭل ﻤﻬﻤﺔ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ‪.‬‬

‫‪113‬‬
:‫ﺠﺩﻭل ﻟﻌﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ‬

S.No Data Online Archived Control Online Complete Conclusion


Files Redo Redo Logs File Offiline Incomplete
Logs
1 x x x x Offline Complete Only Restore
(as per last Recovery is
backup) not possible
Because we
lost the
archive logs
also
2 x x √ x Offline Incomplete Restor +
Recovery
until the last
available
archive log
file
3 x (Non √ √ √ Online Complete Restore +
system recovery lost
dbfs) datafiles
4 x √ √ √ Offline Complete Restore +
(system recovery
/ undo
dbfs)
5 √ x √ √ Offline Incomplete If all the
members of a
group are lost
6 √ √ √ x Offline Could be Complete if
complete or you recreate
incomplete
the ctl file.
Incomplete
if you
recover
from
backup
control file
7 √ x √ x Offline Incomplete As both
online logs
& ctl files
are lost

114
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﺍﻟﺴﺎﺨﻥ )‪:(HOT BACKUP‬‬
‫ﻓﻰ ﺍﻟﺠﺯﺀ ﺍﻟﺴﺎﺒﻕ ﺘﺤﺩﺜﻨﺎ ﻋﻥ ﺍل‪ Cold backup‬ﻭﻋﺭﻓﻨﺎ ﻜﻴﻑ ﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺒﺎﺭﺩ‬
‫ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﺩ ﺇﻏﻼﻗﻬﺎ ‪ ،‬ﻭﻟﻜﻥ ﻤﺎﺫﺍ ﻟﻭ ﻜﺎﻨﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﺩﻴﻙ ﻻ ﺘﺘﺤﻤل ﺇﻏﻼﻗﻬﺎ ﻭﻟﻭ ﻟﻠﺤﻅﺔ ﻭﺍﺤﺩﺓ‬
‫ﻼ ﻜﻘﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺸﺭﻜﺎﺕ ﺍﻹﺘﺼﺎل ﻭﻜﺫﻟﻙ ﻨﻘﺎﻁ ﺍﻟﺒﻴﻊ ﻭﺍﻟﺼﺭﻓﺎﺕ ﺍﻻﻟﻴﺔ ؛ ﻓﻰ‬
‫ﻭﺫﻟﻙ ﻨﺴﺒﺔ ﻟﻁﺒﻴﻌﺔ ﻋﻤﻠﻬﺎ ﻤﺜ ﹰ‬
‫ﻫﺫﻩ ﺍﻻﻟﺤﺔ ﻻ ﻴﻤﻜﻨﻨﺎ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻴﻀﹰﺎ ﻨﺤﺘﺎﺝ ﻟﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻬﺎ ﺤﺘﻰ ﻻ ﻨﻔﻘﺩﻫﺎ ﻓﻰ ﺤﺎﻟﺔ‬
‫ﺤﺩﻭﺙ ﻓﺸل ‪ ،‬ﺍﻟﺤل ﻓﻰ ﻤﺜل ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ‪ Hot backup‬ﻭﻫﻭ ﺍﻟﻨﺴﺦ ﺍﻟﻐﺤﺘﻴﺎﻁﻰ ﺍﻟﺴﺎﺨﻥ ‪ ،‬ﺍﻯ ﻋﻤل ﻨﺴﺦ‬
‫ﺍﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺩﻭﻥ ﺇﻏﻼﻗﻬﺎ ﺍﻯ ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺴﺘﻁﻴﻊ ﻋﻤل ﻨﺴﺦ‬
‫ﺇﺤﺘﻴﺎﻁﻰ ﻟﻬﺎ‪.‬‬

‫ﻭﺤﺘﻰ ﺘﺴﺘﻁﻴﻊ ﻓﻬﻡ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻟﻐﺤﺘﻴﺎﻁﻰ ﺍﻟﻴﻙ ﺍﻟﻨﻘﺎﻁ ﺍﻟﺘﺎﻟﻴﺔ‪-:‬‬
‫‪ -1‬ﻟﻌﻤل ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪Archive log‬‬
‫‪ Mode‬ﻭﺫﻟﻙ ﻻﻨﻨﺎ ﻓﻰ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻨﺤﺘﺎﺝ ﺍﻟﻰ ﺍﻻﺭﺸﻴﻑ ﺇﺫ ﻻ ﻴﻤﻜﻥ ﻋﻤل ‪ Simple Restore‬ﺍﺜﻨﺎﺀ‬
‫ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻤﻥ ﺍل‪.Hot Backup‬‬

‫‪ -2‬ﻴﺘﻴﻡ ﻋﻤل ﺍل‪ Hot Backup‬ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﻭﻟﻜﻥ ﻗﺩ ﻴﺅﺩﻯ ﺫﻟﻙ ﻟﺨﻔﺽ ﺍﻻﺩﺍﺀ ﻓﻰ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﺫﺍ ﻴﺤﺒﺫ ﻋﻤل ﺍل‪ Hot backup‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻏﻴﺭ ﺍﻭﻗﺎﺕ ﺍﻟﺫﺭﻭﺓ‪.‬‬

‫‪ -3‬ﻴﻜﻤﻥ ﻋﻤل ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻟل‪ Tablespaces‬ﺒﺸﻜل ﻤﻨﻔﺭﺩ ﺒﻌﺩ ﻜﺘﺎﺒﺔ ﺍﻟﻜﻭﺩ ﺍﻻﺘﻰ‬

‫;‪ALTER TABLESPACE TABLESPACENAME BEGIN BACKUP‬‬

‫ﺒﻌﺩ ﻜﺘﺎﺒﺔ ﻫﺫﺍ ﺍﻟﻜﻭﺩ ﻤﺒﺎﺸﺭﺓ ﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Data files‬ﺍﻟﺘﻰ ﺘﻨﺘﻤﻰ ﻟل‪ Tablespace‬ﺍﻋﻼﻩ‬
‫ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‪.‬‬

‫‪115‬‬
‫ﺒﻌﺩ ﺇﻨﺘﻬﺎﺀ ﻋﻤل ﺍﻟﻨﺴﺦ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻨﻘﻭﻡ ﺒﺈﻨﻬﺎ ﺤﺎﻟﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟل‪ Tablespace‬ﺒﻜﺘﺎﺒﺔ‬
‫ﺍﻟﻜﻭﺩ ﺍﻻﺘﻰ‬

‫;‪ALTER TABLESPACE TABLESPACENAME END BACKUP‬‬

‫‪ -4‬ﺒﺎﻟﻨﺴﺒﺔ ﻟل‪ Control File‬ﻓﺎﻨﻨﺎ ﻻﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﻟﻪ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﺇﻨﻤﺎ ﻓﻘﻁ ﺒﻌﺩ ﺍﻨﺘﻬﺎﺀ‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟل‪ Tablespace‬ﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Control File‬ﻋﻥ ﻁﺭﻴﻕ ﺍل‪SQL‬‬

‫‪ALTER DATABASE BACKUP CONTROL FILE TO‬‬


‫;‪'C:\CONTROL.CTL‬‬

‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Control File‬ﻋﻥ ﻁﺭﻴﻕ ﺍل‪SQL‬‬
‫ﻭﻻ ﻴﺘﻡ ﻋﻤل ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍل‪.Redolog Files‬‬

‫‪ -5‬ﻋﻨﺩ ﻋﻤل ﺍﺴﺘﺭﺠﺎﻉ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺍﺕ ﻤﻥ ﺍل‪ Hot Backup‬ﻻﺒﺩ ﻤﻥ ﻋﻤل ‪ Restore + Recovery‬ﺇﺫﺍ‬
‫ﻻ ﻴﻤﻜﻥ ﻋﻤل ‪ Restore‬ﻓﻘﻁ ﻟﺫﺍ ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﻟﺩﻴﻨﺎ ﻋﻠﻰ ﺍﻻﻗل ‪ One Rrchive File‬ﻟﺫﺍ ﻓﻤﻥ ﺍﻻﻓﻀل‬
‫ﻋﻤل ‪ Switch Logfile‬ﺒﻌﺩ ﺍﻹﻨﺘﻬﺎﺀ ﻤﻥ ﺍل‪Hot Backup‬‬

‫;‪ALTER SYSTEM SWITCH LOGFILE‬‬

‫‪ -6‬ﺒﺎﻟﻨﺴﺒﺔ ﻟﻌﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻓﻬﻰ ﻻ ﺘﺨﺘﻠﻑ ﻋﻥ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻤﻥ ﺍل‪ Cold Backup‬ﻏﻴﺭ ﺍﻨﻨﺎ ﻓﻰ‬
‫ﺍل‪ Hot backup‬ﻻﺒﺩ ﻟﻨﺎ ﻤﻥ ﻋﻤل ‪.Restore + Recovery‬‬

‫‪ -7‬ﻓﻰ ﺍﻹﺼﺩﺍﺭ ‪ Oracle10g‬ﺍﺼﺒﺢ ﺒﺎﻻﻤﻜﺎﻥ ﻭﻀﻊ ﺠﻤﻴﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪Hot‬‬
‫‪Backup‬‬

‫‪116‬‬
‫;‪ALTER DATABASE BEGIN BACKUP‬‬

‫ﻭﻤﻥ ﺜﻡ ﻨﻘﻭﻡ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﺒﻌﻤل ﻨﺴﺦ ﻏﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Datafiles‬ﻭﻤﻥ ﺜﻡ ﻨﺴﺦ‬
‫ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Control File‬ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ SQL‬ﻭﻟﻜﻥ ﻴﺠﺏ ﻤﺭﺍﻋﺎﺓ ﺃﻥ ﻻ ﺘﻜﻭﻥ ﻫﻨﺎﻙ ﻤﺠﻤﻭﻋﺔ ﻜﺒﻴﺭﺓ‬
‫ﻤﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺘﻌﻤل ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﺜﻨﺎﺀ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻻﺤﺘﻴﺎﻁﻰ ﻭﺒﻌﺩ ﺍﻻﻨﺘﻬﺎ ﻤﻥ ﻋﻤل‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻨﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﺍﻟﻜﻭﺩ ﺍﻟﺘﺎﻟﻰ ﻹﻨﻬﺎﺀ ﻭﻀﻊ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫;‪ALTER DATABASE END BACKUP‬‬

‫‪117‬‬
118
119
‫)‪ Recovery Manager (RMAN‬ﺍﺩﺍﺓ ﺇﻨﺸﺎﺀﺘﻬﺎ ﺍﻭﺭﻜل ﺇﺒﺘﺩﺍﺀﹰﺍ ﻤﻥ ﺍﻹﺼﺩﺍﺭ ‪ 8‬ﻟﺘﻜﻭﻥ ﻨﻘﻠﺔ ﻨﻭﻋﻴﺔ‬
‫ﻭﻜﺒﻴﺭﺓ ﻓﻰ ﻤﺠﺎل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ‪ Backup & Restore & Recovery‬ﺤﻴﺙ ﻭﻓﺭﺓ‬
‫ﻫﺫﻩ ﺍﻹﺩﺍﺀﺓ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﻟﻡ ﺘﻜﻥ ﻤﻭﺠﻭﺩﺓ ﻤﻥ ﻗﺒل ﻤﻤﺎ ﺠﻌﻠﻬﺎ ﺍﻓﻀل ﺍﺩﺍﺀﺓ ﺘﻭﻓﺭﻫﺎ ﺍﻭﺭﻜل‬
‫ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺠﺎل ﻋﻠﻰ ﺍﻹﻁﻼﻕ‪.‬‬

‫ﻟﺫﺍ ﺘﻨﺼﺢ ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﺒﺈﺴﺘﺨﺩﺍﻡ ﻫﺫﻩ ﺍﻹﺩﺍﺓ ﻭﺫﻟﻙ ﻹﺤﺘﻭﺍﺀﻫﺎ ﻋﻠﻰ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﻤﻴﺯﺍﺕ ﻭﺍﻟﺘﻰ‬
‫ﻤﻥ ﺍﻫﻤﻬﺎ ‪:‬‬
‫‪ -1‬ﻤﺴﺘﻭﻯ ﺍﺩﺍﺀ ﺍﻓﻀل ﺒﺎﻟﻨﺴﺒﺔ ﻟﻌﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﻤﻘﺎﺭﻨﺔ ﺒﺎﻻﺩﻭﺍﺕ ﺍﻻﺨﺭﻯ‪.‬‬
‫‪ -2‬ﺘﻘﻭﻡ ﺒﻌﻤل ﻓﺤﺹ ﻟﻜل ﺍﻟﻜﺘل ﻤﻨﻁﻘﻴﹰﺎ ﻭﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﺍﺜﻨﺎﺀ ﻗﺭﺍﺌﺘﻬﺎ ﻋﻨﺩ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ‪ ،‬ﻭﻤﻥ‬
‫ﺜﻡ ﺇﻜﺘﺸﺎﻑ ﺍﻟﻜﺘل ﺍﻟﻔﺎﺴﺩﺓ‪.‬‬
‫‪ -3‬ﺘﻭﻓﻴﺭ ﺨﻴﺎﺭﺍﺕ ﻨﺴﺦ ﻜﻠﻰ ﻭﺠﺯﺌﻰ ﻭﺘﺭﺍﻜﻤﻰ‪.‬‬
‫‪ -4‬ﺘﻭﻓﻴﺭ ﺨﻴﺎﺭﺍﺕ ﺍﺨﺭﻯ ﻜﺘﺤﺩﻴﺩ ﻤﺩﺓ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺘﺤﺩﻴﺩ ﻗﻨﻭﺍﺕ ﺘﻌﻤل ﺒﺎﻟﺘﻭﺍﺯﻯ ﺍﺜﻨﺎﺀ‬
‫ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ‪ Backup & Recovery‬ﻭﺨﻴﺎﺭﺍﺕ ﻀﻐﻁ ﻟﺘﻘﻠﻴل ﺤﺠﻡ‬
‫ﺍﻟﻤﺨﺭﺠﺎﺕ ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻻﺨﺭﻯ ﺍﻟﺘﻰ ﺴﻨﻤﺭ ﻋﻠﻴﻬﺎ ﺘﺒﺎﻋﹰﺎ‪.‬‬
‫‪ -5‬ﺍﺩﺍﺭﺓ ﺠﻴﺩﺓ ﻟﻌﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﻜﻤﺎ ﺘﻘﻭﻡ ﺒﺈﺩﺍﺭﺓ ﺠﻴﺩﺓ ﺍﻴﻀﹰﺎ ﻟﻠﻤﻬﺎﻡ )‪(Tasks‬‬
‫ﻟﻠﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ‪.‬‬
‫‪ -6‬ﺍﻤﻜﺎﻨﻴﺔ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻜل ﻤﻥ ) ‪Database,Tablespaces,Datafiles,Archivelog‬‬
‫‪.(Files,Control Files,Spfile‬‬
‫‪ -7‬ﺇﻤﻜﺎﻨﻴﺔ ﺘﻤﺭﻴﺭ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟل‪ Disks‬ﺍﻭ ﺍل‪.Tapes‬‬
‫‪ -8‬ﺴﺭﻋﺔ ﻋﺎﻟﻴﺔ ﺇﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ‪.‬‬
‫‪ -9‬ﺘﻭﻓﺭ ﻁﺭﻕ ﺍﺴﺘﻌﻼﻡ ﺴﻬﻠﺔ ﻟﻠﻭﺼﻭل ﻟﺠﻤﻴﻊ ﺍﻟﻌﻠﻭﻤﺎﺕ ﺍﻟﻤﻁﻠﻭﺒﺔ ﻋﻥ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
‫ﻭﺍﻹﺴﺘﺭﺠﺎﻉ‪.‬‬
‫‪ -10‬ﺘﻭﻓﻴﺭ ﺍﺴﺘﺭﺍﺘﻴﺠﻴﺔ ﺍﻟﻴﺔ ﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻤﺎ ﻴﺴﻬل ﻤﻥ ﻋﻤﻠﻴﺎﺕ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪،‬‬
‫ﻭﻜﺫﻟﻙ ﺘﺴﻬل ﺇﺩﺍﺭﺓ ﺍﻟﻤﺴﺎﺤﺎﺕ ﺍﻟﺘﺨﺯﻴﻨﻴﺔ ﻋﻠﻰ ﺍﻟﺩﻴﺴﻙ‪.‬‬

‫‪120‬‬
‫ﻣﻜﻮﻧﺎت ال)‪:Recovery Manager (RMAN‬‬

‫ﺍﻟﺸﻜل ﺍﻋﻼﻩ ﻴﻭﻀﺢ ﻤﻜﻭﻨﺎﺕ ﺍل)‪(RMAN‬‬

‫‪ :RMAN Executable‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﻠﻑ ﺘﻨﻔﻴﺫﻯ ﻴﺸﺒﻪ ﻤﻠﻑ‬ ‫‪-1‬‬


‫ﺍﻟﺘﺼﺩﻴﺭ ‪ EXP.exe‬ﻭﺍﻴﻀﹰﺎ ﻤﻠﻑ ﺍﻹﺴﺘﻴﺭﺍﺩ ‪ IMP.exe‬ﻭﻋﻨﺩ ﺘﺸﻐﻴل‬
‫ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﺘﻔﺘﺢ ﻟﻙ ﻨﺎﻓﺫﺓ ﻋﻠﻴﻬﺎ ﺍﺸﺎﺭﺓ ﺍﻟﻤﺤﺙ >‪ RMAN‬ﺒﺤﻴﺙ ﻴﻘﺒل‬
‫ﺍﻻﻭﺍﻤﺭ ﺍﻟﺘﻰ ﺘﻜﺘﺏ ﻋﻠﻴﻪ ﻭﻴﻘﻭﻡ ﺒﺘﺤﻭﻴﻠﻬﺎ ﺍﻟﻰ ﺴﻠﺴﻠﺔ ﺨﻁﻭﺍﺕ ﻴﺘﻡ ﺘﻨﻔﻴﺫﻫﺎ‬
‫ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ‪.‬‬
‫‪ :Target Database‬ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻭﻫﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬ ‫‪-2‬‬
‫ﺍﻟﺘﻰ ﻨﺭﻴﺩ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻬﺎ ﺒﻭﺍﺴﻁﺔ ﺍل‪.RMAN‬‬

‫‪121‬‬
‫‪ :RMAN Repository‬ﻴﺘﻡ ﻓﻴﻪ ﺤﻔﻅ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﻋﻤﻠﻴﺎﺕ‬ ‫‪-3‬‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﻭﺍﻴﻀﹰﺎ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻭﻫﻴﻜﻠﺘﻬﺎ ﻭﺍﻴﻀﹰﺎ ﻴﺤﻔﻅ ﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻬﻴﺌﺔ ﻟل‪RMAN‬‬
‫)‪ (RMAN Configuration Settings‬ﻭﻴﺘﻡ ﺤﻔﻅ ﺍل ‪RMAN‬‬
‫‪ Repository‬ﺩﺍﺌﻤﹰﺎ ﻓﻰ ﻤﻠﻑ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ‬
‫‪ Control File‬ﻭﻟﻜﻥ ﻴﺠﺏ ﺍﻹﻨﺘﻴﺎﻩ ﺇﻟﻰ ﺃﻥ ﻤﺩﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺒﻤﻌﻠﻭﻤﺎﺕ‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻓﻰ ﻤﻠﻑ ﺍﻟﺘﺤﻜﻡ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪ CONTROL_FILE_RECORD_KEEP_TIME‬ﺍﻟﺫﻯ ﻴﺤﻭﻯ‬
‫ﻗﻴﻤﺔ ﺘﻤﺜل ﻋﺩﺩ ﺍﻻﻴﺎﻡ ﻟﻼﺤﺘﻔﺎﻅ ﺒﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻗﺒل ﺃﻥ ﻴﺘﻡ‬
‫ﺍﺴﺘﺨﺩﺍﻡ ﻨﻔﺱ ﺍﻟﺤﻘﻭل ﻟﻜﺘﺎﺒﺔ ﻤﻌﻠﻭﻤﺎﺕ ﺠﺩﻴﺩﺓ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬

‫‪ :Recovery Catalog‬ﻻﺤﻅ ﻤﻌﻰ ﺃﻥ ﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬ ‫‪-4‬‬


‫ﺍﻟﺘﻰ ﻴﺘﻡ ﺤﻔﻅﻬﺎ ﻓﻰ ﻤﻠﻑ ﺍﻟﺘﺤﻜﻡ ﻫﻰ ﺒﻴﺎﻨﺎﺕ ﻤﺅﻗﺘﺔ ﻜﻤﺎ ﺃﻨﻪ ﻟﻭ ﻓﻘﺩﻨﺎ‬
‫ﻤﻠﻑ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻨﻜﻭﻥ ﻗﺩ ﻓﻘﺩﻨﺎ ﻫﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ‬
‫ﻟﺫﺍ ﻭﻓﺭﺕ ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﺨﻴﺎﺭ ﺍﺨﺭ ﻟﻺﺤﺘﻔﺎﻅ ﺒﻬﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻯ‬
‫ﺍﻹﺤﺘﻔﺎﻅ ﺒﺎل‪ RMAN Repository‬ﻓﻰ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﺍﺨﺭﻯ ﺘﺴﻤﻰ‬
‫ﺍل‪ ، Recovery Catalog‬ﺍﻴﻀﹰﺎ ﻴﺘﻡ ﻓﻴﻬﺎ ﺤﻔﻅ ‪RMAN‬‬
‫‪.SCRIPTS‬‬
‫‪ :Flash Recovery Area‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺴﺎﺤﺔ ﻋﻠﻰ ﺍﻟﺩﻴﺴﻙ ﻴﺘﻡ‬ ‫‪-5‬‬
‫ﺍﻟﺘﺤﻜﻡ ﻓﻴﻬﺎ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻭﺭﻜل ﺒﺤﻴﺙ ﻴﺘﻡ ﻓﻴﻬﺎ ﺘﺨﺯﻴﻥ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ‬
‫ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﻴﺘﻡ ﺇﺩﺍﺭﺓ ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ﻭﺍﻟﺘﺤﻜﻡ ﻓﻴﻬﺎ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻭﺭﻜل‬
‫ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪ DB_RECOVERY_FILE_DEST‬ﻭﻫﻭ ﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺴﺎﺭ ﻭﺍﻴﻀﹰﺎ‬
‫ﺍﻟﻤﺘﻐﻴﺭ ‪ DB_RECOVERY_FILE_DEST_SIZE‬ﻟﺘﺤﺩﻴﺩ ﺤﺠﻡ‬
‫ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ‪ ،‬ﺍﻤﺎ ﻋﻤﻠﻴﺔ ﺇﺩﺍﺭﺓ ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ﻓﺘﻜﻭﻥ ﻋﻥ ﻁﺭﻴﻕ‬
‫ﺍﻻﻭﺭﻜل ﺤﻴﺙ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺒﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
‫ﻭﺍﻴﻀﹰﺎ ﺤﺫﻑ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻘﺩﻴﻤﺔ ﺍﻟﻤﻨﺘﻬﻴﺔ ﻭﺯﻴﺎﺩﺓ ﺤﺠﻡ ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ﺇﺫﺍ‬
‫ﺘﻁﻠﺏ ﺍﻻﻤﺭ ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﺍﺠﺭﺍﺀﺍﺕ ﻹﺩﺍﺭﺓ ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ﻴﺘﻡ ﻋﻥ ﻁﺭﻴﻕ‬
‫ﺍﻻﻭﺭﻜل‪.‬‬

‫‪122‬‬
‫‪ :Enterprise Manager‬ﻜﺎﻨﺕ ﺍﻟﻤﺸﻜﻠﺔ ﺴﺎﺒﻘﹰﺎ ﻓﻰ ﻜﺘﺎﺒﺔ ﺍﻟﻜﻭﺩ‬ ‫‪-6‬‬
‫ﻟﻌﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﻭﺇﺩﺍﺭﺓ ﺍل ‪Flash Recovery‬‬
‫‪ ، Area‬ﻭﻟﻜﻥ ﻭﻓﺭﺓ ﺍﻭﺭﻜل ﻭﺍﺠﻬﺔ ﺘﻌﺎﻤل ﻟﺤل ﻫﺫﻩ ﺍﻟﻤﺸﻜﻠﺔ ﻭﻫﻰ ﺍل‬
‫‪Enterprise Manager‬ﻓﺘﺴﺘﻁﻴﻊ ﻋﻤل ﺠﻤﻴﻊ ﺍﻟﻤﻬﺎﻡ ﺩﻭﻥ ﻜﺘﺎﺒﺔ ﺍﻯ‬
‫ﻜﻭﺩ‪.‬‬
‫‪ :Auxiliary Database‬ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ‬ ‫‪-7‬‬
‫ﺒﻭﺍﺴﻁﺔ ﺍل‪ RMAN‬ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺴﺨﺔ ﻤﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ ﻟﻌﺩﺓ ﺍﻏﺭﺍﺽ ﻤﻨﻬﺎ ﻋﻤﻠﻴﺎﺕ ﺍﻹﺨﺘﺒﺎﺭ ﺇﺫ ﻻ ﻴﻤﻜﻥ‬
‫ﺍﺠﺭﺍﺀ ﺍﻻﺨﺘﺒﺎﺭ ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻻﺼل ‪ ،‬ﺍﻴﻀﹰﺎ ﻓﻰ ﺒﻌﺽ ﺍﻻﺤﻴﺎﻥ‬
‫ﻗﺩ ﻨﺤﺘﺎﺝ ﺍﻟﻴﻬﺎ ﻋﻨﺩ ﻋﻤل ‪Tablespace Point-in-Time‬‬
‫‪ Recovery‬ﻭﻫﻰ ﻋﻤﻠﻴﺔ ﺇﺭﺠﺎﻉ ﺍل‪ Tablespace‬ﺇﻟﻰ ﺍﻟﻭﺭﺍﺀ ﺩﻭﻥ‬
‫ﺍﻟﺘﺄﺜﻴﺭ ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻓﻴﺘﻡ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﻫﺫﺍ ﺍﻟﺠﺭﺍﺀ ﺒﺈﻋﺘﺒﺎﺭ ﺍل‬
‫‪ Auxiliary Database‬ﻜﻤﺨﺯﻥ ﻤﺅﻗﺕ ﺍﺜﻨﺎﺀ ﻋﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ‪ ،‬ﺍﻴﻀﹰﺎ ﻴﻤﻜﻥ ﻨﺘﻌﺎﻤل ﻤﻌﻬﺎ ﻙ‪ Standby Database‬ﻓﻰ‬
‫ﺤﺎل ﺤﺼل ﻤﺸﻜﻠﺔ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻴﺘﻡ ﺘﺤﻭﻴل ﺍﻟﻌﻤل ﺍﻟﻴﻬﺎ‬
‫ﺩﻭﻥ ﺃﻥ ﻨﻔﻘﺩ ﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪ :Channel‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺠﻠﺴﺔ ﻋﻤل ﻴﺘﻡ ﻤﻥ ﺨﻼﻟﻬﺎ ﻋﻤل ﺍﻟﻨﺴﺦ‬ ‫‪-8‬‬


‫ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ‪ ،‬ﻭﻴﺘﻡ ﺇﻨﺸﺎﺌﻬﺎ ﻴﺩﻭﻴ ﹰﺎ ﻋﻥ ﻜﺘﺎﺒﺔ ﺍﻟﻜﻭﺩ ﺍﻭ ﺍﻟﻴﹰﺎ‬
‫ﻋﻥ ﻁﺭﻴﻕ ﺘﻬﻴﺌﺘﺔ ﺍل‪.RMAN‬‬
‫)‪ :Media Management Library (MML‬ﺍل‪ RMAN‬ﻴﻤﻜﻥ‬ ‫‪-9‬‬
‫ﺃﻥ ﺘﺭﺴل ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ )‪ (Backup‬ﺍﻟﻰ ﺍﻟﺩﻴﺴﻙ ﺍﻭ‬
‫ﺍل‪ MML ، Tape‬ﻋﺒﺎﺭﺓ ﺒﺭﻨﺎﻤﺞ ﺘﺴﺘﺨﺩﻤﻪ ﺍل‪ RMAN‬ﻹﺭﺴﺎل‬
‫ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻰ ﺍل‪.Tape‬‬

‫‪123‬‬
‫ﺃﻨﻭﺍﻉ ﺍﻹﺘﺼﺎل ﺒﺎل‪:RMAN‬‬
‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺘﺸﻐﻴل ﺍل‪ RMAN‬ﺩﻭﻥ ﺍﻹﺘﺼﺎل ﺒﺎﻯ ﻤﻥ ﻗﻭﺍﻋﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺫﻟﻙ ﺒﻭﺍﺴﻁﺔ ﺘﺸﻐﻴل‬
‫ﺍﻟﻤﻠﻑ ‪ RMAN.EXE‬ﺍﻭ ﻋﻥ ﻁﺭﻴﻕ ﻜﺘﺎﺒﺔ ﺍﻻﻤﺭ ‪ RMAN‬ﻋﻠﻰ ﺍل‪.Prompt‬‬

‫‪C:\RMAN‬‬

‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻟﺨﺭﻭﺝ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪.EXIT‬‬

‫‪RMAN>EXIT‬‬

‫‪124‬‬
‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻹﺘﺼﺎل ﺒﺜﻼﺙ ﺍﻨﻭﺍﻉ ﻤﻥ ﻗﻭﺍﻋﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‪-:‬‬
‫‪ :Target Database -1‬ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻭﻴﺘﻡ ﺍﻻﺘﺼﺎل ﺒﻬﺎ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻤﺭ ﺍﻟﺘﺎﻟﻰ‪.‬‬

‫‪C:\RMAN TARGET /‬‬

‫‪125‬‬
‫‪:Recovery Catalog Database -2‬‬

‫‪C:\RMAN TARGET /‬‬ ‫‪CATALOG RMAN/RMAN‬‬

‫ﺴﻨﺘﺤﺩﺙ ﻻﺤﻘﹰﺎ ﻋﻥ ﻜﻴﻔﻴﺔ ﺇﻨﺸﺎﺀ ‪ Recovery Catalog Database‬ﻭﻟﻜﻥ ﻴﺠﺏ ﺍﻟﺘﻨﺒﻴﻪ ﺍﻟﻰ ﺍﻨﻪ‬
‫ﻴﻤﻜﻥ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻻﺴﺘﺭﺠﺎﻉ ﺩﻭﻥ ﺍﻟﻠﺠﻭﺀ ﺍﻟﻰ ﺍﻹﺘﺼﺎل ﺒﺎل ‪Recovery Catalog‬‬
‫‪ Database‬ﺒﺤﻴﺙ ﻴﺘﻡ ﺘﺨﺯﻴﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻤﻠﻑ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ‪.Control File‬‬

‫‪126‬‬
‫‪:Auxiliary Database -3‬‬

‫‪C:\RMAN TARGET /‬‬ ‫‪CATALOG RMAN/RMAN‬‬

‫ﻟﻴﺱ ﺸﺭﻁﹰﺎ ﻹﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﺍﻹﺘﺼﺎل ﺒﺎل‪ Auxiliary Database‬ﻭﺫﻟﻙ‬
‫ﻻﻨﻬﺎ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﻤﺴﺎﻋﺩﺓ ﻗﺩ ﻨﺤﺘﺎﺝ ﺍﻟﻴﻬﺎ ﻻﺤﻘﹰﺎ ﻻﺴﺒﺎﺏ ﺫﻜﺭﺘﻬﺎ ﺴﺎﺒﻘﹰﺎ‪.‬‬

‫‪127‬‬
‫ﺨﻴﺎﺭﺍﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪-:‬‬

‫ﺘﻭﻓﺭ ﺍل‪ RMAN‬ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ )‪:(Backup‬‬


‫‪ -1‬ﺍﺴﺘﺭﺘﻴﺠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪-:‬‬
‫‪ :Whole -1‬ﻭﻫﻰ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ Data Files‬ﺒﺎﻹﻀﺎﻓﺔ ﻋﻠﻰ ﺍﻻﻗل‬
‫ﻋﻠﻰ ﻭﺍﺤﺩ ﻤﻥ ﺍل‪ Control File‬ﻭﺫﻟﻙ ﻷﻥ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ Control Files‬ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻫﻰ ﻁﺒﻕ ﺍﻻﺼل‪.‬‬
‫‪ :Partial -2‬ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﺼﻔﺭ ﺍﻭ ﺍﻜﺜﺭ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Data Files‬ﺍﻭ ﺼﻔﺭ ﺍﻭ ﺍﻜﺜﺭ‬
‫ﻟل‪ Tablespaces‬ﻜﻤﺎ ﻴﻤﻜﻥ ﻋﻤل ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻑ ﺍل‪ Control File‬ﺍﻭ ﺘﺠﺎﻫﻠﻪ‪.‬‬

‫‪ -2‬ﺍﻨﻭﺍﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪-:‬‬


‫‪ :Full -1‬ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﻟﺠﻤﻴﻊ ﻜﺘل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻤﻠﻑ ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻠﻤﻠﻑ‬
‫ﺍﻟﺫﻯ ﻴﺤﻭﻯ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬
‫‪ :Incremental -2‬ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﻟﻜﺘل ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻤﻠﻑ ﺍﻟﺘﻰ ﺘﻐﻴﺭﺕ ﻤﻨﺫ ﺒﻌﺽ ﺍﻟﻨﺴﺦ‬
‫ﺍﻻﺤﺘﻴﺎﻁﻴﺔ ﺍﻟﺴﺎﺒﻘﺔ ‪.‬‬
‫ﻋﻤﻭﻤﹰﺎ ﺍﻭﺭﻜل ‪ g10‬ﺘﻭﻓﺭ ﻨﻭﻋﻴﻥ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺘﺯﺍﻴﺩﻯ ‪.Incremental Backup‬‬
‫‪ :Incremental Level0‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺴﺨﺔ ﺍﺤﺘﻴﺎﻁﻴﺔ ﺍﺴﺎﺴﻴﺔ ﺘﺤﻭﻯ‬ ‫‪-1‬‬
‫ﺠﻤﻴﻊ ﻜﺘل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻰ ﺘﻌﺘﺒﺭ ﻙ‪ Full Backup‬ﻏﻴﺭ ﺃﻨﻪ ﺘﻌﺘﺒﺭ ﻜﻨﻘﻁﺔ‬
‫ﺍﺴﺎﺴﻴﺔ ﻴﻤﻜﻥ‬
‫‪-2‬‬
‫ﺍﻟﺭﺠﻭﻉ ﺍﻟﻴﻬﺎ ﻋﻨﺩ ﻋﻤل ‪.Incremental Level 1‬‬ ‫‪-3‬‬
‫‪ :Incremental Level 1‬ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺴﺨﺔ ﺍﺤﺘﻴﺎﻁﻴﺔ ﻟﺠﻤﻴﻊ ﻜﺘل ﻗﺎﻋﺩﺓ‬ ‫‪-4‬‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﻐﻴﺭﺕ ﻤﻨﺫ ﺍﺨﺭ ‪.Incremental Level 0‬‬

‫‪128‬‬
‫‪ -3‬ﺍﻨﻤﺎﻁ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪-:‬‬
‫‪ :Offline -1‬ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺸﺭﻁ ﺃﻥ ﺘﻜﻭﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻏﻴﺭ‬
‫ﻤﻔﺘﻭﺤﺔ ﺍﻭ ﺒﻤﻌﻨﻰ ﺍﺨﺭ ﻴﻤﻜﻥ ﻋﻤل ﻨﺴﺦ ﺃﺤﺘﻴﺎﻁﻰ ﻟﻘﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ Mount‬ﻭﻫﻨﺎ‬
‫ﻨﻀﻤﻥ ﺍﻥ ﺍﻻﺘﻰ‬
‫‪The SCN data file headers matches the SCN in the control files.‬‬
‫ﻭﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻴﺴﻤﻰ ﺍﻴﻀﹰﺎ )‪.(Consistent or Cold‬‬
‫‪ :Online -2‬ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺍﺜﻨﺎﺀ ﻋﻤل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺩﻭﻥ ﺇﻏﻼﻗﻬﺎ ‪ ،‬ﻭﻴﺴﻤﻰ ﺍﻴﻀﹰﺎ‬
‫)‪.(Inconsistent or Cold‬‬

‫‪ -4‬ﺍﺸﻜﺎل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪-:‬‬


‫‪ :Image Copies -1‬ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺴﺨﺔ ﻁﺒﻕ ﺍﻻﺼل ﻟﻠﻤﻠﻔﺎﺕ ﻭﻫﻰ ﺘﺸﺒﻪ ﻋﻤﻠﻴﺔ ﻨﺴﺦ‬
‫ﺍﻟﻤﻠﻔﺎﺕ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ‪ ،‬ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻴﺘﻡ ﺇﺭﺴﺎﻟﻪ ﻓﻘﻁ ﺇﻟﻰ ﺍﻟﺩﻴﺴﻙ‬
‫ﻭﻻ ﻴﻤﻜﻥ ﺇﺭﺴﺎﻟﻪ ﺇﻟﻰ ﺍل‪ ، Tape‬ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻴﺴﻬل ﻋﻤﻠﻴﺔ ﺍﻻﺴﺘﺭﺠﺎﻉ )‪. (Restore‬‬
‫‪ :Backup Sets -2‬ﻭﻫﻰ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻭﺍﺤﺩ ﺍﻭ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍل‪ Data File‬ﺍﻭ ﻤﻠﻔﺎﺕ‬
‫ﺍل‪ Archive log Files‬ﺒﺤﻴﺙ ﻴﺘﻡ ﺘﺠﺎﻫل ﺍﻟﻜﺘل ﺍﻟﻔﺭﻏﺔ ﻭﺍﻤﻜﺎﻨﻴﺔ ﻋﻤل ﻀﻐﻁ ﻟﻠﻜﺘل ﻟﺘﻘﻠﻴل ﺤﺠﻡ‬
‫ﺍﻟﻤﻠﻔﺎﺕ ﻤﻤﺎ ﻴﺠﻌل ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻗل ﺤﺠﻤﹰﺎ ﻤﻥ ﺍﻟﻨﻭﻉ ﺍﻻﻭل ‪.Image Copies‬‬

‫‪129‬‬
‫ﻁﺭﻕ ﺘﻨﻔﻴﺫ ﺍﻭﺍﻤﺭ ﺍل‪:RMAN‬‬
‫ﻻ ﻭﻗﺒل ﺍﻟﺤﺩﻴﺙ ﻋﻥ ﻁﺭﻕ ﺘﻨﻔﻴﺫ ﺍﻭﺍﻤﺭ ﺍل‪ RMAN‬ﻴﺠﺏ ﺍﻹﺸﺎﺭﺓ ﺇﻟﻰ ﺃﻥ ﻤﺴﺘﺨﺩﻡ ﻗﺎﻋﺩﺓ‬
‫ﺍﻭ ﹰ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺫﻯ ﻴﺭﻴﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺍل‪ RMAN‬ﻴﺠﺏ ﺃﻥ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪ SYSDBA‬ﻭﺫﻟﻙ ﻻﻨﻪ ﻗﺩ ﻴﺤﺘﺎﺝ‬
‫ﻹﻏﻼﻕ ﻗﺎﻋﺩﺓ ﻭﻓﺘﺤﻬﺎ‪.‬‬

‫ﺍﻤﺎ ﻁﺭﻕ ﺘﻨﻔﻴﺫ ﺍﻭﺍﻤﺭ ﺍل‪ RMAN‬ﻓﻬﻰ‪:‬‬


‫‪ :Stand-alone‬ﻴﺘﻡ ﻓﻴﻪ ﺘﻨﻔﻴﺫ ﺍﻻﻭﺍﻤﺭ ﺒﺸﻜل ﻤﻨﻔﺭﺩ ﻓﻰ ﻤﺤﺭﺭ ﺍل‪ RMAN‬ﻭﺩﻭﻥ‬ ‫‪-1‬‬
‫ﺒﺩﺍﻴﺔ ﺍﻟﻜﻭﺩ ﺒﺎﻟﻜﻠﻤﺔ ‪.RUN‬‬
‫‪ :Job‬ﻴﺠﺏ ﺃﻥ ﻴﺘﻡ ﺘﻀﻤﻴﻨﻪ ﺒﻴﻥ ﻗﻭﺴﻴﻥ }{ ﻭﻴﺤﺏ ﺍﻥ ﻴﺒﺩﺃ ﺒﻜﻠﻤﺔ ‪ RUN‬ﻭﻴﺘﻡ‬ ‫‪-2‬‬
‫ﺘﻨﻔﻴﺫ ﺍﻻﻭﺍﻤﺭ ﻓﻴﻪ ﻓﻰ ﺸﻜل ﻤﺠﻤﻭﻋﺔ‪.‬‬

‫‪ File.rcv‬ﻭﻴﺘﻡ ﺘﻨﻔﻴﺫﻩ ﻋﻠﻰ ﻤﺤﺭﺭ ﺍل‪.RMAN‬‬ ‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺤﻔﻅ ﺍﻟﻜﻭﺩ ﻓﻰ ﺸﻜل ﻤﻠﻑ‬

‫‪C:\RMAN TARGET /‬‬ ‫‪@c:\backup.rcv‬‬

‫ﻗﻤﺕ ﺒﺘﻨﻔﻴﺫ ﺍﻟﻤﻠﻑ ‪ c:\backup.rcv‬ﺍﻟﺫﻯ ﻴﺤﻭﻯ ﻋﻠﻰ ﻜﻠﻤﺘﻴﻥ ﻓﻘﻁ ‪ REPORT SCHEMA‬ﻭﻫﺫﺍ‬
‫ﺍﻻﻤﺭ ﻟﻌﺭﺽ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫‪130‬‬
‫ﲥﻴﺌﺔ ال‪:(RMAN Configuration Setting) RMAN‬‬
‫ﻓﻰ ﺍﻟﺤﻘﻴﻘﺔ ﺃﻥ ﺘﻬﻴﺌﺔ ﺨﻴﺎﺭﺍﺕ ﺍل‪ RMAN‬ﺘﺴﺎﻋﺩ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻜﺜﻴﺭﹰﺍ ﻓﻰ ﻋﻤﻠﻪ ‪ ،‬ﺨﺼﻭﺼﹰﺎ‬
‫ﺇﺫﺍ ﻜﺎﻨﺕ ﻟﻪ ﺍﺴﺘﺭﺍﺘﻴﺠﻴﺔ ﻭﺍﻀﺤﺔ ﻓﻰ ﺍﻟﻌﻤل ﻓﻴﻘﻭﻡ ﺒﺘﻬﻴﺌﺔ ﺍل‪ RMAN‬ﺒﻨﺎﺀ ﻋﻠﻰ ﻫﺫﻩ ﺍﻹﺴﺘﺭﺍﺘﻴﺠﻴﺔ ﺍﻟﺘﻰ‬
‫ﺍﻋﺩﻫﺎ ﻤﺴﺒﻘﹰﺎ ‪ ،‬ﻜﻤﺎ ﻴﺠﺏ ﺍﻹﺸﺎﺭﺓ ﺇﻟﻰ ﺃﻨﻪ ﻋﻨﺩ ﺇﺴﺘﺨﺩﺍﻡ ﺍل‪ RMAN‬ﺩﻭﻥ ﺇﻋﺎﺩﺓ ﺘﻬﻴﺌﺘﻬﺎ ﺘﻌﻤل ﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ‬
‫ﻋﻠﻰ ﺍﻟﺘﻬﻴﺌﺔ ﺍﻻﺼﻠﻴﺔ ‪.Default Setting‬‬
‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺘﻬﻴﺌﺔ ﺍل‪ RMAN‬ﻭﻟﻜﻥ ﺍﻴﻀﹰﺎ ﻴﻤﻜﻥ ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﺠﺎﻫل ﻫﺫﻩ ﺍﻟﺘﻬﻴﺌﺔ ﻋﻥ‬
‫ﻁﺭﻴﻕ ﺍﻨﺠﺎﺯ ﻤﻬﺎﻤﻪ ﻴﺩﻭﻴﹰﺎ ﺒﻜﺘﺎﺒﺔ ﻜل ﻤﺎﻴﺭﻴﺩﻩ ﻋﻠﻰ ﻤﺤﺭﺭ ﺍل‪ RMAN‬ﺤﺘﻰ ﻭﻟﻭ ﺍﺨﺘﻠﻑ ﻜﻠﻴﹰﺎ ﻋﻥ‬
‫ﺍل‪ ، Configuration Setting‬ﺇﺫﹰﺍ ﻴﻤﻜﻥ ﺍﻟﻘﻭل ﺍﻥ ﻋﻤﻠﻴﺔ ﺘﻬﻴﺌﺔ ﺍل‪ RMAN‬ﺍﻤﺭ ﻤﻬﻡ ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﻜﻡ ﻴﻤﻜﻨﻪ ﺘﺠﺎﻫل ﻫﺫﻩ ﺍﻟﺘﻬﻴﺌﺔ ﻤﺘﻰ ﺸﺎﺀ ﻋﻥ ﻁﺭﻴﻕ ﺇﻨﺠﺎﺯ ﻤﻬﺎﻤﻪ ﻴﺩﻭﻴﹰﺎ‪.‬‬

‫ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻬﻴﺌﺔ ﺍل‪ RMAN‬ﺒﺤﻴﺙ ﻴﻘﻭﻡ ﺒﺘﺤﺩﺩ ﻨﻭﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
‫)‪ (Backup Set or Copy‬ﻜﺫﻟﻙ ﺘﺤﺩﻴﺩ ﻨﻭﻉ ﺍل‪ (Disk or Tape) Device‬ﻭﺍﻴﻀﹰﺎ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ‬
‫ﺒﺎﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﺍﻟﺘﻰ ﺴﻨﺘﺤﺩﺙ ﻋﻨﻬﺎ ﺒﺎﻟﺘﻔﺼﻴل‪.‬‬

‫;‪RMAN>SHOW ALL‬‬

‫‪131‬‬
‫‪ SHOW ALL‬ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻘﻭﻡ ﺒﻌﺭﺽ ﺨﻴﺎﺭﺍﺕ ﺘﻬﻴﺌﺔ ﺍل ‪ ، (RMAN Configuration) RMAN‬ﻜﻤﺎ‬
‫ﻴﻤﻜﻥ ﻤﻼﺤﻅﺔ ﺃﻨﻪ ﻓﻰ ﺘﻭﺠﺩ ﺍﺤﻴﺎﻨﹰﺎ ﻜﻠﻤﺔ ‪ Default‬ﻓﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺴﻁﺭ ﻤﻤﺎ ﺘﺩل ﻋﻠﻰ ﺍﻥ ﻫﺫﻩ ﻫﻰ ﺍﻟﻘﻴﻤﺔ‬
‫ﺍﻹﺼﻠﻴﺔ )‪(Default Setting‬‬

‫ﺘﻬﻴﺌﺔ ﺍل‪:Retention Policy‬‬


‫ﻭﻫﻰ ﻟﺘﺤﺩﻴﺩ ﻓﺘﺭﺓ ﺍﻻﺤﺘﻔﺎﻅ ﺒﺎﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ )‪ (Backup‬ﻗﺒل ﺃﻥ ﺘﺼﺒﺢ ﻫﺫﻩ ﺍﻟﻨﺴﺦ ﻓﻰ ﻗﺎﺌﻤﺔ‬
‫ﺍﻟﻤﻠﻐﻴﺎﺕ )‪ (Obsolete‬ﻜﻤﺎ ﻴﻤﻜﻥ ﺤﺫﻑ ﻫﺫﻩ ﺍﻟﻨﺴﺦ ﻓﻴﻤﺎ ﺒﻌﺩ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪ ، Delete Obsolete‬ﻭﻴﺠﺏ‬
‫ﺍﻹﺸﺎﺭﺓ ﺇﻟﻰ ﻫﻨﺎﻙ ﻨﻭﻋﺎﻥ ﻟﺘﻬﻴﺌﺔ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ‪-:‬‬
‫‪ -1‬ﺘﺤﺩﻴﺩ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ ﺒﺎﻻﻴﺎﻡ‬

‫‪RMAN> CONFIGURE RETENTION POLICY TO RECOVERY‬‬


‫;‪WINDOW OF 3 DAYS‬‬

‫ﺘﻡ ﺘﺤﺩﻴﺩ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ ﻟﻤﺩﺓ ﺜﻼﺜﺔ ﺍﻴﺎﻡ‬

‫ﻴﻤﻜﻥ ﻤﺸﺎﻫﺩﺓ ﺍﻟﺘﻬﻴﺌﺔ ﺍﻟﺠﺩﻴﺩﺓ ﻟﻔﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‪.‬‬

‫;‪RMAN> SHOW RETENTION POLICY‬‬

‫‪132‬‬
‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻟﺭﺠﻭﻉ ﻟﻠﻘﻴﻤﺔ ﺍﻹﺼﻠﻴﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬

‫;‪RMAN> CONFIGURE RETENTION POLICY CLEAR‬‬

‫‪ -2‬ﺘﺤﺩﻴﺩ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ ﺒﻌﺩﺩ ﺍﻟﻨﺴﺦ‪:‬‬


‫ﺍﻟﻘﻴﻤﺔ ﺍﻻﺼﻠﻴﺔ ﻟﻬﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻫﻰ ‪ REDUNDANCY 1‬ﺍﻯ ﺃﻥ ﺍل‪ RMAN‬ﺘﺤﺎﻭل ﺍﻹﺤﺘﻔﺎﻅ‬
‫ﺒﻨﺴﺨﺔ ﺍﺤﺘﻴﺎﻁﻴﺔ )‪ (Backup‬ﻭﺍﺤﺩﺓ ﻟﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ Data Files‬ﻭ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل ‪Archive Log‬‬
‫‪ Files‬ﻭﺍﻴﻀﹰﺎ ﺍل‪ Control File‬ﺴﻭﺍﺀ ﻜﺎﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ) ‪Image Copy or Backup‬‬
‫‪. (set‬‬

‫‪RMAN> CONFIGURE RETENTION POLICY TO‬‬


‫;‪REDUNDANCY 3‬‬

‫‪133‬‬
‫ﲥﻴﺌﺔ ال‪:Default Device Type‬‬
‫ﻭﻫﻰ ﻟﺘﺤﺩﻴﺩ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ )‪ (Backup‬ﻫل ﺴﻴﺘﻡ ﺘﻤﺭﻴﺭﻫﺎ ﺍﻟﻰ ﺍﻟﺩﻴﺴﻙ )‪ (Disk‬ﺍﻭ ﺇﻟﻰ‬
‫)‪ (Tape Device‬ﻓﻰ ﺍﻹﺼل ﺴﻴﺘﻡ ﺘﻤﺭﻴﺭ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺇﻟﻰ ﺍﻟﺩﻴﺴﻙ‪.‬‬

‫‪RMAN> CONFIGURE DEFAULT DEVICE TYPE TO‬‬

‫ﺍﻻﻥ ﺴﻭﻑ ﻴﺘﻡ ﺘﻤﺭﻴﺭ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺇﻟﻰ )‪ (Tape Library‬ﻤﺎﻟﻡ ﻴﺘﻡ ﺘﺠﺎﻫل ﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ‬
‫ﺘﻤﺭﻴﺭ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻴﺩﻭﻴﺎ ﻋﻥ ﻁﺭﻴﻕ ﻤﺤﺭﺭ ﺍل‪.RMAN‬‬

‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺘﻤﺭﻴﺭ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻰ ﺍﻟﺩﻴﺴﻙ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬

‫‪134‬‬
‫ﲥﻴﺌﺔ ال‪: Device Type‬‬

‫ﺍﻯ ﺍﻨﻪ ﻟﺤﻅﺕ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺇﺭﺴﺎﻟﻪ ﺇﻟﻰ ﺍﻟﺩﻴﺴﻙ ﺴﻭﻑ ﻴﺘﻡ ﺇﺴﺘﺨﺩﺍﻡ ﻗﻨﺎﺓ ﺍﻭ ﺠﻠﺴﺔ ﻋﻤل ﻭﺍﺤﺩﺓ‬
‫)‪ (Channel‬ﻹﺭﺴﺎل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻜﻤﺎ ﺴﻴﺘﻡ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻋﻠﻰ ﻫﻴﺌﺔ ‪ Backup Set‬ﻭﻟﻴﺱ‬
‫‪ ، Image Copy‬ﻴﻤﻜﻥ ﺒﺎﻟﻁﺒﻊ ﺘﻬﻴﺌﺔ ﺍل‪ Device Type‬ﻋﻨﺩ ﺇﺭﺴﺎل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟل‪Tape Library‬‬
‫‪ ،‬ﻓﻠﻨﻔﺘﺭﺽ ﺍﻨﻙ ﺘﺭﻴﺩ ﻋﻨﺩ ﺇﺭﺴﺎل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻰ ﺍل‪ Tape Library‬ﻴﺘﻡ ﺇﺴﺘﺨﺩﺍﻡ ﻗﻨﺎﺘﻴﻥ ﺘﻌﻤﻼﻥ‬
‫ﻋﻠﻰ ﺍﻟﺘﻭﺍﺯﻯ ﻟﻨﻘل ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﻴﻜﻭﻥ ﻨﻭﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ‪ Backup Set‬ﺘﺫﻜﺭ ﺃﻨﻪ ﻻ ﻴﻤﻜﻥ‬
‫ﺇﺭﺴﺎل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﻨﻭﻉ ‪ Image Copy‬ﺍﻟﻰ ﺍل‪. Tape Library‬‬

‫‪RMAN> CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM‬‬


‫;‪2 BACKUP TYPE TO BACKUPSET‬‬

‫‪135‬‬
‫‪: Channel Allocation‬‬
‫ﻜﻤﺎ ﺫﻜﺭﻨﺎ ﺴﺎﺒﻘﹰﺎ ﻻﺒﺩ ﻤﻥ ﺘﺨﺼﻴﺹ ﻗﻨﻭﺍﺕ ‪ Channel‬ﻹﻨﺠﺎﺯ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
‫ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﺴﻭﺍﺀ ﻜﺎﻥ ﺫﻟﻙ ﻴﺩﻭﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻤﺭ ‪ Allocate Channel‬ﺍﻭ ﻋﻥ ﻁﺭﻴﻕ ﺘﻬﻴﺌﺔ ﺍﻟﻘﻨﺎﺓ‬
‫ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪ Configure Channel‬ﻭﺍﻗﺼﻰ ﻋﺩﺩ ﻟل‪ Channels‬ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺍﻥ ﺘﻌﻤل ﻟﻠﺘﻭﺍﺯﻯ ﻴﺭﺠﻊ‬
‫ﻟﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﻫﻨﺎﻙ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﻟﻠﺘﺤﻜﻡ ﻓﻰ ﺍل‪: Channel‬‬

‫‪ :DURATION -1‬ﻟﻠﺴﻴﻁﺭﺓ ﻋﻠﻰ ﺍﻟﻭﻗﺕ ﺍﻟﻤﺴﺘﻐﺭﻕ ﻟﺘﻨﻔﻴﺫ ﺍﻟﻤﻬﺎﻡ ﻋﻥ ﻁﺭﻴﻕ ﺍﻟﻘﻨﺎﺓ ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩﻩ ﺒﺎﻟﺴﺎﻋﺎﺕ‬
‫ﻭﺍﻟﺩﻗﺎﺌﻕ ﻭﺍﻴﻀﹰﺎ ﻴﻤﻜﻥ ﺃﻥ ﻴﺅﺜﺭ ﻋﻠﻰ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﺫﻟﻙ ﺒﺈﺴﺘﺨﺩﺍﻡ ﺍﺤﺩ ﺍﻟﻤﻔﺭﺩﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‬
‫)‪ MINIMIZE TIME ، (MINIMIZE TIME & MINIMIZE LOAD‬ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩﻩ ﻟﻀﻤﺎﻥ‬
‫ﺘﻨﻔﻴﺫ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺒﺎﺴﺭﻉ ﻤﺎ ﻴﻜﻭﻥ ﻭﻟﻜﻥ ﻗﺩ ﺘﺘﻡ ﺍﻟﻌﻤﻠﻴﺔ ﻗﺒل ﺇﻨﺘﻬﺎﺀ ﺍﻟﻭﻗﺕ ﺍﻟﻤﺤﺩﺩ ﻭﻴﺘﻡ ﺫﻟﻙ ﻋﺎﺩﺓ ﻋﻨﺩ ﺇﺭﺴﺎل‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﺍﻟﻰ ﺍل‪ Tape‬ﻭﺫﻟﻙ ﻷﻥ ﻤﻥ ﺍﻻﻓﻀل ﺍﺭﺴﺎل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﺍﻟﺸﺭﺍﺌﻁ ﺒﺎﺴﺭﻉ ﻤﺎ ﻴﻤﻜﻥ ‪،‬‬
‫‪ MINIMIZE LOAD‬ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩﻩ ﻟﻤﺭﺍﻗﺒﺔ ﺴﺭﻋﺔ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺘﻘﻠﻴل ﺴﺭﻋﺘﻪ ﺇﺫﺍ ﺍﺘﻀﺢ‬
‫ﺍﻨﻪ ﺴﻴﻨﺘﻬﻰ ﻗﺒل ﺍﻟﺯﻤﻥ ﺍﻟﻤﺤﺩﺩ ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻋﺎﺫﺩﺓ ﻋﻨﺩ ﺇﺭﺴﺎل ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻟﻐﺤﺘﻴﺎﻁﻰ ﺍﻟﻰ‬
‫ﺍﻟﺩﻴﺴﻙ ﻭﺫﻟﻙ ﻟﺘﻘﻠﻴل ﺍﻟﺘﺎﺜﻴﺭ ﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﻨﺴﺒﺔ ﻟﺯﻴﺎﺩﺓ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺍﻟﺩﻴﺴﻙ‪.‬‬

‫‪ :FORMAT -2‬ﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺴﺎﺭ ﻭﺍﺴﻡ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬

‫‪ :MAXOPENFILES -3‬ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﺘﺴﺘﻁﻴﻊ ﺍﻟﻘﻨﺎﺓ ﻓﺘﺤﻬﺎ ﻓﻰ ﺍﻟﻤﺭﺓ ﺍﻟﻭﺍﺤﺩﺓ ﻓﻰ ﺍﻻﺼل ‪.8‬‬

‫‪ :MAXPIECESIZE -4‬ﻟﺘﺤﺩﻴﺩ ﺤﺠﻡ ﻤﻠﻑ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺘﻰ ﺘﻡ ﺍﻨﺸﺎﺅﻩ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻘﻨﺎﺓ‪.‬‬

‫‪136‬‬
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK
MAXOPENFILES 6 MAXPIECESIZE 2G;

137
‫ﲥﻴﺌﺔ ال‪: CONTROLFILE AUTOBACKUP‬‬
‫ﺒﻤﻌﻨﻰ ﻫل ﻨﺭﻴﺩ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻑ ﺍل‪ Control File‬ﻭﻤﻠﻑ ﺍل‪ SPFILE‬ﺍﻟﻴﹰﺎ ﻜﻠﻤﺎ ﻗﻤﻨﺎ ﺒﻌﻤﻠﻴﺔ‬
‫ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺍﻡ ﻻ ؟ ﻓﻰ ﺍﻻﺼل ﻴﺄﺨﺫ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﺍﻟﻘﻴﻤﺔ ‪ OFF‬ﺒﻤﻌﻨﻰ ﺃﻥ ﻤﻠﻑ ﺍل‪ Control File‬ﻻ ﻴﺘﻡ ﻋﻤل‬
‫ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻪ ﺍﻟﻴﹰﺎ ﻋﻨﺩ ﺇﻨﺠﺎﺯ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬
‫ﻭﻴﻤﻜﻥ ﺘﻬﻴﺌﺔ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﺒﺤﻴﺙ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻤﺔ ‪ ON‬ﻭﺫﻟﻙ ﻟﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺍﻟﻰ ﻟﻤﻠﻑ ﺍل‪ CONTRPL FILE‬ﻋﻨﺩ‬
‫ﺇﺠﺭﺍﺀ ﺍﻯ ﻋﻤﻠﻴﺔ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻭﻗﺩ ﻴﻜﻭﻥ ﻫﺫﺍ ﺍﻻﻤﺭ ﺍﻜﺜﺭ ﺍﻫﻤﻴﺔ ﻋﻨﺩﻤﺎ ﻻ ﻨﺴﺘﺨﺩﻡ ﺍل‪ Recovery Catalog‬ﻓﺤﻴﻨﻬﺎ‬
‫ﻴﺘﻡ ﺤﻔﻅ ﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻓﻰ ﻤﻠﻑ ﺍل‪ Control File‬ﺍﻻﻤﺭ ﺍﻟﺫﻯ ﻴﺠﻌل ﻋﻤﻠﻴﺔ ﺍﻟﺤﻔﺎﻅ ﻋﻠﻴﻪ ﺍﻜﺜﺭ ﺍﻫﻤﻴﺔ‪.‬‬

‫;‪RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON‬‬

‫ﲥﻴﺌﺔ ال‪: CONTROLFILE AUTOBACKUP FORMAT‬‬


‫ﻟﺘﺤﺩﻴﺩ ﻤﺴﺎﺭ ﻭﺍﺴﻡ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻻﻟﻰ ﻟﻤﻠﻔﺎﺕ ﺍل‪.CONTROL FILE‬‬

‫‪RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT‬‬


‫;'‪FOR DEVICE TYPE DISK TO 'C:\%F‬‬

‫‪138‬‬
‫ﲥﻴﺌﺔ ال‪: EXCLUDE‬‬
‫ﻓﻰ ﺒﻌﺽ ﺍﻻﺤﻴﺎﻥ ﻴﻜﻭﻥ ﻟﺩﻴﻙ ‪ Tablespace‬ﻓﻰ ﺍﻟﻭﻀﻊ ‪ Read only‬ﺍﻭ ﻓﻰ ﺍﻟﻭﻀﻊ ‪Offline‬‬
‫ﺍﻭ ﺤﺘﻰ ﻗﺩ ﻴﻜﻭﻥ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ Online‬ﻟﻜﻨﻪ ﻏﻴﺭ ﻤﺘﺤﺭﻙ ﺍﻯ ﻴﺤﻭﻯ ﺒﻴﺎﻨﺎﺕ ﻻ ﺜﺎﺒﺘﻪ ﻓﻰ ﻫﺫﻩ ﺍﻻﺤﻭﺍل‬
‫ﻭﻏﻴﺭﻫﺎ ﻗﺩ ﻻ ﻨﺤﺘﺎﺝ ﻟﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻬﺫﻩ ﺍل‪ Tablespace‬ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻜﻠﻰ ﻟﻘﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻻﻤﺭ ﺍﻟﺫﻯ ﻴﻘﻠل ﻟﻨﺎ ﺯﻤﻥ ﻭﺤﺠﻡ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ‪ ،‬ﻓﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻗﺎﺌﻤﺔ ﺍل‪ Tablespace‬ﺍﻟﺘﻰ‬
‫ﻨﺭﻴﺩ ﺘﺠﺎﻫﻠﻬﺎ ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬

‫‪RMAN> CONFIGURE EXCLUDE‬‬ ‫;‪FOR TABLESPACE USERS‬‬

‫ﲥﻴﺌﺔ ال‪: BACKUP OPTIMIZATION‬‬


‫ﻴﺄﺨﺫ ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻓﻰ ﺍﻻﺼل ﺍﻟﻘﻴﻤﺔ ‪ OFF‬ﻭﻴﻤﻜﻥ ﺘﻬﻴﺌﺘﻪ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ ON‬ﻟﺘﺠﺎﻫل ﺠﻤﻴﻊ ﺍﻟﻜﺎﺌﻨﺎﺕ‬
‫ﺍﻟﺘﻰ ﻟﻡ ﻴﺘﻡ ﺘﻐﻴﺭﻫﺎ ﻤﻨﺫ ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ‪.‬‬

‫;‪RMAN> CONFIGURE BACKUP OPTIMIZATION ON‬‬

‫‪139‬‬
DATAFILE BACKUP COPIES & ARCHIVELOG BACKUP ‫ﲥﻴﺌﺔ ال‬
:COPIES

‫ ﺍﻭ ﻤﻠﻔﺎﺕ‬Data Files‫ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻨﺴﺦ ﺍﻟﺘﻰ ﻴﺘﻡ ﺍﻨﺸﺎﺅﻫﺎ ﻋﻨﺩ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍل‬
Archive Log Files‫ﺍل‬

RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR


DEVICE TYPE DISK TO 1;

RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR


DEVICE TYPE DISK TO 1;

.Archive Log Files‫ ﺍﻭ ﺍل‬Data Files‫ﺘﻡ ﺘﺤﺩﻴﺩ ﻋﺩﺩ ﻨﺴﺨﺔ ﻭﺍﺤﺩﺓ ﻟﻠﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻜل ﻤﻥ ﻤﻠﻔﺎﺕ ﺍل‬

140
‫ﲥﻴﺌﺔ ال‪: MAXSETSIZE‬‬
‫ﻭﻫﻭ ﺍﻜﺒﺭ ﻤﻘﺎﺱ ﻟﻠﻨﺴﺦ ﺍﻻﺤﺘﻴﺎﻁﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ ، Backup Set‬ﻭﻓﻰ ﺍﻹﺼل ﻴﺎﺨﺫ ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﺍﻟﻘﻴﻤﺔ‬
‫‪.Unlimited‬‬

‫;‪CONFIGURE MAXSETSIZE TO 4G‬‬

‫‪141‬‬
‫‪:Recovery Catalog‬‬
‫ﻗﺒل ﺍﻟﺤﺩﻴﺙ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ ﺒﻭﺍﺴﻁﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻻﺒﺩ ﻤﻥ ﺍﻟﺤﺩﻴﺙ ﻋﻥ‬
‫ﺍل‪ Recovery Catalog‬ﻭﺫﻟﻙ ﻷﻨﻪ ﻴﻔﻀل ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﺴﺘﺨﺩﺍﻡ ﺍل‪ Recovery Catalog‬ﻋﻨﺩ‬
‫ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﺍل‪ RMAN‬ﻭﺫﻟﻙ ﻷﻥ ﺍﻹﺤﺘﻔﺎﻅ ﺒﺎﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎل‪ RMAN‬ﻭﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
‫ﻓﻰ ﺍل‪ Control File‬ﻴﺘﻡ ﺍﻹﺤﺘﻔﺎﻅ ﺒﻬﺎ ﻟﻤﺩﺓ ﻤﺤﺩﺩ ﻴﺘﻡ ﺘﺤﺩﻴﺩﻫﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪ CONTROL_FILE_RECORD_KEEP_TIME‬ﻜﻤﺎ ﺫﻜﺭﺕ ﺫﻟﻙ ﺴﺎﺒﻘﹰﺎ ﻜﻤﺎ ﺃﻨﻪ ﻗﺩ ﻨﻔﻘﺩ ﻫﺫﻩ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺇﺫﺍ ﻓﻘﺩﻨﺎ ﺍل‪ Control File‬ﻭﻟﻡ ﻨﻀﻊ ﺍﻹﺤﺘﻴﺎﻁﺎﺕ ﺍﻟﻼﺯﻤﺔ‪.‬‬

‫ﺍل‪ Recovery Catalog‬ﻫﻭ ﻋﺒﺎﺭ ‪ Schema‬ﻴﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ ﻓﻰ ﻏﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ‬
‫ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻻﺘﻴﺔ‪-:‬‬
‫‪.Data File and Archive Log File Backup Sets and Backup Pieces -1‬‬
‫‪.Data File Copies -2‬‬
‫‪.Archive Log Files -3‬‬
‫‪.The Physical Structure of The Target Database -4‬‬
‫‪.Persistent RMAN Configuration Settings -5‬‬
‫‪.Stored Job Scripts -6‬‬

‫ل‪ Recovery Catalog‬ﻋﻨﺩﻤﺎ ﺘﺭﻴﺩ ﺇﺩﺍﺭﺓ ﻋﺩﺩ ﻤﻥ ﻗﻭﺍﻋﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ‬


‫ﻜﻤﺎ ﻴﻤﻜﻥ ﻴﺠﺏ ﺇﺴﺘﺨﺩﺍﻡ ﺍ ٌ‬
‫ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ‪ ،‬ﻭﻋﻤﻭﻤﹰﺎ ﻴﻔﻀل ﺃﻥ ﻴﺴﺘﺨﺩﻡ ﺍل‪ Recovery Catalog‬ﻋﻨﺩ ﺇﺴﺘﺨﺩﺍﻡ ﺍل‪.RMAN‬‬

‫‪142‬‬
‫ ﻭﻤﻥ ﺜﻡ ﺴﻨﺴﺘﺨﺩﻤﻪ ﻓﻴﻤﺎ ﺒﻌﺩ ﻟﻌﻤل ﺍﻟﻨﺴﺦ‬Recovery Catalog‫ﻟﺫﺍ ﺴﺄﻗﻭﻡ ﻫﻨﺎ ﺒﺈﻨﺸﺎﺀ ﺍل‬
:‫ ﻭﺍﻟﻴﻙ ﺨﻁﻭﺍﺕ ﺍﻹﻨﺸﺎﺀ‬، ‫ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ‬
.Catalog Database‫ ﻓﻰ ﺍل‬Recovery Catalog‫ ﻟل‬Tablespace ‫ ﺇﻨﺸﺎﺀ‬-1

CREATE TABLESPACE RMAN_CATALOG DATAFILE


'C:\oracle\product\10.1.0\oradata\orcl\RMAN_CATA
LOG.DBF' SIZE 1G;

.Catalog Database‫ ﻓﻰ ﺍل‬Recovery Catalog‫ ﻟل‬Schema ‫ ﺇﻨﺸﺎﺀ‬-2

CREATE USER TEST IDENTIFIED BY TEST DEFAULT


TABLESPACE RMAN_CATALOG QUOTA UNLIMITED ON
RMAN CATALOG;

.Recovery Catalog‫ ﻤﻨﺢ ﺍﻟﺼﻼﺤﻴﺎﺕ ﻟﻠﻤﺴﺘﺨﺩﻡ ﺍﻟﺫﻯ ﻗﻤﻨﺎ ﺒﺨﻠﻘﻪ ﻟل‬-3

GRANT RECOVERY_CATALOG_OWNER,CONNECT TO TEST;

143
‫‪ -4‬ﻨﻘﻭﻡ ﺒﺈﻨﺸﺎﺀ ﺍل‪ Catalog‬ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ RMAN‬ﺒﻌﺩ ﺍﻹﺘﺼﺎل ﺒﺎل‪ Catalog Database‬ﻭﻫﻭ ﺒﻤﻌﻨﻰ‬
‫ﺘﻌﺭﻴﻑ ﺘﻌﺭﻴﻑ ﺍل‪ RMAN‬ﻋﻠﻰ ﺍل‪ Catalog‬ﺍﻟﺫﻯ ﻗﻤﻨﺎ ﺒﺨﻠﻘﻪ ﻓﻰ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﺴﺎﺒﻘﺔ‪.‬‬

‫;‪RMAN> CREATE CATALOG TABLESPACE RMAN_CATALOG‬‬

‫ﻓﻰ ﻫﺫﻩ ﺍﻟﻠﺤﻅﺔ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ﺍﻟﺠﺩﺍﻭل ﻭﺍﻟﻤﻨﺎﻅﻴﺭ )‪ (Tables and Views‬ﺍﻟﺘﻰ ﺴﻭﻑ ﻴﺘﻡ ﺘﺨﺯﻴﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻴﻬﺎ‬
‫ﻓﻰ ﺍل‪.Recovery Catalog schema‬‬

‫‪ -5‬ﻨﻘﻭﻡ ﺒﺘﺴﺠﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻓﻰ ﺍل‪ Catalog‬ﻭﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ RMAN‬ﺒﻌﺩ ﺍﻹﺘﺼﺎل‬
‫ﺒﻜل ﻤﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ‪ Target Database‬ﻭﺍﻹﺘﺼﺎل ﺒﺎل‪ Recovery Catalog‬ﻜﻤﺎ ﻴﺠﺏ‬
‫ﺍﻻﺸﺎﺭﺓ ﺇﻟﻰ ﻀﺭﻭﺭﺓ ﺍﻹﺘﺼﺎل ﻤﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﺒﻭﺍﺴﻁﺔ ﻤﺴﺘﺨﺩﻡ ﻴﻤﻠﻙ ﺍﻟﺼﻼﺤﻴﺔ ‪SYSDBA‬‬
‫‪ ،‬ﻭﻤﻥ ﺜﻡ ﺘﺴﺠﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻓﻰ ﺍل‪.Catalog‬‬

‫‪144‬‬
‫ﺍﻻﻥ ﺴﻭﻑ ﻴﺘﻡ ﺘﺴﺠﻴل ﻫﻴﻜﻠﺔ ﺒﻴﺎﻨﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻓﻰ ﺠﺩﺍﻭل ﺍل‪ Recovery Catalog‬ﺍﻯ ﻓﻰ‬
‫ﺍﻟﻤﺴﺘﺨﺩﻡ‬

‫;‪RMAN> REGISTER DATABASE‬‬

‫ﻓﻰ ﻫﺫﻩ ﺍﻟﻠﺤﻅﺔ ﻴﺘﻡ ﺘﺴﺠﻴل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻓﻰ ﺍل‪Recovery Catalog‬‬
‫ﻴﻤﻜﻨﻙ ﻋﻤل ﺇﺴﺘﻌﻼﻡ ﻋﻥ ﺫﻟﻙ ﻓﻰ ﺍﻟﺠﺩﺍﻭل ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍل‪ Schema Recovery Catalog‬ﻭﻫﻰ ﻫﻨﺎ‬
‫ﺘﺴﻤﻰ ‪Test‬‬

‫ﺍﻻﻥ ﻟﺩﻴﻨﺎ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ ﻤﺴﺘﻬﺩﻓﺔ ‪ Target Catalog‬ﻭﻟﺩﻴﻨﺎ ٌ‪. Recovery Catalog‬‬
‫ﺒﺎﻟﻁﺒﻊ ﺇﺫﺍ ﻟﻡ ﻴﺘﻡ ﺘﺴﺠﻴل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻠﻥ ﻨﺴﺘﻁﻴﻊ ﺘﺨﺯﻴﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻓﻰ‬
‫ل‪Recovery Catalog‬‬
‫ﺍٌ‬

‫ﺍﻻﻥ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻤﺨﺯﻨﺔ ﻟﺩﻯ ﻓﻰ ﺍل‪ Recovery Catalog‬ﻭﺒﺎﻟﻁﺒﻊ ﻟﻴﺱ ﻟﺩﻯ‬
‫ﻀﻤﺎﻥ ﻤﻥ ﺃﻥ ﻴﺘﻡ ﺘﻐﻴﻴﺭ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻟﺫﺍ ﻨﺤﺘﺎﺝ ﻹﻋﺎﺩﺓ ﺘﺯﺍﻤﻥ ﺍل‪Recovery Catalog‬‬
‫ﻤﻥ ﺍل‪ Control File‬ﻟﺩﻯ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﺤﺘﻰ ﻴﺘﻡ ﺘﺯﺍﻤﻥ ﻜﺎﻤل ﺒﻴﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ‬
‫ﻭﺍل‪ Recovery Catalog‬ﻓﻰ ﺍﻟﺤﻘﻴﻘﺔ ﺍل‪ RMAN‬ﺘﻘﻭﻡ ﺒﻌﻤل ﻫﺫﺍ ﺍﻟﺘﺯﺍﻤﻥ ﺍﻟﻴﹰﺎ ﻤﺘﻰ ﺍﺤﺘﺎﺠﺔ ﺍﻟﻰ ﺫﻟﻙ ‪،‬‬
‫ﺍﻨﺕ ﺍﻴﻀﹰﺎ ﻗﺩ ﺘﻘﻭﻡ ﺒﺫﻟﻙ ﻴﺩﻭﻴﹰﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪RESYNC CATALOG‬‬

‫‪145‬‬
‫;‪RMAN> RESYNC CATALOG‬‬

‫ﻋﻤﻭﻤﹰﺎ ﻗﺩ ﻨﺤﺘﺎﺝ ﺇﻟﻰ ﻫﺫﺍ ﺍﻹﺠﺭﺍﺀ ﻋﻨﺩ ﺇﻨﺸﺎﺀ ﺍﻭ ﺤﺫﻑ ‪ Tablespace‬ﺍﻭ ‪ Data File‬ﺍﻭ ﻋﻨﺩ‬
‫ﺘﻐﻴﻴﺭ ﻤﻜﺎﻥ ﺍل‪.Database Files‬‬

‫ﻓﻰ ﺒﻌﺽ ﺍﻹﺤﻴﺎﻥ ﻴﺘﻡ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ RESTLOGS‬ﻻ ﺸﻙ ﺃﻥ ﻓﻰ‬
‫ﻤﺜل ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻻ ﻴﻜﻭﻥ ﺘﺯﺍﻤﻥ ﺒﻴﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻭﺍل‪ Recovery Catalog‬ﻟﺫﺍ ﻓﻰ ﻤﺜل ﻫﺫﻩ‬
‫ﺍﻟﺤﺎﻟﺔ ﻨﺴﺘﺨﺩﻡ ﺍﻻﻤﺭ ‪.REST DATABASE‬‬

‫ﻋﻤﻭﻤﹰﺎ ﻫﺫﺍ ﻟﻴﺱ ﻜل ﺸﺊ ﻋﻥ ﺍل‪ Recovery Catalog‬ﻭﻟﻜﻥ ﻫﺫﺍ ﻤﺎ ﻴﻬﻤﻨﺎ ﺍﻻﻥ ﻭﺴﻨﻭﺍﺼل‬
‫ﺍﻟﻨﻘﺎﺵ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﻭﻀﻭﻉ ﻻﺤﻘﹰﺎ‪ .‬ﻭﻟﻜﻥ ﻴﺠﺏ ﺃﻥ ﺘﺘﺫﻜﺭ ﺃﻨﻙ ﻗﺩ ﻻ ﺘﺤﺘﺎﺝ ﺍل‪ Recovery Catalog‬ﺇﻁﻼﻗﹰﺎ ‪،‬‬
‫ﻓﻘﺩ ﺘﺘﺼل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ RMAN‬ﻭﻤﻥ ﺜﻡ ﺘﻨﺠﺯ ﻤﻬﺎﻤﻙ ﻟﻜﻥ ﺘﺫﻜﺭ ﺃﻥ ﻤﻥ‬
‫ﺍﻻﻓﻀل ﻟﻙ ﺃﻥ ﺘﺴﺘﺨﺩﻡ ﺍل‪.Recovery Catalog‬‬

‫‪146‬‬
‫‪:RMAN Backups‬‬
‫ﻭﻫﺫﺍ ﻫﻭ ﺒﻴﺕ ﺍﻟﻘﺼﻴﺩ ﻓﻜل ﻤﺎ ﺘﺤﺜﻨﺎ ﻋﻨﻪ ﺴﺎﺒﻘﹰﺎ ﻓﻰ ﻫﺫﺍ ﺍﻟﻔﺼل ﻤﺎ ﻫﻭ ﺇﻻ ﺘﻤﻬﻴﺩ ﻟﻬﺫﻩ ﺍﻟﻤﺭﺤﻠﺔ‬
‫ﻤﺭﺤﻠﺔ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﺍﻟﺤﻘﻴﻘﺔ ﺃﻥ ﺍل‪ RMAN‬ﺘﻭﻓﺭ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻜل‬
‫ﻤﻥ ﺍل)‪(Database & Tablespaces & Data Files & Control Files & Archive Log Files‬‬
‫ﻭﻓﻰ ﺍﻻﺼل ﻴﺘﻡ ﺘﺨﺯﻴﻥ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻓﻰ ﺍل‪ Flash Recovery Area‬ﻤﺎ ﻟﻡ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻤﻜﺎﻥ‬
‫ﺘﺨﺯﻴﻥ ﺍﺨﺭ ﻟﻤﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻟﻨﺴﺦ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ Format‬ﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺴﺎﺭ ﻭﺇﺴﻡ ﻤﻠﻑ‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪ ،‬ﻭﻟﻜﻥ ﺘﻔﻀل ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺴﺎﺤﺔ ‪ Flash Recovery Area‬ﻟﺘﺨﺯﻴﻥ ﻤﻠﻔﺎﺕ‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺫﻟﻙ ﻷﻥ ﺍﺩﺍﺭﺘﻬﺎ ﺘﺘﻡ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻭﺭﻜل ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻤﺴﺎﺭ ﻫﺫﻩ ﺍﻟﻤﺴﺎﺤﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪ DB_RECOVERY_FILE_DEST‬ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻤﺴﺎﺤﺘﻬﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪.DB_RECOVERY_FILE_DEST_SIZE‬‬

‫ﻭﺴﻨﺘﺤﺩﺙ ﻫﻨﺎ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻭﺍﺴﻁﺔ ﺍل‪ RMAN‬ﻭﻟﻜﻥ ﻴﺠﺏ ﺍﻟﺘﺫﻜﻴﺭ ﺃﻥ ﺍل‪ RMAN‬ﻻ‬
‫ﺘﺩﻋﻡ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Online Redo Log Files‬ﻭﺇﻨﻤﺎ ﺘﺩﻋﻡ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟل ‪Archive‬‬
‫‪ .Log Files‬ﻜﻤﺎ ﻴﺠﺏ ﺍﻟﺘﺫﻜﻴﺭ ﺍﻴﻀﹰﺎ ﺃﻨﻪ ﺒﺈﻤﻜﺎﻨﻙ ﺇﺴﺘﺨﺩﺍﻡ ﺍل‪ RMAN‬ﻟﻌﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺤﺘﻰ ﻭﻟﻭ ﻜﺎﻨﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪.NOARCHIVELOG‬‬

‫‪147‬‬
‫‪:Data Files Backup‬‬
‫ﺘﺴﺘﻁﻴﻊ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ RMAN‬ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍل‪ Data Files‬ﺒﺸﺭﻁ ﺃﻥ ﺘﻜﻭﻥ‬
‫ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪ ، Open or Mount‬ﺍﻤﺎ ﺍل‪ Recovery Catalog‬ﻓﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻤﻔﺘﻭﺤﺔ ‪،‬‬
‫ﻭﻫﻨﺎﻙ ﻋﺩﺩ ﻤﻥ ﺍﻟﺨﻴﺎﺭﺍﺕ ﻟﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ )‪ (Backup‬ﻟل‪:Data Files‬‬

‫‪Data Files Backup as Backup Set -1‬‬

‫‪RMAN> BACKUP AS BACKUPSET DATAFILE 1,2 TAG‬‬


‫;’)‪‘FILE(1,2‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﻗﻤﺕ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻜل ﻤﻥ )‪ Datafile(1&2‬ﻭﺍﻟﺭﻗﻡ ‪ 1‬ﻭ ‪ 2‬ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍل ‪File‬‬
‫ﻻ ﻤﻥ ﻜﺘﺎﺒﺔ ﺍل‪ Id‬ﻟﻜﻥ ﺒﺎﻟﻁﺒﻊ ﻫﺫﺍ ﺍﺴﻬل ﻴﻤﻜﻨﻙ ﻤﻌﺭﻓﺔ‬
‫‪ ، Id‬ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﻜﺘﺎﺒﺔ ﺍﺴﻡ ﺍل‪ Data File‬ﺒﺩ ﹰ‬
‫ﺍل‪ File Id‬ﻋﻥ ﻁﺭﻴﻕ ﺍﻹﺴﺘﻌﻼﻡ ﺍﻻﺘﻰ‬

‫;‪SELECT FILE_NAME,FILE_ID FROM DBA_DATA_FILES‬‬

‫‪148‬‬
‫ﻜﻤﺎ ﻗﻤﻨﺎ ﺒﻌﻤل ﺘﺴﻤﻴﺔ ﻤﻨﻁﻘﻴﺔ ﻟﻬﺫﺍ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ TAG‬ﻭﺴﻤﻴﻨﺎﻩ )‪FILE(1,2‬‬
‫‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻨﻙ ﻤﻼﺤﻅﺔ ﺃﻨﻨﺎ ﻟﻡ ﻨﻘﻡ ﺒﺈﻨﺸﺎﺀ ﻗﻨﻭﺍﺕ ﻟﻠﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻴﺩﻭﻴﹰﺎ ‪ Channels‬ﻭﺇﻨﻤﺎ ﻗﺎﻤﺕ‬
‫ﺍل‪ RMAN‬ﺒﺈﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻬﻴﺌﺔ ﺍﻻﻟﻴﺔ ‪.Configuration Setting‬‬
‫ﻋﻤﻭﻤﹰﺎ ﻴﻤﻜﻨﻨﺎ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﻋﻤﻠﻴﺔ ﻨﺠﺎﺡ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪ LIST‬ﺤﻴﺙ ﻴﻘﻭﻡ ﺒﻌﺭﺽ‬
‫ﺘﻔﺎﺼﻴل ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺢ ﺍﻹﺤﺘﻴﺎﻁﻰ ‪ ،‬ﻓﺈﺫﺍ ﻜﺘﺒﻨﺎ ‪ LIST BACKUPSET‬ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻻﻤﺭ ﺒﻌﺭﺽ ﺠﻤﻴﻊ‬
‫ﺘﻔﺎﺼﻴل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻤﺨﺯﻨﺔ ﻓﻰ ﺍل‪ Recovery Catalog‬ﻤﻥ ﺍﻟﻨﻭﻉ ‪ ، Backup Set‬ﺃﻤﺎ ﺍﻻﻤﺭ‬
‫‪ LIST COPY‬ﻟﻌﺭﺽ ﺘﻔﺎﺼﻴل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ IMAGE COPY‬ﻭﻏﻴﺭﻩ ﻤﻥ ﺍﻻﻭﺍﻤﺭ‬
‫ﺍﻟﺘﻰ ﺴﻨﺘﺤﺩﺙ ﻋﻨﻬﺎ ﻻﺤﻘﹰﺎ ﻤﺎ ﻴﻬﻤﻨﺎ ﺍﻻﻥ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻻﺤﺘﻴﺎﻁﻰ ﺍﻟﺫﻯ ﻗﻤﻨﺎ ﺒﻪ ﺍﻻﻥ ﻭﻻﺤﻅ ﺍﻥ ﺍﺴﻤﻪ‬
‫ﺍﻟﻤﻨﻁﻘﻰ ")‪ "FILE(1,2‬ﻓﻴﻤﻜﻥ ﻋﺭﺽ ﺘﻔﺎﺼﻴﻠﻪ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪LIST BACKUPSET TAG‬‬
‫”)‪“FILE(!,2‬‬

‫;”)‪RMAN>LIST BACKUPSET TAG “FILE(1,2‬‬

‫ﺍﻤﺎ ﺇﺫﺍ ﻟﻡ ﺘﻀﻊ ﺍﺴﻡ ﻤﻨﻁﻘﻰ ﻟﻠﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻓﺎﻥ ﺍل‪ RMAN‬ﺴﺘﻀﻊ ﻟﻪ ﺍﺴﻡ ﺇﺤﺘﻴﺎﻁﻰ ﺍﻟﻴﹰﺎ ‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻨﻙ‬
‫ﻋﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺴﺎﺒﻕ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪LIST BACKUP OF DATAFILE 1,2‬‬

‫‪149‬‬
Data Files Backup as Image Copy -2

RMAN> RUN {
ALLOCATE CHANNEL D1 DEVICE TYPE DISK;
ALLOCATE CHANNEL D2 DEVICE TYPE DISK;
BACKUP AS COPY DATAFILE 3,4
(DATAFILE 3 CHANNEL D1)
(DATAFILE 4 CHANNEL D2)
; }

150
‫ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل)‪ Data Files(3,4‬ﻤﻥ ﺍﻟﻨﻭﻉ ‪ Image Copy‬ﻭﻗﺩ ﻗﻤﻨﺎ ﺒﺈﻨﺸﺎﺀ ﻗﻨﺎﺘﻴﻥ‬
‫‪ Channels‬ﻴﺩﻭﻴﹰﺎ ﻭﻗﻤﻨﺎ ﺒﺈﺭﺴﺎل ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺇﻟﻰ ﺍﻟﺩﻴﺴﻙ‪.‬‬
‫ﻴﻤﻜﻥ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﻨﺠﺎﺡ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪LIST COPY OF DATAFILE 3,4‬‬

‫;‪RMAN>LIST COPY OF DATAFILE 3,4‬‬

‫‪151‬‬
‫‪:Tablespaces Backup‬‬

‫{‪RMAN> RUN‬‬
‫‪ALLOCATE CHANNEL D1 DEVICE TYPE DISK‬‬
‫;‪MAXPIECESIZE 1G‬‬
‫‪BACKUP AS COMPRESSED BACKUPSET‬‬
‫;‪TABLESPACE USERS‬‬
‫}‬

‫ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ USERS TABLESPACE‬ﻤﻥ ﺍﻟﻨﻭﻉ ‪Compressed‬‬


‫‪ Backupset‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺴﺨﺔ ﻤﻀﻐﻭﻁﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ ، Backupset‬ﻭﻗﺩ ﺍﺴﺘﺨﺩﻤﻨﺎ ﺇﻨﺸﺎﺀ ‪Channel‬‬
‫ﻴﺩﻭﻴﹰﺎ ﻭﺤﺩﺩﻨﺎ ﺃﻥ ﺍﻜﺒﺭ ﻨﺴﺨﺔ ﻤﻥ ﻗﻁﻊ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻴﺠﺏ ﺃﻥ ﻻ ﻴﺘﺠﺎﻭﺯ ‪.1 GB‬‬
‫ﻋﻤﻭﻤﹰﺎ ﺨﻴﺎﺭ ﺍل‪ Compressed Backupset‬ﻫﻭ ﺨﻴﺎﺭ ﻤﺘﺎﺡ ﻟﻨﺴﺦ ﺠﻤﻴﻊ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﺘﺩﻋﻤﻬﺎ‬
‫ﺍل‪ RMAN‬ﻭﻤﻴﻭﺓ ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﺃﻨﻪ ﻴﻘﻠل ﻤﻥ ﺤﺠﻡ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬

‫ﻴﻤﻜﻥ ﺒﺎﻟﻁﺒﻊ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Tablespace‬ﻤﻥ ﺍﻟﻨﻭﻉ ‪Image Copy‬‬

‫;‪RMAN>BACKUP AS COPY TABLESPACE USERS‬‬

‫‪152‬‬
‫ﻴﻤﻜﻥ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﻨﺠﺎﺡ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻋﻼﻩ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪LIST BACKUPSET OF TABLESPACE USERS‬‬
‫ﻟﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪Users Tablespace Backupset‬‬
‫‪LIST COPY OF TABLESPACE USERS‬‬
‫ﻟﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪Users Tablespace Image Copy‬‬

‫‪153‬‬
:Archived Redo Log Files Backup

RMAN> RUN{
ALLOCATE CHANNEL D1 DEVICE TYPE DISK;
ALLOCATE CHANNEL D2 DEVICE TYPE DISK;
ALLOCATE CHANNEL D3 DEVICE TYPE DISK;
BACKUP AS copy archivelog all DELETE ALL INPUT;
}

‫ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍﻹﺭﺸﻴﻑ ﻭﻤﻥ ﺜﻡ ﻤﺴﺢ ﺍﻟﻤﻠﻔﺎﺕ ﺒﻌﺩ ﻨﺴﺨﻬﺎ ﻭﺫﻟﻙ ﻷﻨﻨﺎ ﻻ‬
‫ ﻻﺤﻅ ﺃﻨﻨﺎ ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ‬، ‫ ﻭﻤﺘﻰ ﻤﺎ ﺍﺤﺘﺠﻨﺎ ﻟﻬﺎ ﺴﻨﺠﺩﻫﺎ ﻓﻰ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬، ‫ﻨﺤﺘﺎﺝ ﺍﻟﻴﻬﺎ ﺍﻻﻥ‬
‫ ﺍﻨﺕ ﻴﻤﻜﻥ ﺍﻥ ﺘﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﺍﻟﺘﻰ ﺘﺤﺘﺎﺠﻬﺎ‬، ‫ﺇﺤﺘﻴﺎﻁﻰ ﻟﻜل ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ‬

RMAN> RUN{
ALLOCATE CHANNEL D1 DEVICE TYPE DISK;
ALLOCATE CHANNEL D2 DEVICE TYPE DISK;
ALLOCATE CHANNEL D3 DEVICE TYPE DISK;
BACKUP AS copy archivelog until sequence 130;
}

154
‫ﻴﻤﻜﻨﻙ ﺍﻟﻘﻴﺎﻡ ﺒﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪LIST COPY OF ARCHIVELOG ALL‬‬
‫ﻟﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ Image Copy‬ﻟﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ‪.‬‬
‫‪LIST BACKUP OF ARCHIVELOG ALL‬‬
‫ﻟﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ Backupset‬ﻟﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ‪.‬‬
‫ﻜﻤﺎ ﻴﻤﻜﻨﻙ ﺍﻟﻘﻴﺎﻡ ﺒﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﺒﻌﺽ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ‬

‫‪RMAN>LIST COPY OF ARCHIVELOG‬‬ ‫‪UNTIL SEQUENCE‬‬


‫;‪130‬‬

‫‪155‬‬
:Control File Backup
-:Control File‫ﻫﻨﺎﻙ ﻋﺩﺓ ﻁﺭﻕ ﻟﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‬
.CURRENT COTROL FILE ‫ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻤﺭ‬-1

RMAN> BACKUP AS COPY CURRENT CONTROLFILE;

‫ ﻭﺍﻴﻀﹰﺎ ﻴﻤﻜﻥ ﻀﻐﻁﻪ ﺒﻭﺍﺴﻁﺔ‬Backupset ‫ ﻤﻥ ﺍﻟﻨﻭﻉ‬Control File‫ﺍﻴﻀﹰﺎ ﻴﻤﻜﻥ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‬
.Compressed Backupset ‫ﺍﻻﻤﺭ‬

. CONTROLFILE AUTOBACKUP ‫ ﻋﻥ ﻁﺭﻴﻕ ﺘﻬﻴﺌﺔ ﺍﻟﻤﺘﻐﻴﺭ‬-2

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

‫ ﻓﻬﺫﺍ ﻴﻌﻨﻰ ﺃﻨﻪ ﻜﻠﻤﺎ ﻗﻤﻨﺎ‬ON ‫ ﺍﻟﻘﻴﻤﺔ‬CONTROLFILE AUTOBACKUP ‫ﻋﻨﺩﻤﺎ ﻴﺄﺨﺫ ﺍﻟﻤﺘﻐﻴﺭ‬
.Control File‫ﺒﻌﻤﻠﻴﺔ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻓﺈﻨﻪ ﺍﻟﻴﹰﺎ ﺴﻴﺘﻡ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻤﻠﻑ ﺍل‬
‫ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬Control file‫ﻜﻤﺎ ﻴﻤﻜﻥ ﻋﻤل ﺇﺴﺘﻌﻼﻡ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟل‬
LIST BACKUP OF CONTROLFILE

156
‫‪:Database Backup‬‬
‫‪:Offline Backup -1‬‬
‫ﺘﺴﺘﻁﻴﻊ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ RMAN‬ﻓﻰ ﺍﻟﻭﻀﻊ ‪MOUNT‬‬
‫ﻼ ﺇﺫﺍ ﻜﺎﻨﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ‬
‫ﻭﻫﻭ ﻤﺎ ﻴﺴﻤﻰ ﺒﺎل‪ ، Offline Backup‬ﻓﻤﺜ ﹰ‬
‫‪ NOARCHIVELOG‬ﻓﺤﻴﻨﻬﺎ ﻻﺒﺩ ﻤﻥ ﻋﻤل ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﺩ ﺇﻏﻼﻗﻬﺎ ) ‪Offline‬‬
‫‪ ، (Backup‬ﻭﺍﻴﻀﹰﺎ ﻻﺒﺩ ﻤﻥ ﺍﻹﺸﺎﺭﺓ ﺇﻟﻰ ﺃﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﺎﺩﺍﻡ ﺃﻨﻬﺎ ﻓﻰ ﺍﻟﻨﻤﻁ ‪NOARCHIVELOG‬‬
‫ﻓﻼﺒﺩ ﻤﻥ ﻋﻤل ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﻟﺠﻤﻴﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻻﺒﺩ ﻤﻥ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻌﺩ ﺇﻏﻼﻗﻬﺎ‬
‫)‪.(Offline Backup‬‬

‫{ ‪RMAN> RUN‬‬
‫;‪SHUTDOWN IMMEDIATE‬‬
‫;‪STARTUP MOUNT‬‬
‫;‪ALLOCATE CHANNEL D1 TYPE DISK‬‬
‫;‪ALLOCATE CHANNEL D2 TYPE DISK‬‬
‫‪BACKUP AS COMPRESSED BACKUPSET DATABASE‬‬
‫;‪FILESPERSET 2‬‬
‫;‪ALTER DATABASE OPEN‬‬
‫}‬

‫‪157‬‬
‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﺩ ﺇﻏﻼﻗﻬﺎ ‪ ،‬ﻭﻴﺠﺏ ﺍﻟﺘﺫﻜﻴﺭ ﺒﺄﻥ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺴﻭﻑ ﻴﺘﻡ ﺍﺭﺴﺎﻟﻬﺎ ﺇﻟﻰ ﺍﻟﺩﻴﺴﻙ ﻤﻊ ﺍﻟﻌﻠﻡ ﺒﺄﻨﻙ ﺘﺴﺘﻁﻴﻊ ﺍﺭﺴﺎل ﺍﻟﻤﻠﻔﺎﺕ ﺇﻟﻰ ﺍل‪Tape‬‬
‫‪.ALLOCATE CHANNEL T1 TYPE SBT‬‬
‫ﺒﺎﻟﻁﺒﻊ ﻋﻨﺩ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻬﺫﺍ ﻴﻌﻨﻰ ﺒﺄﻨﻨﺎ ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﺠﻤﻴﻊ ﺍل ‪Data‬‬
‫‪ Files‬ﺍﻭ ﺇﻥ ﺸﺌﺕ ﻓﻘل ﺠﻤﻴﻊ ﺍل‪ Tablespaces‬ﻤﺎ ﺩﺍﻡ ﺃﻨﻨﺎ ﻟﻡ ﻨﻘﻡ ﺒﺈﺴﺘﺜﻨﺎﺀ ﺒﻌﺽ ﺍل‪، Tablespaces‬‬
‫ﻭﻴﻤﻜﻨﻙ ﺇﺴﺘﺜﻨﺎﺀ ﺒﻌﺽ ﺍل‪ Tablespaces‬ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬

‫;‪RMAN> CONFIGURE EXCLUDE FOR TABLESPACE USERS‬‬

‫ﻴﻤﻜﻥ ﺇﻟﻐﺎﺀ ﻫﺫﺍ ﺍﻹﺴﺘﺜﻨﺎﺀ‬

‫‪158‬‬
:Online Backup -2
‫ ﻭﻫﻨﺎ ﻻﺒﺩ ﺃﻥ ﺘﻜﻭﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ‬، ‫ﻭﻫﻭ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻰ ﻤﻔﺘﻭﺤﺔ‬
.ARCHIVELOG ‫ﺍﻟﻭﻀﻊ‬

RMAN>RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
ALLOCATE CHANNEL D2 TYPE DISK;
ALLOCATE CHANNEL D3 TYPE DISK;
BACKUP AS COMPRESSED BACKUPSET
DATABASE INCLUDE CURRENT CONTROLFILE PLUS
ARCHIVELOG;
}

159
‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﻌﻤل ‪ Online Full Backup‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺫﻟﻙ ﺒﺈﺴﺘﺨﺩﺍﻡ ﺍﻟﺨﻴﺎﺭ ‪Compressed‬‬
‫ﺍﻯ ﻗﻤﻨﺎ ﺒﻀﻐﻁ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﻻﺤﻅ ﻤﻌﻰ ﺍﻨﻨﺎ ﺍﻀﻔﻨﺎ ﺍﻟﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﻭﻤﻠﻑ‬
‫ﺍل‪ ، Control File‬ﻴﻤﻜﻨﻨﺎ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﻨﺠﺎﺡ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‪.‬‬

‫;‪RMAN> LIST BACKUP OF DATABASE‬‬

‫‪:Incremental Backups‬‬
‫ﺫﻜﺭﺕ ﺴﺎﺒﻘﹰﺎ ﺃﻥ ﺍل‪ RMAN‬ﺘﻭﻓﺭ ﺨﻴﺎﺭﺍﺕ ﺍﻟﻨﺴﺦ ﺍﻟﺘﻜﺎﻤﻠﻴﺔ ﻭﺍﻟﺘﺯﺍﻴﺩﻴﺔ ‪ ،‬ﺘﺴﺘﻁﻴﻊ ﺨﻼﻟﻬﺎ ﻋﻤل ﻨﺴﺦ‬
‫ﺇﺤﺘﻴﺎﻁﻰ ﻟﻠﻜﺘل ﺍﻟﺘﻰ ﺘﻡ ﺘﻐﻴﺭﻫﺎ ﻓﻘﻁ ﺨﻼل ﺍﺨﺭ ﺍﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ‪.‬‬

‫‪160‬‬
‫‪:Incremental Backup Level 0-1‬‬
‫‪ Level 0‬ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻴﺔ ﺘﻜﺎﻤﻠﻴﺔ ﺘﺤﻭﻯ ﺠﻤﻴﻊ ﺍﻟﻜﺘل ﻭﺍﻟﻔﺭﻕ ﺒﻴﻨﻬﺎ ﻭﺍل‪Full Backup‬‬
‫ﻫﻭ ﺃﻥ ﻫﺫﻩ ﺍﻟﻨﺴﺦ ﺘﺴﺘﻁﻴﻊ ﺃﻥ ﺘﻜﻭﻥ ﺍﺴﺎﺱ ﻟﻠﻜﺘل ﺍﻟﺘﻜﺎﻤﻠﻴﺔ ﺍﻻﺨﺭﻯ ‪ ،‬ﺃﻤﺎ ﻤﻥ ﺤﻴﺙ ﺍﻟﺘﻁﺒﻴﻕ ﻓﺈﻥ ﺍﻟﻔﺭﻕ ﻓﻰ‬
‫ﺃﻥ ﺍل‪ Full Backup‬ﺘﺴﺘﻁﻴﻊ ﺇﻨﺠﺎﺯﻫﺎ ﻓﻘﻁ ﺒﻜﺘﺎﺒﺔ ﺍﻻﻤﺭ ‪ ، Backup Database‬ﺃﻤﺎ ﺍﻟﻨﺴﺦ‬
‫ﺍل‪ Incremental Level 0‬ﻓﻨﺤﺘﺎﺝ ﺇﻟﻰ ﺘﺤﺩﻴﺩ ﺫﻟﻙ ﺒﺎﻻﻤﺭ ‪Backup Incremental Level 0‬‬
‫‪Database‬‬

‫{‪RMAN> RUN‬‬
‫;‪ALLOCATE CHANNEL D1 TYPE DISK‬‬
‫;‪ALLOCATE CHANNEL D2 TYPE DISK‬‬
‫‪BACKUP AS COMPRESSED BACKUPSET‬‬
‫;‪INCREMENTAL LEVEL 0 DATABASE‬‬
‫}‬

‫ﺍﻻﻥ ﻭﻀﻌﻨﺎ ﻨﺴﺨﺔ ﺘﻜﺎﻤﻠﻴﺔ ﺘﺼﻠﺢ ﻷﻥ ﺘﻜﻭﻥ ﺍﻻﺴﺎﺱ ﻟﻠﻨﺴﺦ ﺍﻟﺘﺯﺍﻴﺩﻴﺔ ﺍﻻﺨﺭﻯ ‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﻹﺴﺘﻌﻼﻡ ﻋﻥ ﻫﺫﻩ‬
‫ﺍﻟﻨﺴﺨﺔ ﺒﺎﻻﻤﺭ ‪.LIST BACKUP OF DATABASE‬‬

‫‪161‬‬
‫‪:Cumulative Level 1 -2‬‬
‫ﺒﻤﻌﻨﻰ ﻋﻤل ﻨﺴﺨﺔ ﺇﺤﺘﻴﺎﻁﻴﺔ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺤﻴﺙ ﻴﺘﻡ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻓﻘﻁ ﻟﻠﻜﺘل ﺍﻟﺘﻰ ﺘﻡ‬
‫ﺘﻐﻴﻴﺭﻫﺎ ﺨﻼل ﺍﺨﺭ ‪. Level 0 Incremental Backup‬‬
‫ﻻ ﺸﻙ ﺃﻥ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺴﺘﻘﻠل ﻋﺩﺩ ﺍﻟﻜﺘل ﺍﻟﺘﻰ ﺴﻨﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻬﺎ ﻭﻫﻭ ﺍﻤﺭ ﻓﻰ ﻏﺎﻴﺔ‬
‫ﺍﻟﺭﻭﻋﺔ ﺇﺫ ﻟﻴﺱ ﻤﻥ ﺍﻟﻤﺼﻠﺤﺔ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﺠﻤﻴﻊ ﻜﺘل ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﻭﻤﻴﹰﺎ ﻓﻤﻥ ﺍﻻﻓﻀل ﻭﻀﻊ‬
‫ﻨﺴﺦ ﺘﻜﺎﻤﻠﻴﺔ ﻭﻤﻥ ﺜﻡ ﺍﻟﻘﻴﺎﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻴﺔ ﺘﺯﺍﻴﺩﻴﺔ ﻟﻨﺴﺦ ﺍﻟﻜﺘل ﺍﻟﺘﻰ ﺘﺘﻐﻴﺭ ﺨﻼل ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ‬
‫ﻤﻥ ﺍﻟﻨﻭﻉ ‪ ، Level 0‬ﻟﻜﻥ ﺍﻟﻡ ﺘﻼﺤﻅ ﻤﻌﻰ ﺃﻨﻪ ﻤﺎ ﺯﺍﻟﺕ ﻟﺩﻴﻨﺎ ﻤﺸﻜﻠﺔ ﻓﻰ ﺍﻟﺯﻤﻥ ﺇﺫ ﺍﻥ ﺍل‪ RMAN‬ﺤﺘﻰ‬
‫ﺘﻌﺭﻑ ﺍﻟﻜﺘل )‪ (Blocks‬ﺍﻟﺘﻰ ﺘﻐﻴﺭ ﻤﻨﺫ ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ Level 0‬ﻓﺈﻥ ﺫﻟﻙ ﻴﺘﻁﻠﺏ ﺍﻟﻤﺭﻭﺭ‬
‫ﻋﻠﻰ ﺠﻤﻴﻊ ﺍﻟﻜﺘل ؛ ﻟﺫﺍ ﻟﺠﺄﺕ ﺸﺭﻜﺔ ﺍﻭﺭﻜل ﻟﺤل ﻫﺫﻩ ﺍﻟﻤﺸﻜﻠﺔ ﺒﻭﺍﺴﻁﺔ ﺇﻨﺸﺎﺀ ﻤﻠﻑ ﻴﺴﻤﻰ ‪Change‬‬
‫‪ Tracking File‬ﻴﺤﻭﻯ ﺍﻟﻌﻨﻭﺍﻨﻴﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻴﺔ ﻟﻠﻜﺘل ﺍﻟﺘﻰ ﺘﻐﻴﺭﺕ ﻤﻨﺫ ﺍﺨﺭ ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ‪.‬‬
‫ﻭﻫﺫﺍ ﻤﺎ ﻴﺴﻤﻰ ﺒﺎل‪ ، Block Change Tracking‬ﻓﻌﻨﺩﻤﺎ ﻴﺘﻡ ﺘﻬﻴﺌﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﻴﺘﻡ‬
‫ﺇﻨﺸﺎﺀ ‪ Background Process‬ﻴﺴﻤﻰ )‪ Change Tracking Writer (CTWR‬ﻴﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﻋﻨﺎﻭﻴﻥ‬
‫ﺍﻟﻜﺘل ﺍﻟﺘﻰ ﺘﻡ ﺘﻐﻴﻴﺭﻫﺎ ﻓﻰ ﻤﻠﻑ ﻴﺴﻤﻰ ‪ Change Tracking File‬ﻴﺘﻡ ﺘﺤﺩﻴﺩﻩ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫‪ DB_CREATE_FILE_DEST‬ﺍﻭ ﻋﻥ ﻁﺭﻴﻕ ﺘﺤﺩﻴﺩ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻴﺩﻭﻴﹰﺎ ﻋﻨﺩ ﺘﻬﻴﺌﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ‬
‫ﻫﺫﺍ ﺍﻟﻨﻤﻁ‪.‬‬

‫‪SQL>ALTER DATABASE ENABLE BLOCK CHANGE TRACKING‬‬


‫‪USING FILE‬‬
‫‪'C:\oracle\product\10.1.0\oradata\orcl\TRACHING.‬‬
‫'‪DBF‬‬

‫ﺍﻻﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻌﻤل ﻓﻰ ﺍﻟﻨﻤﻁ ‪ Block Change Tracking‬ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺇﻟﻐﺎﺀ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﺒﻭﺍﺴﻁﺔ‬
‫ﺍﻻﻤﺭ‬
‫‪ALTER DATABASE DISABLE BLOCK CHANGE TRACKING‬‬

‫‪162‬‬
‫‪RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE‬‬
‫;‪DATABASE‬‬

‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﻌﻤل ﻨﺴﺦ ﺘﺯﺍﻴﺩﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ ، Cumulative‬ﺒﺎﻟﻁﺒﻊ ﻻ ﺘﺴﺘﻁﻴﻊ ﺍﻟﻘﻴﺎﻡ ﺒﻬﺫﻩ ﺍﻟﻨﺴﺨﺔ ﺇﺫﺍ‬
‫ﻟﻡ ﻴﻜﻥ ﻟﺩﻴﻙ ﻨﺴﺨﺔ ﺇﺤﺘﻴﺎﻁﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪.Level 0‬‬
‫ﺒﺎﻟﻁﺒﻊ ﺍﻟﻨﺴﺨﺔ ﺍﻟﺘﺯﺍﻴﺩﻴﺔ ﺍﻟﺘﻰ ﻗﻤﻨﺕ ﺒﻌﻤﻠﻬﺎ ﺘﺤﻭﻯ ﻓﻘﻁ ﺍﻟﻜﺘل ﺍﻟﺘﻰ ﺘﻡ ﺘﻐﻴﺭﻫﺎ ﻤﻨﺫﺍ ﺍﺨﺭ ﻨﺴﺨﺔ‬
‫ﺍﺤﺘﻴﺎﻁﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ﺍل‪ Level 0‬ﻭﻴﻤﻜﻥ ﺍﻹﺴﺘﻌﻼﻡ ﻋﻨﻬﺎ ﺍﻴﻀﹰﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪LIST BACKUP OF DATABASE‬‬

‫‪163‬‬
‫‪:Differential Level 1 -2‬‬
‫ﻭﻫﻭ ﻋﻤل ﻨﺴﺨﺔ ﺇﺤﺘﻴﺎﻁﻴﺔ ﺘﺯﺍﻴﺩﻴﺔ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺤﻴﺙ ﺘﺤﻭﻯ ﻓﻘﻁ ﺍﻟﻜﺘل ﺍﻟﺘﻰ ﺘﻐﻴﺭﺕ ﻤﻨﺫ ﺍﺨﺭ‬
‫ﻨﺴﺦ ﺍﺤﺘﻴﺎﻁﻰ ﺴﻭﺍﺀ ﻜﺎﻥ ﺫﻟﻙ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ )‪ ، (Level 0 or Level 1‬ﻻﺤﻅ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﻫﺫﺍ ﺍﻟﻨﻭﻉ‬
‫ﻭﺍﻟﺫﻯ ﻗﺒﻠﻪ ‪ Cumulative‬ﺍﻟﺫﻯ ﻴﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺍﻟﻜﺘل ﺍﻟﺘﻰ ﺘﻐﻴﺭ ﻤﻨﺫ ﺍﺨﺭ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ‬
‫‪ Level 0‬ﻓﻘﻁ ‪ ،‬ﻜﻤﺎ ﻴﺠﺏ ﺍﻹﺸﺎﺭﺓ ﺇﻟﻰ ﺃﻥ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻫﻭ ﺍﻻﺼل ﻋﻨﺩ ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ‬
‫‪ Level 1‬ﻟﺫﺍ ﻻ ﻨﺤﺘﺎﺝ ﺇﻟﻰ ﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ‪ Differential‬ﻋﻨﺩ ﻋﻤل ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‪.‬‬

‫;‪RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE‬‬

‫ﻋﻤﻭﻤﹰﺎ ﺃﻨﺕ ﻴﻤﻜﻨﻙ ﻜﺘﺎﺒﺔ ﺍﻻﻭﺍﻤﺭ ﻋﻠﻰ ﻤﺤﺭﺭ ﺍل‪ RMAN‬ﻤﺒﺎﺸﺭﺓ ﻜﻤﺎ ﻴﻤﻜﻨﻙ ﻜﺫﻟﻙ ﻜﺘﺎﺒﺔ ﺫﻟﻙ ﻓﻰ ﻤﻠﻑ‬
‫‪ FILE.RCV‬ﻭﻤﻥ ﺜﻡ ﺘﻨﻔﻴﺫﻩ ‪RMAN>@C:\FILE.RCV‬‬

‫‪164‬‬
‫اﻻﻣﺮ ‪:LIST‬‬
‫ﺍﺴﺘﺨﺩﻤﻨﺎ ﺍﻻﻤﺭ ‪ LIST‬ﻜﺜﻴﺭﹰﺍ ﺍﺜﻨﺎﺀ ﺍﻟﺤﺩﻴﺙ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺇﺫﺍ ﺇﻥ ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻘﻭﻡ ﺒﻌﻤل‬
‫ﺇﺴﺘﻌﻼﻡ ﻋﻥ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺒﻜل ﺍﻨﻭﺍﻋﻬﺎ‪:‬‬

‫‪ :LIST BACKUPSET‬ﻟﻌﺭﺽ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪Backupset‬‬

‫‪ :LIST COPY‬ﻟﻌﺭﺽ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ ‪COPY‬‬

‫‪ :LIST COPY OF TABLESPACE USERS‬ﻟﻌﺭﺽ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﻤﻥ ﺍﻟﻨﻭﻉ‬


‫‪ COPY‬ﻟل‪USERS TABLESPACE‬‬

‫ﻟﻌﺭﺽ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﺍﻟﺘﻰ ﻴﺘﻡ ﺘﺨﺯﻴﻨﻬﺎ ﻓﻰ ﺍل ‪Flash Recovery‬‬ ‫‪:LIST ARCHIVELOGG ALL‬‬
‫‪Area‬‬

‫‪ :LIST BACKUP OF ARCHIVELOG ALL‬ﻟﻌﺭﺽ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﻟﻤﻠﻔﺎﺕ‬


‫ﺍﻻﺭﺸﻴﻑ‬

‫ﻫﺫﺍ ﺒﺎﻟﻁﺒﻊ ﻟﻴﺱ ﻜل ﺸﺊ ﻋﻥ ﺍﻻﻤﺭ ‪ LIST‬ﻭﻟﻜﻥ ﻋﻤﻭﻤﹰﺎ ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻘﻭﻡ ﺒﻌﺭﺽ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ‬
‫ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ‪ ،‬ﻭﺍﻨﺕ ﺘﺴﺘﻁﻴﻊ ﺃﻥ ﺘﺤﺩﺩ ﻤﺎ ﺘﺭﻴﺩ ﺍﻥ ﺘﺼل ﺍﻟﻴﻪ ﻤﻥ ﻤﻌﻭﻤﺎﺕ ﻭﻤﻥ ﺜﻡ ﺘﻘﻭﻡ‬
‫ﺒﺼﻴﺎﻏﺔ ﺍﻻﻤﺭ ﺒﻨﺎﺀ ﻋﻠﻰ ﺍﻻﻤﺜﻠﺔ ﺍﻟﺴﺎﺒﻘﺔ‬

‫‪165‬‬
‫اﻻﻣﺮ ‪:REPORT‬‬
‫ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﺴﺎﻋﺩﻙ ﻓﻰ ﺘﺤﻠﻴل ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺘﻰ ﻋﻨﺩﻙ ﻓﻰ ﺍل‪. RMAN Repository‬‬

‫‪ :REPORT SCHEMA‬ﻟﻌﺭﺽ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ‪ ،‬ﻗﺩ ﺘﺤﺘﺎﺝ ﻟﻬﺫﺍ ﺍﻻﻤﺭ ﻗﺒل ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ‬
‫ﺍﻹﺤﺘﻴﺎﻁﻰ ﻟﻌﺭﺽ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬

‫‪ :REPORT OBSOLETE‬ﻟﻌﺭﺽ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﻤﻠﻐﻴﺔ ﺍﻭ ﺍﻟﺘﻰ ﺍﻨﺘﻬﺕ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ ﺒﻬﺎ ‪،‬‬
‫ﺒﺎﻟﻁﺒﻊ ﺴﻭﻑ ﻴﺘﻡ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﻤﺘﻐﻴﺭ ‪ RETENTION POLICY‬ﻭﻤﻥ ﺜﻡ ﻴﺘﻡ ﻋﺭﺽ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺒﻨﺎﺀ‬
‫ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ‪.‬‬

‫‪ :REPORT OBSOLETE REDUNDANCY 2‬ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻘﻭﻡ ﺒﺘﺠﺎﻫل ﻗﻴﻤﺔ ﺍﻟﺘﻬﻴﺌﺔ ﺍﻻﻟﻴﺔ ﻟﻠﻤﺘﻐﻴﺭ‬
‫‪ RETENTION POLICY‬ﻭﻴﻘﻭﻡ ﺒﻌﺭﺽ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺘﻰ ﻤﺭ ﻋﻠﻴﻬﺎ ﺍﻜﺜﺭ ﻤﻥ ﻴﻭﻤﻴﻥ‬

‫ﻟﻌﺭﺽ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﺤﺘﺎﺝ ﺇﻟﻰ ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻭﺫﻟﻙ ﺤﺴﺏ‬ ‫‪:REPORT NEED BACKUP‬‬
‫ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ ، RETENTION POLICY‬ﻓﻠﻭ ﻜﺎﻥ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻤﺔ ‪REDUNDANCY 2‬‬
‫ﻓﻬﺫﺍ ﻴﻌﻨﻰ ﻋﺭﺽ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻟﺩﻴﻬﺎ ﺍﻗل ﻤﻥ ‪ 2‬ﻨﺴﺨﺔ ﺇﺤﺘﻴﺎﻁﻴﺔ‬

‫‪ :REPORT NEED BACKUP REDUNDANCY 2‬ﻫﺫﺍ ﺍﻻﻤﺭ ﻟﺘﺠﺎﻫل ﻗﻴﻤﺔ ﺍﻟﺘﻬﻴﺌﺔ ﺍﻻﻟﻴﺔ ﻟﻠﻤﺘﻐﻴﺭ‬
‫‪ RETENTION POLICY‬ﻭﻴﻘﻭﻡ ﺒﻌﺭﺽ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻟﺩﻴﻬﺎ ﺍﻗل ﻤﻥ ‪ 2‬ﻨﺴﺨﺔ ﺇﺤﺘﻴﺎﻁﻴﺔ‬

‫‪166‬‬
‫اﻻﻣﺮ ‪:DELETE‬‬
‫ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻭﻗﻡ ﺒﺤﺫﻑ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍل‪RMAN REPOSITORY‬‬
‫ﻭﺍﻟﻜﺎﺘﻠﻭﺝ ﻜﻤﺎ ﻴﻘﻭﻡ ﺒﺤﺫﻓﻬﺎ ﺍﻴﻀﹰﺎ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ‪ ،‬ﻟﺫﺍ ﻜﺎﻥ ﻤﻥ ﺍﻟﺨﻁﺄ ﺤﺫﻑ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﻋﻥ‬
‫ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﺫﻟﻙ ﻷﻥ ﻫﺫﻩ ﺍﻟﻤﻠﻔﺎﺕ ﺴﺘﻅل ﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍل‪.REPOSITORY‬‬

‫‪ :DELETE OBSOLETE‬ﻟﺤﺫﻑ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﺍﻨﺘﻬﺕ ﻓﺘﺭﺓ ﺍﻹﺤﺘﻔﺎﻅ ﺒﻬﺎ ﻭﺫﻟﻙ ﺤﺴﺏ ﺍل ‪RETENTION‬‬
‫‪POLICY‬‬

‫‪ : DELETE OBSOLETE REDUNDANCY 3‬ﻟﺘﺠﺎﻫل ﺍﻟﺘﻬﻴﺌﺔ ﺍﻻﻟﻴﺔ ﻟﻠﻤﺘﻐﻴﺭ ‪REDUNDANCY‬‬


‫‪ POLICY‬ﻭﺤﺫﻑ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﺍﻟﺘﻰ ﺯﺍﺩﺕ ﻋﺩﺩ ﻨﺴﺨﻬﺎ ﻋﻥ ﺍﻟﺜﻼﺙ ﻨﺴﺦ‬

‫‪ :DELETE BACKUPSET 3037‬ﻟﺤﺫﻑ ﺍﻟﻨﺴﺨﺔ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﺒﺎﻟﺭﻗﻡ ‪ 3037‬ﻤﻥ ﺍﻟﻨﻭﻉ ‪.Backupset‬‬

‫‪ :DELETE COPY OF DATAFILE 1‬ﻟﺤﺫﻑ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﻟل‪ Data File 1‬ﻤﻥ ﺍﻟﻨﻭﻉ ‪Image‬‬
‫‪.Copy‬‬

‫‪ :DELETE ARCHIVELOG FROM SEQUENCE 150‬ﻟﺤﺫﻑ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﻤﻥ ﺇﺒﺘﺩﺍﺀﹰﺍ ﻤﻥ‬


‫ﺍل‪ 50 Sequence‬ﻓﻤﺎ ﻓﻭﻕ ‪ ،‬ﻜﻤﺎ ﻴﻤﻜﻥ ﺤﺫﻑ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍﻹﺭﺸﻴﻑ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪DELETE‬‬
‫‪ARCHIVELOG ALL‬‬

‫‪167‬‬
‫اﻻﻣﺮ ‪:CROSSCHECK‬‬
‫ﻤﺎﺫﺍ ﻟﻭ ﻗﻤﺕ ﺒﻌﻤل ﺤﺫﻑ ﻟﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﺒﺎﺸﺭﺓ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻻ ﺸﻙ ﺃﻥ‬
‫ﻫﺫﻩ ﺍﻟﻨﺴﺦ ﺴﺘﻅل ﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍل‪ ، Repository‬ﻭﻴﻤﻜﻥ ﺤل ﻫﺫﻩ ﺍﻟﻤﺸﻜﻠﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬
‫‪ CROSSCHECK‬ﺍﻟﺫﻯ ﻴﻘﻭﻡ ﺒﻌﻤل ﺍﺨﺘﺒﺎﺭ ﻟﺠﻤﻴﻊ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍل‪Repository‬‬
‫ﻭﻴﺘﺄﻜﺩ ﻤﻥ ﻭﺠﻭﺩﻫﺎ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ‪ ،‬ﺍﻤﺎ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﻟﻥ ﻴﺠﺩﻫﺎ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﻓﻴﻘﻭﻡ ﺒﻭﻀﻌﻬﺎ ﻓﻰ ﻗﺎﺌﻤﺔ ﺍﻟﻤﻨﺘﻬﻴﺎﺕ‬
‫‪ ، EXPIRED‬ﺤﺘﻰ ﻨﺴﺘﻁﻴﻊ ﺤﺫﻓﻬﺎ ﻓﻴﻤﺎ ﺒﻌﺩ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪DELETE‬‬
‫‪ EXPIRED BACKUPSET‬ﺍﻭ ‪ DELETE EXPIRED COPY‬ﻭﻗﺒل ﺫﻟﻙ ﺃﻨﺕ ﺘﺴﺘﻁﻴﻊ‬
‫ﺍﻹﺴﺘﻌﻼﻡ ﻋﻥ ﻫﺫﻩ ﺍﻟﻘﺎﺌﻤﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ ‪.LIST EXPIRED BACKUPSET‬‬

‫ﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺃﻨﻙ ﻗﻤﺕ ﺒﺤﺫﻑ ﺍﺤﺩ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ Backupset‬ﻋﻥ‬
‫ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ‪ ،‬ﻭﻨﺭﻴﺩ ﺃﻥ ﺘﺤﺫﻑ ﺫﻟﻙ ﺍﻟﻤﻠﻑ ﻤﻥ ﺍل‪REPOSITORY‬‬

‫‪ -1‬ﻨﻨﻔﺫ ﺍﻻﻤﺭ ‪ REOSSCHECK BACKUPSET‬ﻟﻌﻤل ﺇﺨﺘﺒﺎﺭ ﻟﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍﻟﻨﻭﻉ‬


‫‪ BACKUPSET‬ﻭﻨﺘﻴﺠﺔ ﻫﺫﺍ ﺍﻹﺨﺘﺒﺎﺭ )‪.(AVAILABLE OR EXPIRED‬‬

‫;‪RMAN> CROSSCHECK BACKUPSET‬‬

‫‪168‬‬
LIST EXPIRED ‫ ﻋﺭﺽ ﻗﺎﺌﻤﺔ ﺍﻟﻤﻨﺘﻬﻴﺎﺕ‬-2

RMAN> LIST EXPIRED BACKUPSET

DELETE EXPIRED ‫ ﺤﺫﻑ ﻤﻠﻑ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﻗﺎﺌﻤﺔ ﺍﻟﻤﻨﺘﻬﻴﺎﺕ‬-3

RMAN> DELETE EXPIRED BACKUPSET

169
:CHANGE…..UNAVAILABLE ‫اﻻﻣﺮ‬
‫ ﺘﺠﻌل ﻤﻥ ﺍﻟﻤﺘﻌﺫﺭ ﻓﻴﺯﻴﺎﺌﻴﹰﺎ ﻤﺸﺎﻫﺩﺓ ﺒﻌﺽ‬Hardware‫ﻓﻰ ﺒﻌﺽ ﺍﻻﺤﻴﺎﻥ ﺘﺤﺩﺙ ﻤﺸﻜﻠﺔ ﻓﻰ ﺍل‬
‫ ﻓﻴﻘﻭﻡ ﻫﺫﻩ ﺍﻻﻤﺭ ﺒﻌﻤل ﺇﺸﺎﺭﺓ ﺍﻟﻰ ﺘﺠﺎﻫل ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﺍﺜﻨﺎﺀ ﻋﻤل ﺍﻹﺴﺘﺭﺠﺎﻉ‬، ‫ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ‬
(RESTORE OR RECOVERY)

RMAN> CHANGE BACKUP OF CONTROLFILE UNAVAILABLE

RMAN> CHANGE COPY OF ARCHIVELOG SEQUENCE 130


UNAVAILABLE

RMAN> CHANGE DATAFILECOPY ‘C:\BACKUP\USERS.DBF’


UNAVAILABLE

‫ﻴﻤﻜﻥ ﺒﺎﻟﻁﺒﻊ ﺒﻌﺩ ﻤﻌﺎﻟﺠﺔ ﺍﻟﻌﻁل ﻭﺍﺘﺎﺤﺔ ﺍﻟﻤﻠﻑ ﺘﻌﺩﻴل ﺍﻟﺤﺎﻟﺔ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
CHANGE ….AVAILABLE

170
‫اﻻﻣﺮ ‪:CATALOG‬‬
‫ﻓﻰ ﺒﻌﺽ ﺍﻻﺤﻴﺎﻥ ﺘﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‬
‫‪ User-Managed Backups‬ﺒﺎﻟﻁﺒﻊ ﻤﺜل ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻻ ﻴﺘﻡ ﺘﺴﺠﻴﻠﻪ ﻓﻰ‬
‫ﺍل‪ Repository‬ﻭﻟﻜﻥ ﻴﻤﻜﻥ ﺘﺴﺠﻴﻠﻪ ﻴﺩﻭﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﻤﺭ ‪ CATALOG‬ﺤﺘﻰ ﺘﺴﺘﻁﻴﻊ ﺍﻟﺘﻌﺎﻤل ﻤﻌﻪ‬
‫ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ ، RMAN‬ﻭﻨﻭﻉ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻰ ﻴﺴﺘﻁﻴﻊ ﻫﺫﺍ ﺍﻻﻤﺭ ﺍﻟﺘﻌﺎﻤل ﻤﻌﻬﺎ ﻫﻰ‪:‬‬
‫‪Operating System Datafile Copy -1‬‬
‫‪Archive Log File Copy -2‬‬
‫‪Control File Copy -3‬‬

‫’‪RMAN> CATALOG DATACOPY ‘C:\BACKUP\USERS.DBF‬‬

‫ﻟﻘﺩ ﺘﻡ ﺘﺴﺠﻴل ﻤﻠﻑ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻋﻥ ﻁﺭﻴﻕ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻓﻰ ﺍل‪REPOSITORY‬‬

‫‪171‬‬
‫اﻻﻣﺮ ‪:CHANGE….UNCATALOG‬‬
‫ﺒﺎﻟﻁﺒﻊ ﻴﻤﻜﻥ ﺇﻟﻐﺎﺀ ﺘﺴﺠﻴل ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍل‪ REPOSITORY‬ﺒﻭﺍﺴﻁﺔ ﻫﺫﺍ ﺍﻻﻤﺭ‬
‫‪CHANGE….UNCATALOG‬‬

‫’‪RMAN> CHANGE DATACOPY ‘C:\BACKUP\USERS.DBF‬‬


‫‪UNCATALOG‬‬

‫ﺒﺎﻟﻁﺒﻊ ﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻘﻭﻡ ﺒﺈﻟﻐﺎﺀ ﻤﻠﻔﺎﺕ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻤﻥ ﺍل‪ REPOSITORY‬ﻭﻟﻜﻥ ﻴﻅل ﺍﻟﻤﻠﻑ ﻤﻭﺠﻭﺩ‬
‫ﻓﻴﺯﻴﺎﺌﻴﹰﺎ‪.‬‬

‫‪172‬‬
‫‪:Complete Recovery‬‬
‫ﻋﻤﻠﻴﺔ ﺤﺩﻭﺙ ﻓﺸل ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻫﻰ ﻋﻤﻠﻴﺔ ﻭﺍﺭﺩﺓ ﻟﺫﺍ ﻭﺠﺏ ﻋﻠﻰ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻀﻊ‬
‫ﺍﻟﺘﺭﺘﻴﺒﺎﺕ ﺍﻟﻼﺯﻤﺔ ﺤﺘﻰ ﻻ ﻴﻔﻘﺩ ﺠﺯﺀ ﻤﻥ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺘﻪ ‪ ،‬ﻭﻟﻘﺩ ﺘﺤﺩﺜﻨﺎ ﻓﻰ ﺍﻟﻔﺼل ﺍﻟﺴﺎﺒﻕ ﻋﻥ ﺍل ‪Complete‬‬
‫‪ Reovery‬ﻭﻫﻭ ﺇﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺇﻟﻰ ﺍﻟﻰ ﻤﺎ ﻗﺒل ﺤﺩﻭﺙ ﺍﻟﻔﺸل ﺩﻭﻥ ﺃﻥ ﻨﻔﻘﺩ ﺠﺯﺀ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪.‬‬

‫‪:Data File Recovery‬‬


‫ﻜﻤﺎ ﺫﻜﺭﺕ ﺴﺎﺒﻘﹰﺎ ﻫﻨﺎﻙ ﻨﻭﻋﺎﻥ ﻤﻥ ﺍل‪:Data Files‬‬
‫‪:Loss of a Non-SYSTEM Data File -1‬‬
‫ﻭﻫﻭ ﺍﻯ ‪ Data Files‬ﻻ ﻴﻨﺘﻤﻰ ﺇﻟﻰ )‪ ، (System or Undo Tablespace‬ﻓﻔﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻗﺩ‬
‫ﻻ ﻨﺤﺘﺎﺝ ﺇﻟﻰ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻹﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺍﻉ‪.‬‬

‫{‪RMAN> RUN‬‬
‫;‪ALLOCATE CHANNEL D1 TYPE DISK‬‬
‫;‪RESTORE DATAFILE 4‬‬
‫;‪RECOVER DATAFILE 4‬‬
‫}‬

‫‪173‬‬
SET ‫ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻭﺫﻟﻙ ﺒﺈﺴﺘﺨﺩﺍﻡ ﺍﻻﻤﺭ‬Data File‫ﻴﻤﻜﻥ ﻜﺫﻟﻙ ﺇﻋﺎﺩﺓ ﺘﺴﻤﻴﺔ ﺍل‬
‫ ﻟﺘﻌﺩﻴل ﻫﺫﺍ ﺍﻟﺘﻐﻴﻴﺭ ﻓﻰ‬SWITCH ‫ ﻭﺍﻻﻤﺭ‬Data File‫ ﻟﺘﻐﻴﻴﺭ ﺍﺴﻡ ﺍﻭ ﻤﻜﺎﻥ ﺍل‬NEWNAME
.Conreol File‫ﺍل‬

RMAN> RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
SET NEWNAME FOR DATAFILE 4 TO
'C:\oracle\product\10.1.0\oradata\orcl\USERS.DB
F';
RESTORE DATAFILE 4;
SWITCH DATAFILE 4;
RECOVER DATAFILE 4;
}

174
:Loss of a SYSTEM Data File -2
‫ ﻭﺒﺎﻟﻁﺒﻊ ﻻ‬، (System or Undo Tablespace) ‫ ﺘﻨﺘﻤﻰ ﺇﻟﻰ‬Data Files ‫ﻭﻨﻘﺼﺩ ﺒﻪ ﻫﻨﺎ ﺍﻯ‬
‫ ﺩﻭﻥ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺫﻟﻙ ﻻﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻻ‬System Data File‫ﻨﺴﺘﻁﻴﻊ ﻋﻤل ﺇﺴﺘﺭﺠﺎﻉ ﻟل‬
(System or Undo Tablespace) ‫ ﻴﻨﺘﻤﻰ ﺇﻟﻰ‬Data File ‫ﺘﻌﻤل ﺇﺫﺍ ﺤﺩﺜﺕ ﻤﺸﻜﻠﺔ ﻓﻰ‬

RMAN> RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
SHUTDOWN ABORT;
STARTUP MOUNT;
RESTORE DATAFILE 2;
RECOVER DATAFILE 2;
SQL 'ALTER DATABASE OPEN';
}

‫ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ‬Tablespace‫ ﺍﻟﺘﺎﺒﻌﺔ ﻟل‬Data Files‫ﻭﻴﻤﻜﻥ ﻫﻨﺎ ﺍﻴﻀﹰﺎ ﺇﻋﺎﺩﺓ ﺘﺴﻤﻴﺔ ﻤﻠﻔﺎﺕ ﺍل‬
.SWITCH ‫ ﻭﺍﻻﻤﺭ‬SET NEWNAME ‫ﺒﻭﺍﺴﻁﺔ ﺍﻻﻤﺭ‬

175
:Tablespace Recovery
System or Undo ‫ ﻤﻥ ﺃﻨﻪ ﺇﺫﺍ ﻓﻘﺩﻨﺎ ﺍل‬Data Files‫ﻭﻴﻤﻜﻥ ﺍﻥ ﻨﻘﻭل ﻫﻨﺎ ﻤﺎ ﻗﻠﻨﺎﻩ ﻓﻰ ﻤﻭﻀﻭﻉ ﺍل‬
.MOUNT ‫ ﻻﺒﺩ ﻤﻥ ﺍﻟﻘﻴﺎﻡ ﺒﻌﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻓﻰ ﺍﻟﻭﻀﻊ‬Tablespace
‫ ﻓﻴﻤﻜﻥ ﺃﻥ ﻨﻘﻭﻡ ﺒﻌﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺩﻭﻥ ﺇﻏﻼﻕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬Tablespace‫ﺍﻤﺎ ﻏﻴﺭﻫﻤﺎ ﻤﻥ ﺍل‬
.Offline ‫ ﻓﻰ ﺍﻟﻭﻀﻊ‬Tablespace‫ﻭﻟﻜﻥ ﺒﻌﺩ ﻭﻀﻊ ﺍل‬

RMAN> RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
SQL 'ALTER TABLESPACE USERS OFFLINE';
RESTORE TABLESPACE USERS;
RECOVER TABLESPACE USERS;
SQL 'ALTER TABLESPACE USERS ONLINE';
}

176
‫‪:Database Recovery‬‬
‫ﻴﻤﻜﻥ ﻋﻥ ﻁﺭﻴﻕ ﺍل‪ RMAN‬ﻋﻤل ﺇﺴﺘﺭﺠﺎﻉ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ‪ ،‬ﻭﺍﻟﻴﻙ ﺍﻟﺨﻁﻭﺍﺕ‪:‬‬

‫‪ -1‬ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.MOUNT‬‬

‫;‪RMAN> STARTUP MOUNT‬‬

‫‪ -2‬ﻋﻤل ‪ RESTORE‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫;‪RMAN> RESTORE DATABASE‬‬

‫‪177‬‬
‫‪ -3‬ﻋﻤل ‪ RECOVERY‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‪.‬‬

‫;‪RMAN> RECOVER DATABASE‬‬

‫ﻻﺤﻅ ﻤﻌﻰ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍل‪ RESTORE‬ﻭﻋﻤﻠﻴﺔ ﺍل‪ RECOVERY‬ﺘﻡ ﺘﺠﺎﻫل ﺍل ‪DATA‬‬
‫‪ FILE 6‬ﻭﺫﻟﻙ ﻻﻨﻪ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.OFFLINE‬‬

‫‪ -4‬ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬

‫;‪RMAN> ALTER DATABASE OPEN‬‬

‫‪178‬‬
‫‪:Incomplete Recovery‬‬
‫ﻓﻰ ﺍﻻﺼل ﻓﺈﻥ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻴﺴﻌﻰ ﺠﺎﻫﺩﹰﺍ ﻓﻰ ﺤﺎل ﺤﺩﻭﺙ ﻤﺸﻜﻠﺔ ﻓﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﻹﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺇﻟﻰ ﻤﺎ ﻗﺒل ﺤﺩﻭﺙ ﺍﻟﻔﺸل ﻭﺩﻭﻥ ﺃﻥ ﻴﻔﻘﺩ ﺠﺯﺀ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻭ ﻤﺎ ﻴﺴﻤﻰ‬
‫ﺒﺎل‪ ، Complete Recovery‬ﻟﻜﻥ ﻓﻰ ﺒﻌﺽ ﺍﻹﺤﻴﺎﻥ ﻴﻜﻭﻥ ﻤﻥ ﺍﻟﻤﺘﻌﺫﺭ ﺇﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺩﻭﻥ ﻓﻘﺩ‬
‫ﺠﺯﺀ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺫﻟﻙ ﻻﺴﺒﺎﺏ ﻗﺩ ﻴﻜﻭﻥ ﻤﻨﻬﺎ ﻋﺩﻡ ﺘﻭﻓﺭ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﺍﻟﺘﻰ ﻨﺤﺘﺎﺠﻬﺎ ﻓﻰ ﻋﻤﻠﻴﺔ‬
‫ﺍل‪ Recovery‬ﺍﻭ ﻟﻔﻘﺩﺍﻥ ﻤﻠﻑ ﺍل‪ Online Redo Log‬ﺍﻟﺫﻯ ﻟﻡ ﺘﺘﻡ ﺍﺭﺸﻔﺘﻪ ﺍﻭ ﺍﺤﻴﺎﻨﹰﺎ ﻟﻔﻘﺩﺍﻥ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ‬
‫ﺍل‪ ، Control Files‬ﻭﻫﺫﺍ ﻤﺎ ﻴﺴﻤﻰ ﺒﺎل‪.Incomplete Recovery‬‬

‫ﻭﻴﻤﻜﻥ ﺇﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍل‪ Incomplete Recovery‬ﺒﻭﺍﺴﻁﺔ ﺍل‪ RMAN‬ﻜﻤﺎ ﺍﻨﺠﺯﻨﺎﻫﺎ ﻤﻥ ﻗﺒل‬
‫ﺒﻭﺍﺴﻁﺔ ‪ ، User-Managed Backups‬ﻭﻴﻤﻜﻥ ﺍﻟﻘﻭل ﺒﺄﻥ ﻋﻤﻠﻴﺔ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺒﻭﺍﺴﻁﺔ ﺍل‪ RMAN‬ﺍﺴﻬل‬
‫ﺒﻜﺜﻴﺭ ﻤﻥ ﺍل‪.User-Managed Backups‬‬

‫ﻭﻋﻤﻭﻤﹰﺎ ﻴﻤﻜﻥ ﺘﻠﺨﻴﺹ ﺨﻁﻭﺍﺕ ﻋﻤﻠﻴﺔ ﺍل‪ Incomplete Recovery‬ﺒﺎﻻﺘﻰ‪-:‬‬


‫‪ -1‬ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.MOUNT‬‬
‫‪ -2‬ﻋﻤل ‪ RESTORE‬ﻟﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﺍل‪ DATA FILES‬ﻭﺍﺤﻴﺎﻥ ﻤﻠﻑ ﺍل‪.CONTROL FILE‬‬
‫‪ -3‬ﻋﻤل ‪ RECOVER‬ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ )‪.(UNTIL TIME OR SEQUENCE OR SCN‬‬
‫‪ -4‬ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪.RESETLOGS‬‬

‫‪179‬‬
:UNTIL TIME
‫ ﻹﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻰ ﻭﻗﺕ ﻤﻌﻴﻥ‬Redo Log‫ﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻤﺘﺎﺡ ﻟﺘﻁﺒﻴﻕ ﻤﻠﻔﺎﺕ ﺍﻹﺭﺸﻴﻑ ﻭﺍل‬
‫ ﻭﻫﺫﺍ ﺍﻟﺨﻴﺎﺭ ﻴﺴﺘﺨﺩﻡ ﻋﺎﺩﺓ ﻓﻰ ﺤﺎﻟﺔ ﺤﺩﻭﺙ ﺨﻁﺄ ﻤﻥ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﻓﻨﺤﺘﺎﺝ ﻹﺭﺠﺎﻉ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺇﻟﻰ ﻤﺎ‬،
.‫ﻗﺒل ﺤﺩﻭﺙ ﺍﻟﺨﻁﺄ‬

RMAN> RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
ALLOCATE CHANNEL D2 TYPE DISK;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SQL "ALTER SESSION SET NLS_DATE_FORMAT=''DD-MM-
YYYY HH24:MI:SS''";
SET UNTIL TIME "27-01-2009 11:00:00";
RESTORE DATABASE;
RECOVER DATABASE;
}

‫ ﺒﻌﺩ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬FULL BACKUP ‫ﻴﺠﺏ ﺍﻟﺘﻨﺒﻴﻪ ﺇﻟﻰ ﻀﺭﻭﺭﺓ ﻭﻀﻊ‬
.RESETLOGS

180
:UNTIL SEQUENCE
‫ ﻭﻟﻜﻥ ﺍﻜﺘﺸﻔﺕ ﺃﻥ‬، ‫ﻓﻰ ﺒﻌﺽ ﺍﻻﺤﻴﺎﻥ ﻗﺩ ﺘﺤﺘﺎﺝ ﻟﻌﻤل ﺇﺴﺘﺭﺠﺎﻉ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺴﺒﺏ ﻤﺸﻜﻠﺔ ﻤﺎ‬
Archive Log File ‫ ﻭﻟﻨﻔﺘﺭﺽ ﺃﻨﻙ ﻗﺩ ﻓﻘﺩﺕ‬، ‫ ﻗﺩ ﻓﻘﺩﺕ‬Archive Log File ‫ﺒﻌﺽ ﻤﻠﻔﺎﺕ ﺍﻹﺭﺸﻴﻑ‬
‫ ﺘﻁﺒﻴﻕ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﻓﻘﻁ‬Recovery‫ ﻓﻔﻰ ﻤﺜل ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻨﺴﺘﻁﻴﻊ ﺍﺜﻨﺎﺀ ﻋﻤل ﺍل‬، Sequence 155
Sequence 15 ‫ﺤﺘﻰ‬

RMAN> RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
ALLOCATE CHANNEL D2 TYPE DISK;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SET UNTIL SEQUENCE 15 THREAD 1;
RESTORE DATABASE ;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}

‫ ﻭﻻ ﻴﺘﻡ ﺘﻀﻤﺒﻥ‬Sequence 14 ‫ﻴﺠﺏ ﺍﻟﺘﻨﺒﻴﻪ ﺇﻟﻰ ﺍﻨﻪ ﺴﻭﻑ ﻴﺘﻡ ﺘﻁﺒﻴﻕ ﻤﻠﻔﺎﺕ ﺍﻻﺭﺸﻴﻑ ﺤﺘﻰ‬
.Sequence 15 ‫ﻤﻠﻑ ﺍﻻﺭﺸﻴﻑ‬

181
‫‪ :Thread‬ﺩﺍﺌﻤﹰﺎ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻤﺔ ‪ 1‬ﻤﺎﺩﺍﻡ ﺃﻨﻨﺎ ﻨﻌﻤل ﻓﻰ ﺒﻴﺌﺔ ‪ Single Instance‬ﻭﻟﻜﻥ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻟﺩﻯ ﻋﺩﺩ‬
‫ﻤﻥ ﺍل‪ Instances‬ﻓﺈﻥ ﻜل ‪ Instance‬ﺘﻜﻭﻥ ﻟﺩﻴﻬﺎ ﺭﻗﻡ ‪ Thread‬ﺨﺎﺹ ﺒﻬﺎ ‪ ،‬ﻟﻜﻥ ﻋﻤﻭﻤﹰﺎ ﺤﺘﻰ ﻭﺍﻨﺎ ﺍﻋﻤل‬
‫ﻋﻠﻰ ﺒﻴﺌﺔ ‪ Single Instance‬ﻻﺒﺩ ﻤﻥ ﻜﺘﺎﺒﺔ ‪ Thread 1‬ﻋﻨﺩ ﻋﻤل ‪Recover until Sequence‬‬

‫ﺍﻴﻀﹰﺎ ﺍﺫﻜﺭﻙ ﺒﻀﺭﻭﺭﺓ ﻋﻤل ‪ Backup‬ﺒﻌﺩ ﻓﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ ‪RESETLOGS‬‬

‫‪182‬‬
:UNTIL SCN
‫ ﻭﺇﻥ ﻜﺎﻥ ﻤﻥ‬System Change Number(SCN) ‫ ﺨﻴﺎﺭ ﺍﻹﺴﺘﺭﺠﺎﻉ ﺇﻟﻰ‬RMAN‫ﺘﻭﻓﺭ ﺍل‬
‫ ﻋﻨﺩ ﺤﺩﻭﺙ‬SCN‫ﻏﻴﺭ ﺍﻟﻤﻌﺘﺎﺩ ﺍﺴﺘﺨﺩﺍﻡ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﻨﺩ ﺍﻹﺴﺘﺭﺠﺎﻉ ﻷﻨﻪ ﻓﻰ ﺍﻟﻌﺎﺩﺓ ﺃﻨﺕ ﻻ ﺘﺩﺭﻯ ﻤﺎﻫﻭ ﺍل‬
.‫ﺍﻟﻤﺸﻜﻠﺔ‬

RMAN> RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
ALLOCATE CHANNEL D2 TYPE DISK;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SET UNTIL SCN 2621578;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}

183
‫‪:RESTORE CONTROL FILE‬‬
‫ﻟﻌﻤل ‪ RESTORE CONTROLFILE‬ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬
‫‪.NOMOUNT‬‬
‫ﻟﺫﺍ ﺇﺫﺍ ﻓﻘﺩﻨﺎ ﺠﻤﻴﻊ ﻤﻠﻔﺎﺕ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻤﺎ ﻓﻰ ﺫﻟﻙ ﻤﻠﻔﺎﺕ ﺍل‪ CONTROL FILE‬ﻓﺈﻥ ﺍﻟﺨﻁﻭﺓ‬
‫ﺍﻻﻭﻟﻰ ﻨﻘﻭﻡ ﺒﻌﻤل ‪ RESTORE CONTROLFILE‬ﻓﻰ ﺍﻟﻭﻀﻊ ‪ NOMOUNT‬ﻭﻤﻥ ﺜﻡ ﻨﻘﻭﻡ ﺒﻌﻤل‬
‫‪ RESTORE AND RECOVER DATABASE‬ﺒﻌﺩﻤﺎ ﻨﻔﺘﺢ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻓﻰ ﺍﻟﻭﻀﻊ‬
‫‪.MOUNT‬‬

‫;‪RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP‬‬

‫ﻟﺫﺍ ﺍﻨﺼﺤﻙ ﻗﺒل ﺍﻥ ﺘﻘﻭﻡ ﺒﻌﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺃﻥ ﺘﻘﻭﻡ ﺒﺘﻬﻴﺌﺔ ﺍل ‪CONTROLFILE‬‬
‫‪ AUTOBACKUP‬ﻭﺫﻟﻙ ﻜﺎﻻﺘﻰ‬
‫‪CONFIGURE CONTROLFILE AUTOBACKUP ON‬‬

‫‪184‬‬
:RESTORE SPFILE

RMAN> RESTORE SPFILE TO


‘C:\oracle\product\10.1.0\db_1\database\TEST.ORA
’ FROM AUTOBACKUP;

185
‫‪:RECOVERY CATALOG‬‬
‫ﺘﺤﺩﺜﻨﺎ ﻓﻰ ﺒﺩﺍﻴﺔ ﻫﺫﺍ ﺍﻟﻔﺼل ﻋﻥ ﺸﺊ ﻤﻥ ﺍل‪ Recovery Catalog‬ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻗﺎﻋﺩﺓ ﺒﻴﺎﻨﺎﺕ‬
‫ﻤﻨﻔﺼﻠﺔ ﻴﺘﻡ ﻓﻴﻬﺎ ﺘﺨﺯﻴﻥ ﻤﻌﻠﻭﻤﺎﺕ ﻭﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﺒﺎﻹﻀﺎﻓﺔ ﻋﻥ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻨﺴﺦ‬
‫ﺍﻹﺤﺘﻴﺎﻁﻴﺔ ﺒﻨﻭﻋﻴﻬﺎ )‪ (Backupset & Image Copy‬ﻭﺍﻴﻀﹰﺎ ﻴﺤﻔﻅ ﻓﻴﻬﺎ ﺍﻟﺘﻬﻴﺌﺔ ﺍﻻﻟﻴﺔ ﻟل‪، RMAN‬‬
‫ﻭﺫﻜﺭﻨﺎ ﺍﻴﻀﹰﺎ ﺃﻨﻪ ﻴﻤﻜﻥ ﺇﺩﺍﺭﺓ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﻗﻭﺍﻋﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ﻋﻥ ﻁﺭﻴﻕ ‪Recovery Catalog‬‬
‫ﻭﺍﺤﺩﺓ ‪ ،‬ﻤﻤﺎ ﻴﺴﻬل ﺇﺩﺍﺭﺓ ﻋﻤﻠﻴﺔ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﺍﻹﺴﺘﺭﺠﺎﻉ‪.‬‬

‫ﻭﻤﺎ ﻟﻡ ﻨﺫﻜﺭﻩ ﺃﻨﻪ ﻴﻤﻜﻥ ﺍﻹﺴﺘﻔﺎﺩﺓ ﻤﻥ ﺍل‪ Recovery Catalog‬ﻜﻤﺨﺯﻥ ﻟﺘﺨﺯﻴﻥ ﻤﺠﻤﻭﻋﺔ ﻤﻥ‬
‫ﺍل‪ Scripts‬ﺍﻟﺘﻰ ﻴﻤﻜﻥ ﺘﻨﻔﻴﺫﻫﺎ ﻓﻴﻤﺎ ﺒﻌﺩ ﻋﻠﻰ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ‪.‬‬

‫ﻭﺍل‪ Scrtipts‬ﻓﻰ ﺍﻟﺤﻘﻴﻘﺔ ﻫﻰ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻻﻭﺍﻤﺭ ﺍﻟﺘﻰ ﺘﻨﺠﺯ ﻤﻬﺎﻡ ﻤﻌﻴﻨﺔ ﻴﺘﻡ ﺍﻋﺩﺍﺩﻫﺎ ﻭﺘﺠﻬﻴﺯﻫﺎ‬
‫ﺒﺤﻴﺙ ﻴﺘﻡ ﺘﻨﻔﻴﺫﻫﺎ ﻓﻴﻤﺎ ﺒﻌﺩ ﻋﻥ ﺍﻟﺤﻭﺠﺔ ﺇﻟﻰ ﺫﻟﻙ‬

‫ﻭﻟﻨﻔﺘﺭﺽ ﺍﻻﻥ ﺍﻨﻨﺎ ﺘﺭﻴﺩ ﺘﺠﻬﻴﺯ ‪ Script‬ﺘﺴﻤﻰ ‪ TEST‬ﻤﻬﻤﺘﻪ ﺍﻟﻘﻴﺎﻡ ﺒﻌﻤل ﺍﺴﺘﻌﺭﺍﺽ ﻟﻬﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ‬
‫ﺍﻟﻤﺴﺘﻬﺩﻓﺔ ‪ ،‬ﻭﻻ ﺸﻙ ﺃﻥ ﺍﻻﻤﺭ ﺍﻟﺫﻯ ﻴﻘﻭﻡ ﺒﺈﺴﺘﻌﺭﺍﺽ ﻫﺫﻩ ﺍﻟﻬﻴﻜﻠﺔ ﻫﻭ ‪.REPORT SCHEMA‬‬

‫‪:CREATE SCRIPT‬‬

‫{‪RMAN> CREATE SCRIPT STR‬‬


‫;‪REPORT SCHEMA‬‬
‫}‬

‫ﻗﻤﻨﺎ ﺒﺈﻨﺸﺎﺀ ‪ Script‬ﺘﺴﻤﻰ ‪ STR‬ﺘﻘﻭﻡ ﺒﻌﺭﺽ ﻫﻴﻜﻠﺔ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺴﺘﻬﺩﻓﺔ‪.‬‬

‫‪186‬‬
:PRINT SCRIPT

RMAN> PRINT SCRIPT STR;

.‫ ﺍﻟﺘﻰ ﻗﻤﻨﺎ ﺒﻜﺘﺎﺒﺘﻬﺎ ﺴﺎﺒﻘﹰﺎ‬Script‫ﻫﺫﺍ ﺍﻻﻤﺭ ﻟﻌﺭﺽ ﺍل‬

:EXECUTE SCRIPT

RMAN> RUN {EXECUTE SCRIPT STR};

.‫ ﺍﻟﺘﻰ ﻗﻤﻨﺎ ﺒﺈﻨﺸﺎﺀﻫﺎ ﺴﺎﺒﻘﹰﺎ‬Script‫ﻫﺫﺍ ﺍﻻﻤﺭ ﻟﺘﻨﻔﻴﺫ ﺍل‬

187
:REPLACE SCRIPT

RMAN> REPLACE SCRIPT STR {


BACKUP DATAFILE 1;
}

.SCRIPT‫ﻫﻜﺫﺍ ﻗﻤﻨﺎ ﺒﺘﻌﺩﻴل ﻤﻀﻤﻭﻥ ﺍل‬

:DELETE SCRIPT

RMAN> DELETE SCRIPT STR;

.Recovery Catalog‫ ﻤﻥ ﺍل‬Script‫ﻫﺫﺍ ﺍﻻﻤﺭ ﻟﺤﺫﻑ ﺍل‬

188
‫‪:Backup of Recovery Catalog‬‬
‫ﻴﺠﺏ ﻋﻠﻰ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺤﺎﻓﻅﺔ ﻋﻠﻰ ﺍل‪ Recovery Catalog‬ﻜﺠﺯﺀ ﻤﻥ ﻋﻤﻠﻪ ‪،‬‬
‫ﻭﺫﻟﻙ ﻷﻫﻤﻴﺔ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﺤﺘﻭﻴﻬﺎ ﻭﺍﻟﺘﻰ ﺫﻜﺭﻨﺎﻫﺎ ﺴﺎﺒﻘﹰﺎ ‪ ،‬ﻟﺫﺍ ﻜﺎﻥ ﻋﻠﻰ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻘﻴﺎﻡ ﺒﻌﻤل‬
‫ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Recovery Catalog‬ﻭﺫﻟﻙ ﺒﺄﺤﺩ ﺍﻟﻁﺭﻕ ﺍﻻﺘﻴﺔ‪:‬‬
‫‪ -1‬ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟﺠﻤﻴﻊ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﺤﻭﻯ ﺍل‪.Recovery Catalog‬‬
‫‪ -2‬ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Tablespace‬ﺍﻟﺫﻯ ﻴﺤﻭﻯ ﺍل‪.Recovery Catalog‬‬
‫‪ -3‬ﻋﻤل ﻨﺴﺦ ﺇﺤﺘﻴﺎﻁﻰ ﻟل‪ Schema‬ﺍﻟﺘﻰ ﺘﺤﻭﻯ ﺍل‪.Recovery Catalog‬‬

‫ﺒﺎﻟﻁﺒﻊ ﺇﺫﺍ ﺤﺩﺜﺕ ﻤﺸﻜﻠﺔ ﻓﻰ ﺍل‪ Recovery Catalog‬ﻨﺴﺘﻁﻴﻊ ﻋﻤل ﺇﺴﺘﺭﺠﺎﻉ ﻟﻬﺎ ﻤﻥ ﻤﻠﻔﺎﺕ‬
‫ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ‪ ،‬ﻭﻫﺫﺍ ﺍﻻﻤﺭ ﻴﻌﺘﻤﺩ ﻋﻠﻰ ﻨﻭﻉ ﺍﻟﻨﺴﺦ ﺍﻹﺤﺘﻴﺎﻁﻰ ﻭﻜﺫﻟﻙ ﻋﻠﻰ ﻨﻭﻉ ﺍﻟﻤﺸﻜﻠﺔ ﺍﻟﺘﻰ ﺤﺩﺜﺕ‪.‬‬

‫‪189‬‬
ALTER
SYSTEM
SET
DB_REC

190

You might also like