بتاريخ: 22 مايو 200718 سنة comment_100404 بسم الله الرحمن الرحيم الإصدار الجديد 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 وهذه من عندي ، الداتا جارد. وسوف أقوم بشرح توضيحي مبسط عن كل ميزة وسنتناقش بها معاً هنا . تقديم بلاغ
بتاريخ: 23 مايو 200718 سنة comment_100425 السلام عليكم ورحمة اللهاستمر الأخ إبراهيم بخش ونحن معك . تقديم بلاغ
بتاريخ: 25 مايو 200718 سنة كاتب الموضوع comment_100529 الخاصية الأولى :خاصية Flashback Versions Queryوجدت لها شرحاً مميزاً بالمذكرة المرفقة :الباشاjamal_rrkkحياكم الله .. 10g.pdf تقديم بلاغ
بتاريخ: 25 مايو 200718 سنة كاتب الموضوع comment_100531 سأتبع بإسلوب شرحي وترجمتي من أسلوب شرح Arup Nanda وهو الكاتب الحقيقي لهذه المقالة "الملقب بمدير قاعدة البيانات للعام 2003 ". 2-Rollback Monitoring .هل انتهت عملية التراجع من مجموعة عمليات Transaction كبيرة ؟ كم يلزمنا من الوقت أكثر ؟ هذا السؤال هو ما يملأ يوميات مدير قواعد البيانات حيث يهمه دائماً إعطاء وقت دقيق وصحيح رداً على هذا السؤال . ولمعرفة الوقت بشكل دقيق بالإصدارات السابقة 9i وماقبلها كنا نسختدم الأمر التالي : 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 = <sid of the session doing the rollback>; الكل يعلم ان هذا المشهد كان موجوداً بالإصدارات السابقة قبل الإصدار 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 "---------------------------------------------------------------------------------------------------------------------------------------------------------انتهى . تقديم بلاغ
بتاريخ: 27 مايو 200718 سنة كاتب الموضوع comment_100659 سأكمل وأنا أحدث نفسي .. 3- Improved Tablespace Management . تم حل المشاكل التالية : تغيير الـ TABLESPACE الإفتراضي . TABLESPACE جديد SYSAUX . إعادة تسمية الـ TABLESPACES . ALTER DATABASE DEFAULT TABLESPACE <tsname>; طبعاً يجب أن تضع بحسبانك أي قاعدة بيانات تم إنشائها ضمنياً وعدم تحديد خاصية DEFAULT TABLESPACE عند القيام بإنشاء المستخدم فإنها ستتغير تلقائياً إلى المساحة الجديدة .أي أنه إذا عملت مستخدم USER1 ولم تحدد المساحة الإفتراضية وكانت وقتها مثلاً SYSTEM ومن ثم قمت بتطبيق التعليمة أعلاه فإنه إفتراضياً سيتم تغيير المساحة الإفتراضية المستخدم USER1 إلى <tsname> .لمعرفة المساحة الإفتراضية لقاعدة البيانات لديك قم بتنفيذ التعليمة التالية : SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE'; وسأقوم بشرح موضوع إعادة تسمية مساحة البيانات عما قريب . ولإعادة تسمية الـ Tablespace : Alter Tablespace <oldname> rename to <newname>; تقوم التعليمة أعلاه بإعادة تسمية 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 تقديم بلاغ
بتاريخ: 27 مايو 200718 سنة كاتب الموضوع comment_100709 4-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> CREATE OR REPLACE DIRECTORY dmpdir as 'd:\backup'; Directory created. · والآن نعطي صلاحية القراءة والكتابة بهذا المسار للمستخدم scott SQL> Grant read,write on directory dmpdir to scott; Grant succeeded . والآن سنقوم بتجربة الأداة الجديدة: 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 : C:\ impdp scott/tiger directory=dmpdir dumpfile=exp01.dmp job_name=em_import .. .. .. Job "SCOTT"."EM_IMPORT" successfully completed at 12:45:00 تقديم بلاغ
بتاريخ: 28 مايو 200718 سنة كاتب الموضوع comment_100743 حياك الله أخي العزيز عمر ومشرفنا الغالي .. سأكمل وأنا أحدث نفسي .. 5-Flashback Utility ..هناك سيناريو عمل ممكن ان يحدث "للأسف" ، حيث أن المستخدم يقوم بحذف جدول ما عن طريق الخطأ وربما يكون هذا المستخدم الـ DBA ! انت ..عن طريق الخطأ طبعاً .قدم الإصدار السابق من أوراكل 9i مفهوم Flashback Query لإسترجاع البيانات من نقطة زمن سابقة ولكنها لا تستطيع استرجاع عمليات DDL الخاصية الوحيدة التي ممكن إستخدامها سابقاً هي Tablespace Point-in-time recovery بقاعدة بيانات مختلفة ومن ثم إعادة إنشاء الجدول بهذه القاعدة بإستخدام exp/imp هذه الإجراءات تتطلب كما نعلم مجهودات جبارة من قبل DBA . إستخدام خاصية Flashback بالإصدار الجديد 10g سهلة كأنك تقوم بأي تنفيذذة DDL عادية . لدينا الجداول التالية بالمستخدم scott : SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE والآن حدث ان تصادم عدة تعليمات أثناء عملي وقمت بتنفيذ التعليمة التالية : SQL> drop table emp; Table dropped. والآن عند تنفيذ التعليمة الأولى : SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE BONUS TABLE SALGRADE TABLE BIN$KNU1XJxbTZeNfs6peBtTxQ==$0 TABLE حسناً ... الآن بالإصدار الجديد من SQL*Plus 10.1 يمكنك تنفيذ تعليمة بسيطة لعرض الجداول بحاوية المحذوفات .. SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- EMP BIN$KNU1XJxbTZeNfs6peBtTxQ==$0 TABLE 2007-05-21:09:35:45 طبعاً لاحظ المخرجات الإسم الحقيقي للجدول وإسمه بقائمة المحذوفات ونوع الكائن ووقت عملية الحذف والتاريخ . الآن سنقوم بعملية إسترجاع للجدول مع كافة بياناته .. فقط بتنفيذ التعليمة البسيطة التالية : Flashback table emp to before drop; Flashback complete. والآن نقوم بتنفيذ التعليمة التالية : SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected. نتوقف هنا ونعود بعد الفاصل لمتابعة أحداث إدارة حاوية المهملات .. تقديم بلاغ
بتاريخ: 30 مايو 200718 سنة كاتب الموضوع comment_100984 نعود لنكمل معكم هذه الدورة المصغرة والتي تعتبر 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; وسنعود لنكمل معكم حالة أخرى ممكن أن نواجهها بسلة المهملات . تقديم بلاغ
بتاريخ: 31 مايو 200718 سنة comment_101029 الله عليك شو هالروعة والأناقة والرقةجعله الله في ميزان حسناتك تقديم بلاغ
بتاريخ: 6 يونيو 200718 سنة comment_101638 الف شكر على الموضوع الرائع جداعجبني بشده طريقة القائك للموضوعوللامام دائما========================ياريت اقدر اتعرف عليك[email protected] تقديم بلاغ
بتاريخ: 7 يونيو 200718 سنة comment_101693 الاخ العزيز IGBSpeed الموضوع جميل جدا و ربنا يكرمك فعلا المعلومات اللي بتكتبها ممتازةو ارجو منك الاستمرار .... و احتسب الاجر عند اللهالف الف شكر ليكمحمد عادل تقديم بلاغ
بتاريخ: 7 يونيو 200718 سنة كاتب الموضوع comment_101720 لاحظ قوة ودقة عملية استرجاع الكائنات في الحالة التالية : 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; سنتوفق هنا ونعود بعد عقد من الزمن لشرح المميزات 15 المتبقية .. بالتوفيق للجميع ،،، وإلى الأمام . تقديم بلاغ
بتاريخ: 17 يونيو 200718 سنة كاتب الموضوع comment_102622 جزاك الله خيراً ولا تتأخر علينا إن شاء الله بس يكون هناك تفاعل ولو بسيط .. تقديم بلاغ
بتاريخ: 29 أغسطس 200718 سنة comment_108683 السلام عليكم ورحمة الله وبركاتهأخي العزيز لو اني قمت بحذف عمود من جدول وبعدين عملت commit هل يمكن استرجاعة مره ثانية نرجوا الرد جزاك الله عنا خيرا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.