You are on page 1of 2

‫لقد قمت بعمل ‪ DATALINK‬بين قاعدتي بيانات ‪..

‬‬
‫ومن ثم قمت بعمل ‪ MATERIALIZED VIEW‬بالعبارة التالية ‪-:‬‬

‫‪CREATE MATERIALIZED VIEW V2 BUILD IMMEDIATE REFRESH‬‬


‫‪COMPLETE‬‬
‫‪AS SELECT * FROM TAB@LINK_NAME‬‬

‫ولقد تم هذا العمل بنجاح ‪ ..‬ولكن عند إضافة بيانات جديدة في الجدول االصلي ‪ ,‬اليتم استرجاعها في الـ‬
‫‪MATERIALIZED VIEW‬‬

‫وعند تعديل العبارة السابقة بالعبار التالية‬


‫‪:-‬‬
‫‪CREATE MATERIALIZED VIEW V2 BUILD IMMEDIATE REFRESH FAST ON‬‬
‫‪COMMIT COMPLETE‬‬
‫‪AS SELECT * FROM TAB@LINK_NAME‬‬

‫يظهر الخطأ التالي ‪ORA-23413‬‬

‫اوال‪ : ‬البد من عمل ‪  log‬لل‪ MATERIALIZED VIEW ‬قبل انشائها‪  ‬لحل مشكلة الرسالة مثال‪:‬‬

‫;‪CREATE MATERIALIZED VIEW LOG ON TAB‬‬

‫ثانيا‪: ‬‬

‫اذا اردت ان تجلب البيانات المعدلة فقط او المضافة حديثا فقط‪  ‬عند الطلب (‪ )DEMAND‬او عند الحاجه‬
‫لتحديثها‪  ‬بشكل يدوي استخدم الكود التالي‪:‬‬

‫‪CREATE MATERIALIZED VIEW V2 ‬‬


‫‪   REFRESH FAST‬‬
‫‪   ON DEMAND‬‬
‫‪   AS‬‬
‫* ‪   SELECT‬‬
‫‪   FROM‬‬
‫‪   TAB T‬‬

‫ولتشغيلها‪: ‬‬

‫;)'‪ EXECUTE DBMS_MVIEW.REFRESH('V2‬‬

‫ثالثا‪ ‬‬

‫اذا اردت ان تجلب البيانات المعدلة فقط او المضافة حديثا فقط بشكل الي كل فترة زمنية معينة‪  ‬استخدم الكود‬
‫التالي‪:‬‬

‫(في هذا المثال يتم تحديث البيانات في‪ MATERIALIZED VIEW ‬كل عشر ثواني بشكل اوتوماتيكي)‬

‫‪-- HERE WE CREATE A JOB THIS JOB OUTO START AFTER 10 SECOND , SO‬‬
‫'‪THE NEXT REFRESH WILL BE AFTER 10 s‬‬
CREATE MATERIALIZED VIEW MV_TMP
   REFRESH FAST
   START WITH (SYSDATE) NEXT (SYSDATE+10/86400) 
   AS
   SELECT * FROM TAB T;

‫ لمعرفة تفاصيل العمليات‬MATERIALIZED VIEW  ‫ الخاص ب‬log ‫ لالستعالم عن جدول ال‬: ‫رابعا‬


‫عليها‬
 --WE CAN CHICK THE LOG FRON THIS SELECT STATMENT

SELECT * FROM USER_MVIEW_LOGS; -- RETURN MV LOG TABLES


   -- THEN

SELECT * FROM MLOG$TAB;  -- FAST TYPE IS  DEPEND ON THIS TABEL


FOR DATA REFRESHING

You might also like