الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

دمج بيانات قاعدتي البيانات مع بعض

Featured Replies

بتاريخ:

بسم الله الرحمن الرحيم


اخواني الاعزاء لدي قاعدتين بيانات الاولى في فرع 1 والثاني في فرع 2 ويتم ادخال البيانات في كل فرع مع العلم ان القاعدتين متطابقتين
في الجداول وفي كل شي


ما اريده هو معرفة كيف سيتم نقل بيانات الجداول من فرع 2 الى فراع 1 بحيث تكون كافة البيانات موجودة في فرع1 وبتالي تصبح البيانات
الموجودة في فرع 1 شاملة وكاملة .

مع العلم انه يتم الادخال باكتر من مستخدم في كلا الفرعين .



طالب عونكم .... لا تردوني

بتاريخ:
  • كاتب الموضوع

اخواني طالب عونكم ... لا تردوني

بتاريخ:

أخي العزيز
هل مثلا هذا الشغل صغير وتريد حل يكون ليس معقد
لانه يوجد حلول كثيرة ومعقدة ومكلفة
فإذا كنت تريد حل يكون بسيط ممكن أقترح عليك حل وإن شاء الله ينفع معك

بتاريخ:
  • كاتب الموضوع

اخي الكريم بارك الله بك , ما هي اقتراحاتك ...

بتاريخ:

هو فعلا اقتراح يعني لو العملية بسيطة وتريد حل يمشي الحال
واضح إن الشغل منفصل يعني كل سيرفر في مكان
على فرض إن القاعدة الاولى تسمى مثلا A والثانية B
وتريد أن تجعل A بها كل البيانات صح يعني A و B
هتعمل EXP عادي جدا للثانية B وهتاخد ال dmp file وهتفكه في الجهاز الاول الذي يحمل قاعدة البيانات A
وبعد كده هتستخدم جملة merge من بين الجداول التي تم عمل لها import وتضعها في الجداول الموجودة في قاعدة A
وبكده تم استيراد كل البيانات من القاعدة B إلى A
ويمكنك عمل BATCH FILE يقوم بكل هذه الاشياء في ثواني معدودة وثلا يمكنك وضع له زر في نموذج معين يغمل كل هذا
بسي لازم تعمل عمود في كل الجداول في كلا القاعدتين يوضح مثلا رقم الفرع كي يتم التمييز بين البيانات

ملاحظة
1- يكون لكل قاعدة اسم مختلف علشان لما تيجي تفك ال dmp file لايحدث مشكلة
2- تعطي صلاحيات للمستخدم الذي على القاعدة A على القاعدة B كي يستطيع عمل MERGE وأخذ البيانات




ده اقتراح وقابل للتعديل من قبل المتخصصين
ويارب أكون شرحت الموضوع كويس

تم تعديل بواسطة mustafagamiel

بتاريخ:

السلام عليكم

اعتقد ان افضل طريقة هي عمل Replication
او مزامنة ( وفيه بعض التعقيدات ولكنها ليست صعبة ) وهي تختلف من اصدار الى اصدار حسب قاعدة البيانات
عليك بالبحث وسأحاول ان اعطيك رؤوس اقلام عن الموضوع

يوجد نوعين الريبليكاشن
1-Simple
2-Advance
وساتكلم عن النوع الاول لانه اسهل بكثير من النوع الثاني الذي يحتوي على الكثير من التعقيدات وكذلك مشاكله من ناحية بطئ النقل للبيانات

النوع الاول وفيه يتم استخدام الربط بين قاعدتي بيانات مختلفتين بواسطة
database link
مثال على ذلك

CREATE DATABASE LINK orcl.US.ORACLE.COM@ORCL CONNECT TO SCOTT IDENTIFIED BY
TIGER USING 'ORCL';


وتعمل على ربط قاعدتي البيانات ببعضهما
ومن ثم عمل
Materialized view او ما يسمى بـ snapshot
وله نوعين النوع الاول:
LOG MATERIALIZED VIEW
ويتم عمله على الجدول البعيد لمعرفة البيانات التي يجب اخذها بعين الاعتبار ويعتمد على شيئين
اما
PRIMARY KEY
للجداول التي يوجد فيها برايمري كي
او
ROWID
للجداول التي لا تحتوي على بريمري كي
مثال على ذلك

CREATE  MATERIALIZED VIEW LOG ON EMP WITH[u] PRIMARY KEY [/u]INCLUDING NEW VALUES;



OR

CREATE  MATERIALIZED VIEW LOG ON EMP WITH[u] ROWID [/u]INCLUDING NEW VALUES;



النوع الثاني :
ونقوم بانشائه في الداتا بيز المحلية وفي كل مرة نريد تحديث البيانات نعمل له تحديث
مثال عليه

CREATE MATERIALIZED VIEW  EMP_RFR BUILD IMMEDIATE 
        REFRESH FAST WITH primary key 
        AS SELECT * FROM [email protected]@ORCL;


يتم تحديثه في كل مرة بواسطة عمل الامر التالي

dbms_mview.refresh('EMP_RFR');


ملحوظة : هناك عدة انواع لعمل التحديث سريع وكامل وخيار ثالث ياخذ ايآ منهما حسب الضرورة

السريع : ياخذ البيانات التي تم تعديلها او اضافتها فقط
الكامل : ياخذ جميع البيانات وهو بطبيعة الحال يكون ابطئ من النوع الاول

مثال على التحديث الكامل

dbms_mview.refresh('EMP_RFR','C');



حيث يقوم بعمل التحديثات الجديدة المعموله على الجدول البعيد وانزلها كفيو في قاعدة البيانات المحلية


بالنسبة لأمر الـ Merge

مدعوم في اصدارات اوراكل من فوق الــ
9i
اذا كنت تستخدم اوراكل
8i
لن تستطيع استخدام هذا الامر
مثال عليه

merge into tab1 d --------------- الجدول المراد ادخال البيانات فيه
using
 tab2 s on (s.prm_col = d.prm_col)
when     matched then update set d.col2= s.col2
when not matched then insert (prm_col,col2) values (s.prm_col, s.col2);




ارجو ان اكون وفقت في عمل لمحة سريعة عن الموضوع والباقي عليك قم بالبحث وستجد كل ما تريد ان شاء الله

تحياتي

بتاريخ:
  • كاتب الموضوع

اخواني الاعزاء بارك الله بكم , بس ما في شرح مفصل للموضوع اكتر يا اخوان والله الموضوع صعب علي يا ريت تساعدوني اكتر

بعمل على قاعدة بيانات 10 جي



بارك الله بكم

بتاريخ:

أخي العزيز المقنع 2005
كلام الاخ Transporter علميا أكثر ودي طرق بتستخدم لكن أعتقدم من وجود واحد فاهم كويس وهذا كان سؤالي لك في بداية المشاركات
ومشاركتي كانت عمل شيء يدوي وبسيط ويمشي الحال ولايحتاج لخبرة عالية
فماذا ستختار كي يتم الشرح لك

بتاريخ:

I think you need to use Advanced replication or materialized views replication

بتاريخ:
  • كاتب الموضوع

يا اخوان يا ريت شرح تفصيلي لاي طريقة المهم الامور تحل عندي ويفضل materialized views replication .

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.