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

اريد اعمل Tuning

Featured Replies

بتاريخ:

يوجد بطئ فى الدتاتابيس

قمت بعمل الاتى
SQL> set heading off
SQL> select 'Current SHARED_POOL_SIZE value is ' || value from v$parameter where name = 'shared_pool
_size';

Current SHARED_POOL_SIZE value is 114741555

SQL> set heading on
SQL> 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 on
SQL> column value format 999,999,999,999
SQL> select name, value from v$sysstat where
2 name in ('db block gets', 'consistent gets', 'physical reads');

NAME VALUE
---------------------------------------------------------------- ----------------
db block gets 694,860
consistent gets 1,800,541
physical reads 15,035

SQL> 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 Buffer
SQL> select 'Current LOG_BUFFER size is ' || value from v$parameter where name = 'log_buffer';

Current LOG_BUFFER size is 32768

SQL> set heading on
SQL> set feedback on
SQL> select sid, event, state from v$session_wait
2 where event = 'log buffer space';

no rows selected

بتاريخ:

أخي العزيز
موصوع ال 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;
/



نفذه وإدعيلي

بتاريخ:

ثانيا وأيضا بال 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% فما فوق

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

بتاريخ:

أما عن ال 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

بتاريخ:

وهناك جزء بال 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

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

بتاريخ:

مشاركة جميلة أخي ماهر ومرحبا بعودتك الى المنتدى ....
تحياتي :rolleyes:

بتاريخ:

مرسي ع التعقيب .. محمد
الظاهر إنك شفقت على إنو صاحب الموضوع ماكلف نفسو يرد
بس إنشاء الله حدا يستفيد من الي كتبتو
وهذا كفايه

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

شكرا جدا اخى الكريم maher_atieh
اولا احب اشكرا جدا على ردك ربنا يكرمك
انا واللة مستعجل على الموضوع دة جدا جدا وانا لم ادخل على النت الا اليوم وياريت انت تتابع معى
انا سوف انفذ كل هذة الاوامر وسوف ارد عليك بالنتائج
وتانى مرة اشكر وياريت ماتتوقف

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

اخى 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.37
large pool 600 600 100
shared 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 entrie

Redo log Buffer Retry Ratio%
----------------------------
.00316608

SQL>
اشكرا جدا اخى الكريم

بتاريخ:

كلن هلا بعودتك الى المنتدى يا قديس

بتاريخ:

أخ 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 ماعليه كلام وحجمو كفايه ويمكن كبير

البيانات رقم 6
Redo log Buffer Retry Ratio
نتخفض جدا يعني ال redo log Buffer ممتاز


ولكن

بما أن البيانات السابقه تشير إلى أن ال Memory تمام
معناتو
أنو الإحتمال الأكبر إنو ال Processes غير كافيه
أما شو تسوي
1 - يا إما يفوي المعالج
2 - يا إما لو المعالج قوي جدا ولا تتوقع إنو يكون هذا الأداء هو الأداء السليم تزيد عدد ال Process


أما كيف تزيد ال Processes فهذا موضوع كبير وإنشاء الله ححضرو للمنتدى

وعلى فكرة ممكن يمون سبب البطىء بسبب عدم وجود Index على ال Column .........

والأسباب كثير
ولكن تشخيص العله زي تشخيص المرض بدو فحص وتمعن من قبل مختص
ومابينفع إنو دكتور يقول لواحد شو يسوي على التلفون علشان يعمل عمليه جراحية

وإعذرنا إن قصرنا

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

شكرا جدا اخى maher
انا سوف ابحث عن شئ اخر لسبب البطئ ولكن ياريت ماتتاخر علينا فى موضوع ال كيف تزيد ال Processes

بتاريخ:

تسلم يا ماهر وهلا بيك

بتاريخ:

thanx maher and we are waiting for the processes

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

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

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

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

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

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.