بتاريخ: 11 مايو 200619 سنة comment_68931 يوجد بطئ فى الدتاتابيس قمت بعمل الاتى SQL> set heading offSQL> select 'Current SHARED_POOL_SIZE value is ' || value from v$parameter where name = 'shared_pool_size';Current SHARED_POOL_SIZE value is 114741555SQL> set heading onSQL> select sum(gets) "totl_gets", sum(getmisses) "totl_get_misses", 2 sum(getmisses)/sum(gets) * 100 "gethitratio" 3 from v$rowcache;totl_gets totl_get_misses gethitratio--------- --------------- ----------- 26362 10825 41.062894هل محتاج انى اعمل increase the SHARED_POOL_SIZE------ هل محتاج اعمل Tuning The Data Buffer Cache SQL> set heading onSQL> column value format 999,999,999,999SQL> select name, value from v$sysstat where 2 name in ('db block gets', 'consistent gets', 'physical reads');NAME VALUE---------------------------------------------------------------- ----------------db block gets 694,860consistent gets 1,800,541physical reads 15,035SQL> select 1 - (phy.value / (cur.value + con.value)) "Cache Hit Ratio" 2 from v$sysstat cur, v$sysstat con, v$sysstat phy 3 where cur.name = 'db block gets' 4 and con.name = 'consistent gets' 5 and phy.name = 'physical reads';Cache Hit Ratio--------------- .99397502--------------هل محتاج انى اعمل Tuning The Redo Log BufferSQL> select 'Current LOG_BUFFER size is ' || value from v$parameter where name = 'log_buffer';Current LOG_BUFFER size is 32768SQL> set heading onSQL> set feedback onSQL> select sid, event, state from v$session_wait 2 where event = 'log buffer space';no rows selected تقديم بلاغ
بتاريخ: 11 مايو 200619 سنة comment_68939 أخي العزيزموصوع ال Tuning موضوع كبير جدا وهناك 100 إحتمال للبطىء عير الحجم لل SGA ولكن سأبدا معك بال Memory وبالتحديد إمكانيه تصليص الحجم وليس الزيادةنفذ التالي لكي تعرف ما الذي تستطيع تقليص حجمه SELECT f.pool, sgasize/1024 "Allocated (KB)", bytes/1024 "Free (KB)", round(bytes/sgasize*100, 2) "Free %" FROM (SELECT pool , sum(bytes) sgasize FROM v$sgastat group by pool) s, sys.v_$sgastat f WHERE s.pool = f.pool AND f.name = 'free memory'; الآن يجب أن نعرف أي الأجزاء بحاجة لزيادة بالحجمأولا ال Shared Poolويهمنا به أولا ال Code نسبة ال parse إي التحليل لجمل ال codeنسبة ال execution اي التنفيذهل يحصل له reload أي إعادة قراءه ووضع بالذاكرهنفذ التالي لكي تعرف SELECT DECODE(namespace , 'SQL AREA', 'SQL Statements', 'TABLE/PROCEDURE', 'PL-SQL Procedures and Functions', 'BODY' , 'PL-SQL Package Body', 'TRIGGER', 'PL-SQL Triggers' ) "Name Space" , gethitratio*100 "Parse Hit Ratio %", pinhitratio*100 "Execution Hit Ratio %", reloads, invalidations FROM V$LIBRARYCACHE WHERE namespace in ('SQL AREA', 'TABLE/PROCEDURE', 'BODY', 'TRIGGER'); علما أن Parse Hit Ratio % يجب أن يكون 90% فأكثروال Execution Hit Ratio % نفس الشيوال reloads منخفض قدر الإمكانومازلنا بالshared pool وبما يتعلق بالكود أيضاولكن بنسبة ما يحدث له إعادة تحليل إي ReParsing وهذه العمله مكلفه جدا على ال CPU SELECT (Sum(reloads)/sum(pins))*100 "Library Cache ReParsing Ratio%" FROM V$LIBRARYCACHE ; هنا تنصح اوراكل بأن تكون النسبه أقل من 1%ومازلنا بال shared pool ولكن الأن بما يتعلق بال Data Dictionaryوهي البيانات التي تقرء من ال Dictionary من ال system tablespaceولأن هذة البيانات تستخدم بكثره فيجب أن يستوعبها ال shared pool بدون تكرار قراأتها من ال Disk SELECT (1-(SUM(getmisses)/SUM(gets)))*100 "Data Dictionary Hit Ratio %" FROM V$ROWCACHE ; وتنصح أوراكل أن نكون النسبه هنا 85% فأكثرولكن لكي لا تحتار نفذ الكود التالي لكي يعطيك أفضل مساحة لل Shared Poolولكن كلما كانت ال DB شغاله لوت أطول ومنذ فترة طويله وحصل عليها الكثير من العمليات كلما كانت النتائج مضمونه DECLARE v_total_plsql_mem NUMBER := 0; v_total_sql_mem NUMBER := 0; v_total_sharable_mem NUMBER := 0; BEGIN SELECT sum(sharable_mem) INTO v_total_plsql_mem FROM V$DB_OBJECT_CACHE; SELECT sum(sharable_mem) INTO v_total_sql_mem FROM V$SQLAREA WHERE executions > 10; v_total_sharable_mem := v_total_plsql_mem + v_total_sql_mem; DBMS_OUTPUT.PUT_LINE ('Estimated required Shared Pool size is :'|| to_char(v_total_sharable_mem/1024/1024 , 'fm9,999,999,999,999')||' MB '); END; / نفذه وإدعيلي تقديم بلاغ
بتاريخ: 11 مايو 200619 سنة comment_68940 ثانيا وأيضا بال Memory ولكن بال Buffer Cacheوهو الجزء المسأول عن خزن ال Tables , Indexes and Rollback Data SELECT (1-((physical.value-direct.value-lobs.value)/logical.value))*100 "Buffer Cache Hit Ratio%" FROM v$sysstat physical, v$sysstat direct, v$sysstat lobs, v$sysstat logical WHERE physical.name = 'physical reads' AND direct.name = 'physical reads direct' AND lobs.name = 'physical reads direct (lob)' AND logical.name = 'session logical reads' ; وتنصح اوراكل بأن تكون النسبه هنا 85% فما فوق تم تعديل 11 مايو 200619 سنة بواسطة maher_atieh تقديم بلاغ
بتاريخ: 11 مايو 200619 سنة comment_68941 أما عن ال Redo log Bufferفهناك طريقة أفضل لمعرفة ال Waitوهي ال Redo log Buffer Retry Ratio SELECT (retries.value / entries.value)*100 "Redo log Buffer Retry Ratio%" FROM v$sysstat retries, v$sysstat entries WHERE retries.name = 'redo buffer allocation retries' AND entries.name = 'redo entries'; فإذا كلنت القيمة 1% أو أكثر كبر ال Redo Log Buffer تقديم بلاغ
بتاريخ: 11 مايو 200619 سنة comment_68942 وهناك جزء بال Memory هو ال Sort Area وهنا تتم عملية ال Sort للبيانات التي عمل عليها Order by و group by وغيرهولأنا نعلم أنا عمليات ال Sort عندما تحدث داخل ال Temporary Tablespaceأي على ال HardDisk مكلفة وبطيئه جدافإن أوراكل تنصح بأن تتم هذة العمليات داخل ال Memory بنسبة 95% فأكثر SELECT (mem.value/(disk.value + mem.value ))*100 "In-memory Sort Ratio%" FROM v$sysstat mem, v$sysstat disk WHERE mem.name = 'sorts (memory)' AND disk.name = 'sorts (disk)' ; وهذه المساحة يمكن التحكم بها ك التالي [left]alter system set sort_area_size = 999999999;[/left] وهذا ليس كل شيء ولكن ما إستطعت الآن خدمتك به لأن الموضوع أطول مما تتخيلوأن جاهز لأي إستفسار محدد بهذا الموضوعوعذرا إن قصرناDBA. Maher Atieh تم تعديل 11 مايو 200619 سنة بواسطة maher_atieh تقديم بلاغ
بتاريخ: 12 مايو 200619 سنة comment_69019 مشاركة جميلة أخي ماهر ومرحبا بعودتك الى المنتدى ....تحياتي تقديم بلاغ
بتاريخ: 12 مايو 200619 سنة comment_69034 مرسي ع التعقيب .. محمدالظاهر إنك شفقت على إنو صاحب الموضوع ماكلف نفسو يردبس إنشاء الله حدا يستفيد من الي كتبتووهذا كفايه تقديم بلاغ
بتاريخ: 13 مايو 200619 سنة كاتب الموضوع comment_69068 شكرا جدا اخى الكريم maher_atieh اولا احب اشكرا جدا على ردك ربنا يكرمك انا واللة مستعجل على الموضوع دة جدا جدا وانا لم ادخل على النت الا اليوم وياريت انت تتابع معى انا سوف انفذ كل هذة الاوامر وسوف ارد عليك بالنتائجوتانى مرة اشكر وياريت ماتتوقف تقديم بلاغ
بتاريخ: 17 مايو 200619 سنة كاتب الموضوع comment_69512 اخى maherهذة هى البيانات الى جبتها بعد عمل الsql ياريت ترد على وتفسر لى كل حالة وتكمل جميلك وتقولى اية المطلوب الان على فكرة الاروكل 8i[/code]SQL> SELECT f.pool, 2 sgasize/1024 "Allocated (KB)", 3 bytes/1024 "Free (KB)", 4 round(bytes/sgasize*100, 2) "Free %" 5 FROM (SELECT pool , sum(bytes) sgasize FROM v$sgastat group by pool) s, 6 sys.v_$sgastat f 7 WHERE s.pool = f.pool AND f.name = 'free memory'; POOL Allocated (KB) Free (KB) Free %----------- -------------- --------- ---------java pool 20480 15640 76.37large pool 600 600 100shared pool 130325.65 89550.613 68.71 SQL> SELECT DECODE(namespace , 2 'SQL AREA', 'SQL Statements', 3 'TABLE/PROCEDURE', 'PL-SQL Procedures and Functions', 4 'BODY' , 'PL-SQL Package Body', 5 'TRIGGER', 'PL-SQL Triggers' 6 ) "Name Space" , 7 gethitratio*100 "Parse Hit Ratio %", 8 pinhitratio*100 "Execution Hit Ratio %", 9 reloads, 10 invalidations 11 FROM V$LIBRARYCACHE WHERE namespace in ('SQL AREA', 'TABLE/PROCEDURE', 'BODY', 'TRIGG Name Space Parse Hit Ratio % Execution Hit Ratio % RELOADS INVALIDA ------------------------------- ----------------- --------------------- --------- -------- SQL Statements 99.885588 99.982341 106 PL-SQL Procedures and Functions 93.844253 99.979697 0 PL-SQL Package Body 99.053168 99.052478 0 PL-SQL Triggers 99.32559 99.32559 0 SQL> SELECT (Sum(reloads)/sum(pins))*100 "Library Cache ReParsing Ratio%" 2 FROM V$LIBRARYCACHE ;Library Cache ReParsing Ratio%------------------------------ .00055848 SQL> SELECT (Sum(reloads)/sum(pins))*100 "Library Cache ReParsing Ratio%" 2 FROM V$LIBRARYCACHE; Library Cache ReParsing Ratio% ------------------------------ .00055848 SQL> SELECT (1-(SUM(getmisses)/SUM(gets)))*100 "Data Dictionary Hit Ratio %" 2 FROM V$ROWCACHE; Data Dictionary Hit Ratio % --------------------------- 99.242184 SQL> DECLARE 2 v_total_plsql_mem NUMBER := 0; 3 v_total_sql_mem NUMBER := 0; 4 v_total_sharable_mem NUMBER := 0; 5 BEGIN SELECT sum(sharable_mem) INTO v_total_plsql_mem FROM V$DB_OBJECT_CACHE; SELECT le_mem) INTO v_total_sql_mem FROM V$SQLAREA WHERE executions > 10; 6 7 v_total_sharable_mem := v_total_plsql_mem + v_total_sql_mem; 8 9 DBMS_OUTPUT.PUT_LINE 10 ('Estimated required Shared Pool size is :'|| 11 to_char(v_total_sharable_mem/1024/1024 , 'fm9,999,999,999,999')||' MB '); 12 END; 13 / PL/SQL procedure successfully completed.لم يعطى اى نتيجة SQL> SELECT (1-((physical.value-direct.value-lobs.value)/logical.value))*100 2 "Buffer Cache Hit Ratio%" 3 FROM v$sysstat physical, 4 v$sysstat direct, 5 v$sysstat lobs, 6 v$sysstat logical 7 WHERE physical.name = 'physical reads' AND direct.name = 'physical reads direct' AND = 'physical reads direct (lob)' AND logical.name = 'session logical reads'; Buffer Cache Hit Ratio% ----------------------- 99.561626 SQL> SQL> SELECT (retries.value / entries.value)*100 "Redo log Buffer Retry Ratio%" 2 FROM v$sysstat retries, 3 v$sysstat entries 4 WHERE retries.name = 'redo buffer allocation retries' AND entries.name = 'redo entrieRedo log Buffer Retry Ratio%---------------------------- .00316608SQL> اشكرا جدا اخى الكريم تقديم بلاغ
بتاريخ: 18 مايو 200619 سنة comment_69644 أخ dba_mcseولا يهمكالبيانات رقم 1يعني عندك 76% فراغ في ال Java Poolو 100% فراغ بال Large Poolو 68% في ال Shared Poolيعني هذولي الأجزاء من ال SGA نقدر تصغرهمالبيانات رقم 2 و 3يعني عندك كلو تمام بالنسبه لل Shared Poolالبيانات رقم 4والذي لم يعطي أي نتيجة لأنك ما كتبب قبلوSET SERVEROUTPUT onوهذا الي حيعطيك الحجم المطلوب لل Shared Poolالبيانات رقم 5برضو يعني ال Buffer Cache ماعليه كلام وحجمو كفايه ويمكن كبيرالبيانات رقم 6Redo log Buffer Retry Ratioنتخفض جدا يعني ال redo log Buffer ممتازولكنبما أن البيانات السابقه تشير إلى أن ال Memory تماممعناتوأنو الإحتمال الأكبر إنو ال Processes غير كافيه أما شو تسوي 1 - يا إما يفوي المعالج2 - يا إما لو المعالج قوي جدا ولا تتوقع إنو يكون هذا الأداء هو الأداء السليم تزيد عدد ال Processأما كيف تزيد ال Processes فهذا موضوع كبير وإنشاء الله ححضرو للمنتدىوعلى فكرة ممكن يمون سبب البطىء بسبب عدم وجود Index على ال Column .........والأسباب كثيرولكن تشخيص العله زي تشخيص المرض بدو فحص وتمعن من قبل مختصومابينفع إنو دكتور يقول لواحد شو يسوي على التلفون علشان يعمل عمليه جراحيةوإعذرنا إن قصرنا تقديم بلاغ
بتاريخ: 20 مايو 200619 سنة كاتب الموضوع comment_69741 شكرا جدا اخى maherانا سوف ابحث عن شئ اخر لسبب البطئ ولكن ياريت ماتتاخر علينا فى موضوع ال كيف تزيد ال Processes تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.