أسماء محمد بتاريخ: 18 فبراير 2013 تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 (معدل) السلام عليكم اخوانيبداية انا عاوزة اشرح تكوين الداتابيز عنديعشان تتضح المشكلة او الموضوعانا باستخدم APPLICATION USERSومش DATABASE USERSكل سنة عندي يوزر علي الداتابيز وده اللي عليه كل الشغليعني لو من سنة 2000عندي 13 يوزر فالداتابيزلان كم البيانات مش صغير فاضطرينا نفصل كل سنة عن الاخري فبمجرد ما تخلص السنةبنعمل يوزر جديد وبنرحل فيه الارصدة الافتتاحية للمخازن والحساباتلو انا عاوزة اغير برنامجي من APPLICATION USERSالي DATABASE USERSكيف يتم ذلك مع العلم اني لما قرات الطريقةوجدت مثلا ان لما اعمل يوزر جديد لمستخدم علي الداتابيز طبعا بيكون فاضي مافيش فيه اي شيئلازم اعمل SYNONYMSللجداول فلو افترضنا فالسنة الحالية عندي جدول EMPوجيت اعمل له SYNONYMSهاختار السنة 2013الجدول EMPاسم SYNONYMS=EMPطيب عاوزة ادي كمان الصلاحية علي 2012هاختار السنة 2012الجدول EMPاسم SYNONYMS=EMPطبع هيديلي الايرور دهORA-00955: name is already used by an existing objectوفي نفس الحالة انا مش هاقدر اخلية مختلف لان اصلا الشاشة واحدة مش باعمل لكل سنة شاشة مختلفة يا ريت يكون الموضوع واضح شكرا تم تعديل 18 فبراير 2013 بواسطة أسماء محمد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 18 فبراير 2013 تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 السلام عليكماعملي Public Synonym وسيتم عملها مره واحده فقط: Create Or Replace Public Synonym <Synonym_Name> For <Object_Name> اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسماء محمد بتاريخ: 18 فبراير 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 السلام عليكمشكرا لحضرتك علي الردولكن انا مش فاهمة حضرتكلاني عاملة PUBLICاصلا ما بينفعش يتكرر الاسم باختصار مشكلتي تانيعاوزة شاشة الموظفيناقدر افتحها من خلال السنتينايه هيه الطريقة اللي ادي ليوزر س الصلاحية عليهمارجو كتابة الاكواد.............................................................السنة الاولي اسم اليوزر Y12السنة الثانية Y13واسم الجدولEMPوالمستخدم الجديد اللي عاوزه اديله صلاحياتUSRشكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 18 فبراير 2013 تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 السلام عليكماذا كان المطلوب اظهار حركات سنة 2012 يجيب ان يكون الجدول على البلوك كالتالي: Y12.Empواذا كان المطلوب اظهار حركات سنة 2013 يجيب ان يكون الجدول على البلوك كالتالي: Y13.Empولكن اذا تم عمل Public Synonym على الجدول يكفي ان تكتبي اسم الجدول فقط على البلوك في الشاشة وسيظهر جميع البيانات.بالاضافة لعمل Grant على الجدول مثل Select, Inset....إلخ.وأنصح بأن يتم دمجهم في يوزر واحد وزياده حجم الـ Table space. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسماء محمد بتاريخ: 18 فبراير 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 (معدل) السلام عليكماذا كان المطلوب اظهار حركات سنة 2012 يجيب ان يكون الجدول على البلوك كالتالي: Y12.Empواذا كان المطلوب اظهار حركات سنة 2013 يجيب ان يكون الجدول على البلوك كالتالي: Y13.Empولكن اذا تم عمل Public Synonym على الجدول يكفي ان تكتبي اسم الجدول فقط على البلوك في الشاشة وسيظهر جميع البيانات.بالاضافة لعمل Grant على الجدول مثل Select, Inset....إلخ.وأنصح بأن يتم دمجهم في يوزر واحد وزياده حجم الـ Table space. شاكرة حضرتك جدا علي سرعة الرد ولكناولا انا باعتقد ان هيكون فيه صعوبة اني اخلي بيانات 13 سنة علي يوزر واحد كمان لازم اغير ال strucureبتاع الجداول كلها واضيف حقل السنة yearلانه اصلا مش فال key يعني من غير كده هيكون فيه duplicateوكتير حاجات هتتغير شاشات وعلاقات وتقارير وحكاية كبيرة ثانيا انا عاملة شاشة واحد اسمها شاشة الموظفين والداتابلوك تابل اسمه empيبقي لو دخل المستخدم علي 2013 هيجيب بيانات 2013ولو دخل 2012 او اي سنة هيجيب بياناتها او بالاحرى بيانات جدول الempفي الي سنة وده المطلوب يبقي مش مفروض اني اسجل اسم اليوزر مع اسم الجدول فالداتابلوكوكمان ده هيكون استاتيكحضرتك لما بتيجي تعمل Public Synonymاعتقد انك لازم تحدد اولا علي اي يوزر يعني فحالتي علي اي سنةوبعدين علي اي جدولولو عملته مرة مش هتقدر تعمله علي السنين التانية بنفس الاسماسفة للتطويلولكن الموضوع ده شغلني مع اني شغالة ك application usersكويس ولكن حبيت اشارك اراء الاخوةشكرا تم تعديل 18 فبراير 2013 بواسطة أسماء محمد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 18 فبراير 2013 تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 اوك لكي أوضح لك كلامي:نفرض انه لديك User A و User B.يجب إنشاء Synonyms وانتي بداخل User A ونفس السكريبت نفذيه وانتي بداخل User B: Select 'create synonym '||Table_Name||' for a.'||Table_Name||';' From User_Tables; بعد العملية السابقة يجب عمل Grant: For X In (Select * From User_Tables) Loop Execute Immediate 'GRANT ALL ON A.' || X.Table_Name || ' TO B'; End Loop; بعد تنفيذ الكود السابق كل صلاحيات الموجوده على User A صارت موجوده على User B.بالتوفيق. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسماء محمد بتاريخ: 18 فبراير 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 18 فبراير 2013 اوك لكي أوضح لك كلامي:نفرض انه لديك User A و User B.يجب إنشاء Synonyms وانتي بداخل User A ونفس السكريبت نفذيه وانتي بداخل User B:Select 'create synonym '||Table_Name||' for a.'||Table_Name||';' From User_Tables; بعد العملية السابقة يجب عمل Grant: For X In (Select * From User_Tables) Loop Execute Immediate 'GRANT ALL ON A.' || X.Table_Name || ' TO B'; End Loop; بعد تنفيذ الكود السابق كل صلاحيات الموجوده على User A صارت موجوده على User B.بالتوفيق. شاكرة جدا استاذنا الكريم وجاري التجربة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.