بتاريخ: 18 فبراير 201313 سنة comment_232593 السلام عليكم اخوانيبداية انا عاوزة اشرح تكوين الداتابيز عنديعشان تتضح المشكلة او الموضوعانا باستخدم 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 فبراير 201313 سنة بواسطة أسماء محمد تقديم بلاغ
بتاريخ: 18 فبراير 201313 سنة comment_232596 السلام عليكماعملي Public Synonym وسيتم عملها مره واحده فقط: Create Or Replace Public Synonym <Synonym_Name> For <Object_Name> تقديم بلاغ
بتاريخ: 18 فبراير 201313 سنة كاتب الموضوع comment_232598 السلام عليكمشكرا لحضرتك علي الردولكن انا مش فاهمة حضرتكلاني عاملة PUBLICاصلا ما بينفعش يتكرر الاسم باختصار مشكلتي تانيعاوزة شاشة الموظفيناقدر افتحها من خلال السنتينايه هيه الطريقة اللي ادي ليوزر س الصلاحية عليهمارجو كتابة الاكواد.............................................................السنة الاولي اسم اليوزر Y12السنة الثانية Y13واسم الجدولEMPوالمستخدم الجديد اللي عاوزه اديله صلاحياتUSRشكرا تقديم بلاغ
بتاريخ: 18 فبراير 201313 سنة comment_232600 السلام عليكماذا كان المطلوب اظهار حركات سنة 2012 يجيب ان يكون الجدول على البلوك كالتالي: Y12.Empواذا كان المطلوب اظهار حركات سنة 2013 يجيب ان يكون الجدول على البلوك كالتالي: Y13.Empولكن اذا تم عمل Public Synonym على الجدول يكفي ان تكتبي اسم الجدول فقط على البلوك في الشاشة وسيظهر جميع البيانات.بالاضافة لعمل Grant على الجدول مثل Select, Inset....إلخ.وأنصح بأن يتم دمجهم في يوزر واحد وزياده حجم الـ Table space. تقديم بلاغ
بتاريخ: 18 فبراير 201313 سنة كاتب الموضوع comment_232602 السلام عليكماذا كان المطلوب اظهار حركات سنة 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 فبراير 201313 سنة بواسطة أسماء محمد تقديم بلاغ
بتاريخ: 18 فبراير 201313 سنة comment_232612 اوك لكي أوضح لك كلامي:نفرض انه لديك 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 فبراير 201313 سنة كاتب الموضوع comment_232617 اوك لكي أوضح لك كلامي:نفرض انه لديك 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.بالتوفيق. شاكرة جدا استاذنا الكريم وجاري التجربة تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.