بتاريخ: 28 مايو 200520 سنة comment_37584 السلام عليكم تحياتى الجميع لدى كمية ضخمه من الجداول بقاعدة بياناتى موزعه على كم مستخدم وطبعاً كما تعلمون فان مبرمج تطبيقات اوراكل هو الذى يحدد الtablespace الخاصبكل جدول واذا لم يحدد فسينتمى الجدول اذا تم عمل export ثم import له الى ال system tablespace وهذا من شأنه ان يخلق الكثير جدا من المشاكل لمشرف البيانات بالذات فى عمليات الbackup ل user datafile والتى ستكون دون فائدهعموما وجدت طريقه لتغيير ال tablespace الخاص بكل جدول الى user tablespace والجدول online دون التاثير على البيانات alter table table_name move tablespace users; لكن تبقى المشكله انه لايمكن تنفيذ الامر لكل الجداول الموجوده فرضا 400 جدول ؟!هل لدى احدكم الحل فى كيفية المعالجه ؟ تقديم بلاغ
بتاريخ: 29 مايو 200520 سنة comment_37621 السلام عليكممن البداية يجب أن تحدد Default Tablespace الخاص بكل مستخدم عند انشائه create user X identified by Y DEAFUALT tablespace AAA temporary tablespace temp; وبالتالي إذا عمل اليوزر أي تيبل فسيتم انشائه في ديفولت تيبلسبيس الخاص به.بالنسبة لحل مشكلتك فعليك بما يلي: 1- login as system. 2- revoke unlimited tablespace from X; 3- alter user X defualt tablespace AAA; 4- do your import. 5- grant unlimited tablespace to X; إذا قمت بما سبق باستثناء imp من داخل Enterprise Manager Console فهو أسهل بكثير.وخبرنا ماذا يحصل معكولا تنسانا من صالح دعائكأخوك أبو عمر تقديم بلاغ
بتاريخ: 29 مايو 200520 سنة comment_37623 السلام عليكميوجد حل آخر للمشكلة بدون ما تعمل imp وهو عن طريق تنفيذ الكود التالي:ولكن يجب إعادة بناء indexes CREATE OR REPLACE PROCEDURE modify_tablespace IS CURSOR c IS SELECT * FROM user_objects WHERE object_type = 'TABLE'; new_TBS varchar2(50); BEGIN new_TBS := 'USERS'; --- إسم تيبل سبيس الجديد FOR c1 IN c LOOP EXECUTE IMMEDIATE 'alter table ' || c1.object_name || ' move tablespace ' || new_TBS|| ' storage( initial 1k next 1k minextent 1 pctincrease 0 )'; END LOOP; END; / تم تعديل 27 يونيو 200520 سنة بواسطة Naji_Ali تقديم بلاغ
بتاريخ: 29 مايو 200520 سنة كاتب الموضوع comment_37651 سلامالف شكر اخى Naji_Ali طبعا يقع عاتق الموضوع على مبرمج التطبيقات خلال انشاءه للجداول مشكوور على حلولك الرائعه لكن لم تذكر شى بخصوص ملفات ال Index ستظل موجوده وغير مستخدمه وفى نفس الوقت تاخذ حيز من ال tablespaceالف شكر تقديم بلاغ
بتاريخ: 2 يونيو 200520 سنة كاتب الموضوع comment_38087 سلامبعد تنفيذ الاسكريبت حدثت مشكله وهى ان ال index الموجوده مسبقا تسببت بمشكله انه لايمكن اجراء اى عمليات على الجداول !!!!حيث ان الindex هى تقلل من زمن الوصول للجداول , قمت بعمل الاتى ALTER INDEX "user"."table" REBUILDمن الoem يمكن حدد ال index واختر Recognizeسيقوم ببناء ال index للجدول من جديد تقديم بلاغ
بتاريخ: 9 يونيو 200520 سنة comment_38820 الظاهر إني وصلت متأخر..... بس علشان ما تتعب حالك وهدول 400 جدول مش مزحه spool temp select 'ALTER TABLE '||table_name|| ' MOVE TABLESPACE your_tablespace_name ; ' FROM USER_TABLES ; spool off ثم @temp.lst وسوف يتم نقل جميع التيبلات التي يمتلكها اليوزر الذي تعمل بهولإعادة بناء الindexes spool temp2 SELECT 'ALTER INDEX '||index_name|| ' REBUILD TABLESPACE your_tablespace_name ; ' FROM USER_INDEXES ; spool off ثم @temp2.lst وتكون قد انحلت المشكلةوبالتوفيق تقديم بلاغ
بتاريخ: 27 يونيو 200520 سنة comment_40227 السلام عليكموشكرا للإخوان بخصوص طريقة إعادة بناء indexesوجدت الرابط التالي moving tables across tablespaces وهم يتحدثون حول نفس الموضوع مع تفصيل كبير ولنسخ 8.0 و8i و ...http://asktom.oracle.com/pls/ask/f?p=4950:...RIA:47812348053أخوكم أبو عمر تقديم بلاغ
بتاريخ: 21 يوليو 200520 سنة comment_42099 ملحوظة:طريقة تحويل الـTables عن طريق الأمر ALTER TABLE table_name MOVE TS ts_name على ما أعتقد أنها لن تنجح في حال وجود أعمدة من النوع CLOB أو BLOB أو LONG أو LONG RAW . تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.