| Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا | |
|
|
كاتب الموضوع | رسالة |
---|
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:20 pm | |
| بسم الله الرحمن الرحيم
الإصدار الجديد 10g ماذا تعرف عنه ؟
ولماذا التحويل إلى 10g ؟
وماهي اهم المزايا والخواص الجديدة ؟
للإستزادة حول الموضوع إتبع الرابط .
من أهم المزايا الجديدة:
- Flashback Version Query .
- Rollback Monitoring
- Tablespace Management
- Oracle Data Pump
- Flashback Table
- Automatic Workload Repository
- SQL *Plus rel 10.1
- Automatic Storage Management
- RMAN
- Auditing
- Wait Interface
- Materialized Views
- Enterprise Manager 10g
- Virtual Private Database
- Automatic Segment Management
- Transportable Tablespaces
- Automatic Shared Memory Management
- ADDM and SQL Tuning Advisor
- Scheduler
- وهذه من عندي ، الداتا جارد.
وسوف أقوم بشرح توضيحي مبسط عن كل ميزة وسنتناقش بها معاً هنا .
| |
|
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: رد: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:21 pm | |
| 1- Flashback Version Query .
وجدت ان الأخ سامح قد قام بسبق علمي بهذا الموضوع وشرح هذه الميزة وستجد الشرح بهذا الرابط . شرح FlashBack Version Query | |
|
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: رد: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:28 pm | |
| سأتبع بإسلوب شرحي وترجمتي من أسلوب شرح Arup Nanda وهو الكاتب الحقيقي لهذه المقالة "الملقب بمدير قاعدة البيانات للعام 2003 ". 2-Rollback Monitoring .
هل انتهت عملية التراجع من مجموعة عمليات Transaction كبيرة ؟ كم يلزمنا من الوقت أكثر ؟
هذا السؤال هو ما يملأ يوميات مدير قواعد البيانات حيث يهمه دائماً إعطاء وقت دقيق وصحيح رداً على هذا السؤال .
ولمعرفة الوقت بشكل دقيق بالإصدارات السابقة 9i وماقبلها كنا نسختدم الأمر التالي : SQL SELECT USED_UREC FROM V$TRANSACTION;
وكنا نسترجع من هذا الأمر عدد Undo Records المستخدمة من قبل التعليمة بذلك الوقت . وبعدها بفترة معينة نقوم بتنفيذ نفس الأمر وطبعاً ستتغير القيمة لأن العملية قائمة ومن ثم نقوم بعمل عملية حسابية تتألف من جمع وطرح وقسمة مع الوقت و .. إلخ لحساب الناتج.
طبعاً هناك حقل بالمشهد V$TRANSACTION وهو start_time ويبين لنا الوقت الفعلي للبدء بعملية الـ transaction . وليس طبعاً وقت تنفيذ أمر الإسترجاع rollback .
بالإصدار الجديد 10g حدثت شركة أوراكل هذه العملية وأصبحت عملية أكثر حيث عند تنفيذ أي عملية Rollback فإن هذا الحدث يسجل بالمشهد V$SESSION_LONGOPS ، والذي يظهر لنا عمليات التراجع عن التعليمات والتي استغرقت وقتاً طويلاً "أكثر من 6 ثواني " .
وعندها تستطيع إستخدام التعليمة التالية لمعرفة الوقت المحدد لإنتهاء هذه العملية بالضبط :
كود select time_remaining from v$session_longops where sid = ;
الكل يعلم ان هذا المشهد كان موجوداً بالإصدارات السابقة قبل الإصدار 10g وكان عمله إظهار التعليمات التي تتم حالياً ، ولكن عملية إظهار تعليمات التراجع عن التعليمات الكبيرة وتسجيلها كحدث إلى أن تنتهي لم تكن متوفرة حتى الإصدار الجديد 10g .
إذا إستخدمنا دالة تقوم بعرض الأعمدة كصفوف للجدول سنجد ان المخرجات كالتالي :
كود SQL> set serveroutput on size 999999 SQL> exec print_table('select * from v$session_longops where sid = 9') SID : 9 SERIAL# : 68 OPNAME : Transaction Rollback TARGET : TARGET_DESC : xid:0x000e.01c.00000067 SOFAR : 10234 TOTALWORK : 20554 UNITS : Blocks START_TIME : 07-dec-2003 21:20:07 LAST_UPDATE_TIME : 07-dec-2003 21:21:24 TIME_REMAINING : 77 ELAPSED_SECONDS : 77 CONTEXT : 0 MESSAGE : Transaction Rollback: xid:0x000e.01c.00000067 : 10234 out of 20554 Blocks done USERNAME : SYS SQL_ADDRESS : 00000003B719ED08 SQL_HASH_VALUE : 1430203031 SQL_ID : 306w9c5amyanr QCSID : 0
لاحظ : الحقل OPNAME يظهر لنا نوع العملية التي نستعرضها وهي بالمثال : rollback لتعليمة معينة . والحقل time_remaining يظهر لنا الوقت المتبقي للعملية بالضبط والمقدر بالثواني . والحقل ELAPSED_SECONDS يظهر لنا الوقت المستغرق للعملية منذ بدايتها . والحقل SOFAR العدد الكمي للبيانات التي استرجعت من التعليمة الأساسية والتي بها عدد TOTALWORK كمية من الوحدة المحددة بالحقل UNITS .
حيث أن لاحظ أن الحقل QCSID يحتوي على SID لخادم الإستعلام ، وهذه المعلومات مفيدة لعملية " Parallel Instance Recovery "
--------------------------------------------------------------------------------------------------------------------------------------------------------- انتهى .
| |
|
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| |
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: رد: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:30 pm | |
| ولإعادة تسمية الـ Tablespace :
كود Alter Tablespace rename to ;
تقوم التعليمة أعلاه بإعادة تسمية tablespace بشكل كامل حيث تتغير تبعية الكائنات لمساحة بيانات ذات الإسم القديم إلى مساحة البيانات نفسها ذو الإسم الجديد . * ملحوظة : حتى عند إعادة تسمية undo tablespace ستتغير قيمة المتغير الخاصة بالـ undo بملف المتغيرات : كود SQL> select value from v$spparameter where name = 'undo_tablespace';
VALUE -------- UNDOTBS1
SQL> alter tablespace undotbs1 rename to undotbs;
Tablespace altered.
SQL> select value from v$spparameter where name = 'undo_tablespace';
VALUE -------- UNDOTBS
| |
|
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: رد: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:36 pm | |
| -Data Pump Utility حتى الآن تعتبر خاصية الـ export/import من الحلول الأولى بعملية نقل البيانات بين أكثر من بيئة مع أقل جهد ، مع العلم أن هناك تداعيات حول البطء الحاصل بعملية الـimport وذلك طبعاً لأنه ومن المعروف أن الخاصية import هي عبارة عن إضافة (insert into) لكل سجل وجدول من جديد لذلك تجد عملية البطء الحاصلة Oracle Data Pump هي تطوير وتحسين لأداة export/import العادية حيث تم استخدام دوال APIs جديدة تغني عن العمليات الاعتيادية لكل سجل (select,insert..) حيث أصبحت هذه العملية تتم على مجموعة من السجلات بشكل سريع تصل إلى 5 أضعاف سرعة الأداة السابقة في عملية imp ومن 5 إلى 15 ضعف في عملية الـexp .
دعونا نجرب هذه الأداة الجديدة :
- · نقوم بعمل directory جديدة مثلاً : d:\backup
SQL SQL> CREATE OR REPLACE DIRECTORY dmpdir as 'd:\backup'; Directory created.
- · والآن نعطي صلاحية القراءة والكتابة بهذا المسار للمستخدم scott
SQL SQL> Grant read,write on directory dmpdir to scott; Grant succeeded .
- والآن سنقوم بتجربة الأداة الجديدة:
SQL C:\ expdp scott/tiger directory=dmpdir dumpfile=exp01.dmp job_name=em_export .. .. .. Job "SCOTT"."EM_EXPORT" successfully completed at 12:15:45
لاحظ انه حتى لو قمت بإيقاف عملية الـexport عن طريق الضغط على المفتاح ctrl+c فإنه سيتم وذلك لأن عملية الاستيراد والتصدير تعتبر كمهمة مجدولة .
لاحظ أنه بإمكانك استخدام الخاصية network_link واستخدام اسم Database Link وذلك في حال عمل import إلى قاعدة بيانات أخرى يمكن الاتصال بها ولديك الصلاحيات اللازمة .
جميل جداً ... الآن بهذه الخاصية بإمكانك التخلص من عبء كبير جداً خاصة في حال طلب منك عمل تحويل جدول كبير مثلاً بحجم 2 جيجا أو أكثر .
* صيغة الاستيراد impdp : SQL C:\ impdp scott/tiger directory=dmpdir dumpfile=exp01.dmp job_name=em_import .. .. .. Job "SCOTT"."EM_IMPORT" successfully completed at 12:45:00
| |
|
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| |
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: رد: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:37 pm | |
| نعود لنكمل معكم هذه الدورة المصغرة والتي تعتبر Upgrade إلى الإصدار 10g ..
تكلمة إدارة Recycle Bin :
حسناً إذا قمت بحذف جدول أصبح بحاوية المهملات .. صحيح .
الآن إذا أردنا ان نقوم بتفريغ حاوية المهملات بحالتنا هذه نقوم بتنفيذ الأمر التالي :
كود Purge Table Emp;
أو إستخدام إسم الجدول بسلة المهملات :
كود Purge table BIN$KNU1XJxbTZeNfs6peBtTxQ==$0;
طبعاً هذه العملية تقوم بحذف الكائن Emp وجميع الكائنات المتعلقة به كالفهارس مثلاً ، فرضاً اننا أردنا أن نخلي مساحة الفهرس فقط من مساحة البيانات لدينا نقوم بتنفيذ الأمر التالي :
كود purge index pk_emp;
حسناً ... ماذا لو أردنا تفريغ سلة المهملات لإحدى مساحات البيانات لأسباب تتعلق بالمساحة مثلاً ،، نقوم بتنفيذ التعليمة التالية :
كود Purge tablespace users;
توقف! ماذا لو لم تكن تريد أن تخلي جميع الكائنات بسلة المهملات من جميع المستخدمين وتريد فقط أن تخلي المساحة الفارغة من مستخدم معين ...
تقوم عندها بتنفيذ الأمر التالي :
كود Purge tablespace users user scott;
وإذا أراد احد المستخدمين بتفرغة سلة المهملات لديه فقط يقوم بعمل التالي : كود Purge Recyclebin;
وأنت كمدير قواعد بيانات تستطيع ان تفرغ جميع حاويات المهملات من جميع المستخدمين ومساحات البيانات بتنفيذ الأمر التالي :
كود Purge DBA_RECYCLEBIN;
وسنعود لنكمل معكم حالة أخرى ممكن أن نواجهها بسلة المهملات .
| |
|
| |
bigman عضو مميز جدا
المساهمات : 49 تاريخ التسجيل : 29/07/2007 العمر : 44
| موضوع: رد: Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا الإثنين أغسطس 20, 2007 4:38 pm | |
| لاحظ قوة ودقة عملية استرجاع الكائنات في الحالة التالية :
كود SQL>CREATE TABLE TEST (ID NUMBER); Table created.
SQL>INSERT INTO TEST VALUES (1); 1 row created.
SQL> COMMIT; Commit complete.
SQL> DROP TABLE TEST; Table dropped.
SQL> SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ -------------------
TEST BIN$5h9l9Dx6RGit9OV0RU/GMw==$0 TABLE 2007-05-22:14:06:07
SQL> CREATE TABLE TEST (ID NUMBER); Table created.
SQL> INSERT INTO TEST VALUES (2); 1 row created.
SQL> COMMIT; Commit complete.
SQL> DROP TABLE TEST; Table dropped.
SQL> SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TEST BIN$gSQDckMhT36n7gQNNgt3rQ==$0 TABLE 2007-05-22:14:06:39 TEST BIN$5h9l9Dx6RGit9OV0RU/GMw==$0 TABLE 2007-05-22:14:06:07
لاحظ الآن عملية الإسترجاع إذا إستخدمت إسم الجدول test سيقوم بإسترجاع آخر جدول قمت بحذفه بنفس الإسم . أي ذو القيمة 2 .
حسناً الآن نود ان نسترجع الجدول الثاني ولكن لحظة نريد تغيير إسمه طبعاً .. لاحظ التعليمة التالية :
كود FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
كن على علم ودراية تامة بأن عملية الإسترجاع عندما تتم لجدول ما فإنه يقوم بإسترجاعه بإسم الجدول وأما عملية الإسترجاع للكائنات التابعة للجدول كالفهارس مثلاً و الـ Triggers فإن أسمائها ستكون كأسماء تعريفها بسلة المهملات .
لاحظ بعد تنفيذ التعليمة التالية لمعرفة أسماء الكائنات التابعة بسلة المهملات ..
كود SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE FROM USER_RECYCLEBIN WHERE BASE_OBJECT = (SELECT BASE_OBJECT FROM USER_RECYCLEBIN WHERE ORIGINAL_NAME = 'EMP') AND ORIGINAL_NAME != 'EMP';
لاحظ المخرجات كود OBJECT_NAME ORIGINAL_NAME TYPE ------------------------------ -------------------------------- ---------- BIN$MzY2Y6s8SgyTipG+Wi5Kaw==$0 TRIG_GOEMP TRIGGER BIN$Ps0kbGUOQT2rX9cjKvft3Q==$2 PK_EMP INDEX
لإعادة تسمية الفهرس أو الـ TRIGGER بعد إسترجاع الجدول EMP نقوم بتنفيذ التعليمة التالية : كود SQL> ALTER INDEX "BIN$Ps0kbGUOQT2rX9cjKvft3Q==$2" RENAME TO PK_EMP; Index altered.
ولإعادة تسمية الـ Trigger : كود SQL> ALTER TRIGGER "BIN$MzY2Y6s8SgyTipG+Wi5Kaw==$0" RENAME TO TRIG_GOEMP; Trigger altered.
طبعاً هناك خاصية مميزة بهذه التعليمة "FLASHBACK" ، حيث بإمكانك إرجاع الجدول إلى نقطة من الزمن سابقة SCN SYSTEM CHANGE NUMBER
بإستخدام التعليمة التالية : كود FLASHBACK TABLE EMP TO SCN 2202666520;
| |
|
| |
| Oracle Database 10g ؟ ماذا تعرف عنه ؟, اهم المزايا والخواص ا | |
|