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

Oracle Database 10g المزايا الجديدة .. ماذا تعرف عنها؟

Featured Replies

بتاريخ:


بسم الله الرحمن الرحيم

الإصدار الجديد 10g ماذا تعرف عنه ؟

ولماذا التحويل إلى 10g ؟

وماهي اهم المزايا والخواص الجديدة ؟

للإستزادة حول الموضوع إتبع الرابط .

من أهم المزايا الجديدة:

  1. Flashback Version Query .
  2. Rollback Monitoring
  3. Tablespace Management
  4. Oracle Data Pump
  5. Flashback Table
  6. Automatic Workload Repository
  7. SQL *Plus rel 10.1
  8. Automatic Storage Management
  9. RMAN
  10. Auditing
  11. Wait Interface
  12. Materialized Views
  13. Enterprise Manager 10g
  14. Virtual Private Database
  15. Automatic Segment Management
  16. Transportable Tablespaces
  17. Automatic Shared Memory Management
  18. ADDM and SQL Tuning Advisor
  19. Scheduler
  20. وهذه من عندي ، الداتا جارد.

وسوف أقوم بشرح توضيحي مبسط عن كل ميزة وسنتناقش بها معاً هنا .

بتاريخ:

السلام عليكم ورحمة الله

استمر الأخ إبراهيم بخش ونحن معك .

بتاريخ:

السلام عليكم ورحمة الله وبركاته

جزاك الله كل خير

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

الخاصية الأولى :

خاصية Flashback Versions Query
وجدت لها شرحاً مميزاً بالمذكرة المرفقة :


الباشا
jamal_rrkk

حياكم الله ..

10g.pdf

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


سأتبع بإسلوب شرحي وترجمتي من أسلوب شرح 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 "

---------------------------------------------------------------------------------------------------------------------------------------------------------
انتهى .

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


سأكمل وأنا أحدث نفسي :( ..

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



بتاريخ:

الى الامام

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


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


بتاريخ:

جزاك الله خيراً

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

حياك الله أخي العزيز عمر ومشرفنا الغالي ..


سأكمل وأنا أحدث نفسي :( ..
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.



نتوقف هنا ونعود بعد الفاصل لمتابعة أحداث إدارة حاوية المهملات ..

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

نعود لنكمل معكم هذه الدورة المصغرة والتي تعتبر 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;




وسنعود لنكمل معكم حالة أخرى ممكن أن نواجهها بسلة المهملات .

بتاريخ:

الله عليك شو هالروعة والأناقة والرقة
جعله الله في ميزان حسناتك

بتاريخ:

بارك الله فيك والى الأمام

بتاريخ:

الف شكر على الموضوع الرائع جدا
عجبني بشده طريقة القائك للموضوع
وللامام دائما
========================
ياريت اقدر اتعرف عليك
[email protected]

بتاريخ:

الاخ العزيز IGBSpeed الموضوع جميل جدا و ربنا يكرمك
فعلا المعلومات اللي بتكتبها ممتازة
و ارجو منك الاستمرار .... و احتسب الاجر عند الله


الف الف شكر ليك

محمد عادل

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

لاحظ قوة ودقة عملية استرجاع الكائنات في الحالة التالية :

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 المتبقية ..

بالتوفيق للجميع ،،،
وإلى الأمام .

بتاريخ:

جزاك الله خير على هذه المواضيع

بتاريخ:

جزاك الله خيراً ولا تتأخر علينا

بتاريخ:
  • كاتب الموضوع
جزاك الله خيراً ولا تتأخر علينا


إن شاء الله بس يكون هناك تفاعل ولو بسيط ..

:(
  • بعد 2 شهور...
بتاريخ:

السلام عليكم ورحمة الله وبركاته
أخي العزيز
لو اني قمت بحذف عمود من جدول وبعدين عملت commit هل يمكن استرجاعة مره ثانية
نرجوا الرد
جزاك الله عنا خيرا

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

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

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

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

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

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.