Orcale Tutorial Content
Getting Started - البدء مع إدارة قواعد البيانات
Oracle Architectural Components - مكونات قاعدة البيانات أوركل
Installing Oracle Database - تثبيت الأوركل
Creating and Configuring Database - إنشاء قاعدة البيانات
Controlling The Database -التحكم في قاعدة البيانات
Administrating Users - إدارة المستخدمين
Database Security & Monitoring - تأمين ومراقبة قاعدة البيانات
Oracle Net Services & Database Link & Metrlized Viewِ
Undo Management & Flashback Technology
Managing Shared Servers
Using Globalization Support
Logical Backup & Recovery
Physical Backup & Recovery
Recovery Manager (RMAN)
Managing Resources
Automating Tasks with the Scheduler
Dealing with Locking
Diagnostic Sources
Dealing With Database Corruption
Managing & Monitoring Memory
Performance Tunning
Performance Tunning
Invalid Objects
ﻤﻥ ﺃﻫﻡ ﺍﻷﺸﻴﺎﺀ ﺍﻟﺘﻲ ﺘﺅﺜﺭ ﻋﻠﻲ ﺍﻷﺩﺍﺀ ﻫﻲ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﻐﻴﺭ ﺼﺎﻟﺤﺔ، ﻤﺜل (Procedures & Indexes& Views Materialized & Views & Triggers & Packages & Functions)
ﻭﺍﻟﺤﻘﻴﻘﺔ ﺃﻥ ﻫﺫﻩ ﺍﻟﻜﺎﺌﻨﺎﺕ ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﻏﻴﺭ ﺼﺎﻟﺤﺔ ﻟﺤﻅﺔ ﺇﻨﺸﺎﺌﻬﺎ ﺃﻭ ﺒﻌﺩ ﺇﻨﺸﺎﺌﻬﺎ؛ ﻭﺫﻟﻙ ﻟﻌﺩﺓ ﺃﺴﺒﺎﺏ ﻤﻨﻬﺎ ﺍﻷﺨﻁﺎﺀ ﺍﻟﺒﺭﻤﺠﻴﺔ ﻋﻨﺩ ﻜﺘﺎﺒﺔ ﻫﺫﻩ Procedural Objects ﻓﻔﻲ ﻤﺜل
ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ﺍﻟﻜﺎﺌﻥ ﻭﻟﻜﻥ ﻴﻜﻭﻥ ﻫﺫﺍ ﺍﻟﻜﺎﺌﻥ (INVALID) ﻭﺴﻴﻜﻭﻥ ﻏﻴﺭ ﺼﺎﻟﺢ ﻟﻼﺴﺘﺨﺩﺍﻡ، ﺃﻭ ﻋﻨﺩﻤﺎ ﻴﺘﻡ ﺘﻐﻴﻴﺭ ﻓﻲ ﺍلData Objects ﺍﻟﻤﺭﺘﺒﻁﺔ ﺒﻬﺫﺍ ﺍﻟﻜﺎﺌﻥ، ﻓﺎﻟﻜﺜﻴﺭ ﻤﻥ ﺍﻟﻜﺎﺌﻨﺎﺕ
ﺍﻟﺘﻲ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻫﺎ ﻤﺭﺘﺒﻁﺔ ﺒﺒﻌﺽ ﺍلData Objects ﻤﺜل ﺍﻟﺠﺩﺍﻭل، ﻓﻠﺤﻅﺔ ﻋﻤل Compile ﻟلProcedural Objects ﻴﺘﻡ ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺍﻟﺠﺩﺍﻭل ﺃﻭ ﺍل Data Objects ﺍﻟﻤﺭﺘﺒﻁﺔ ﺒﻬﺫﻩ ﺍﻟﻜﺎﺌﻥ
ﻟﻠﺘﺄﻜﺩ ﻤﻥ ﺼﺤﺘﻬﻡ ﻭﻤﻥ ﺃﻥ ﺍﻻﻤﺘﻴﺎﺯﺍﺕ ﻤﻼﺌﻤﺔ، ﻓﻌل ﺴﺒﻴل ﺍﻟﻤﺜﺎل ﻟﻭ ﺃﺸﺎﺭ ﺍﻟﻜﻭﺩ ﻟﻌﻤﻭﺩ ﻤﻌﻴﻥ ﻓﻲ ﺠﺩﻭل ﻓﻬﺫﺍ ﺍﻟﻌﻤﻭﺩ ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﻤﻭﺠﻭﺩﺍﹰ ﺃﻭ ﺴﻨﻔﺸل ﻓﻲ ﻋﻤل Compile ﻟﻬﺫﺍ ﺍﻟﻜﻭﺩ،
ﻓﻠﻭ ﺘﻡ ﺘﻐﻴﻴﺭ ﺃﻱ Data Objects ﻤﺭﺘﺒﻁﺔ ﺏProcedural Object ﺴﺘﺘﻡ ﺍﻹﺸﺎﺭﺓ ﻟﻬﺫﺍ ﺍلObject Procedural ﻋﻠﻲ ﺍﻨﻪ (INVALID).
ﻨﻔﺱ ﻫﺫﻩ ﺍﻟﺴﻴﻨﺎﺭﻴﻭﻫﺎﺕ ﻴﻤﻜﻥ ﺃﻥ ﺘﺤﺩﺙ ﻟلViews، ﻓﻘﺩ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍلViews ﺩﻭﻥ ﻤﺸﺎﻜل ﻭﻟﻜﻥ ﻋﻨﺩﻤﺎ ﻴﺘﻡ ﺘﻐﻴﻴﺭ ﺍﻟﺠﺩﺍﻭل ﺍﻟﻤﺭﺘﺒﻁﺔ ﺒﻬﺫﻩ ﺍلViews ﺘﺼﺒﺢ ﻫﺫﻩ ﺍلViews ﻏﻴﺭ
ﺼﺎﻟﺤﺔ (INVALID).
ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺘﻤﻴﻴﺯ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﻐﻴﺭ ﺼﺎﻟﺤﺔ (INVALID) ﻋﻥ ﻁﺭﻴﻕ DBA_OBJECTS View ﺤﻴﺙ ﻴﺤﺘﻭﻱ ﻫﺫﺍ ﺍلView ﻋﻠﻲ ﻋﻤﻭﺩ ﻴﺴﻤﻲ STATUS ﻴﻭﻀﺢ ﻫل ﻫﺫﺍ ﺍﻟﻜﺎﺌﻥ
ﺼﺎﻟﺤ ﺃﻡ ﻏﻴﺭ ﺼﺎﻟﺢ (VALID or INVALID).
select object_name from dba_objects where status='INVALID' and object_type='PROCEDURE' |
ﻓﻲ ﺍﻻﺴﺘﻌﻼﻡ ﺃﻋﻼﻩ ﻗﻤﻨﺎ ﺒﺎﺴﺘﻌﺭﺍﺽ ﺠﻤﻴﻊ ﺍلProcedures ﺍﻟﻐﻴﺭ ﺼﺎﻟﺤﺔ ﻓﻲ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ. ﺍﻟﺴﺅﺍل ﺍﻵﻥ ﺍﻟﺫﻱ ﻴﺠﺏ ﺃﻥ ﻴﻁﺭﺤﻪ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻟﻤﺎﺫﺍ ﻫﺫﻩ ﺍلProcedures ﻏﻴﺭ
ﺼﺎﻟﺤﺔ، ﻋﻤﻭﻤﺎﹰ ﺇﺫﺍ ﻜﺎﻨﺕ ﻫﻨﺎﻙ ﺒﻌﺽ ﺍلProcedural Objects ﻻ ﻨﺤﺘﺎﺠﻬﺎ ﻴﻤﻜﻥ ﺃﻥ ﻨﺤﺫﻓﻬﺎ ﺍﻵﻥ، ﻭﻟﻜﻥ ﻜﺨﻁﻭﺓ ﺃﻭﻟﻲ ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻘﻴﺎﻡ ﺒﻌﻤل Compile
ﻟلInvalid Object ﺭﺒﻤﺎ ﺘﺘﻡ ﺍﻟﻌﻤﻠﻴﺔ ﺒﻨﺠﺎﺡ ﻭﺭﺒﻤﺎ ﺘﻔﺸل ﻭﺤﻴﻨﻬﺎ ﺴﻭﻑ ﻴﺘﻡ ﺍﺴﺘﻘﺒﺎل ﺭﺴﺎﺌل ﺍﻟﺨﻁﺄ ﻟﻜﻥ ﻋﻤﻭﻤﹰﺎ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ الجيد ﻴﻘﻭﻡ ﺒﻌﻼﺝ ﻤﺸﻜﻠﺔ ﺍلInvalid Objects ﻗﺒل
ﺃﻥ ﻴﻼﺤﻅﻪ ﺍﻟﻤﺴﺘﺨﺩﻤﻭﻥ.
ﺘﺼﻠﻴﺢ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﻐﻴﺭ ﺼﺎﻟﺤﺔ:
ﻟﻌﻤل Compile ﻟلObjects Procedural ﻨﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ﺍﻟﻜﻭﺩ ﺍﻟﺘﺎﻟﻲ:
ALTER PROCEDURAL_TYPE PROCEDURAL_NMAE COMPILE
alter trigger repcatlogtrig compile; |
ﻭﻫﻜﺫﺍ ﺠﻤﻴﻊ ﺃﻨﻭﺍﻉ ﺍلProcedural Objects.
ﻭﺃﻴﻀﺎﹰ ﻴﺴﺘﻁﻴﻊ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻋﻤل Compile ﻟلViews.
alter view tuser compile; |
ﻟﻘﺩ ﻨﺠﺤﺕ ﻋﻤﻠﻴﺔ ﺍلCompile ﺇﺫﺍﹰ ﻟﻴﺴﺕ ﻫﻨﺎﻙ ﻤﺸﻜﻠﺔ ﺍﻵﻥ، ﺃﻤﺎ ﺇﺫﺍ ﻓﺸﻠﺕ ﺍﻟﻌﻤﻠﻴﺔ ﻓﻴﺠﺏ ﺍﻟﺒﺤﺙ ﻋﻥ ﺍﻟﺴﺒﺏ ﻓﻠﻭ ﻓﺸﻠﺕ ﻋﻤﻠﻴﺔ ﺍلCompile ﻹﺠﺭﺍﺀ ﻤﻌﻴﻥ ﻨﺴﺘﻁﻴﻊ
ﺍﻟﺒﺤﺙ ﻓﻲ ﺴﺒﺏ ﺍﻟﻤﺸﻜﻠﺔ ﻋﻥ ﻁﺭﻴﻕ ﻜﺘﺎﺒﺔ ﺍﻵﻤﺭ SHOW ERRORS، ﻟﻜﻥ ﻴﺠﺏ ﺍﻟﺘﻨﺒﻴﻪ ﺇﻟﻲ ﺃﻥ ﺍﻷﻤﺭ SHOW ERROR ﻻ ﻴﻌﻤل ﻤﻊ ﺍلViews.
ﻟﻜﻥ ﻤﺎﺫﺍ ﻟﻭ ﻜﺎﻥ ﻟﺩﻴﻙ ﺍﻟﻤﺌﺎﺕ ﺃﻭ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﻐﻴﺭ ﺍﻟﺼﺎﻟﺤﺔ ﻭﺍﻟﺘﻲ ﺘﺤﺘﺎﺝ ﻟﻌﻤل Compile ﻫل ﻴﻘﻭﻡ ﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﻌﻤل Compile ﻟﻬﺫﺍ ﺍﻟﻌﺩﻴﺩ ﺍﻟﻜﺒﻴﺭ ﻤﻥ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺒﺼﻭﺭﺓ
ﻓﺭﺩﻴﺔ ﻻ ﺸﻙ ﺃﻥ ﺍﻷﻤﺭ ﺴﻴﻜﻭﻥ ﺸﺎﻕ ﺠﺩﺍﹰ، ﻓﻔﻲ ﻤﺜل ﻫﺫﺍ ﺍﻟﺴﻴﻨﺎﺭﻴﻭ ﺍﻷﻓﻀل ﻟﻤﺩﻴﺭ ﻗﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﺴﺘﺨﺩﺍﻡ Script ﺠﺎﻫﺯﺓ ﺘﻘﻭﻡ ﺒﻌﻤل Compile ﻟﺠﻤﻴﻊ ﺍﻟﻜﺎﺌﻨﺎﺕ ﺍﻟﻐﻴﺭ ﺼﺎﻟﺤﺔ،
ﻟﻜﻥ ﻴﺠﺏ ﺃﻥ ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﻫﺫﻩ ﺍلScript ﺒﻌﺩ ﺍﻻﺘﺼﺎل ﺒﻘﺎﻋﺩﺓ ﺍﻟﺒﻴﺎﻨﺎﺕ AS SYSDBA.
ﺘﻭﺠﺩ ﺍلScript ﻓﻲ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺘﺎﻟﻲ:
%oracle_home%\rdbms\admin\utlrp$
ﺒﺎﻟﻁﺒﻊ ﻗﺩ ﺘﻨﺠﺢ ﺃﻭ ﻗﺩ ﺘﻔﺸل ﻫﺫﻩ ﺍلScript ﻓﻲ ﻋﻤل Compile ﻟلInvalid Objects، ﻋﻤﻭﻤﹰﺎ ﻟﻭ ﻓﺸﻠﺕ ﺍﻟﻌﻤﻠﻴﺔ ﻓﻴﺠﺏ ﺍﻟﺒﺤﺙ ﻋﻥ ﺍﻷﺴﺒﺎﺏ ﻭﻟﻜﻥ ﺒﺸﻜل ﻤﻨﻔﺭﺩ ﻟﻬﺫﻩ ﺍلObjects.
-------------------------------------------------------------------