الانتقال إلى المحتوى
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.

نقل كل الجداول ببياناتها الى tablespace اخر

Featured Replies

بتاريخ:

السلام عليكم
تحياتى الجميع
لدى كمية ضخمه من الجداول بقاعدة بياناتى موزعه على كم مستخدم
وطبعاً كما تعلمون فان مبرمج تطبيقات اوراكل هو الذى يحدد الtablespace الخاص
بكل جدول واذا لم يحدد فسينتمى الجدول اذا تم عمل export ثم import له الى ال system tablespace وهذا من شأنه ان يخلق الكثير جدا من المشاكل لمشرف البيانات بالذات فى عمليات الbackup ل user datafile والتى ستكون دون فائده
عموما وجدت طريقه لتغيير ال tablespace الخاص بكل جدول الى user tablespace والجدول online دون التاثير على البيانات



alter table table_name move tablespace users;



:)

لكن تبقى المشكله انه لايمكن تنفيذ الامر لكل الجداول الموجوده فرضا 400 جدول ؟!

هل لدى احدكم الحل فى كيفية المعالجه ؟
بتاريخ:

السلام عليكم

من البداية يجب أن تحدد 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 فهو أسهل بكثير.

وخبرنا ماذا يحصل معك
ولا تنسانا من صالح دعائك
أخوك أبو عمر

بتاريخ:

السلام عليكم

يوجد حل آخر للمشكلة بدون ما تعمل 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;
/

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

بتاريخ:

شكرا جزيلا لكم ... الموضوع نفعني جدا

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

سلام

الف شكر اخى Naji_Ali
طبعا يقع عاتق الموضوع على مبرمج التطبيقات خلال انشاءه للجداول
مشكوور على حلولك الرائعه
لكن لم تذكر شى بخصوص ملفات ال Index ستظل موجوده وغير مستخدمه وفى نفس الوقت تاخذ حيز من ال tablespace

الف شكر

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

سلام

بعد تنفيذ الاسكريبت حدثت مشكله وهى ان ال index الموجوده مسبقا تسببت بمشكله
انه لايمكن اجراء اى عمليات على الجداول !!!!
حيث ان الindex هى تقلل من زمن الوصول للجداول , قمت بعمل الاتى
ALTER INDEX "user"."table"
REBUILD
من الoem يمكن حدد ال index واختر Recognize

سيقوم ببناء ال index للجدول من جديد

بتاريخ:

الظاهر إني وصلت متأخر..... بس علشان ما تتعب حالك وهدول 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



وتكون قد انحلت المشكلة
وبالتوفيق

  • بعد 3 أسابيع...
بتاريخ:

السلام عليكم

وشكرا للإخوان بخصوص طريقة إعادة بناء indexes

وجدت الرابط التالي moving tables across tablespaces وهم يتحدثون حول نفس الموضوع مع تفصيل كبير ولنسخ 8.0 و8i و ...
http://asktom.oracle.com/pls/ask/f?p=4950:...RIA:47812348053

أخوكم أبو عمر

  • بعد 4 أسابيع...
بتاريخ:

ملحوظة:

طريقة تحويل الـTables عن طريق الأمر ALTER TABLE table_name MOVE TS ts_name
على ما أعتقد أنها لن تنجح في حال وجود أعمدة من النوع CLOB أو BLOB أو LONG أو LONG RAW .

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

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

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

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

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

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.